diff --git a/app/db/model/four_newcomers_free_stock.go b/app/db/model/four_newcomers_free_stock.go new file mode 100644 index 0000000..4cd34ae --- /dev/null +++ b/app/db/model/four_newcomers_free_stock.go @@ -0,0 +1,17 @@ +package model + +import ( + "time" +) + +type FourNewcomersFreeStock struct { + Id int `json:"id" xorm:"not null pk autoincr INT(11)"` + Uid int `json:"uid" xorm:"INT(11)"` + CreateAt time.Time `json:"create_at" xorm:"DATETIME"` + FourPriceType int `json:"four_price_type" xorm:"default 0 INT(11)"` + IsBuy int `json:"is_buy" xorm:"default 0 INT(1)"` + IsBack int `json:"is_back" xorm:"default 0 INT(11)"` + Lid int `json:"lid" xorm:"default 0 INT(11)"` + Gid string `json:"gid" xorm:"VARCHAR(255)"` + ShopId string `json:"shop_id" xorm:"VARCHAR(255)"` +} diff --git a/app/svc/svc_order_track_save_create.go b/app/svc/svc_order_track_save_create.go index 091d66f..6498b4c 100644 --- a/app/svc/svc_order_track_save_create.go +++ b/app/svc/svc_order_track_save_create.go @@ -874,7 +874,7 @@ func orderFourFreeCheck(eg *xorm.Engine, v *md.OrderInfo, oid int64, uid int, is profile, err := db.UserThirdPartyFindByID(eg, uid) if err != nil || profile == nil { logx.Warn(err) - return m + return nil } //判断要不要扣免单券 if isNeedReduct == 1 { @@ -887,7 +887,7 @@ func orderFourFreeCheck(eg *xorm.Engine, v *md.OrderInfo, oid int64, uid int, is _, err = db.UserThirdPartyUpdate(eg, profile.Uid, profile, "four_free_remain_time") if err != nil { logx.Warn(err) - return m + return nil } // 插入日志记录 go db.FourFreeQualificationRecordInsertOne(eg, &model.FourNewcomersQualificationRecord{ @@ -901,12 +901,15 @@ func orderFourFreeCheck(eg *xorm.Engine, v *md.OrderInfo, oid int64, uid int, is UpdatedAt: time.Now(), }) } - m.Stock-- - if m.Stock < 0 { - m.Stock = 0 + var tmp model.FourNewcomersFreeStock + eg.Where("lid=? and uid=? and is_buy=0 and is_back=0", m.Id, profile.Uid).Get(&tmp) + if tmp.Id == 0 { + return nil } + tmp.IsBuy = 1 + eg.Where("id=?", tmp.Id).Cols("is_buy").Update(&tmp) m.Sale++ - eg.Where("id=?", m.Id).Cols("stock,sale").Update(m) + eg.Where("id=?", m.Id).Cols("sale").Update(m) } return m } diff --git a/app/svc/svc_order_track_save_create_update_zero.go b/app/svc/svc_order_track_save_create_update_zero.go new file mode 100644 index 0000000..f550ce8 --- /dev/null +++ b/app/svc/svc_order_track_save_create_update_zero.go @@ -0,0 +1,938 @@ +package svc + +import ( + "applet/app/cfg" + "applet/app/utils/cache" + md3 "code.fnuoos.com/go_rely_warehouse/zyos_go_day_luck_draw.git/md" + "code.fnuoos.com/go_rely_warehouse/zyos_go_day_luck_draw.git/svc" + "code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git/rabbit" + "code.fnuoos.com/go_rely_warehouse/zyos_go_o2o_business.git/o2o" + "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/lib/comm_plan" + "code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/implement" + "fmt" + "github.com/tidwall/gjson" + "strings" + "time" + + "xorm.io/xorm" + + "applet/app/db" + "applet/app/db/model" + "applet/app/lib/plan" + "applet/app/md" + "applet/app/utils" +) + +// 订单入库, TODO 1. 入库, 判断订单是否已经在库, 并到各个会员里面进行订单判断分润状态, 2.算利并进行分配, 所有订单都要进行拆单, 包括从智盟获取的订单 +func OrderSaveCreateUpdateZero(eg *xorm.Engine, pvd string, ordData *[]md.OrderInfo, opts map[string]*plan.PlanOpt, secondOpts map[string]*plan.PlanOpt, dbName string) error { + var ( + allOrdIds []string + pids []string // + allStationOrdIds []int64 + stationOrdIds []int64 + ) + littlePocket := db.SysCfgFindWithDb(eg, dbName, "little_pocket_basic_data") + returnMoneyType := "0" + if littlePocket != nil && gjson.Get(littlePocket["little_pocket_basic_data"], "return_money_type").String() == "1" { + returnMoneyType = "1" + } + var ch *rabbit.Channel + var err error + //if cfg.Prd { + ch, err = rabbit.Cfg.Pool.GetChannel() + if err == nil { + defer ch.Release() + } + //} + ords := map[string]md.OrderInfo{} + for _, v := range *ordData { + // 如果订单存在则更改订单状态, 其它不需要操作, 结算由另外一个任务进行结算 + ords[v.PvdOid] = v + // 计算推广位 + if v.Pid != "" { + pids = append(pids, v.Pid) + } + allOrdIds = append(allOrdIds, v.PvdOid) + } + fmt.Println(pids) + if strings.Contains(pvd, "meituan") { + pvd = "meituan" + } + if pvd == "hw_movie" { + pvd = "cinema" + } + if pvd == md.PVD_PDDUNIONOWN || pvd == md.PVD_PDDBYCREATETIME || pvd == md.PVD_PDDBYAGOTIME || pvd == md.PVD_PDDBYSTATUS || pvd == md.PVD_PDDBYSTATUSSUCCESS || pvd == md.PVD_PDDBYSTATUSFAIL { //判断下拼多多 + pvd = md.PVD_PDD + } + + if pvd == md.PVD_JDUNIONOWN || pvd == md.PVD_JDUNIONOWNUPDATE || pvd == md.PVD_JDBYCREATETIME || pvd == md.PVD_JDBYSUCCESS || pvd == md.PVD_JDFAILBYCREATETIME || pvd == md.PVD_JDBYSTATUS { //判断下京东 + pvd = md.PVD_JD + } + if utils.InArr(pvd, []string{"csjp_create", "own_csjp", "own_csjp_activity"}) { + pvd = "csjp" + } + if utils.InArr(pvd, []string{"own_csjp_live"}) { + pvd = "csjp_live" + } + if utils.InArr(pvd, []string{md.PVD_TB12, md.PVD_TB13, md.PVD_TB14, md.PVD_TB3, md.PVD_TBBYPAY, md.PVD_TBBYCREATETIME, md.PVD_TBBYSETTLE}) { + pvd = md.PVD_TB + } + if pvd == md.PVD_DIDI_ENERGY { // + pvd = "oil" + } + if pvd == md.PVD_TO_KFC { //判断下 + pvd = md.PVD_KFC + } + + if pvd == md.PVD_TIKTOKOWNLIVE { //判断下 + pvd = md.PVD_TIKTOKLIVE + } + if utils.InArr(pvd, []string{md.PVD_TIKTOKOwn, md.PVD_TIKTOKOwnCreate, md.PVD_TIKTOKOwnActivity, md.PVD_TIKTOKOwnMix}) { //判断下 + pvd = md.PVD_TIKTOK + } + if utils.InArr(pvd, []string{md.PVD_KuaishouOwn, md.PVD_KuaishouOwnCreate}) { //判断下 + pvd = md.PVD_KUAISHOU + } + var syncTime int64 = 0 + use, _ := db.SysUnionByPVDByUse(eg, dbName, pvd) + if use != nil && use.SyncTime.IsZero() == false { + syncTime = use.SyncTime.Unix() + } + // 用推广位计算出查询对应人员的等级 + userInfo := parsePids(eg, dbName, pvd, pids) + if pvd == md.PVD_WPHUNIONOWN { //判断下 + pvd = md.PVD_VIP + } + pidToUser := map[string]*md.UserPid{} + for _, vv := range userInfo { + if pvd == md.PVD_TB { + prefix := "self_" + if vv.OrderType == md.OrderTypeShare { + prefix = "share_" + } + if vv.OrderType == md.OrderTypeFree { + prefix = "free_" + } + if vv.OrderType == 15 { + prefix = "relationfree_" + } + if vv.OrderType == 20 { + prefix = "fourfree_" + } + if vv.OrderType == md.OrderTypeTljFree { + prefix = "tljfree_" + } + if vv.OrderType == 16 { + prefix = "ttljfree_" + } + if vv.OrderType == 10 { + prefix = "cloud_" + } + if vv.OrderType == md.OrderTypeTljRelationFree { + prefix = "tljrelationfree_" + } + if vv.OrderType == md.OrderTypeActSelf { + prefix = "actself_" + } + if vv.OrderType == md.OrderTypeWechatActShare { + prefix = "wechatactshare_" + } + if vv.OrderType == md.OrderTypeWechatActSelf { + prefix = "wechatactself_" + } + if vv.OrderType == md.OrderTypeWechatActSelfNew { + prefix = "wechatactselfnew_" + } + pidToUser[prefix+vv.Pid] = vv + } else { + if len(vv.Pids) > 0 { + for _, v1 := range vv.Pids { + pidToUser[v1] = vv + } + } else { + pidToUser[vv.Pid] = vv + } + } + } + now := int(time.Now().Unix()) + existOrds, _ := db.DbsOrderFindByIdsNew(eg, pvd, allOrdIds) + fmt.Println(existOrds) + + // 更新订单 + if existOrds != nil { + var commissionReqList = make([]md.CommissionFirstParam, 0) + var tikTokOrdMap = make(map[string]model.OrdList, 0) + var returnMoneyReqList = make([]map[string]string, 0) + + for _, v := range *existOrds { + if v.State == 4 { + continue + } + v.BenefitAll = utils.FloatFormat(v.BenefitAll, 3) + allStationOrdIds = append(allStationOrdIds, v.OrdId) + if v.ConfirmAt == 0 { + if int(ords[v.PvdOid].ConfirmAt) > 0 { + v.ConfirmAt = int(ords[v.PvdOid].ConfirmAt) + _ = db.DbsOrderUpdate(eg, v.OrdId, &v) + } else if v.PvdSettleAt > 0 { + v.ConfirmAt = v.PvdSettleAt + _ = db.DbsOrderUpdate(eg, v.OrdId, &v) + } + } + if int(ords[v.PvdOid].ConfirmAt) > 0 && v.ConfirmAt != int(ords[v.PvdOid].ConfirmAt) { + v.ConfirmAt = int(ords[v.PvdOid].ConfirmAt) + _ = db.DbsOrderUpdate(eg, v.OrdId, &v) + } + if v.OrderCompare == 0 && ords[v.PvdOid].IsCompare == 1 { + v.OrderCompare = ords[v.PvdOid].IsCompare + _ = db.DbsOrderUpdate(eg, v.OrdId, &v) + } + if v.CheckSuccessAt == 0 && int(ords[v.PvdOid].CheckSuccessAt) > 0 { + v.CheckSuccessAt = int(ords[v.PvdOid].CheckSuccessAt) + _ = db.DbsOrderUpdate(eg, v.OrdId, &v) + } + //更新下父级订单号 + if v.ParentOrdId == 0 && v.Pvd == md.PVD_TB && ords[v.PvdOid].ParentOrdId != 0 { + v.ParentOrdId = ords[v.PvdOid].ParentOrdId + _ = db.DbsOrderUpdate(eg, v.OrdId, &v) + } + //拼多多的有些读错价格了 + if v.PaidPrice != ords[v.PvdOid].PaidPrice && v.Pvd == md.PVD_PDD { + v.PaidPrice = ords[v.PvdOid].PaidPrice + fmt.Println("拼多多改价格") + _ = db.DbsOrderUpdate(eg, v.OrdId, &v) + } + if ords[v.PvdOid].State == 4 { + // 加锁 防止并发退款 + mutexKey := fmt.Sprintf("%s:all_order_refund:%d:pvd:%s", dbName, v.OrdId, v.Pvd) + available, err := cache.Do("SET", mutexKey, 1, "EX", 5, "NX") + if err != nil { + continue + } + if available != "OK" { + continue + } + if v.SettleAt > 0 || v.State == 5 { + RefundDoing(eg, returnMoneyType, &v, "", dbName) + continue + } else { + NotSettleDeduct(eg, &v, dbName) + } + if v.State != 4 && v.FourPriceType > 0 { + m, _ := db.FourFreeProductByID(eg, v.ItemId, v.NumItemId, v.Pvd) + if m != nil { + var tmp model.FourNewcomersFreeStock + eg.Where("lid=? and uid=? and is_buy=1 and is_back=0", m.Id, v.Uid).Get(&tmp) + if tmp.Id > 0 { + tmp.IsBuy = 0 + eg.Where("id=?", tmp.Id).Cols("is_buy").Update(&tmp) + m.Stock++ + m.Sale-- + if m.Sale < 0 { + m.Sale = 0 + } + eg.Where("id=?", m.Id).Cols("sale,stock").Update(m) + } + } + } + + } + if ords[v.PvdOid].State == 3 && utils.InArr(utils.IntToStr(v.State), []string{"3", "4", "5"}) == false && v.PvdSettleAt > 0 { + v.State = 3 + if v.IsTikTokTeamOrder == 1 { + isRe := 0 + TikTokTeamCommission := utils.StrToFloat64(v.TikTokTeamRealCommission) + if TikTokTeamCommission != utils.StrToFloat64(ords[v.PvdOid].TikTokTeamRealCommission) && TikTokTeamCommission > 0 { + isRe = 1 + v.TikTokTeamRealCommission = ords[v.PvdOid].TikTokTeamRealCommission + } + if utils.StrToFloat64(ords[v.PvdOid].TikTokTeamCommission) != utils.StrToFloat64(v.TikTokTeamCommission) { + if TikTokTeamCommission == 0 { + isRe = 1 + TikTokTeamCommission = utils.StrToFloat64(ords[v.PvdOid].TikTokTeamCommission) + } + v.TikTokTeamCommission = ords[v.PvdOid].TikTokTeamCommission + } + if isRe == 1 { + isShare := 0 + if v.OrderType == md.OrderTypeShare || v.OrderType == md.OrderTypeWechatActShare { + isShare = 1 + } + req := md.CommissionFirstParam{ + CommissionParam: md.CommissionParam{ + Commission: utils.Float64ToStr(v.BenefitAll), + PaidPrice: utils.Float64ToStr(v.PaidPrice), + OldPrice: utils.Float64ToStr(v.PaidPrice), + TikTokTeamCommission: utils.Float64ToStr(TikTokTeamCommission), + IsTikTokTeamOrder: utils.IntToStr(v.IsTikTokTeamOrder), + }, + Uid: utils.IntToStr(v.Uid), + IsShare: isShare, + Provider: v.Pvd, + IsAllLevelReturn: 0, + Oid: v.PvdOid, + } + tikTokOrdMap[v.PvdOid] = v + commissionReqList = append(commissionReqList, req) + } + } + _ = db.DbsOrderUpdate(eg, v.OrdId, &v) + } + if v.State == 4 && ords[v.PvdOid].Reason != "" && v.Reason == "" { + v.Reason = ords[v.PvdOid].Reason + _ = db.DbsOrderUpdate(eg, v.OrdId, &v) + } + + } + //处理下没有分佣明细的订单 + existRelateOrds, _ := db.DbsOrderRelateFindByIds(eg, pvd, allStationOrdIds) + if existRelateOrds != nil { + for _, v := range *existRelateOrds { + stationOrdIds = append(stationOrdIds, v.Oid) + } + } + for _, v := range *existOrds { + v.BenefitAll = utils.FloatFormat(v.BenefitAll, 3) + result := in(v.OrdId, stationOrdIds) + if result == false { + //如果没有用户这里要做处理 仅针对淘宝 或美团联盟没有佣金的情况 + commCheckUser(eg, v, ords, pvd, pidToUser, opts, secondOpts, dbName, true, returnMoneyType) + } + // 去除已存在订单 + delete(ords, v.PvdOid) + } + if len(commissionReqList) > 0 { //处理抖音团长结算的订单 + commissionListArr, _ := GetMoreRebateResult(eg, dbName, returnMoneyType, commissionReqList, returnMoneyReqList) + for k, v := range commissionListArr { + ord, ok := tikTokOrdMap[k] + if ok && v.LvUser != nil && v.LvUser.TikTokOwnSubsidyFeeList != nil { + db.TikTokTeamOrderRelateDeleteByOid(eg, ord.OrdId, pvd) + var teamData []model.TikTokTeamOrderRelate + TikTokTeamCommission := ord.TikTokTeamCommission + if utils.StrToFloat64(ord.TikTokTeamRealCommission) > 0 { + TikTokTeamCommission = ord.TikTokTeamRealCommission + } + for k1, v1 := range v.LvUser.TikTokOwnSubsidyFeeList { + tmp := model.TikTokTeamOrderRelate{ + CoinId: utils.StrToInt(k1), + Uid: ord.Uid, + Amount: utils.Float64ToStrByPrec(v1, 8), + Oid: utils.Int64ToStr(ord.OrdId), + Time: time.Now(), + Commission: TikTokTeamCommission, + Pvd: pvd, + } + teamData = append(teamData, tmp) + } + db.DbInsertBatch(eg, &teamData) + } + } + } + } + + //判断饿了么的 + if pvd == md.PVD_TB { + eleExistOrds, _ := db.DbsOrderFindByIds(eg, "ele", allOrdIds) + // 更新订单 + if eleExistOrds != nil { + for _, v := range *eleExistOrds { + if v.State != ords[v.PvdOid].State { + v.Reason = ords[v.PvdOid].Reason + v.State = ords[v.PvdOid].State + v.UpdateAt = now + if v.State == md.OrderStateSucc { + v.ConfirmAt = v.UpdateAt + } + // 供应商结算时间 + if v.State == md.OrderStatePvdSettle { + v.PvdSettleAt = v.UpdateAt + if ords[v.PvdOid].EndTime > 0 { + v.PvdSettleAt = int(ords[v.PvdOid].EndTime) + } + } + _ = db.DbsOrderUpdate(eg, v.OrdId, &v) + } + //如果没有用户这里要做处理 仅针对淘宝 + commCheckUser(eg, v, ords, pvd, pidToUser, opts, secondOpts, dbName, false, returnMoneyType) + // 去除已存在订单 + delete(ords, v.PvdOid) + } + } + } + if len(ords) == 0 { + return nil + } + var commissionReqList = make([]md.CommissionFirstParam, 0) + var returnMoneyReqList = make([]map[string]string, 0) + var secondCommissionReqList = make([]md.CommissionFirstParam, 0) + + for k, v := range ords { + if v.StartTime < syncTime && syncTime > 0 { //根据后台的时间配置来 + continue + } + var oneOrd = v + var user *md.UserPid + if utils.InArr(pvd, []string{md.PVD_TB, "ele", md.PVD_TB12, md.PVD_TB13, md.PVD_TB14, md.PVD_TB3, md.PVD_TBBYPAY, md.PVD_TBBYCREATETIME, md.PVD_TBBYSETTLE}) { + //如果是淘宝要处理下类型拿用户 + for k1 := range pidToUser { + pidTmp := strings.Split(v.Pid, "_") + if len(pidTmp) == 2 { + if strings.Contains(k1, pidTmp[1]) && pidTmp[1] != "" { + v.Pid = k1 + } + } + } + } + if v.Pid != "" { + if pidToUser[v.Pid] != nil { + user = pidToUser[v.Pid] + } + } + if v.Pid == "" && (v.Pvd == md.PVD_TB || v.Pvd == "ele") { + v.Pid = "self" + } + newPvd := pvd + //判断是饿了么的 + if v.Pvd == "ele" { + newPvd = "ele" + } + //判断是否美团 + if strings.Contains(pvd, "meituan_") { + newPvd = "meituan" + } + if pvd == "hw_movie" { + newPvd = "cinema" + } + if pvd == md.PVD_PDDBYCREATETIME || pvd == md.PVD_PDDBYAGOTIME || pvd == md.PVD_PDDBYSTATUS || pvd == md.PVD_PDDBYSTATUSSUCCESS || pvd == md.PVD_PDDBYSTATUSFAIL { //判断下拼多多 + newPvd = md.PVD_PDD + } + if pvd == md.PVD_JDUNIONOWN || pvd == md.PVD_JDUNIONOWNUPDATE || pvd == md.PVD_JDBYCREATETIME || pvd == md.PVD_JDBYSUCCESS || pvd == md.PVD_JDFAILBYCREATETIME || pvd == md.PVD_JDBYSTATUS { //判断下京东 + newPvd = md.PVD_JD + } + if utils.InArr(pvd, []string{"csjp_create", "own_csjp", "own_csjp_activity"}) { + newPvd = "csjp" + } + if utils.InArr(pvd, []string{"own_csjp_live"}) { + newPvd = "csjp_live" + } + if utils.InArr(pvd, []string{md.PVD_TB12, md.PVD_TB13, md.PVD_TB14, md.PVD_TB3, md.PVD_TBBYPAY, md.PVD_TBBYCREATETIME, md.PVD_TBBYSETTLE}) { + newPvd = md.PVD_TB + } + if pvd == md.PVD_TO_KFC { //判断下 + newPvd = md.PVD_KFC + } + if utils.InArr(pvd, []string{md.PVD_TIKTOKOwn, md.PVD_TIKTOKOwnCreate, md.PVD_TIKTOKOwnActivity, md.PVD_TIKTOKOwnMix}) { //判断下 + newPvd = md.PVD_TIKTOK + } + if utils.InArr(pvd, []string{md.PVD_KuaishouOwn, md.PVD_KuaishouOwnCreate}) { //判断下 + newPvd = md.PVD_KUAISHOU + } + if pvd == md.PVD_TIKTOKOWNLIVE { //判断下 + newPvd = md.PVD_TIKTOKLIVE + } + if pvd == md.PVD_DIDI_ENERGY { //判断下 + newPvd = "oil" + } + if v.Pvd == md.PVD_JDOwn { + newPvd = md.PVD_JDOwn + pvd = md.PVD_JD + } + optPvd := newPvd + if newPvd == "oil" { + optPvd = "oilstation" + } + if utils.InArr(pvd, []string{md.PVD_KuaishouOwn, md.PVD_KuaishouOwnCreate}) { + if v.Pvd == "Live" { + optPvd = md.PVD_KUAISHOULIVE + } + } + if !strings.Contains(v.Pid, "fourFree") && !strings.Contains(v.Pid, "moreFree") && !strings.Contains(v.Pid, "shareSeFree") && !strings.Contains(v.Pid, "seFree") && !strings.Contains(v.Pid, "cloud") && !strings.Contains(v.Pid, "share") && !strings.Contains(v.Pid, "self") && !strings.Contains(v.Pid, "free") && !strings.Contains(v.Pid, "actself") && !strings.Contains(v.Pid, "wechatactself") && !strings.Contains(v.Pid, "wechatactselfnew") && !strings.Contains(v.Pid, "wechatactshare") { + continue + } + var oid int64 + if user != nil { //用户不为空才判断 + oid = utils.StrToInt64(utils.OrderUUID(user.Uid)) + } + if v.OrderType == 15 { + v.OrderType = 2 + } + if v.OrderType == 16 { + v.OrderType = 6 + } + oneOrd.Oid = oid + ords[k] = oneOrd + ownbuyReturnType := 0 //自购返利 0返利 1不返利 + if v.OrderType == 20 { //多方案 + if user == nil || user.Uid == 0 { //判断免单的如果没有用户不跟这个订单 + continue + } + freeOrder := orderFourFreeCheck(eg, &v, oid, user.Uid, 0) + if freeOrder != nil { + optPvd = "fourFree_" + utils.IntToStr(freeOrder.PriceType) + } + } + + var uid = 0 + + if user != nil { + user.OwnbuyReturnType = ownbuyReturnType //是否有自购奖励 + uid = user.Uid + isShare := 0 + if v.OrderType == md.OrderTypeShare || v.OrderType == md.OrderTypeWechatActShare { + isShare = 1 + } + //调用公共的分佣 + pvdOid := v.PvdOid + //if v.ParentOrdId > 0 { + // pvdOid = utils.Int64ToStr(v.ParentOrdId) + //} + TikTokTeamCommission := v.TikTokTeamCommission + if utils.StrToFloat64(v.TikTokTeamRealCommission) > 0 { + TikTokTeamCommission = v.TikTokTeamRealCommission + } + req := md.CommissionFirstParam{ + CommissionParam: md.CommissionParam{ + Commission: utils.Float64ToStr(v.Commission), + PaidPrice: utils.Float64ToStr(v.PaidPrice), + OldPrice: utils.Float64ToStr(v.PaidPrice), + TikTokTeamCommission: TikTokTeamCommission, + IsTikTokTeamOrder: utils.IntToStr(v.IsTikTokTeamOrder), + }, + Uid: utils.IntToStr(uid), + IsShare: isShare, + Provider: optPvd, + IsAllLevelReturn: 1, + OwnbuyReturnType: ownbuyReturnType, + Oid: pvdOid, + } + if utils.InArr(optPvd, []string{md.PVD_TB, md.PVD_TM, md.PVD_PDD, md.PVD_SN, md.PVD_KL, md.PVD_JD, md.PVD_JDOwn, md.PVD_VIP}) == false { + req.CommissionParam.GoodsPrice = utils.Float64ToStr(v.PaidPrice) + } + commissionReqList = append(commissionReqList, req) + if secondOpts[req.Provider] != nil && opts[req.Provider].PlanCommissionId > 0 { + req.ServiceUid = "" + NewServiceAwardDividendRelationDb := implement.NewServiceAwardDividendRelationDb(eg) + relation, _ := NewServiceAwardDividendRelationDb.GetServiceAwardDividendRelationByUid(uid) + if relation != nil { + req.ServiceUid = utils.IntToStr(relation.BindUid) + } + if utils.StrToInt(req.ServiceUid) > 0 { + secondCommissionReqList = append(secondCommissionReqList, req) + } + } + returnMoneyReq := map[string]string{ + "commission": utils.Float64ToStr(v.Commission), + "goods_price": utils.Float64ToStr(v.PaidPrice), + "uid": utils.IntToStr(uid), + "provider": optPvd, + "is_share": utils.IntToStr(isShare), + "is_return_all": "1", + "key_value": pvdOid, + } + returnMoneyReqList = append(returnMoneyReqList, returnMoneyReq) + } + } + commissionListArr, returnListArr := GetMoreRebateResult(eg, dbName, returnMoneyType, commissionReqList, returnMoneyReqList) + secondCommissionListArr, _ := GetMoreRebateResultService(eg, dbName, returnMoneyType, secondCommissionReqList, returnMoneyReqList) + + // 如果不存在的订单, 则进行计算更新 + for _, v := range ords { + utils.FilePutContents("order", v.PvdOid) + if v.StartTime < syncTime && syncTime > 0 { //根据后台的时间配置来 + continue + } + var user *md.UserPid + if pvd == md.PVD_TB12 || pvd == md.PVD_TB13 || pvd == md.PVD_TB14 || pvd == md.PVD_TB3 || pvd == md.PVD_TB || pvd == "ele" || pvd == md.PVD_TBBYCREATETIME || pvd == md.PVD_TBBYPAY || pvd == md.PVD_TBBYSETTLE { + //如果是淘宝要处理下类型拿用户 + for k1 := range pidToUser { + pidTmp := strings.Split(v.Pid, "_") + if len(pidTmp) == 2 { + if strings.Contains(k1, pidTmp[1]) && pidTmp[1] != "" { + v.Pid = k1 + } + } + } + } + if v.Pid != "" { + if pidToUser[v.Pid] != nil { + user = pidToUser[v.Pid] + } + } + fmt.Println("================", v.PvdOid, v.Pid, utils.SerializeStr(user)) + + if v.Pid == "" && (v.Pvd == md.PVD_TB || v.Pvd == "ele") { + v.Pid = "self" + } + v.Pid = strings.ReplaceAll(v.Pid, "relationfree_", "free_") + + allCommission := v.Commission + newPvd := pvd + //判断是饿了么的 + if v.Pvd == "ele" { + newPvd = "ele" + } + //判断是否美团 + if strings.Contains(pvd, "meituan_") { + newPvd = "meituan" + } + if pvd == "hw_movie" { + newPvd = "cinema" + } + if pvd == md.PVD_PDDBYCREATETIME || pvd == md.PVD_PDDBYAGOTIME || pvd == md.PVD_PDDBYSTATUS || pvd == md.PVD_PDDBYSTATUSSUCCESS || pvd == md.PVD_PDDBYSTATUSFAIL { //判断下拼多多 + newPvd = md.PVD_PDD + } + if utils.InArr(pvd, []string{"csjp_create", "own_csjp", "own_csjp_activity"}) { + newPvd = "csjp" + } + if utils.InArr(pvd, []string{"own_csjp_live"}) { + newPvd = "csjp_live" + } + if pvd == md.PVD_JDUNIONOWN || pvd == md.PVD_JDUNIONOWNUPDATE || pvd == md.PVD_JDBYCREATETIME || pvd == md.PVD_JDBYSUCCESS || pvd == md.PVD_JDFAILBYCREATETIME || pvd == md.PVD_JDBYSTATUS { //判断下京东 + newPvd = md.PVD_JD + } + if utils.InArr(pvd, []string{md.PVD_TB12, md.PVD_TB13, md.PVD_TB14, md.PVD_TB3, md.PVD_TBBYPAY, md.PVD_TBBYCREATETIME, md.PVD_TBBYSETTLE}) { + newPvd = md.PVD_TB + } + if pvd == md.PVD_TO_KFC { //判断下 + newPvd = md.PVD_KFC + } + if utils.InArr(pvd, []string{md.PVD_TIKTOKOwn, md.PVD_TIKTOKOwnCreate, md.PVD_TIKTOKOwnActivity, md.PVD_TIKTOKOwnMix}) { //判断下 + newPvd = md.PVD_TIKTOK + } + if pvd == md.PVD_TIKTOKOWNLIVE { //判断下 + newPvd = md.PVD_TIKTOKLIVE + } + if pvd == md.PVD_DIDI_ENERGY { //判断下 + newPvd = "oil" + } + if v.Pvd == md.PVD_JDOwn { + newPvd = md.PVD_JDOwn + pvd = md.PVD_JD + } + optPvd := newPvd + opt := opts[newPvd] + if v.Pvd == md.PVD_JDOwn && (opt == nil || (opt != nil && opt.PlanCommissionId == 0)) { + opt = opts[md.PVD_JD] + } + //判断是否加油 + if newPvd == "oil" { + var ok = true + optPvd = "oilstation" + opt, ok = opts["oilstation"] + if ok == false { + continue + } + } else if opt == nil { + continue + } + if (pvd == "tikTok" || pvd == "csjp") && v.IsTikTokTeamOrder == 1 && opts["tikTokTeam"] != nil && opts["tikTokTeam"].PlanCommissionId > 0 { + opt = opts["tikTokTeam"] + } + if pvd == "kuaishou" && v.IsTikTokTeamOrder == 1 && opts["kuaishouTeam"] != nil && opts["kuaishouTeam"].PlanCommissionId > 0 { + opt = opts["kuaishouTeam"] + } + priceType := 0 + secondPriceType := 0 + fourPriceType := 0 + if !strings.Contains(v.Pid, "fourFree") && !strings.Contains(v.Pid, "moreFree") && !strings.Contains(v.Pid, "shareSeFree") && !strings.Contains(v.Pid, "seFree") && !strings.Contains(v.Pid, "cloud") && !strings.Contains(v.Pid, "share") && !strings.Contains(v.Pid, "self") && !strings.Contains(v.Pid, "free") && !strings.Contains(v.Pid, "actself") && !strings.Contains(v.Pid, "wechatactself") && !strings.Contains(v.Pid, "wechatactselfnew") && !strings.Contains(v.Pid, "wechatactshare") { + continue + } + var oid = v.Oid + if user != nil && oid == 0 { //用户不为空才判断 + oid = utils.StrToInt64(utils.OrderUUID(user.Uid)) + } + ownbuyReturnType := 0 //自购返利 0返利 1不返利 + //免单逻辑处理 + if v.OrderType == 15 { + v.OrderType = md.OrderTypeFree + } + freeOrderType := v.OrderType + if v.OrderType == 20 { + if user == nil || user.Uid == 0 { //判断免单的如果没有用户不跟这个订单 + continue + } + //TODO + freeOrder := orderFourFreeCheck(eg, &v, oid, user.Uid, 1) + if freeOrder != nil { + fourPriceType = freeOrder.PriceType + // 切换免单活动的分佣方案, 如1元购等 + optPvd = "fourFree_" + utils.IntToStr(freeOrder.PriceType) + opt = opts[optPvd] + } else { + v.State = 4 + } + } + var lvUser *comm_plan.LvUser + var pvdFee float64 + var sysFee float64 + var subsidyFee float64 + var subsidyRate float64 + var uid = 0 + var profit float64 = 0 + var returnProfit float64 = 0 + var selfRate float64 = 0 + var returnMoneyOne map[string]interface{} + pvdOid := v.PvdOid + if user != nil { + user.OwnbuyReturnType = ownbuyReturnType //是否有自购奖励 + uid = user.Uid + userLv := user.Lv + + fmt.Println(optPvd) + if returnMoneyType == "0" { + commissionList := commissionListArr[pvdOid] + if commissionList != nil { + pvdFee = commissionList.PvdFee + sysFee = commissionList.SysFee + subsidyFee = commissionList.SubsidyFee + lvUser = commissionList.LvUser + profit = commissionList.Profit + } + + } else { + returnMoneyList := returnListArr[pvdOid] + var ok = true + returnMoneyOne, ok = returnMoneyList.(map[string]interface{}) + if returnMoneyOne != nil && ok { + returnProfit = utils.AnyToFloat64(returnMoneyOne["self_commission"]) + if v.OrderType == 1 { + returnProfit = utils.AnyToFloat64(returnMoneyOne["share_commission"]) + } + } + } + fmt.Println(returnProfit) + + //判断下这个等级有么有设置 + if opt.UserRate != nil { + for k, item := range opt.UserRate { + if k == 0 { + selfRate = item.SelfRate + subsidyRate = item.SubsidyShareRate + if v.OrderType == 0 { + subsidyRate = item.SubsidySelfRate + } + } + if k == userLv { + selfRate = item.SelfRate + selfRate = item.SelfRate + subsidyRate = item.SubsidyShareRate + if v.OrderType == 0 { + subsidyRate = item.SubsidySelfRate + } + } + } + } + } + + if v.OrderType == 20 || v.OrderType == 15 || v.OrderType == 11 || v.OrderType == md.OrderTypeFree || v.OrderType == md.OrderTypeWechatActSelf || v.OrderType == md.OrderTypeWechatActSelfNew || v.OrderType == md.OrderTypeActSelf { + v.OrderType = md.OrderTypeSelf + } + if v.OrderType == 12 { + v.OrderType = md.OrderTypeShare + } + if v.OrderType == md.OrderTypeTljFree || v.OrderType == md.OrderTypeTljRelationFree { + v.OrderType = 3 //淘礼金免单 + } + if v.OrderType == md.OrderTypeWechatActShare { + v.OrderType = md.OrderTypeShare + } + //如果没有商品id的用订单好代替 + if v.ItemId == "" || v.ItemId == "0" { + v.ItemId = v.PvdOid + } + orderFormType := 0 + if newPvd == md.PVD_JDOwn { + newPvd = md.PVD_JD + orderFormType = 1 + } + ServiceUid := "" + NewServiceAwardDividendRelationDb := implement.NewServiceAwardDividendRelationDb(eg) + relation, _ := NewServiceAwardDividendRelationDb.GetServiceAwardDividendRelationByUid(uid) + if relation != nil { + ServiceUid = utils.IntToStr(relation.BindUid) + } + // 插入新订单 + newOrd := &model.OrdList{ + ServiceUid: utils.StrToInt(ServiceUid), + WaitSettleAt: int(v.WaitSettleAt), + NumItemId: v.SkuId, + TaskType: v.TaskType, + OrderFormType: orderFormType, + OrdId: oid, + Uid: uid, + PvdOid: v.PvdOid, + ParentOrdId: v.ParentOrdId, + Pvd: newPvd, + ItemId: v.ItemId, + ItemNum: v.ItemNum, + ItemPrice: v.ItemPrice, + PaidPrice: v.PaidPrice, + OrderType: v.OrderType, + PriceType: priceType, + SecondPriceType: secondPriceType, + FourPriceType: fourPriceType, + SubsidyFee: subsidyFee, + SubsidyRate: subsidyRate, + UserCommission: profit, + UserReturnMoney: returnProfit, + UserCommissionRate: selfRate, + PvdCommission: pvdFee, + PvdCommissionRate: opt.PvdRate, + SysCommission: sysFee, + SysCommissionRate: opt.SysRate, + PlanCommissionId: opt.PlanCommissionId, + Reason: v.Reason, + State: v.State, + CreateAt: int(v.StartTime), + UpdateAt: now, + ConfirmAt: 0, + PvdSettleAt: 0, + SettleAt: 0, + BenefitList: SerializeLvUser(CalcLvUserFee(lvUser)), + BenefitAll: allCommission, + Data: "", + UpdateFrom: 0, + PvdPid: v.Pid, + OrderCompare: v.IsCompare, + CostPrice: v.CostPrice, + IsTikTokTeamOrder: v.IsTikTokTeamOrder, + TikTokTeamCommission: v.TikTokTeamCommission, + TikTokTeamRealCommission: v.TikTokTeamRealCommission, + } + if v.State == md.OrderStateSucc && v.ConfirmAt == 0 { + newOrd.ConfirmAt = now + } + if utils.InArr(utils.IntToStr(v.State), []string{"1", "2"}) && v.ConfirmAt > 0 { + newOrd.ConfirmAt = int(v.ConfirmAt) + } + // 供应商结算时间 + if v.State == md.OrderStatePvdSettle { + newOrd.PvdSettleAt = now + if v.EndTime > 0 { + newOrd.PvdSettleAt = int(v.EndTime) + } + } + db.DbsOrderInsert(eg, newOrd) + // 塞入订单商品对应图片 + thumbnail := v.Thumbnail + if len(v.Thumbnail) > 3 && v.Thumbnail[0:2] == "//" { + thumbnail = "http:" + v.Thumbnail + } + + db.DbsOrderItemInfoInsert(eg, &model.OrdItemInfo{ + ItemId: v.ItemId, + Pvd: newPvd, + Thumbnail: thumbnail, + ItemTitle: v.ItemTitle, + ItemLink: v.ItemLink, + NumItemId: v.SkuId, + }) + mode := "" + if opt != nil { + mode = opt.Mode + } + // TODO 塞入对应订单关系 + if lvUser != nil && returnMoneyType == "0" { + //if optPvd == md.PVD_FREE && freeNewType == "1" { + // lvUser.AdditionalSubsidy = v.Commission + //} + OrderRelateInsert(eg, oid, newPvd, newOrd.CreateAt, lvUser, newOrd, dbName, false, mode, "1") + } else if returnMoneyOne != nil && returnMoneyType == "1" { + OrderReturnMoneyRelateInsert(eg, oid, newPvd, newOrd.CreateAt, returnMoneyOne, newOrd, dbName, false) + } + secondCommissionList := secondCommissionListArr[pvdOid] + if secondCommissionList != nil { + secondLvUser := secondCommissionList.LvUser + if secondLvUser != nil && returnMoneyType == "0" { + OrderRelateInsertService(eg, oid, newPvd, newOrd.CreateAt, secondLvUser, newOrd, dbName, false, mode, "1") + } + } + AcquisitionHookFirstOrder(eg, dbName, newOrd) + if uid > 0 { + //商家分佣 + args := map[string]string{ + "commission": utils.Float64ToStr(utils.FloatFormat(allCommission, 6)), // 总佣金 + "bili": utils.Float64ToStrByPrec(opt.MerchantRate, 4), // 抽成 除以100之后的 + "uid": utils.IntToStr(uid), // 用户id + "oid": utils.Int64ToStr(oid), // 订单号 + "pvd": newPvd, // 渠道 + } + o2o.AddStoreCommission(eg, args) + //写入区域代理订单 + var req = &md.InsertRegionalAgentOrdBelongData{ + Uid: uid, + Pvd: md.PVD_GUIDE, + CommPvd: md.PVD_COMMON, + Commission: utils.Float64ToStr(utils.FloatFormat(allCommission, 6)), + OrderId: oid, + RegionRate: opt.RegionRate, + GlobalRate: opt.GlobalRate, + RegionSubRate: opt.RegionSubRate, + + Status: "0", + } + //if opt.Mode == "lv_ds_check" && lvUser != nil { + // req.Commission = utils.Float64ToStrByPrec(lvUser.MinProfit, 8) + //} + go SaveOrderByCommApi(eg, dbName, req) + commCheckCoupon(eg, uid, v.ItemId, 0, 1, newOrd.Pvd, utils.Int64ToStr(v.Oid)) //导购的判断 + + if v.State != 4 { + //加油扣除优惠券额度 查询优惠券使用记录 + if v.Pvd == md.PVD_OILSTATION { + profits := v.CostPrice - v.PaidPrice + profits = utils.FloatFormat(profits, 2) + if profits > 0 { + bools := ReduceCoupon(eg, dbName, utils.Float64ToStr(profits), uid, v.ItemId, md.PVD_OILSTATION, "OIL", newOrd.CreateAt, v.ItemTitle, utils.Int64ToStr(v.Oid)) + //加入公告栏明细 + if bools == 1 { + AddPlacardRecord(eg, uid, "", "", md.PVD_OILSTATION, utils.Float64ToStr(profits), "") + } + } + } else { + commCheckCoupon(eg, uid, v.ItemId, 0, 1, newOrd.Pvd, utils.Int64ToStr(v.Oid)) //导购的判断 + } + //定制 抽奖加入付款订单 + req := md3.DayLuckDrawOrderJackpotReq{ + Uid: utils.IntToStr(uid), + Oid: utils.Int64ToStr(newOrd.OrdId), + Pvd: newOrd.Pvd, + Amount: utils.Float64ToStrByPrec(newOrd.PaidPrice, 7), + Commission: utils.Float64ToStrByPrec(newOrd.BenefitAll, 7), + } + svc.AddOrderJackpot(eg, req) + if cfg.Prd { + CheckValid(eg, dbName, uid, 1, ch) + } + } + + } + if freeOrderType == 13 || freeOrderType == md.OrderTypeFree || freeOrderType == md.OrderTypeTljFree || freeOrderType == md.OrderTypeTljRelationFree { + mutexKey := fmt.Sprintf("%s:all_order_to_store:%s:pvd:%s", dbName, v.PvdOid, v.Pvd) + available, err := cache.Do("SET", mutexKey, 1, "EX", 5, "NX") + if err != nil { + continue + } + if available != "OK" { + continue + } + arg := md.ZhiosOrderFree{ + ItemId: newOrd.ItemId, + SkuId: newOrd.NumItemId, + OptPvd: newPvd, + OrderType: utils.IntToStr(freeOrderType), + Pid: v.Pid, + Uid: utils.IntToStr(newOrd.Uid), + Mid: dbName, + Oid: utils.Int64ToStr(newOrd.OrdId), + } + if cfg.Prd { + ch.Publish(md.OrderFree, utils.SerializeStr(arg), md.OrderFreeRoutKeyForOrder) + + } else { + ch.Publish(md.OrderFree, utils.SerializeStr(arg), md.OrderFreeRoutKeyForOrderdev) + } + } + } + return nil +} diff --git a/consume/init.go b/consume/init.go index 099b693..0e4f87d 100644 --- a/consume/init.go +++ b/consume/init.go @@ -27,6 +27,7 @@ func initConsumes() { jobs[consumeMd.ZhiosOrderTrackCreateForPddConsumeFunName] = ZhiosOrderTrackCreateForPddConsume //拼多多-全部订单 jobs[consumeMd.ZhiosOrderTrackCreateForTikTokTeamConsumeFunName] = ZhiosOrderTrackCreateForTikTokTeamConsume //抖音团长服务费-全部订单 jobs[consumeMd.ZhiosOrderTrackCreateForWphConsumeFunName] = ZhiosOrderTrackCreateForWphConsume //唯品会-全部订单 + jobs[consumeMd.ZhiosOrderTrackCreateForPddZeroConsumeFunName] = ZhiosOrderTrackCreateForPddZeroConsume //拼多多-全部订单 } diff --git a/consume/md/consume_key.go b/consume/md/consume_key.go index 1ee8426..44d37dc 100644 --- a/consume/md/consume_key.go +++ b/consume/md/consume_key.go @@ -56,6 +56,15 @@ var RabbitMqQueueKeyList = []*MqQueue{ BindKey: "", ConsumeFunName: "ZhiosOrderTrackCreateForPddConsume", }, + { + ExchangeName: "zhios.order_track_create.exchange", + Name: "order_track_create_for_pdd_zero", + Type: DirectQueueType, + IsPersistent: false, + RoutKey: "pdd_zero", + BindKey: "", + ConsumeFunName: "ZhiosOrderTrackCreateForPddZeroConsume", + }, { ExchangeName: "zhios.order_track_create.exchange", Name: "order_track_create_for_wph", @@ -99,6 +108,7 @@ const ( ZhiosOrderTrackCreateForTbConsumeFunName = "ZhiosOrderTrackCreateForTbConsume" ZhiosOrderTrackCreateForJdConsumeFunName = "ZhiosOrderTrackCreateForJdConsume" ZhiosOrderTrackCreateForPddConsumeFunName = "ZhiosOrderTrackCreateForPddConsume" + ZhiosOrderTrackCreateForPddZeroConsumeFunName = "ZhiosOrderTrackCreateForPddZeroConsume" ZhiosOrderTrackCreateForWphConsumeFunName = "ZhiosOrderTrackCreateForWphConsume" ZhiosOrderTrackCreateForTikTokTeamConsumeFunName = "ZhiosOrderTrackCreateForTikTokTeamConsume" ZhiosOrderTrackUpdateForJdConsumeFunName = "ZhiosOrderTrackUpdateForJdConsume" diff --git a/consume/zhios_order_track_create_for_pdd_zero_consume.go b/consume/zhios_order_track_create_for_pdd_zero_consume.go new file mode 100644 index 0000000..f680536 --- /dev/null +++ b/consume/zhios_order_track_create_for_pdd_zero_consume.go @@ -0,0 +1,90 @@ +package consume + +import ( + "applet/app/cfg" + "applet/app/db" + md2 "applet/app/md" + svc2 "applet/app/svc" + "applet/app/utils" + "applet/app/utils/logx" + "applet/consume/md" + "code.fnuoos.com/go_rely_warehouse/zyos_go_mq.git/rabbit" + "code.fnuoos.com/go_rely_warehouse/zyos_go_order_relate_rule.git/rule/one_circles" + "encoding/json" + "errors" + "fmt" + "github.com/streadway/amqp" + "time" +) + +func ZhiosOrderTrackCreateForPddZeroConsume(queue md.MqQueue) { + fmt.Println(">>>>>>>>>>>>ZhiosOrderTrackCreateForPddConsume>>>>>>>>>>>>") + ch, err := rabbit.Cfg.Pool.GetChannel() + if err != nil { + logx.Error(err) + return + } + defer ch.Release() + //1、将自己绑定到交换机上 + ch.Bind(queue.Name, queue.ExchangeName, queue.RoutKey) + //2、取出数据进行消费 + ch.Qos(1) + delivery := ch.Consume(queue.Name, false) + + one_circles.Init(cfg.RedisAddr) + + var res amqp.Delivery + var ok bool + for { + res, ok = <-delivery + if ok == true { + err = handleZhiosOrderTrackCreateForPddZeroConsume(res.Body) + fmt.Println("err ::: ", err) + if err != nil { + fmt.Println("ZhiosOrderTrackCreateForPddConsume_ERR:::::", err.Error()) + _ = res.Reject(true) //TODO::拒绝 Ack + //_ = res.Reject(false) + var msg interface{} + json.Unmarshal(res.Body, &msg) + if err.Error() == "Connection timed out" { + //TODO::重新推回队列末尾,避免造成队列堵塞 + ch.Publish(queue.ExchangeName, msg, queue.RoutKey) + } else { + //TODO::推入新的队列中备份 + utils.FilePutContents("ZhiosOrderTrackCreateForPddConsume_ERR", utils.SerializeStr(err.Error())) + ch.Publish("zhios.order_track_create_exception.exchange", map[string]interface{}{ + "msg": msg, + "err": err.Error(), + }, "pdd") + } + } else { + err = res.Ack(true) + } + } else { + panic(errors.New("error getting message")) + } + } + fmt.Println("get msg done") +} + +func handleZhiosOrderTrackCreateForPddZeroConsume(msgData []byte) error { + //1、解析mq中queue的数据结构体 + var msg md2.ZhiosOrderTrackCreateRoutKeyForTb + err := json.Unmarshal(msgData, &msg) + if err != nil { + return err + } + time.Sleep(time.Microsecond * 100) // 等待100毫秒 + fmt.Println("order_track_create_for_Pdd_message:::::::::::>>>>>>>>>") + fmt.Println(msg) + if db.DBs[msg.DbName] == nil { + return nil + } + engine := db.DBs[msg.DbName] + err = svc2.OrderSaveCreateUpdate(engine, msg.Pvd, msg.OrderData, msg.Opts, msg.SecondOpts, msg.DbName) + if err != nil { + fmt.Println("order_track_create_for_Pdd_ERR:::::::::::>>>>>>>>>", err.Error()) + return err + } + return nil +}