123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- package otherProduct
- import (
- "app.yhyue.com/moapp/jybase/common"
- "context"
- "encoding/json"
- "fmt"
- "github.com/gogf/gf/v2/frame/g"
- "github.com/gogf/gf/v2/util/gconv"
- "github.com/pkg/errors"
- "jyOrderManager/internal/consts"
- "jyOrderManager/internal/logic/product"
- "jyOrderManager/internal/model"
- "jyOrderManager/utility"
- "time"
- )
- func (p jyOtherProduct) SaveUpdate(ctx context.Context, masterKey string) error { //保存更新
- var (
- orderMap = g.Map{}
- err error
- orderDetailId int64
- )
- switch p.ProductName {
- case "历史数据", "结构化数据":
- if p.PackClassOrderDetail.ServiceType == 0 {
- return errors.New("付费类型异常")
- }
- orderDetailId = p.PackClassOrderDetail.Id
- orderMap = g.Map{
- "status": 1,
- "order_code": p.PackClassOrderDetail.OrderCode,
- "phone": p.PackClassOrderDetail.Phone,
- "original_price": p.PackClassOrderDetail.OriginalPrice,
- "final_price": p.PackClassOrderDetail.Amount,
- "product_code": p.PackClassOrderDetail.ProductCode,
- "activity_code": p.PackClassOrderDetail.ActivityCode,
- "tactics": p.PackClassOrderDetail.Tactics,
- "filter": gconv.String(p.PackClassOrderDetail.Filter),
- "service_starttime": p.PackClassOrderDetail.Service_start_time,
- "service_type": p.PackClassOrderDetail.ServiceType,
- "service_endtime": p.PackClassOrderDetail.Service_end_time,
- "is_master": common.If(fmt.Sprintf("%s_%d", p.PackClassOrderDetail.ProductCode, p.PackClassOrderDetail.Amount) == masterKey, 1, 0),
- }
- case "阳光采购", "医械通", "人脉管理", "物业数字化营销", "运营商专版", "企业商机管理":
- if p.CycleClassOrderDetail.ServiceType == 0 {
- return errors.New("付费类型异常")
- }
- orderDetailId = p.CycleClassOrderDetail.Id
- orderMap = g.Map{
- "status": 1,
- "order_code": p.CycleClassOrderDetail.OrderCode,
- "phone": p.CycleClassOrderDetail.Phone,
- "original_price": p.CycleClassOrderDetail.OriginalPrice,
- "final_price": p.CycleClassOrderDetail.Amount,
- "product_code": p.CycleClassOrderDetail.ProductCode,
- "activity_code": p.CycleClassOrderDetail.ActivityCode,
- "tactics": p.CycleClassOrderDetail.Tactics,
- "linked_detail_id": p.CycleClassOrderDetail.LinkedOrderId,
- "service_type": p.CycleClassOrderDetail.ServiceType,
- "filter": gconv.String(p.CycleClassOrderDetail.Filter),
- "is_master": common.If(fmt.Sprintf("%s_%d", p.CycleClassOrderDetail.ProductCode, p.CycleClassOrderDetail.Amount) == masterKey, 1, 0),
- }
- var filter = p.CycleClassOrderDetail.Filter
- if p.CycleClassOrderDetail.ServiceType == 1 || p.CycleClassOrderDetail.ServiceType == 4 {
- filter.FinalAccountCount = 1 + filter.BuyAccountCount + filter.GiftAccountCount
- } else if p.CycleClassOrderDetail.ServiceType == 2 || p.CycleClassOrderDetail.ServiceType == 3 { //获取
- var (
- startTime, endTime time.Time
- oldFilter *model.VipCycleFilter
- )
- oldFilter, startTime, endTime, err = product.GetLinkVipCycleFilter(ctx, p.CycleClassOrderDetail.LinkedOrderId)
- if err != nil {
- return err
- }
- if p.CycleClassOrderDetail.ServiceType == 2 { //续费需要重新计算开始时间结束时间,升级即原来关联订单的时间
- var newStartTime time.Time
- if endTime.Unix() < time.Now().Unix() { //原服务已过期
- newStartTime = time.Now()
- } else { //原服务未过期
- //开始时间为:原服务结束日期+1天
- newStartTime = endTime.AddDate(0, 0, 1)
- }
- startTime, endTime = utility.GetStartAndEndTime(newStartTime, utility.DateComp{
- Num: filter.BuyCycle,
- Unit: filter.BuyType,
- }, utility.DateComp{
- Num: filter.GiftCycle,
- Unit: filter.GiftType,
- })
- } else {
- filter.FinalAccountCount += oldFilter.FinalAccountCount + filter.BuyAccountCount + filter.GiftAccountCount
- }
- orderMap["service_starttime"] = startTime.Format("2006-01-02 15:04:05")
- orderMap["service_endtime"] = endTime.Format("2006-01-02 15:04:05")
- }
- orderMap["filter"] = gconv.String(filter)
- if gconv.Int(orderMap["is_master"]) == 1 {
- filterMap := map[string]interface{}{
- "free_sub_num": p.CycleClassOrderDetail.Filter.GiftAccountCount,
- "pay_sub_num": p.CycleClassOrderDetail.Filter.BuyAccountCount,
- }
- filterStr, _ := json.Marshal(filterMap)
- g.DB().Update(ctx, "dataexport_order", map[string]interface{}{
- "filter": gconv.String(filterStr),
- }, map[string]interface{}{
- "order_code": p.CycleClassOrderDetail.OrderCode,
- })
- }
- case "3A信用认证", "ISO体系认证", "广告", "打赏", "数据文件", "权益码", "标书制作", "线下课程培训", "课程分销", "虚拟赠品", "实物赠品", "销售费用":
- if p.SimpleProduct.ServiceType == 0 {
- return errors.New("付费类型异常")
- }
- orderDetailId = p.SimpleProduct.Id
- orderMap = g.Map{
- "status": 1,
- "order_code": p.SimpleProduct.OrderCode,
- "phone": p.SimpleProduct.Phone,
- "original_price": p.SimpleProduct.OriginalPrice,
- "final_price": p.SimpleProduct.Amount,
- "product_code": p.SimpleProduct.ProductCode,
- "activity_code": p.SimpleProduct.ActivityCode,
- "service_type": p.SimpleProduct.ServiceType,
- "tactics": p.SimpleProduct.Tactics,
- "filter": gconv.String(p.SimpleProduct.Filter),
- "is_master": common.If(fmt.Sprintf("%s_%d", p.SimpleProduct.ProductCode, p.SimpleProduct.Amount) == masterKey, 1, 0),
- }
- //广告开始时间结束时间
- if p.ProductName == "广告" {
- orderMap["service_starttime"] = p.SimpleProduct.Service_start_time
- orderMap["service_endtime"] = p.SimpleProduct.Service_end_time
- }
- }
- orderMap["product_type"] = p.ProductName
- if orderDetailId > 0 {
- _, err := g.DB().Ctx(ctx).Update(ctx, consts.OrderDetailTableName, orderMap, " id = ? ", orderDetailId)
- if err != nil {
- return errors.Wrapf(err, "%s明细更新异常", p.ProductName)
- }
- } else {
- _, err := g.DB().Ctx(ctx).Insert(ctx, consts.OrderDetailTableName, orderMap)
- if err != nil {
- return errors.Wrapf(err, "%s插入订单明细异常", p.ProductName)
- }
- }
- return nil
- }
|