From ee9ce5a54fee53dbffeb0a0f18a62c4f8a62b4dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Wed, 12 Feb 2020 15:39:39 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A5=BF=E9=B2=9C=E8=BE=BE=E5=95=86=E5=93=81?= =?UTF-8?q?=E5=BA=93=E5=90=88=E5=B9=B6=E6=B5=8B=E8=AF=95=EF=BC=8C=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=88=86=E8=B4=A6=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sku.go | 61 +++++++++++++++++-- business/jxstore/cms/user2.go | 12 ++++ business/jxstore/report/report.go | 20 +++--- business/model/sku.go | 5 ++ business/partner/purchase/jx/localjx/order.go | 26 ++++---- 5 files changed, 97 insertions(+), 27 deletions(-) diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index 1938a4a90..ad3456a50 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -1444,11 +1444,60 @@ func DeleteSkuNameExPrefixOverdue(db *dao.DaoDB) (err error) { return err } -func SumExianDaDepot() (err error) { - // result, err := api.EbaiAPI.GetExianDaSkuDepot() - // for _, v := range result { - // v.ElemeGoodsID - // v.ImageURL - // } +func SumExianDaDepot(ctx *jxcontext.Context) (err error) { + db := dao.GetDB() + result, err := api.EbaiAPI.GetExianDaSkuDepot() + for _, v := range result { + skus, err := api.EbaiAPI.GetExianDaSku(utils.Str2Int64(v.ElemeGoodsID)) + if err != nil { + return err + } + dao.Begin(db) + defer func() { + if r := recover(); r != nil { + dao.Rollback(db) + panic(r) + } + }() + prefix, name, _, specUnit, unit, specQuality := jxutils.SplitSkuName(v.GoodsName) + skuName := &model.SkuName{ + Prefix: prefix, + Name: name, + CategoryID: skus.CategoryIDThird, + IsGlobal: 1, + Unit: unit, + SpecQuality: specQuality, + SpecUnit: specUnit, + Price: 100, + Img: v.ImageURL, + Upc: &v.UpcID, + Status: model.SkuStatusNormal, + } + dao.WrapAddIDCULDEntity(skuName, ctx.GetUserName()) + err = dao.CreateEntity(db, &skuName) + if err != nil { + dao.Rollback(db) + return err + } + sku := &model.Sku{ + NameID: skuName.ID, + SpecQuality: specQuality, + SpecUnit: specUnit, + Weight: int(utils.Str2Int64(skus.Weight)), + Status: model.SkuStatusNormal, + ExdSkuID: v.ElemeGoodsID, + ExdSkuName: v.GoodsName, + ExdUpc: int(utils.Str2Int64(v.UpcID)), + ExdCategoryThirdID: skus.CategoryIDThird, + } + dao.WrapAddIDCULDEntity(sku, ctx.GetUserName()) + err = dao.CreateEntity(db, &sku) + if err != nil { + dao.Rollback(db) + return err + } + dao.Commit(db) + break + } return err } diff --git a/business/jxstore/cms/user2.go b/business/jxstore/cms/user2.go index bb7842202..dd990d7e2 100644 --- a/business/jxstore/cms/user2.go +++ b/business/jxstore/cms/user2.go @@ -201,6 +201,17 @@ func RegisterUserWithMobile(ctx *jxcontext.Context, user *model.User, mobileVeri user.Avatar = inAuthInfo.GetAvatar() } } + //注册时默认商城用户就加入分账接收方 + if strings.Contains(ctx.GetRequest().Referer(), "wx4b5930c13f8b1170") { + param := &wxpayapi.ProfitSharingReceiverParam{ + Receiver: wxpayapi.CData(`{ + "type":"` + wxpayapi.AccountTypeOpen + `", + "account":"` + inAuthInfo.GetAuthID() + `", + "relation_type":" ` + wxpayapi.Relation + `" + }`), + } + _, err = api.WxpayAPI.AddProfitSharingReceiver(param) + } if err = CreateUser(user, utils.LimitUTF8StringLen(createName, 32)); err == nil { userProvider.UpdateLastLogin(user.GetID(), authType, ctx.GetRealRemoteIP()) TryAddStoreBossRole4User(ctx, user) @@ -380,6 +391,7 @@ func CreateUser(user *model.User, creatorName string) (err error) { dao.WrapAddIDCULDEntity(user, creatorName) user.UserID = utils.GetUUID() user.Status = model.UserStatusNormal + user.DividePercentage = 5 return dao.CreateEntity(nil, user) } diff --git a/business/jxstore/report/report.go b/business/jxstore/report/report.go index 073a47914..fd429939f 100644 --- a/business/jxstore/report/report.go +++ b/business/jxstore/report/report.go @@ -260,26 +260,26 @@ func BeginSavePriceRefer(ctx *jxcontext.Context, cityCodes, skuIDs []int, isAsyn case 3: priceReferSnapshotList, err = dao.GetPriceReferSnapshotNoPage(db, []int{0}, nil, nil, snapshotAt) taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - dao.Begin(db) - defer func() { - if r := recover(); r != nil || err != nil { - dao.Rollback(db) - if r != nil { - panic(r) - } - } - }() v := batchItemList[0].(*model.PriceReferSnapshot) for _, appOrg := range apimanager.CurAPIManager.GetAppOrgCodeList(model.VendorIDJD) { directPrice, _ := jd.GetAPI(appOrg).GetJdSkuDirectPrice(v.SkuID) + dao.Begin(db) + defer func() { + if r := recover(); r != nil || err != nil { + dao.Rollback(db) + if r != nil { + panic(r) + } + } + }() if directPrice == 0 { continue } else { v.JdDirectPrice = int(directPrice) dao.UpdateEntity(db, v, "JdDirectPrice") } + dao.Commit(db) } - dao.Commit(db) return retVal, err } taskParallel := tasksch.NewParallelTask("获取并更新京东指导价格", tasksch.NewParallelConfig(), ctx, taskFunc, priceReferSnapshotList) diff --git a/business/model/sku.go b/business/model/sku.go index cd540411c..750a7e630 100644 --- a/business/model/sku.go +++ b/business/model/sku.go @@ -223,6 +223,11 @@ type Sku struct { Weight int `json:"weight"` // 重量/质量,单位为克,当相应的SkuName的SpecUnit为g或kg时,必须等于SpecQuality Status int `json:"status"` Seq int `json:"seq"` + + ExdSkuID string `orm:"column(exd_sku_id)" json:"exdSkuID"` + ExdSkuName string `json:"exdSkuName"` + ExdUpc int `json:"exdUpc"` + ExdCategoryThirdID int `orm:"column(exd_category_third_id)" json:"exdCategoryThirdID"` // JdID int64 `orm:"column(jd_id);null;index" json:"jdID"` // JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"` diff --git a/business/partner/purchase/jx/localjx/order.go b/business/partner/purchase/jx/localjx/order.go index e68a63367..a64c1b27c 100644 --- a/business/partner/purchase/jx/localjx/order.go +++ b/business/partner/purchase/jx/localjx/order.go @@ -660,7 +660,6 @@ func AutoPayForPopluarMan(ctx *jxcontext.Context, isAsync, isContinueWhenError b toDateStr = time.Now().AddDate(0, 0, -1).Format("2006-1-2") + " 23:59:59" ) result, err := dao.GetOrdersForJxPay(db, utils.Str2Time(fromDateStr), utils.Str2Time(toDateStr)) - fmt.Println(result) task := tasksch.NewParallelTask("AutoPayForPopluarMan", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { goods := batchItemList[0].(*dao.GoodsOrderPay) @@ -670,6 +669,9 @@ func AutoPayForPopluarMan(ctx *jxcontext.Context, isAsync, isContinueWhenError b TransactionID: goods.TransactionID, OutOrderNo: goods.VendorOrderID, } + payPrice1 int + payPrice2 int + receivers string = "[" ) user, err := dao.GetUserByID(db, "user_id", goods.UserID) if user.ParentMobile == "" { @@ -683,11 +685,9 @@ func AutoPayForPopluarMan(ctx *jxcontext.Context, isAsync, isContinueWhenError b if len(auth) == 0 { errMsg += fmt.Sprintf("打款失败!未找到此用户的微信验证方式!订单号:[%v],用户ID:[%v]\n", goods.VendorOrderID, user2.UserID) } else { - param.Receivers = wxpayapi.CData(`[{"type":"` + wxpayapi.AccountTypeOpen + `","account":"` + auth[0].AuthID + `","amount":` + utils.Int2Str(int(goods.ActualPayPrice)*user2.DividePercentage/100) + `,"description":"每日订单打款分到个人"}]`) - _, err := api.WxpayAPI.MultiProfitSharing(param) - if err != nil { - return retVal, err - } + payPrice1 = int(goods.ActualPayPrice) * user2.DividePercentage / 100 + receivers += `{"type":"` + wxpayapi.AccountTypeOpen + `","account":"` + auth[0].AuthID + `","amount":` + utils.Int2Str(payPrice1) + `,"description":"每日订单打款分到个人"}` + // _, err := api.WxpayAPI.MultiProfitSharing(param) } if user2.ParentMobile != "" { user3, err := dao.GetUserByID(db, "mobile", user2.ParentMobile) @@ -698,13 +698,17 @@ func AutoPayForPopluarMan(ctx *jxcontext.Context, isAsync, isContinueWhenError b if len(auth) == 0 { errMsg += fmt.Sprintf("打款失败!未找到此用户的微信验证方式!订单号:[%v],用户ID:[%v]\n", goods.VendorOrderID, user3.UserID) } else { - param.Receivers = wxpayapi.CData(`[{"type":"` + wxpayapi.AccountTypeOpen + `","account":"` + auth[0].AuthID + `","amount":` + utils.Int2Str(int(goods.ActualPayPrice)*user3.DividePercentage/100) + `,"description":"每日订单打款分到个人"}]`) - _, err := api.WxpayAPI.MultiProfitSharing(param) - if err != nil { - return retVal, err - } + payPrice2 = (int(goods.ActualPayPrice) - payPrice1) * user3.DividePercentage / 100 + receivers += `,{"type":"` + wxpayapi.AccountTypeOpen + `","account":"` + auth[0].AuthID + `","amount":` + utils.Int2Str(payPrice2) + `,"description":"每日订单打款分到个人"}` + // _, err := api.WxpayAPI.MultiProfitSharing(param) } } + receivers += "]" + param.Receivers = wxpayapi.CData(receivers) + _, err = api.WxpayAPI.MultiProfitSharing(param) + if err != nil { + return retVal, err + } return retVal, errors.New(errMsg) }, result) tasksch.HandleTask(task, nil, true).Run()