From 36b78d0f60859a6aa28ae79b0a95eea4554aae8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 28 May 2020 13:39:09 +0800 Subject: [PATCH 001/130] =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E4=BB=B7=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 6 ++++-- business/model/dao/store_sku.go | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index b08ea8622..854300772 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -312,11 +312,12 @@ func getGetStoresSkusBaseSQL(db *dao.DaoDB, storeIDs, skuIDs []int, isFocus bool JOIN store_sku_bind t4 ON t4.store_id = t3.id AND t4.sku_id = t2.id AND t4.deleted_at = ? LEFT JOIN sku_name_place_bind t5 ON t1.id = t5.name_id AND t3.city_code = t5.place_code LEFT JOIN price_refer_snapshot t6 ON t6.city_code = ? AND t6.sku_id = t2.id AND t6.snapshot_at = ? + LEFT JOIN store_sku_audit t7 ON t7.store_id = t4.store_id AND t7.name_id = t1.id AND t7.status = ? WHERE t1.deleted_at = ? AND (t1.is_global = 1 OR t5.id IS NOT NULL OR 1 = ?)/* AND t1.status = ?*/ ` sqlParams = append(sqlParams, []interface{}{ utils.DefaultTimeValue, - 0, utils.Time2Date(time.Now().AddDate(0, 0, -1)), + 0, model.StoreAuditStatusOnline, utils.Time2Date(time.Now().AddDate(0, 0, -1)), utils.DefaultTimeValue, utils.Bool2Int(isFocus), }) @@ -544,7 +545,8 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus, i t4.jd_price, t4.ebai_price, t4.mtwm_price, t4.jx_price, t4.yb_price, t4.jds_price, t4.jd_lock_time, t4.ebai_lock_time, t4.mtwm_lock_time, t4.jx_lock_time, t4.yb_lock_time, t4.jds_lock_time, t4.status_sale_begin, t4.status_sale_end, - t6.mid_unit_price real_mid_unit_price + t6.mid_unit_price real_mid_unit_price, + t7.unit_price audit_unit_price ` + sql if isHighPrice || priceType != 0 { sql += " , t4.unit_price DESC LIMIT 99" diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 7ad56c0e0..f6f0da5ea 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -155,6 +155,7 @@ type StoreSkuNameExt struct { RealMidUnitPrice int `json:"realMidUnitPrice"` Count int `json:"count"` YbSkuName string `json:"ybSkuName"` + AuditUnitPrice int `json:"auditUnitPrice"` //审核价格 } // GetStoreSkus用 From 3c78047f36b70c9c5892bc338064eb5df1eedcac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 28 May 2020 14:31:13 +0800 Subject: [PATCH 002/130] =?UTF-8?q?=E4=BB=B7=E6=A0=BC=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 84 +++++++++++++++++++++++++------ business/model/store.go | 4 ++ 2 files changed, 72 insertions(+), 16 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 854300772..0b7a3b233 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -839,20 +839,25 @@ func UpdateStoreSkus(ctx *jxcontext.Context, causeFlag, storeID int, skuBindInfo func UpdateStoresSkus(ctx *jxcontext.Context, causeFlag int, storeIDs []int, skuBindInfos []*StoreSkuBindInfo, isScale, isAsync, isContinueWhenError bool) (hint string, err error) { globals.SugarLogger.Debugf("UpdateStoresSkus:%s, storeIDs:%v, skuBindInfos:%s", ctx.GetTrackInfo(), storeIDs, utils.Format4Output(skuBindInfos, true)) - - var num int64 - db := dao.GetDB() - skuIDs, err := updateStoresSkusWithoutSync(ctx, db, storeIDs, skuBindInfos, isScale) - if err != nil { - return "", err + var flag = false + if ctx.GetLoginType() == weixin.AuthTypeMP || ctx.GetLoginType() == weixin.AuthTypeMini { + flag, err = doStoreSkuAudit(ctx, storeIDs, skuBindInfos) } - isAsync = asyncStoreSkuOpFilter(ctx, isAsync) - num = int64(len(skuIDs)) - if num > 0 { - hint, err = CurVendorSync.SyncStoresSkus(ctx, nil, causeFlag, db, nil, storeIDs, skuIDs, false, isAsync, isContinueWhenError) - } - if num == 0 || !isAsync || hint == "" { - hint = utils.Int64ToStr(num) + if !flag { + var num int64 + db := dao.GetDB() + skuIDs, err := updateStoresSkusWithoutSync(ctx, db, storeIDs, skuBindInfos, isScale) + if err != nil { + return "", err + } + isAsync = asyncStoreSkuOpFilter(ctx, isAsync) + num = int64(len(skuIDs)) + if num > 0 { + hint, err = CurVendorSync.SyncStoresSkus(ctx, nil, causeFlag, db, nil, storeIDs, skuIDs, false, isAsync, isContinueWhenError) + } + if num == 0 || !isAsync || hint == "" { + hint = utils.Int64ToStr(num) + } } return hint, err } @@ -978,9 +983,7 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs // if err = checkStoresSkusSaleCity(ctx, db, storeIDs, skuBindInfos); err != nil { // return nil, err // } - // if storeIDs, skuBindInfos, err = filterStorePriceChange(ctx, storeIDs, skuBindInfos); err != nil { - // return nil, err - // } + filterStoreSkuAudit(ctx, storeIDs, skuBindInfos) // globals.SugarLogger.Debugf("updateStoresSkusWithoutSync2, storeIDs:%v, skuBindInfos:%s", storeIDs, utils.Format4Output(skuBindInfos, false)) isUserCanDirectChangePrice := true if user := ctx.GetFullUser(); user != nil { @@ -4449,3 +4452,52 @@ func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs []int, s pagedInfo, err = dao.GetStoreSkuAudit(dao.GetDB(), storeIDs, nameIDs, skuIDs, status, name, remark, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd, pageSize, offset) return pagedInfo, err } + +func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*StoreSkuBindInfo) (isAudit bool, err error) { + globals.SugarLogger.Debugf("doStoreSkuAudit storeIDs: %v", storeIDs) + db := dao.GetDB() + for _, storeID := range storeIDs { + for _, skuBindInfo := range skuBindInfos { + if skuBindInfo.IsFocus != 0 || skuBindInfo.IsSale != 0 || skuBindInfo.UnitPrice == 0 { + globals.SugarLogger.Debugf("doStoreSkuAudit return1 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) + return false, err + } + if (ctx.GetFullUser().Type & model.UserTypeOperator) != 0 { + globals.SugarLogger.Debugf("doStoreSkuAudit return3 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) + return false, err + } + dao.Begin(db) + defer dao.Rollback(db) + storeSkuAudit := model.StoreSkuAudit{ + StoreID: storeID, + Type: model.StoreSkuAuditTypePrice, + NameID: skuBindInfo.NameID, + Status: model.StoreAuditStatusOnline, + UserID: ctx.GetUserID(), + UnitPrice: skuBindInfo.UnitPrice, + } + dao.WrapAddIDCULEntity(storeSkuAudit, ctx.GetUserName()) + storeSkus, err2 := dao.GetStoreSkusByNameIDs(db, []int{storeID}, skuBindInfo.NameID) + err = err2 + if len(storeSkus) > 0 { + if skuBindInfo.UnitPrice <= int(storeSkus[0].UnitPrice) { + globals.SugarLogger.Debugf("doStoreSkuAudit return2 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) + return false, err + } + storeSkuAudit.OriginUnitPrice = int(storeSkus[0].UnitPrice) + } + err = dao.CreateEntity(db, storeSkuAudit) + } + dao.Commit(db) + } + return isAudit, err +} + +func filterStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*StoreSkuBindInfo) (err error) { + + return err +} + +func StoreSkuPriceAudit(ctx *jxcontext.Context) (err error) { + return err +} diff --git a/business/model/store.go b/business/model/store.go index 647cc86d4..de13f468f 100644 --- a/business/model/store.go +++ b/business/model/store.go @@ -25,6 +25,10 @@ const ( StoreAuditStatusAll = -9 ) +const ( + StoreSkuAuditTypePrice = 1 //改价 +) + const ( MainSubStoreName = "本店" MainSubStoreAddress = "本店" From 81ad63ea4fe3d5d5fdfe38398ad0fc494d8b0a7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 28 May 2020 14:33:17 +0800 Subject: [PATCH 003/130] =?UTF-8?q?beta=E4=BA=AC=E4=B8=9C=E5=95=86?= =?UTF-8?q?=E5=9F=8E=E5=85=B3=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- conf/app.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/app.conf b/conf/app.conf index ef6f86ce8..f9ab2bab5 100644 --- a/conf/app.conf +++ b/conf/app.conf @@ -395,7 +395,7 @@ enableElmStoreWrite = false enableMtwmStoreWrite = false enableWscStoreWrite = false enableYbStoreWrite = false -enableJdShopWrite = true +enableJdShopWrite = false jdOrgCode = "320406" jdLoginName = "jd_jxcs1223" From b77bd3444c982038d6ee2dff71f23957b404d78a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 28 May 2020 15:33:05 +0800 Subject: [PATCH 004/130] =?UTF-8?q?=E4=BB=B7=E6=A0=BC=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 103 ++++++++++++++++++++++-------- business/model/dao/store_sku.go | 23 +++++++ 2 files changed, 98 insertions(+), 28 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 0b7a3b233..d5b2edd2d 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -839,10 +839,7 @@ func UpdateStoreSkus(ctx *jxcontext.Context, causeFlag, storeID int, skuBindInfo func UpdateStoresSkus(ctx *jxcontext.Context, causeFlag int, storeIDs []int, skuBindInfos []*StoreSkuBindInfo, isScale, isAsync, isContinueWhenError bool) (hint string, err error) { globals.SugarLogger.Debugf("UpdateStoresSkus:%s, storeIDs:%v, skuBindInfos:%s", ctx.GetTrackInfo(), storeIDs, utils.Format4Output(skuBindInfos, true)) - var flag = false - if ctx.GetLoginType() == weixin.AuthTypeMP || ctx.GetLoginType() == weixin.AuthTypeMini { - flag, err = doStoreSkuAudit(ctx, storeIDs, skuBindInfos) - } + flag, err := doStoreSkuAudit(ctx, storeIDs, skuBindInfos) if !flag { var num int64 db := dao.GetDB() @@ -983,7 +980,6 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs // if err = checkStoresSkusSaleCity(ctx, db, storeIDs, skuBindInfos); err != nil { // return nil, err // } - filterStoreSkuAudit(ctx, storeIDs, skuBindInfos) // globals.SugarLogger.Debugf("updateStoresSkusWithoutSync2, storeIDs:%v, skuBindInfos:%s", storeIDs, utils.Format4Output(skuBindInfos, false)) isUserCanDirectChangePrice := true if user := ctx.GetFullUser(); user != nil { @@ -4458,46 +4454,97 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto db := dao.GetDB() for _, storeID := range storeIDs { for _, skuBindInfo := range skuBindInfos { + storeAudits, err := dao.GetStoreSkuAuditLight(db, []int{storeID}, []int{skuBindInfo.NameID}, model.StoreAuditStatusOnline) + //关注,可售排除 if skuBindInfo.IsFocus != 0 || skuBindInfo.IsSale != 0 || skuBindInfo.UnitPrice == 0 { globals.SugarLogger.Debugf("doStoreSkuAudit return1 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) return false, err } + //运营排除 if (ctx.GetFullUser().Type & model.UserTypeOperator) != 0 { + if len(storeAudits) > 0 { + dao.DeleteEntityLogically(db, storeAudits[0], nil, ctx.GetUserName(), nil) + } + globals.SugarLogger.Debugf("doStoreSkuAudit return2 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) + return false, err + } + if ctx.GetLoginType() != weixin.AuthTypeMP && ctx.GetLoginType() != weixin.AuthTypeMini { globals.SugarLogger.Debugf("doStoreSkuAudit return3 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) return false, err } - dao.Begin(db) - defer dao.Rollback(db) - storeSkuAudit := model.StoreSkuAudit{ - StoreID: storeID, - Type: model.StoreSkuAuditTypePrice, - NameID: skuBindInfo.NameID, - Status: model.StoreAuditStatusOnline, - UserID: ctx.GetUserID(), - UnitPrice: skuBindInfo.UnitPrice, - } - dao.WrapAddIDCULEntity(storeSkuAudit, ctx.GetUserName()) - storeSkus, err2 := dao.GetStoreSkusByNameIDs(db, []int{storeID}, skuBindInfo.NameID) - err = err2 + //如果改的价比原价低排除 + storeSkus, err := dao.GetStoreSkusByNameIDs(db, []int{storeID}, skuBindInfo.NameID) if len(storeSkus) > 0 { if skuBindInfo.UnitPrice <= int(storeSkus[0].UnitPrice) { - globals.SugarLogger.Debugf("doStoreSkuAudit return2 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) + if len(storeAudits) > 0 { + dao.DeleteEntityLogically(db, storeAudits[0], nil, ctx.GetUserName(), nil) + } + globals.SugarLogger.Debugf("doStoreSkuAudit return4 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) return false, err + } else { + if len(storeAudits) > 0 { + dao.DeleteEntityLogically(db, storeAudits[0], nil, ctx.GetUserName(), nil) + } } - storeSkuAudit.OriginUnitPrice = int(storeSkus[0].UnitPrice) + } else { + return false, fmt.Errorf("未查询到该门店商品价,storeID: %v, nameID: %V", storeID, skuBindInfo.NameID) } + storeSkuAudit := model.StoreSkuAudit{ + StoreID: storeID, + Type: model.StoreSkuAuditTypePrice, + NameID: skuBindInfo.NameID, + Status: model.StoreAuditStatusOnline, + UnitPrice: skuBindInfo.UnitPrice, + OriginUnitPrice: int(storeSkus[0].UnitPrice), + } + dao.WrapAddIDCULEntity(storeSkuAudit, ctx.GetUserName()) err = dao.CreateEntity(db, storeSkuAudit) } - dao.Commit(db) } return isAudit, err } -func filterStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*StoreSkuBindInfo) (err error) { - - return err -} - -func StoreSkuPriceAudit(ctx *jxcontext.Context) (err error) { - return err +func StoreSkuPriceAudit(ctx *jxcontext.Context, storeIDs, nameIDs []int, status int, isAsync, isContinueWhenError bool) (hint string, err error) { + db := dao.GetDB() + if status == model.StoreAuditStatusOnline { + return "", fmt.Errorf("审核标志不正确!") + } + task := tasksch.NewParallelTask("StoreSkuPriceAudit", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx, + func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + storeID := batchItemList[0].(int) + for _, v := range nameIDs { + storeAudits, err := dao.GetStoreSkuAuditLight(db, []int{storeID}, []int{v}, model.StoreAuditStatusOnline) + if len(storeAudits) == 0 || err != nil { + return retVal, fmt.Errorf("未查询到该门店该商品的待审核信息!storeID: %v, nameID: %v", storeID, v) + } + //审核通过 + if status == model.StoreAuditStatusCreated { + storeAudits[0].UserID = ctx.GetUserID() + storeAudits[0].Status = model.StoreAuditStatusCreated + _, err = dao.UpdateEntity(db, storeAudits[0], "UserID", "Status") + var skuBindInfos = []*StoreSkuBindInfo{ + &StoreSkuBindInfo{ + NameID: v, + UnitPrice: storeAudits[0].UnitPrice, + }, + } + _, err = UpdateStoresSkus(ctx, 0, []int{storeID}, skuBindInfos, false, false, true) + } else if status == model.StoreAuditStatusRejected { + storeAudits[0].UserID = ctx.GetUserID() + storeAudits[0].Status = model.StoreAuditStatusRejected + _, err = dao.UpdateEntity(db, storeAudits[0], "UserID", "Status") + } else { + return retVal, fmt.Errorf("审核标志不正确!") + } + } + return retVal, err + }, storeIDs) + tasksch.HandleTask(task, nil, true).Run() + if isAsync { + hint = task.GetID() + } else { + _, err = task.GetResult(0) + hint = "1" + } + return hint, err } diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index f6f0da5ea..35866d1a5 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1585,3 +1585,26 @@ func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs []int, status int, na } return pagedInfo, err } + +func GetStoreSkuAuditLight(db *DaoDB, storeIDs, nameIDs []int, status int) (storeSkuAudit []*model.StoreSkuAudit, err error) { + sql := ` + SELECT a.* + FROM store_sku_audit a + WHERE a.deleted_at = ? + ` + sqlParams := []interface{}{utils.DefaultTimeValue} + if len(storeIDs) > 0 { + sql += " AND a.store_id IN (" + GenQuestionMarks(len(storeIDs)) + ")" + sqlParams = append(sqlParams, storeIDs) + } + if len(nameIDs) > 0 { + sql += " AND a.name_id IN (" + GenQuestionMarks(len(nameIDs)) + ")" + sqlParams = append(sqlParams, nameIDs) + } + if status != model.StoreAuditStatusAll { + sql += " AND a.status = ? " + sqlParams = append(sqlParams, status) + } + err = GetRows(db, &storeSkuAudit, sql, sqlParams...) + return storeSkuAudit, err +} From d03830503668d281b0fcae95611ebc4b8a201143 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 28 May 2020 15:53:53 +0800 Subject: [PATCH 005/130] =?UTF-8?q?=E4=BB=B7=E6=A0=BC=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index d5b2edd2d..90f51b043 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4461,17 +4461,17 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto return false, err } //运营排除 - if (ctx.GetFullUser().Type & model.UserTypeOperator) != 0 { - if len(storeAudits) > 0 { - dao.DeleteEntityLogically(db, storeAudits[0], nil, ctx.GetUserName(), nil) - } - globals.SugarLogger.Debugf("doStoreSkuAudit return2 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) - return false, err - } - if ctx.GetLoginType() != weixin.AuthTypeMP && ctx.GetLoginType() != weixin.AuthTypeMini { - globals.SugarLogger.Debugf("doStoreSkuAudit return3 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) - return false, err - } + // if (ctx.GetFullUser().Type & model.UserTypeOperator) != 0 { + // if len(storeAudits) > 0 { + // dao.DeleteEntityLogically(db, storeAudits[0], nil, ctx.GetUserName(), nil) + // } + // globals.SugarLogger.Debugf("doStoreSkuAudit return2 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) + // return false, err + // } + // if ctx.GetLoginType() != weixin.AuthTypeMP && ctx.GetLoginType() != weixin.AuthTypeMini { + // globals.SugarLogger.Debugf("doStoreSkuAudit return3 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) + // return false, err + // } //如果改的价比原价低排除 storeSkus, err := dao.GetStoreSkusByNameIDs(db, []int{storeID}, skuBindInfo.NameID) if len(storeSkus) > 0 { From b8467503cb90e8d25c671121749c18538051c9ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 28 May 2020 16:21:11 +0800 Subject: [PATCH 006/130] =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 90f51b043..c6b961318 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4497,8 +4497,9 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto UnitPrice: skuBindInfo.UnitPrice, OriginUnitPrice: int(storeSkus[0].UnitPrice), } - dao.WrapAddIDCULEntity(storeSkuAudit, ctx.GetUserName()) + dao.WrapAddIDCULEntity(&storeSkuAudit, ctx.GetUserName()) err = dao.CreateEntity(db, storeSkuAudit) + return true, err } } return isAudit, err From 048ef4236a2e5316b19d614c3323bbecada98733 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 28 May 2020 16:37:54 +0800 Subject: [PATCH 007/130] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 4 ++-- deploy/ansible.yml | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index c6b961318..1435b04fe 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4489,7 +4489,7 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto } else { return false, fmt.Errorf("未查询到该门店商品价,storeID: %v, nameID: %V", storeID, skuBindInfo.NameID) } - storeSkuAudit := model.StoreSkuAudit{ + storeSkuAudit := &model.StoreSkuAudit{ StoreID: storeID, Type: model.StoreSkuAuditTypePrice, NameID: skuBindInfo.NameID, @@ -4497,7 +4497,7 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto UnitPrice: skuBindInfo.UnitPrice, OriginUnitPrice: int(storeSkus[0].UnitPrice), } - dao.WrapAddIDCULEntity(&storeSkuAudit, ctx.GetUserName()) + dao.WrapAddIDCULEntity(storeSkuAudit, ctx.GetUserName()) err = dao.CreateEntity(db, storeSkuAudit) return true, err } diff --git a/deploy/ansible.yml b/deploy/ansible.yml index 1eff26dd7..f9b033a69 100644 --- a/deploy/ansible.yml +++ b/deploy/ansible.yml @@ -1,7 +1,6 @@ --- - hosts: "{{ deploy_hosts }}" remote_user: ubuntu - become: True tasks: - name: copy shell copy: From 20f5513febb7e01006d0817b570e12c820e6bb92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 28 May 2020 17:28:17 +0800 Subject: [PATCH 008/130] =?UTF-8?q?=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 1435b04fe..77057952f 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4463,7 +4463,8 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto //运营排除 // if (ctx.GetFullUser().Type & model.UserTypeOperator) != 0 { // if len(storeAudits) > 0 { - // dao.DeleteEntityLogically(db, storeAudits[0], nil, ctx.GetUserName(), nil) + // storeAudits[0].DeletedAt = time.Now() + // dao.UpdateEntity(db, storeAudits[0], "DeletedAt") // } // globals.SugarLogger.Debugf("doStoreSkuAudit return2 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) // return false, err @@ -4483,7 +4484,8 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto return false, err } else { if len(storeAudits) > 0 { - dao.DeleteEntityLogically(db, storeAudits[0], nil, ctx.GetUserName(), nil) + storeAudits[0].DeletedAt = time.Now() + dao.UpdateEntity(db, storeAudits[0], "DeletedAt") } } } else { @@ -4497,7 +4499,7 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto UnitPrice: skuBindInfo.UnitPrice, OriginUnitPrice: int(storeSkus[0].UnitPrice), } - dao.WrapAddIDCULEntity(storeSkuAudit, ctx.GetUserName()) + dao.WrapAddIDCULDEntity(storeSkuAudit, ctx.GetUserName()) err = dao.CreateEntity(db, storeSkuAudit) return true, err } From 6540b2af60327f8d77184e3bb42e7336646aab7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 28 May 2020 17:30:01 +0800 Subject: [PATCH 009/130] =?UTF-8?q?=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 77057952f..95561e0d6 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -312,12 +312,13 @@ func getGetStoresSkusBaseSQL(db *dao.DaoDB, storeIDs, skuIDs []int, isFocus bool JOIN store_sku_bind t4 ON t4.store_id = t3.id AND t4.sku_id = t2.id AND t4.deleted_at = ? LEFT JOIN sku_name_place_bind t5 ON t1.id = t5.name_id AND t3.city_code = t5.place_code LEFT JOIN price_refer_snapshot t6 ON t6.city_code = ? AND t6.sku_id = t2.id AND t6.snapshot_at = ? - LEFT JOIN store_sku_audit t7 ON t7.store_id = t4.store_id AND t7.name_id = t1.id AND t7.status = ? + LEFT JOIN store_sku_audit t7 ON t7.store_id = t4.store_id AND t7.name_id = t1.id AND t7.status = ? AND t7.deleted_at = ? WHERE t1.deleted_at = ? AND (t1.is_global = 1 OR t5.id IS NOT NULL OR 1 = ?)/* AND t1.status = ?*/ ` sqlParams = append(sqlParams, []interface{}{ utils.DefaultTimeValue, - 0, model.StoreAuditStatusOnline, utils.Time2Date(time.Now().AddDate(0, 0, -1)), + 0, model.StoreAuditStatusOnline, utils.DefaultTimeValue, + utils.Time2Date(time.Now().AddDate(0, 0, -1)), utils.DefaultTimeValue, utils.Bool2Int(isFocus), }) From ad5e061c3e66b1e56252fba235f4d044027530e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 28 May 2020 17:40:05 +0800 Subject: [PATCH 010/130] =?UTF-8?q?=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 95561e0d6..4d4e83cf2 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -554,6 +554,8 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus, i } var tmpList []*tGetStoresSkusInfo beginTime := time.Now() + fmt.Println(sql) + fmt.Println(sqlParams) if err = dao.GetRows(db, &tmpList, sql, sqlParams...); err != nil { dao.Rollback(db) return nil, err From d609289a9f2975b69230039c8dc38c01c3669d21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 28 May 2020 17:44:52 +0800 Subject: [PATCH 011/130] =?UTF-8?q?=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 4d4e83cf2..65b3209b4 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -317,8 +317,8 @@ func getGetStoresSkusBaseSQL(db *dao.DaoDB, storeIDs, skuIDs []int, isFocus bool ` sqlParams = append(sqlParams, []interface{}{ utils.DefaultTimeValue, - 0, model.StoreAuditStatusOnline, utils.DefaultTimeValue, - utils.Time2Date(time.Now().AddDate(0, 0, -1)), + 0, utils.Time2Date(time.Now().AddDate(0, 0, -1)), + model.StoreAuditStatusOnline, utils.DefaultTimeValue, utils.DefaultTimeValue, utils.Bool2Int(isFocus), }) @@ -554,8 +554,6 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus, i } var tmpList []*tGetStoresSkusInfo beginTime := time.Now() - fmt.Println(sql) - fmt.Println(sqlParams) if err = dao.GetRows(db, &tmpList, sql, sqlParams...); err != nil { dao.Rollback(db) return nil, err From 2676883c329ba55707e6ff487b0bb0f4b726f90e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 28 May 2020 18:01:07 +0800 Subject: [PATCH 012/130] =?UTF-8?q?=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 65b3209b4..4738c4634 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -554,6 +554,8 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus, i } var tmpList []*tGetStoresSkusInfo beginTime := time.Now() + fmt.Println(sql) + fmt.Println(sqlParams) if err = dao.GetRows(db, &tmpList, sql, sqlParams...); err != nil { dao.Rollback(db) return nil, err From abb15c11e4afbead567ce11424f5c896fee4234a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 28 May 2020 18:05:53 +0800 Subject: [PATCH 013/130] =?UTF-8?q?=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 4738c4634..ec8258c5b 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -128,6 +128,7 @@ type tGetStoresSkusInfo struct { dao.StoreSkuExt RealMidUnitPrice int `json:"realMidUnitPrice"` //真实的该商品的全国中位价 YbSkuName string + AuditUnitPrice int } type SheetParam struct { @@ -554,8 +555,6 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus, i } var tmpList []*tGetStoresSkusInfo beginTime := time.Now() - fmt.Println(sql) - fmt.Println(sqlParams) if err = dao.GetRows(db, &tmpList, sql, sqlParams...); err != nil { dao.Rollback(db) return nil, err @@ -578,6 +577,7 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus, i PayPercentage: v.PayPercentage, RealMidUnitPrice: v.RealMidUnitPrice, YbSkuName: v.YbSkuName, + AuditUnitPrice: v.AuditUnitPrice, } if !isBySku { storeNameMap[index] = storeName From 30edb70d314be5b1a6985e85ce7c7655006f46c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 28 May 2020 18:15:43 +0800 Subject: [PATCH 014/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/cms_store_sku.go | 26 ++++++++++++++++++++++++-- routers/commentsRouter_controllers.go | 18 ++++++++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index 04a5ee54c..32fac4e16 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -812,8 +812,8 @@ func (c *StoreSkuController) SyncMatterC4ToGy() { }) } -// @Title 得到商家商品修改价格请求信息 -// @Description 得到商家商品修改价格请求信息 +// @Title 查询商品审核信息 +// @Description 查询商品审核信息 // @Param token header string true "认证token" // @Param applyTimeStart query string false "申请开始时间" // @Param applyTimeEnd query string false "申请结束时间" @@ -845,3 +845,25 @@ func (c *StoreSkuController) GetStoreSkuAudit() { return retVal, "", err }) } + +// @Title 审核商品 +// @Description 审核商品 +// @Param token header string true "认证token" +// @Param storeIDs formData string false "门店ID列表" +// @Param nameIDs formData string false "id列表对象,当前指skuname id" +// @Param status formData int false "审核标志,1通过,-1 不通过" +// @Param isAsync formData bool false "是否异步,缺省是同步" +// @Param isContinueWhenError formData bool false "单个同步失败是否继续,缺省false" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /StoreSkuPriceAudit [post] +func (c *StoreSkuController) StoreSkuPriceAudit() { + c.callStoreSkuPriceAudit(func(params *tStoreSkuStoreSkuPriceAuditParams) (retVal interface{}, errCode string, err error) { + var storeIDs, nameIDs []int + if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs, params.NameIDs, &nameIDs); err != nil { + return retVal, "", err + } + retVal, err = cms.StoreSkuPriceAudit(params.Ctx, storeIDs, nameIDs, params.Status, params.IsAsync, params.IsContinueWhenError) + return retVal, "", err + }) +} diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 86c0ff4f1..ea057cdc2 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -1944,6 +1944,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"], + beego.ControllerComments{ + Method: "GetStoreSkuAudit", + Router: `/GetStoreSkuAudit`, + AllowHTTPMethods: []string{"get"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"], beego.ControllerComments{ Method: "GetStoreSkus", @@ -2088,6 +2097,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"], + beego.ControllerComments{ + Method: "StoreSkuPriceAudit", + Router: `/StoreSkuPriceAudit`, + AllowHTTPMethods: []string{"post"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"], beego.ControllerComments{ Method: "SyncJdStoreProducts", From 03fc83a7fa198c58a4c2c1bf60a9972b0ee7c985 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 28 May 2020 18:17:40 +0800 Subject: [PATCH 015/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/store_sku.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 35866d1a5..8560639a8 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1572,7 +1572,7 @@ func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs []int, status int, na sql += " AND a.updated_at BETWEEN ? AND ?" sqlParams = append(sqlParams, applyTimeStart, applyTimeEnd) } - sql += "LIMIT ? OFFSET ?" + sql += " LIMIT ? OFFSET ?" pageSize = jxutils.FormalizePageSize(pageSize) sqlParams = append(sqlParams, pageSize, offset) Begin(db) From 6414599e0a68185d567d599e9dc0ff15bbc19ac1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 28 May 2020 18:19:40 +0800 Subject: [PATCH 016/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/store_sku.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 8560639a8..3b9e3b8bb 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1539,9 +1539,9 @@ func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs []int, status int, na var requestList []*model.StoreSkuAudit sql := ` SELECT SQL_CALC_FOUND_ROWS a.* - FROM store_sku_audit a, user b + FROM store_sku_audit a + LEFT JOIN user b ON a.user_id = b.user_id WHERE a.deleted_at = ? - AND a.user_id = b.user_id ` sqlParams := []interface{}{utils.DefaultTimeValue} if len(storeIDs) > 0 { From 329a531cd3ed1ef18f5e4ccadaa94a5a035dffa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 28 May 2020 18:22:05 +0800 Subject: [PATCH 017/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/store_sku.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 3b9e3b8bb..0fc668e4e 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1577,6 +1577,8 @@ func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs []int, status int, na sqlParams = append(sqlParams, pageSize, offset) Begin(db) defer Commit(db) + fmt.Println(sql) + fmt.Println(sqlParams) if err = GetRows(db, &requestList, sql, sqlParams...); err == nil { return &model.PagedInfo{ TotalCount: GetLastTotalRowCount(db), From 7b2e85bc27fd4e00c1165500be49691c7c850e7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 28 May 2020 18:27:10 +0800 Subject: [PATCH 018/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 4 ++-- controllers/cms_store_sku.go | 6 +----- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index ec8258c5b..f8031b91b 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4447,8 +4447,8 @@ func RefreshJdsSkusStatus(ctx *jxcontext.Context) (err error) { return err } -func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs []int, status int, name, remark string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { - pagedInfo, err = dao.GetStoreSkuAudit(dao.GetDB(), storeIDs, nameIDs, skuIDs, status, name, remark, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd, pageSize, offset) +func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs []int, status int, name, remark string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd string, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { + pagedInfo, err = dao.GetStoreSkuAudit(dao.GetDB(), storeIDs, nameIDs, skuIDs, status, name, remark, utils.Str2Time(applyTimeStart), utils.Str2Time(applyTimeEnd), utils.Str2Time(auditTimeStart), utils.Str2Time(auditTimeEnd), pageSize, offset) return pagedInfo, err } diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index 32fac4e16..79efd3f53 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -832,16 +832,12 @@ func (c *StoreSkuController) SyncMatterC4ToGy() { func (c *StoreSkuController) GetStoreSkuAudit() { c.callGetStoreSkuAudit(func(params *tStoreSkuGetStoreSkuAuditParams) (retVal interface{}, errCode string, err error) { var ( - timeList []time.Time storeIDs, nameIDs []int ) - if timeList, err = jxutils.BatchStr2Time(params.ApplyTimeStart, params.ApplyTimeEnd, params.AuditTimeStart, params.AuditTimeEnd); err != nil { - return retVal, "", err - } if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs, params.NameIDs, &nameIDs); err != nil { return retVal, "", err } - retVal, err = cms.GetStoreSkuAudit(params.Ctx, storeIDs, nameIDs, nil, params.Status, params.Name, params.Remark, timeList[0], timeList[1], timeList[2], timeList[3], params.PageSize, params.Offset) + retVal, err = cms.GetStoreSkuAudit(params.Ctx, storeIDs, nameIDs, nil, params.Status, params.Name, params.Remark, params.ApplyTimeStart, params.ApplyTimeEnd, params.AuditTimeStart, params.AuditTimeEnd, params.PageSize, params.Offset) return retVal, "", err }) } From c9169fab708ef82cafb378915106caf129a3a091 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 08:51:17 +0800 Subject: [PATCH 019/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 6 +++++- business/model/dao/store_sku.go | 2 -- controllers/cms_store_sku.go | 3 ++- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index f8031b91b..8003e1c59 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4510,7 +4510,7 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto return isAudit, err } -func StoreSkuPriceAudit(ctx *jxcontext.Context, storeIDs, nameIDs []int, status int, isAsync, isContinueWhenError bool) (hint string, err error) { +func StoreSkuPriceAudit(ctx *jxcontext.Context, storeIDs, nameIDs []int, status int, remark string, isAsync, isContinueWhenError bool) (hint string, err error) { db := dao.GetDB() if status == model.StoreAuditStatusOnline { return "", fmt.Errorf("审核标志不正确!") @@ -4523,6 +4523,9 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeIDs, nameIDs []int, status if len(storeAudits) == 0 || err != nil { return retVal, fmt.Errorf("未查询到该门店该商品的待审核信息!storeID: %v, nameID: %v", storeID, v) } + if len(storeAudits) > 1 { + return retVal, fmt.Errorf("查询到该门店该商品的待审核信息大于1条!storeID: %v, nameID: %v", storeID, v) + } //审核通过 if status == model.StoreAuditStatusCreated { storeAudits[0].UserID = ctx.GetUserID() @@ -4538,6 +4541,7 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeIDs, nameIDs []int, status } else if status == model.StoreAuditStatusRejected { storeAudits[0].UserID = ctx.GetUserID() storeAudits[0].Status = model.StoreAuditStatusRejected + storeAudits[0].Remark = remark _, err = dao.UpdateEntity(db, storeAudits[0], "UserID", "Status") } else { return retVal, fmt.Errorf("审核标志不正确!") diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 0fc668e4e..3b9e3b8bb 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1577,8 +1577,6 @@ func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs []int, status int, na sqlParams = append(sqlParams, pageSize, offset) Begin(db) defer Commit(db) - fmt.Println(sql) - fmt.Println(sqlParams) if err = GetRows(db, &requestList, sql, sqlParams...); err == nil { return &model.PagedInfo{ TotalCount: GetLastTotalRowCount(db), diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index 79efd3f53..74d4716e6 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -848,6 +848,7 @@ func (c *StoreSkuController) GetStoreSkuAudit() { // @Param storeIDs formData string false "门店ID列表" // @Param nameIDs formData string false "id列表对象,当前指skuname id" // @Param status formData int false "审核标志,1通过,-1 不通过" +// @Param remark formData string false "审核不通过原因" // @Param isAsync formData bool false "是否异步,缺省是同步" // @Param isContinueWhenError formData bool false "单个同步失败是否继续,缺省false" // @Success 200 {object} controllers.CallResult @@ -859,7 +860,7 @@ func (c *StoreSkuController) StoreSkuPriceAudit() { if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs, params.NameIDs, &nameIDs); err != nil { return retVal, "", err } - retVal, err = cms.StoreSkuPriceAudit(params.Ctx, storeIDs, nameIDs, params.Status, params.IsAsync, params.IsContinueWhenError) + retVal, err = cms.StoreSkuPriceAudit(params.Ctx, storeIDs, nameIDs, params.Status, params.Remark, params.IsAsync, params.IsContinueWhenError) return retVal, "", err }) } From c7deaf32d7c5f59cc1e05e085dee200b25f536f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 09:00:27 +0800 Subject: [PATCH 020/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 4 ++-- business/model/dao/store_sku.go | 8 ++++---- business/model/store_sku.go | 4 ++-- controllers/cms_store_sku.go | 8 ++++---- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 8003e1c59..f4b83d4c3 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4447,8 +4447,8 @@ func RefreshJdsSkusStatus(ctx *jxcontext.Context) (err error) { return err } -func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs []int, status int, name, remark string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd string, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { - pagedInfo, err = dao.GetStoreSkuAudit(dao.GetDB(), storeIDs, nameIDs, skuIDs, status, name, remark, utils.Str2Time(applyTimeStart), utils.Str2Time(applyTimeEnd), utils.Str2Time(auditTimeStart), utils.Str2Time(auditTimeEnd), pageSize, offset) +func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs, statuss []int, name, remark string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd string, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { + pagedInfo, err = dao.GetStoreSkuAudit(dao.GetDB(), storeIDs, nameIDs, skuIDs, statuss, name, remark, utils.Str2Time(applyTimeStart), utils.Str2Time(applyTimeEnd), utils.Str2Time(auditTimeStart), utils.Str2Time(auditTimeEnd), pageSize, offset) return pagedInfo, err } diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 3b9e3b8bb..8e3d97696 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1535,7 +1535,7 @@ func UpdateJdsWareID(db *DaoDB, storeSkuSyncInfo *StoreSkuSyncInfo) (err error) return err } -func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs []int, status int, name, remark string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { +func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss []int, name, remark string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { var requestList []*model.StoreSkuAudit sql := ` SELECT SQL_CALC_FOUND_ROWS a.* @@ -1552,9 +1552,9 @@ func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs []int, status int, na sql += " AND a.name_id IN (" + GenQuestionMarks(len(nameIDs)) + ")" sqlParams = append(sqlParams, nameIDs) } - if status != model.StoreAuditStatusAll { - sql += " AND a.status = ? " - sqlParams = append(sqlParams, status) + if len(statuss) > 0 { + sql += " AND a.status IN (" + GenQuestionMarks(len(statuss)) + ")" + sqlParams = append(sqlParams, statuss) } if remark != "" { sql += " AND a.remark LIKE ? " diff --git a/business/model/store_sku.go b/business/model/store_sku.go index 8bd9d72a7..1bb2a478a 100644 --- a/business/model/store_sku.go +++ b/business/model/store_sku.go @@ -20,8 +20,8 @@ const ( const ( RequestStatusNew = 0 - RequestStatusRejected = 1 - RequestStatusAccepted = 2 + RequestStatusRejected = -1 + RequestStatusAccepted = 1 RequestStatusCanceled = 3 ) diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index 74d4716e6..c398a9f5a 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -823,7 +823,7 @@ func (c *StoreSkuController) SyncMatterC4ToGy() { // @Param remark query string false "不通过原因" // @Param storeIDs query string false "门店ID列表" // @Param nameIDs query string false "id列表对象,当前指skuname id" -// @Param status query int false "审核状态" +// @Param statuss query string false "审核状态" // @Param offset query int false "门店列表起始序号(以0开始,缺省为0)" // @Param pageSize query int false "门店列表页大小(缺省为50,-1表示全部)" // @Success 200 {object} controllers.CallResult @@ -832,12 +832,12 @@ func (c *StoreSkuController) SyncMatterC4ToGy() { func (c *StoreSkuController) GetStoreSkuAudit() { c.callGetStoreSkuAudit(func(params *tStoreSkuGetStoreSkuAuditParams) (retVal interface{}, errCode string, err error) { var ( - storeIDs, nameIDs []int + storeIDs, nameIDs, statuss []int ) - if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs, params.NameIDs, &nameIDs); err != nil { + if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs, params.NameIDs, &nameIDs, params.Statuss, &statuss); err != nil { return retVal, "", err } - retVal, err = cms.GetStoreSkuAudit(params.Ctx, storeIDs, nameIDs, nil, params.Status, params.Name, params.Remark, params.ApplyTimeStart, params.ApplyTimeEnd, params.AuditTimeStart, params.AuditTimeEnd, params.PageSize, params.Offset) + retVal, err = cms.GetStoreSkuAudit(params.Ctx, storeIDs, nameIDs, nil, statuss, params.Name, params.Remark, params.ApplyTimeStart, params.ApplyTimeEnd, params.AuditTimeStart, params.AuditTimeEnd, params.PageSize, params.Offset) return retVal, "", err }) } From f9759cad2edb7f7fbf908b3da4d18edb06bfe5de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 09:04:02 +0800 Subject: [PATCH 021/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index f4b83d4c3..df6be44eb 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4537,7 +4537,7 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeIDs, nameIDs []int, status UnitPrice: storeAudits[0].UnitPrice, }, } - _, err = UpdateStoresSkus(ctx, 0, []int{storeID}, skuBindInfos, false, false, true) + _, err = UpdateStoresSkus(ctx, 0, []int{storeID}, skuBindInfos, false, isAsync, isContinueWhenError) } else if status == model.StoreAuditStatusRejected { storeAudits[0].UserID = ctx.GetUserID() storeAudits[0].Status = model.StoreAuditStatusRejected From 930913c2779c787ed507b381a5d2cd273ec46b78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 09:11:41 +0800 Subject: [PATCH 022/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 1 + 1 file changed, 1 insertion(+) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index df6be44eb..914d67845 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4512,6 +4512,7 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto func StoreSkuPriceAudit(ctx *jxcontext.Context, storeIDs, nameIDs []int, status int, remark string, isAsync, isContinueWhenError bool) (hint string, err error) { db := dao.GetDB() + fmt.Println("test1", utils.Format4Output(ctx, false)) if status == model.StoreAuditStatusOnline { return "", fmt.Errorf("审核标志不正确!") } From a4111492d7b4c20a209fba41af30df7250291561 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 09:26:54 +0800 Subject: [PATCH 023/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 1 - business/model/store_sku.go | 9 +-------- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 914d67845..df6be44eb 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4512,7 +4512,6 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto func StoreSkuPriceAudit(ctx *jxcontext.Context, storeIDs, nameIDs []int, status int, remark string, isAsync, isContinueWhenError bool) (hint string, err error) { db := dao.GetDB() - fmt.Println("test1", utils.Format4Output(ctx, false)) if status == model.StoreAuditStatusOnline { return "", fmt.Errorf("审核标志不正确!") } diff --git a/business/model/store_sku.go b/business/model/store_sku.go index 1bb2a478a..5d21d6976 100644 --- a/business/model/store_sku.go +++ b/business/model/store_sku.go @@ -208,13 +208,6 @@ type StoreSkuAudit struct { func (*StoreSkuAudit) TableUnique() [][]string { return [][]string{ - []string{"StoreID", "Type", "NameID", "DeletedAt"}, - } -} - -func (*StoreSkuAudit) TableIndex() [][]string { - return [][]string{ - []string{"DeletedAt"}, - []string{"StoreID", "Status", "Type"}, + []string{"StoreID", "Type", "NameID", "Status", "DeletedAt"}, } } From b58e2b6b7578ea510fb485d9af6f57792236406f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 09:33:29 +0800 Subject: [PATCH 024/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index df6be44eb..7321e0f6a 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4542,7 +4542,7 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeIDs, nameIDs []int, status storeAudits[0].UserID = ctx.GetUserID() storeAudits[0].Status = model.StoreAuditStatusRejected storeAudits[0].Remark = remark - _, err = dao.UpdateEntity(db, storeAudits[0], "UserID", "Status") + _, err = dao.UpdateEntity(db, storeAudits[0], "UserID", "Status", "Remark") } else { return retVal, fmt.Errorf("审核标志不正确!") } From 134150c15a0228ee7a424cbb5daff8f4395490c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 09:39:11 +0800 Subject: [PATCH 025/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 7321e0f6a..78a38f973 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4479,7 +4479,7 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto //如果改的价比原价低排除 storeSkus, err := dao.GetStoreSkusByNameIDs(db, []int{storeID}, skuBindInfo.NameID) if len(storeSkus) > 0 { - if skuBindInfo.UnitPrice <= int(storeSkus[0].UnitPrice) { + if skuBindInfo.UnitPrice < int(storeSkus[0].UnitPrice) { if len(storeAudits) > 0 { dao.DeleteEntityLogically(db, storeAudits[0], nil, ctx.GetUserName(), nil) } From a2772fa0e49b238750993c9827c4b10b876a6528 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 09:39:48 +0800 Subject: [PATCH 026/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 78a38f973..7321e0f6a 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4479,7 +4479,7 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto //如果改的价比原价低排除 storeSkus, err := dao.GetStoreSkusByNameIDs(db, []int{storeID}, skuBindInfo.NameID) if len(storeSkus) > 0 { - if skuBindInfo.UnitPrice < int(storeSkus[0].UnitPrice) { + if skuBindInfo.UnitPrice <= int(storeSkus[0].UnitPrice) { if len(storeAudits) > 0 { dao.DeleteEntityLogically(db, storeAudits[0], nil, ctx.GetUserName(), nil) } From bb157cd60f87432c390eaca2dd936a7c8a798435 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 10:24:31 +0800 Subject: [PATCH 027/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 7321e0f6a..b26de0ddf 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4537,7 +4537,21 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeIDs, nameIDs []int, status UnitPrice: storeAudits[0].UnitPrice, }, } - _, err = UpdateStoresSkus(ctx, 0, []int{storeID}, skuBindInfos, false, isAsync, isContinueWhenError) + var num int64 + db := dao.GetDB() + skuIDs, err := updateStoresSkusWithoutSync(ctx, db, storeIDs, skuBindInfos, false) + if err != nil { + return "", err + } + isAsync = asyncStoreSkuOpFilter(ctx, isAsync) + num = int64(len(skuIDs)) + if num > 0 { + hint, err = CurVendorSync.SyncStoresSkus(ctx, nil, 0, db, nil, storeIDs, skuIDs, false, isAsync, isContinueWhenError) + } + if num == 0 || !isAsync || hint == "" { + hint = utils.Int64ToStr(num) + } + // _, err = UpdateStoresSkus(ctx, 0, []int{storeID}, skuBindInfos, false, isAsync, isContinueWhenError) } else if status == model.StoreAuditStatusRejected { storeAudits[0].UserID = ctx.GetUserID() storeAudits[0].Status = model.StoreAuditStatusRejected From a1a0a63461e8290be6aafcff6032766c7e89b990 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 10:44:10 +0800 Subject: [PATCH 028/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 77 ++++++++++++++++++++----------- business/model/store.go | 1 + business/model/store_sku.go | 3 +- controllers/cms_store_sku.go | 1 + 4 files changed, 53 insertions(+), 29 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index b26de0ddf..580f01c2c 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -96,6 +96,7 @@ type tStoreSkuBindAndSpec struct { ExdSkuID string `orm:"column(exd_sku_id)"` StoreName string ChangePriceType int8 `json:"changePriceType"` // 修改价格类型,即是否需要审核 + NameID int `orm:"column(name_id)" json:"nameID"` } type SkuSaleInfo struct { @@ -1022,7 +1023,7 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs sql += " IF(t5.unit_price > 0, t5.unit_price, t3.price) sku_name_price," } sql += ` - t3.unit sku_name_unit, t3.name, t3.status sku_name_status, + t3.unit sku_name_unit, t3.name, t3.status sku_name_status, t3.id name_id, ts.change_price_type, ts.name store_name FROM sku t1 JOIN store ts ON ts.id = ? AND ts.deleted_at = ? @@ -1143,6 +1144,15 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs dao.Rollback(db) return nil, err } + //删除待审核商品信息 + storeAudits, err := dao.GetStoreSkuAuditLight(db, []int{storeID}, []int{v.NameID}, model.StoreAuditStatusOnline) + if len(storeAudits) > 0 { + storeAudits[0].DeletedAt = time.Now() + if _, err = dao.UpdateEntity(db, storeAudits[0], "DeletedAt"); err != nil { + dao.Rollback(db) + return nil, err + } + } } else { // 用了SELECT FOR UPDATE后,只更新修改字段是没有必要的,暂时保留 updateFieldMap := make(map[string]interface{}) @@ -4458,8 +4468,8 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto for _, storeID := range storeIDs { for _, skuBindInfo := range skuBindInfos { storeAudits, err := dao.GetStoreSkuAuditLight(db, []int{storeID}, []int{skuBindInfo.NameID}, model.StoreAuditStatusOnline) - //关注,可售排除 - if skuBindInfo.IsFocus != 0 || skuBindInfo.IsSale != 0 || skuBindInfo.UnitPrice == 0 { + //取消关注,可售排除 + if skuBindInfo.IsFocus == -1 || skuBindInfo.IsSale != 0 || skuBindInfo.UnitPrice == 0 { globals.SugarLogger.Debugf("doStoreSkuAudit return1 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) return false, err } @@ -4476,31 +4486,41 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto // globals.SugarLogger.Debugf("doStoreSkuAudit return3 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) // return false, err // } - //如果改的价比原价低排除 - storeSkus, err := dao.GetStoreSkusByNameIDs(db, []int{storeID}, skuBindInfo.NameID) - if len(storeSkus) > 0 { - if skuBindInfo.UnitPrice <= int(storeSkus[0].UnitPrice) { - if len(storeAudits) > 0 { - dao.DeleteEntityLogically(db, storeAudits[0], nil, ctx.GetUserName(), nil) - } - globals.SugarLogger.Debugf("doStoreSkuAudit return4 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) - return false, err - } else { - if len(storeAudits) > 0 { - storeAudits[0].DeletedAt = time.Now() - dao.UpdateEntity(db, storeAudits[0], "DeletedAt") - } - } - } else { - return false, fmt.Errorf("未查询到该门店商品价,storeID: %v, nameID: %V", storeID, skuBindInfo.NameID) - } storeSkuAudit := &model.StoreSkuAudit{ - StoreID: storeID, - Type: model.StoreSkuAuditTypePrice, - NameID: skuBindInfo.NameID, - Status: model.StoreAuditStatusOnline, - UnitPrice: skuBindInfo.UnitPrice, - OriginUnitPrice: int(storeSkus[0].UnitPrice), + StoreID: storeID, + NameID: skuBindInfo.NameID, + Status: model.StoreAuditStatusOnline, + UnitPrice: skuBindInfo.UnitPrice, + } + //如果是关注改价 + if skuBindInfo.IsFocus == 1 { + if len(storeAudits) > 0 { + storeAudits[0].DeletedAt = time.Now() + dao.UpdateEntity(db, storeAudits[0], "DeletedAt") + } + storeSkuAudit.Type = model.StoreSkuAuditTypeFocus + } else { + storeSkus, err := dao.GetStoreSkusByNameIDs(db, []int{storeID}, skuBindInfo.NameID) + if len(storeSkus) > 0 { + //如果改的价比原价低排除 + if skuBindInfo.UnitPrice <= int(storeSkus[0].UnitPrice) { + if len(storeAudits) > 0 { + storeAudits[0].DeletedAt = time.Now() + dao.UpdateEntity(db, storeAudits[0], "DeletedAt") + } + globals.SugarLogger.Debugf("doStoreSkuAudit return4 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) + return false, err + } else { + if len(storeAudits) > 0 { + storeAudits[0].DeletedAt = time.Now() + dao.UpdateEntity(db, storeAudits[0], "DeletedAt") + } + } + } else { + return false, fmt.Errorf("未查询到该门店商品价,storeID: %v, nameID: %V", storeID, skuBindInfo.NameID) + } + storeSkuAudit.Type = model.StoreSkuAuditTypePrice + storeSkuAudit.OriginUnitPrice = int(storeSkus[0].UnitPrice) } dao.WrapAddIDCULDEntity(storeSkuAudit, ctx.GetUserName()) err = dao.CreateEntity(db, storeSkuAudit) @@ -4530,7 +4550,8 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeIDs, nameIDs []int, status if status == model.StoreAuditStatusCreated { storeAudits[0].UserID = ctx.GetUserID() storeAudits[0].Status = model.StoreAuditStatusCreated - _, err = dao.UpdateEntity(db, storeAudits[0], "UserID", "Status") + storeAudits[0].Remark = remark + _, err = dao.UpdateEntity(db, storeAudits[0], "UserID", "Status", "Remark") var skuBindInfos = []*StoreSkuBindInfo{ &StoreSkuBindInfo{ NameID: v, diff --git a/business/model/store.go b/business/model/store.go index de13f468f..918c4e38d 100644 --- a/business/model/store.go +++ b/business/model/store.go @@ -27,6 +27,7 @@ const ( const ( StoreSkuAuditTypePrice = 1 //改价 + StoreSkuAuditTypeFocus = 2 //关注 ) const ( diff --git a/business/model/store_sku.go b/business/model/store_sku.go index 5d21d6976..66bc9ba17 100644 --- a/business/model/store_sku.go +++ b/business/model/store_sku.go @@ -202,7 +202,8 @@ type StoreSkuAudit struct { Status int8 `json:"status"` // UserID string `orm:"size(48);column(user_id)" json:"userID"` OriginUnitPrice int `json:"originPrice"` // 表示原价 - UnitPrice int `json:"unitPrice"` + UnitPrice int `json:"unitPrice"` //老板申请的审核价格 + AuditPrice int `json:"auditPrice"` //运营录入的审核价格 Remark string `orm:"size(255)" json:"remark"` } diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index c398a9f5a..0ec6b805a 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -847,6 +847,7 @@ func (c *StoreSkuController) GetStoreSkuAudit() { // @Param token header string true "认证token" // @Param storeIDs formData string false "门店ID列表" // @Param nameIDs formData string false "id列表对象,当前指skuname id" +// @Param auditPrice formData string false "录入的审核价格" // @Param status formData int false "审核标志,1通过,-1 不通过" // @Param remark formData string false "审核不通过原因" // @Param isAsync formData bool false "是否异步,缺省是同步" From 88073fbd03bf2f8fc38cdc5da601a465afcc7ae2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 10:48:12 +0800 Subject: [PATCH 029/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 13 +++++++++++-- controllers/cms_store_sku.go | 4 ++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 580f01c2c..89c1b003f 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4530,7 +4530,7 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto return isAudit, err } -func StoreSkuPriceAudit(ctx *jxcontext.Context, storeIDs, nameIDs []int, status int, remark string, isAsync, isContinueWhenError bool) (hint string, err error) { +func StoreSkuPriceAudit(ctx *jxcontext.Context, storeIDs, nameIDs []int, status, auditPrice int, remark string, isAsync, isContinueWhenError bool) (hint string, err error) { db := dao.GetDB() if status == model.StoreAuditStatusOnline { return "", fmt.Errorf("审核标志不正确!") @@ -4551,13 +4551,22 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeIDs, nameIDs []int, status storeAudits[0].UserID = ctx.GetUserID() storeAudits[0].Status = model.StoreAuditStatusCreated storeAudits[0].Remark = remark - _, err = dao.UpdateEntity(db, storeAudits[0], "UserID", "Status", "Remark") + storeAudits[0].AuditPrice = auditPrice + _, err = dao.UpdateEntity(db, storeAudits[0], "UserID", "Status", "Remark", "AuditPrice") var skuBindInfos = []*StoreSkuBindInfo{ &StoreSkuBindInfo{ NameID: v, UnitPrice: storeAudits[0].UnitPrice, }, } + //证明填了额外的审核价格 + if auditPrice != 0 { + skuBindInfos[0].UnitPrice = auditPrice + } + //如果是关注改价 + if storeAudits[0].Type == model.StoreSkuAuditTypeFocus { + skuBindInfos[0].IsFocus = 1 + } var num int64 db := dao.GetDB() skuIDs, err := updateStoresSkusWithoutSync(ctx, db, storeIDs, skuBindInfos, false) diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index 0ec6b805a..1579b832f 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -847,7 +847,7 @@ func (c *StoreSkuController) GetStoreSkuAudit() { // @Param token header string true "认证token" // @Param storeIDs formData string false "门店ID列表" // @Param nameIDs formData string false "id列表对象,当前指skuname id" -// @Param auditPrice formData string false "录入的审核价格" +// @Param auditPrice formData int false "录入的审核价格" // @Param status formData int false "审核标志,1通过,-1 不通过" // @Param remark formData string false "审核不通过原因" // @Param isAsync formData bool false "是否异步,缺省是同步" @@ -861,7 +861,7 @@ func (c *StoreSkuController) StoreSkuPriceAudit() { if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs, params.NameIDs, &nameIDs); err != nil { return retVal, "", err } - retVal, err = cms.StoreSkuPriceAudit(params.Ctx, storeIDs, nameIDs, params.Status, params.Remark, params.IsAsync, params.IsContinueWhenError) + retVal, err = cms.StoreSkuPriceAudit(params.Ctx, storeIDs, nameIDs, params.Status, params.AuditPrice, params.Remark, params.IsAsync, params.IsContinueWhenError) return retVal, "", err }) } From 5e550fd3d6613f45a340d061e20d376711cf648f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 11:13:54 +0800 Subject: [PATCH 030/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 89c1b003f..554059ad1 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -556,6 +556,8 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus, i } var tmpList []*tGetStoresSkusInfo beginTime := time.Now() + fmt.Println(sql) + fmt.Println(sqlParams) if err = dao.GetRows(db, &tmpList, sql, sqlParams...); err != nil { dao.Rollback(db) return nil, err From b6a3d29643de40563d99bb3232c1aa7951f04989 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 11:19:51 +0800 Subject: [PATCH 031/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 554059ad1..245aa0f33 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -314,7 +314,7 @@ func getGetStoresSkusBaseSQL(db *dao.DaoDB, storeIDs, skuIDs []int, isFocus bool JOIN store_sku_bind t4 ON t4.store_id = t3.id AND t4.sku_id = t2.id AND t4.deleted_at = ? LEFT JOIN sku_name_place_bind t5 ON t1.id = t5.name_id AND t3.city_code = t5.place_code LEFT JOIN price_refer_snapshot t6 ON t6.city_code = ? AND t6.sku_id = t2.id AND t6.snapshot_at = ? - LEFT JOIN store_sku_audit t7 ON t7.store_id = t4.store_id AND t7.name_id = t1.id AND t7.status = ? AND t7.deleted_at = ? + LEFT JOIN store_sku_audit t7 ON t7.store_id = t3.store_id AND t7.name_id = t1.id AND t7.status = ? AND t7.deleted_at = ? WHERE t1.deleted_at = ? AND (t1.is_global = 1 OR t5.id IS NOT NULL OR 1 = ?)/* AND t1.status = ?*/ ` sqlParams = append(sqlParams, []interface{}{ From 11e0baf17a681232121b8d74aae155ff96f3c0fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 11:20:08 +0800 Subject: [PATCH 032/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 245aa0f33..f51bf6c44 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -556,8 +556,6 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus, i } var tmpList []*tGetStoresSkusInfo beginTime := time.Now() - fmt.Println(sql) - fmt.Println(sqlParams) if err = dao.GetRows(db, &tmpList, sql, sqlParams...); err != nil { dao.Rollback(db) return nil, err From b748eead5df5109c6d77827633e4bf607a887da9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 11:22:02 +0800 Subject: [PATCH 033/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index f51bf6c44..1b4b2277d 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -314,7 +314,7 @@ func getGetStoresSkusBaseSQL(db *dao.DaoDB, storeIDs, skuIDs []int, isFocus bool JOIN store_sku_bind t4 ON t4.store_id = t3.id AND t4.sku_id = t2.id AND t4.deleted_at = ? LEFT JOIN sku_name_place_bind t5 ON t1.id = t5.name_id AND t3.city_code = t5.place_code LEFT JOIN price_refer_snapshot t6 ON t6.city_code = ? AND t6.sku_id = t2.id AND t6.snapshot_at = ? - LEFT JOIN store_sku_audit t7 ON t7.store_id = t3.store_id AND t7.name_id = t1.id AND t7.status = ? AND t7.deleted_at = ? + LEFT JOIN store_sku_audit t7 ON t7.store_id = t3.id AND t7.name_id = t1.id AND t7.status = ? AND t7.deleted_at = ? WHERE t1.deleted_at = ? AND (t1.is_global = 1 OR t5.id IS NOT NULL OR 1 = ?)/* AND t1.status = ?*/ ` sqlParams = append(sqlParams, []interface{}{ From 6c8922d683f1bd2c7d8348700a70792ea6a5daa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 11:40:14 +0800 Subject: [PATCH 034/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 1b4b2277d..e8d7654a4 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4524,10 +4524,9 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto } dao.WrapAddIDCULDEntity(storeSkuAudit, ctx.GetUserName()) err = dao.CreateEntity(db, storeSkuAudit) - return true, err } } - return isAudit, err + return true, err } func StoreSkuPriceAudit(ctx *jxcontext.Context, storeIDs, nameIDs []int, status, auditPrice int, remark string, isAsync, isContinueWhenError bool) (hint string, err error) { From 7a32fe048580e49b6f1b06f37bd4dc1dd5241f39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 11:56:52 +0800 Subject: [PATCH 035/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/store_sku.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 8e3d97696..d984c6e5e 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1535,15 +1535,21 @@ func UpdateJdsWareID(db *DaoDB, storeSkuSyncInfo *StoreSkuSyncInfo) (err error) return err } +type tStoreSkuAudit struct { + model.StoreSkuAudit + model.SkuName +} + func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss []int, name, remark string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { - var requestList []*model.StoreSkuAudit + var requestList []*tStoreSkuAudit sql := ` - SELECT SQL_CALC_FOUND_ROWS a.* + SELECT SQL_CALC_FOUND_ROWS a.*, c.* FROM store_sku_audit a LEFT JOIN user b ON a.user_id = b.user_id + LEFT JOIN sku_name c ON c.id = a.name_id AND c.deleted_at = ? WHERE a.deleted_at = ? ` - sqlParams := []interface{}{utils.DefaultTimeValue} + sqlParams := []interface{}{utils.DefaultTimeValue, utils.DefaultTimeValue} if len(storeIDs) > 0 { sql += " AND a.store_id IN (" + GenQuestionMarks(len(storeIDs)) + ")" sqlParams = append(sqlParams, storeIDs) From c13ba09603a69918101d6278b1f38752821ebef1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 14:30:10 +0800 Subject: [PATCH 036/130] =?UTF-8?q?=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E6=9F=A5=E8=AF=A2=E5=A2=9E=E5=8A=A0=E9=97=A8?= =?UTF-8?q?=E5=BA=97=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/store_sku.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index d984c6e5e..13d7557e8 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1538,18 +1538,20 @@ func UpdateJdsWareID(db *DaoDB, storeSkuSyncInfo *StoreSkuSyncInfo) (err error) type tStoreSkuAudit struct { model.StoreSkuAudit model.SkuName + StoreName string `json:"storeName"` } func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss []int, name, remark string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { var requestList []*tStoreSkuAudit sql := ` - SELECT SQL_CALC_FOUND_ROWS a.*, c.* + SELECT SQL_CALC_FOUND_ROWS a.*, c.*, d.name store_name FROM store_sku_audit a LEFT JOIN user b ON a.user_id = b.user_id LEFT JOIN sku_name c ON c.id = a.name_id AND c.deleted_at = ? + LEFT JOIN store d ON d.id = a.store_id AND d.deleted_at = ? WHERE a.deleted_at = ? ` - sqlParams := []interface{}{utils.DefaultTimeValue, utils.DefaultTimeValue} + sqlParams := []interface{}{utils.DefaultTimeValue, utils.DefaultTimeValue, utils.DefaultTimeValue} if len(storeIDs) > 0 { sql += " AND a.store_id IN (" + GenQuestionMarks(len(storeIDs)) + ")" sqlParams = append(sqlParams, storeIDs) From c58f33a0a633184039b8c365a51b39507d12b088 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 14:32:52 +0800 Subject: [PATCH 037/130] =?UTF-8?q?=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E6=9F=A5=E8=AF=A2=E5=A2=9E=E5=8A=A0type?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 4 ++-- business/model/dao/store_sku.go | 6 +++++- controllers/cms_store_sku.go | 3 ++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index e8d7654a4..936b0ffa6 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4457,8 +4457,8 @@ func RefreshJdsSkusStatus(ctx *jxcontext.Context) (err error) { return err } -func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs, statuss []int, name, remark string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd string, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { - pagedInfo, err = dao.GetStoreSkuAudit(dao.GetDB(), storeIDs, nameIDs, skuIDs, statuss, name, remark, utils.Str2Time(applyTimeStart), utils.Str2Time(applyTimeEnd), utils.Str2Time(auditTimeStart), utils.Str2Time(auditTimeEnd), pageSize, offset) +func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs, statuss []int, name, remark string, changeType int, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd string, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { + pagedInfo, err = dao.GetStoreSkuAudit(dao.GetDB(), storeIDs, nameIDs, skuIDs, statuss, name, remark, changeType, utils.Str2Time(applyTimeStart), utils.Str2Time(applyTimeEnd), utils.Str2Time(auditTimeStart), utils.Str2Time(auditTimeEnd), pageSize, offset) return pagedInfo, err } diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 13d7557e8..45f49093f 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1541,7 +1541,7 @@ type tStoreSkuAudit struct { StoreName string `json:"storeName"` } -func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss []int, name, remark string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { +func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss []int, name, remark string, changeType int, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { var requestList []*tStoreSkuAudit sql := ` SELECT SQL_CALC_FOUND_ROWS a.*, c.*, d.name store_name @@ -1580,6 +1580,10 @@ func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss []int, name, sql += " AND a.updated_at BETWEEN ? AND ?" sqlParams = append(sqlParams, applyTimeStart, applyTimeEnd) } + if changeType != 0 { + sql += " AND a.type = ? " + sqlParams = append(sqlParams, changeType) + } sql += " LIMIT ? OFFSET ?" pageSize = jxutils.FormalizePageSize(pageSize) sqlParams = append(sqlParams, pageSize, offset) diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index 1579b832f..6c0d91e62 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -824,6 +824,7 @@ func (c *StoreSkuController) SyncMatterC4ToGy() { // @Param storeIDs query string false "门店ID列表" // @Param nameIDs query string false "id列表对象,当前指skuname id" // @Param statuss query string false "审核状态" +// @Param type query int false "改价类型,1是普通改价,2是关注" // @Param offset query int false "门店列表起始序号(以0开始,缺省为0)" // @Param pageSize query int false "门店列表页大小(缺省为50,-1表示全部)" // @Success 200 {object} controllers.CallResult @@ -837,7 +838,7 @@ func (c *StoreSkuController) GetStoreSkuAudit() { if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs, params.NameIDs, &nameIDs, params.Statuss, &statuss); err != nil { return retVal, "", err } - retVal, err = cms.GetStoreSkuAudit(params.Ctx, storeIDs, nameIDs, nil, statuss, params.Name, params.Remark, params.ApplyTimeStart, params.ApplyTimeEnd, params.AuditTimeStart, params.AuditTimeEnd, params.PageSize, params.Offset) + retVal, err = cms.GetStoreSkuAudit(params.Ctx, storeIDs, nameIDs, nil, statuss, params.Name, params.Remark, params.Type, params.ApplyTimeStart, params.ApplyTimeEnd, params.AuditTimeStart, params.AuditTimeEnd, params.PageSize, params.Offset) return retVal, "", err }) } From c412b0c08720465881ede8e6e457e7597494c52f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 14:35:23 +0800 Subject: [PATCH 038/130] =?UTF-8?q?=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E6=9F=A5=E8=AF=A2=E5=A2=9E=E5=8A=A0name?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/store_sku.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 45f49093f..380570ce5 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1539,12 +1539,13 @@ type tStoreSkuAudit struct { model.StoreSkuAudit model.SkuName StoreName string `json:"storeName"` + Name string `json:"name"` } func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss []int, name, remark string, changeType int, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { var requestList []*tStoreSkuAudit sql := ` - SELECT SQL_CALC_FOUND_ROWS a.*, c.*, d.name store_name + SELECT SQL_CALC_FOUND_ROWS a.*, c.*, d.name store_name, b.name FROM store_sku_audit a LEFT JOIN user b ON a.user_id = b.user_id LEFT JOIN sku_name c ON c.id = a.name_id AND c.deleted_at = ? From a5bdd8e5bc383684e996d608b3362e93824e2108 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 14:43:39 +0800 Subject: [PATCH 039/130] =?UTF-8?q?=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E6=9F=A5=E8=AF=A2=E5=A2=9E=E5=8A=A0name?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/store_sku.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 380570ce5..add5b23b5 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1537,7 +1537,7 @@ func UpdateJdsWareID(db *DaoDB, storeSkuSyncInfo *StoreSkuSyncInfo) (err error) type tStoreSkuAudit struct { model.StoreSkuAudit - model.SkuName + SkuName string `orm:"size(255)" json:"skuName"` StoreName string `json:"storeName"` Name string `json:"name"` } @@ -1545,7 +1545,7 @@ type tStoreSkuAudit struct { func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss []int, name, remark string, changeType int, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { var requestList []*tStoreSkuAudit sql := ` - SELECT SQL_CALC_FOUND_ROWS a.*, c.*, d.name store_name, b.name + SELECT SQL_CALC_FOUND_ROWS a.*, c.name sku_name, d.name store_name, b.name FROM store_sku_audit a LEFT JOIN user b ON a.user_id = b.user_id LEFT JOIN sku_name c ON c.id = a.name_id AND c.deleted_at = ? From b28816706b7cb617278ad396225cc9ab9d928bd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 14:47:56 +0800 Subject: [PATCH 040/130] =?UTF-8?q?=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E6=9F=A5=E8=AF=A2=E5=A2=9E=E5=8A=A0name?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/store_sku.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index add5b23b5..1ad1dae21 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1537,15 +1537,20 @@ func UpdateJdsWareID(db *DaoDB, storeSkuSyncInfo *StoreSkuSyncInfo) (err error) type tStoreSkuAudit struct { model.StoreSkuAudit - SkuName string `orm:"size(255)" json:"skuName"` - StoreName string `json:"storeName"` - Name string `json:"name"` + SkuName string `orm:"size(255)" json:"skuName"` + StoreName string `json:"storeName"` + Prefix string `orm:"size(255)" json:"prefix"` + Unit string `orm:"size(8)" json:"unit"` + SpecQuality float32 `json:"-"` // 为份必然为500,这个主要作用只是用于确保SkuName的唯一性 + SpecUnit string `orm:"size(8)" json:"-"` // 为份必然为克,这个主要作用只是用于确保SkuName的唯一性 + Img string `orm:"size(512)" json:"img"` + Name string `json:"name"` } func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss []int, name, remark string, changeType int, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { var requestList []*tStoreSkuAudit sql := ` - SELECT SQL_CALC_FOUND_ROWS a.*, c.name sku_name, d.name store_name, b.name + SELECT SQL_CALC_FOUND_ROWS a.*, c.name sku_name, c.prefix, c.unit, c.sepc_quality, c.spec_unit, c.img, d.name store_name, b.name FROM store_sku_audit a LEFT JOIN user b ON a.user_id = b.user_id LEFT JOIN sku_name c ON c.id = a.name_id AND c.deleted_at = ? From 3f98847b60d939e66d1b2e90fdcefa3c05f9b734 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 14:51:51 +0800 Subject: [PATCH 041/130] =?UTF-8?q?=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E6=9F=A5=E8=AF=A2=E5=A2=9E=E5=8A=A0types?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 4 ++-- business/model/dao/store_sku.go | 8 ++++---- controllers/cms_store_sku.go | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 936b0ffa6..c4be7ed26 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4457,8 +4457,8 @@ func RefreshJdsSkusStatus(ctx *jxcontext.Context) (err error) { return err } -func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs, statuss []int, name, remark string, changeType int, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd string, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { - pagedInfo, err = dao.GetStoreSkuAudit(dao.GetDB(), storeIDs, nameIDs, skuIDs, statuss, name, remark, changeType, utils.Str2Time(applyTimeStart), utils.Str2Time(applyTimeEnd), utils.Str2Time(auditTimeStart), utils.Str2Time(auditTimeEnd), pageSize, offset) +func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs, statuss, types []int, name, remark string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd string, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { + pagedInfo, err = dao.GetStoreSkuAudit(dao.GetDB(), storeIDs, nameIDs, skuIDs, statuss, types, name, remark, utils.Str2Time(applyTimeStart), utils.Str2Time(applyTimeEnd), utils.Str2Time(auditTimeStart), utils.Str2Time(auditTimeEnd), pageSize, offset) return pagedInfo, err } diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 1ad1dae21..25c813497 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1547,7 +1547,7 @@ type tStoreSkuAudit struct { Name string `json:"name"` } -func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss []int, name, remark string, changeType int, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { +func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss, types []int, name, remark string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { var requestList []*tStoreSkuAudit sql := ` SELECT SQL_CALC_FOUND_ROWS a.*, c.name sku_name, c.prefix, c.unit, c.sepc_quality, c.spec_unit, c.img, d.name store_name, b.name @@ -1586,9 +1586,9 @@ func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss []int, name, sql += " AND a.updated_at BETWEEN ? AND ?" sqlParams = append(sqlParams, applyTimeStart, applyTimeEnd) } - if changeType != 0 { - sql += " AND a.type = ? " - sqlParams = append(sqlParams, changeType) + if len(types) > 0 { + sql += " AND a.type IN (" + GenQuestionMarks(len(types)) + ")" + sqlParams = append(sqlParams, types) } sql += " LIMIT ? OFFSET ?" pageSize = jxutils.FormalizePageSize(pageSize) diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index 6c0d91e62..ce743924c 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -824,7 +824,7 @@ func (c *StoreSkuController) SyncMatterC4ToGy() { // @Param storeIDs query string false "门店ID列表" // @Param nameIDs query string false "id列表对象,当前指skuname id" // @Param statuss query string false "审核状态" -// @Param type query int false "改价类型,1是普通改价,2是关注" +// @Param types query string false "改价类型,1是普通改价,2是关注" // @Param offset query int false "门店列表起始序号(以0开始,缺省为0)" // @Param pageSize query int false "门店列表页大小(缺省为50,-1表示全部)" // @Success 200 {object} controllers.CallResult @@ -833,12 +833,12 @@ func (c *StoreSkuController) SyncMatterC4ToGy() { func (c *StoreSkuController) GetStoreSkuAudit() { c.callGetStoreSkuAudit(func(params *tStoreSkuGetStoreSkuAuditParams) (retVal interface{}, errCode string, err error) { var ( - storeIDs, nameIDs, statuss []int + storeIDs, nameIDs, statuss, types []int ) - if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs, params.NameIDs, &nameIDs, params.Statuss, &statuss); err != nil { + if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs, params.NameIDs, &nameIDs, params.Statuss, &status, params.Types, &types); err != nil { return retVal, "", err } - retVal, err = cms.GetStoreSkuAudit(params.Ctx, storeIDs, nameIDs, nil, statuss, params.Name, params.Remark, params.Type, params.ApplyTimeStart, params.ApplyTimeEnd, params.AuditTimeStart, params.AuditTimeEnd, params.PageSize, params.Offset) + retVal, err = cms.GetStoreSkuAudit(params.Ctx, storeIDs, nameIDs, nil, statuss, types, params.Name, params.Remark, params.ApplyTimeStart, params.ApplyTimeEnd, params.AuditTimeStart, params.AuditTimeEnd, params.PageSize, params.Offset) return retVal, "", err }) } From a9a984027e7ab6046be9bc8bfc3709f4b64f0bff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 14:54:09 +0800 Subject: [PATCH 042/130] =?UTF-8?q?=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E6=9F=A5=E8=AF=A2=E5=A2=9E=E5=8A=A0types?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/cms_store_sku.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index ce743924c..16849d3b1 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -835,7 +835,7 @@ func (c *StoreSkuController) GetStoreSkuAudit() { var ( storeIDs, nameIDs, statuss, types []int ) - if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs, params.NameIDs, &nameIDs, params.Statuss, &status, params.Types, &types); err != nil { + if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs, params.NameIDs, &nameIDs, params.Statuss, &statuss, params.Types, &types); err != nil { return retVal, "", err } retVal, err = cms.GetStoreSkuAudit(params.Ctx, storeIDs, nameIDs, nil, statuss, types, params.Name, params.Remark, params.ApplyTimeStart, params.ApplyTimeEnd, params.AuditTimeStart, params.AuditTimeEnd, params.PageSize, params.Offset) From fc179d5cbb85d9877b206a90774e17d4e6794cc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 14:55:51 +0800 Subject: [PATCH 043/130] =?UTF-8?q?=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E6=9F=A5=E8=AF=A2=E5=A2=9E=E5=8A=A0types?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/store_sku.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 25c813497..ef0985b17 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1550,7 +1550,7 @@ type tStoreSkuAudit struct { func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss, types []int, name, remark string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { var requestList []*tStoreSkuAudit sql := ` - SELECT SQL_CALC_FOUND_ROWS a.*, c.name sku_name, c.prefix, c.unit, c.sepc_quality, c.spec_unit, c.img, d.name store_name, b.name + SELECT SQL_CALC_FOUND_ROWS a.*, c.name sku_name, c.prefix, c.unit, c.spec_quality, c.spec_unit, c.img, d.name store_name, b.name FROM store_sku_audit a LEFT JOIN user b ON a.user_id = b.user_id LEFT JOIN sku_name c ON c.id = a.name_id AND c.deleted_at = ? From 332404d95338eb23eb8903d1f99579bd98f73b86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 15:12:56 +0800 Subject: [PATCH 044/130] =?UTF-8?q?=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E6=9F=A5=E8=AF=A2=E5=A2=9E=E5=8A=A0types?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 22 ++++-- business/jxutils/weixinmsg/weixinmsg.go | 94 ++++++++++++------------- 2 files changed, 65 insertions(+), 51 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index c4be7ed26..483b2a7a4 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4482,10 +4482,10 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto // globals.SugarLogger.Debugf("doStoreSkuAudit return2 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) // return false, err // } - // if ctx.GetLoginType() != weixin.AuthTypeMP && ctx.GetLoginType() != weixin.AuthTypeMini { - // globals.SugarLogger.Debugf("doStoreSkuAudit return3 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) - // return false, err - // } + if ctx.GetLoginType() != weixin.AuthTypeMP && ctx.GetLoginType() != weixin.AuthTypeMini { + globals.SugarLogger.Debugf("doStoreSkuAudit return3 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) + return false, err + } storeSkuAudit := &model.StoreSkuAudit{ StoreID: storeID, NameID: skuBindInfo.NameID, @@ -4545,8 +4545,10 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeIDs, nameIDs []int, status, if len(storeAudits) > 1 { return retVal, fmt.Errorf("查询到该门店该商品的待审核信息大于1条!storeID: %v, nameID: %v", storeID, v) } + flag := false //审核通过 if status == model.StoreAuditStatusCreated { + flag = true storeAudits[0].UserID = ctx.GetUserID() storeAudits[0].Status = model.StoreAuditStatusCreated storeAudits[0].Remark = remark @@ -4589,6 +4591,18 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeIDs, nameIDs []int, status, } else { return retVal, fmt.Errorf("审核标志不正确!") } + if err == nil { + // skuAndNames, err := dao.GetSkus(db, nil, []int{v}, nil, nil, nil) + // if len(skuAndNames) > 0 && err == nil { + // price := 0 + // if auditPrice != 0 { + // price = auditPrice + // } else { + // price = storeAudits[0].UnitPrice + // } + // weixinmsg.NotifyStoreOpRequestStatus(flag, storeID, v, jxutils.ComposeSpuName(skuAndNames[0].Prefix, skuAndNames[0].Name, 0), storeAudits[0].OriginUnitPrice, price, remark) + // } + } } return retVal, err }, storeIDs) diff --git a/business/jxutils/weixinmsg/weixinmsg.go b/business/jxutils/weixinmsg/weixinmsg.go index 87795f53d..81a50cecd 100644 --- a/business/jxutils/weixinmsg/weixinmsg.go +++ b/business/jxutils/weixinmsg/weixinmsg.go @@ -56,9 +56,9 @@ const ( WX_SALE_BILL_TEMPLATE_ID = "eTUuFZMWH7IsVBfcxNMpmaHYaxRkUaD6zG8wSGJDcic" - WX_NORMAL_STORE_MSG_TEMPLATE_ID = "EUeIJEz2TLUAn4TU2EffOGYLd3dEaYndD_y6Sw9FcSU" - // WX_CHANGE_APPROVED_TEMPLATE_ID = "gIG2olBZtQbjXmp6doNB_dESu60By5xuXYOGxksLv3Y" - // WX_CHANGE_REJECTED_TEMPLATE_ID = "tn2QXWi4HtSIwaztmtN6Bb2uzNL-jBxWltCZTDNJuYE" + WX_NORMAL_STORE_MSG_TEMPLATE_ID = "EUeIJEz2TLUAn4TU2EffOGYLd3dEaYndD_y6Sw9FcSU" + WX_CHANGE_APPROVED_TEMPLATE_ID = "gIG2olBZtQbjXmp6doNB_dESu60By5xuXYOGxksLv3Y" + WX_CHANGE_REJECTED_TEMPLATE_ID = "tn2QXWi4HtSIwaztmtN6Bb2uzNL-jBxWltCZTDNJuYE" WX_ORDER_APPLY_CANCEL_TEMPLATE_ID = "e6urTtcm4PL0rgDMG_1qWNOwrE3Qxqcm_dx0kWWCmEI" WX_ORDER_ORDER_CANCELED_TEMPLATE_ID = "HXjuSAbIk77Xh18hjgwoxHzbciR9jX3Rn2CpLJz9dZw" @@ -460,50 +460,50 @@ func NotifySaleBill(storeID int, title, shopName, fileURL string) (err error) { } func NotifyStoreOpRequestStatus(isAccepted bool, storeID, nameID int, spuName string, originalUnitPrice, unitPrice int, rejectReason string) (err error) { - // globals.SugarLogger.Debugf("NotifyStoreOpRequestStatus isAccepted:%t, storeID:%d, nameID:%d, spuName:%s, originalUnitPrice:%d, unitPrice:%d, rejectReason:%s", isAccepted, storeID, nameID, spuName, originalUnitPrice, unitPrice, rejectReason) - // templateID := "" - // fileURL := globals.WxBackstageHost + fmt.Sprintf("%s%d", WX_TO_STORE_SKU_PAGE_URL, storeID) - // data := make(map[string]interface{}) - // if isAccepted { - // templateID = WX_CHANGE_APPROVED_TEMPLATE_ID - // data = map[string]interface{}{ - // "first": map[string]interface{}{ - // "value": fmt.Sprintf("%s%s元,修改为%s元,已经通过审核。^_^", spuName, jxutils.IntPrice2StandardString(int64(originalUnitPrice)), jxutils.IntPrice2StandardString(int64(unitPrice))), - // "color": "#333333", - // }, - // "keyword1": map[string]interface{}{ - // "value": "审核通过", - // "color": "#2E408E", - // }, - // "keyword2": map[string]interface{}{ - // "value": utils.Time2Str(time.Now()), - // "color": "#2E408E", - // }, - // "remark": map[string]interface{}{ - // "value": "点击查看详情", - // }, - // } - // } else { - // templateID = WX_CHANGE_REJECTED_TEMPLATE_ID - // data = map[string]interface{}{ - // "first": map[string]interface{}{ - // "value": fmt.Sprintf("您好!抱歉的通知您。%s%s元,修改为%s元,未通过审核。原因:%s", spuName, jxutils.IntPrice2StandardString(int64(originalUnitPrice)), jxutils.IntPrice2StandardString(int64(unitPrice)), rejectReason), - // "color": "#E80000", - // }, - // "keyword1": map[string]interface{}{ - // "value": "1", - // "color": "#2E408E", - // }, - // "keyword2": map[string]interface{}{ - // "value": utils.Time2Str(time.Now()), - // "color": "#2E408E", - // }, - // "remark": map[string]interface{}{ - // "value": "请您及时到商品管理修改价格,修改后请重新提交。", - // }, - // } - // } - // err = SendMsgToStore(storeID, templateID, fileURL, WX_MINI_TO_STORE_SKU_PAGE_URL, data) + globals.SugarLogger.Debugf("NotifyStoreOpRequestStatus isAccepted:%t, storeID:%d, nameID:%d, spuName:%s, originalUnitPrice:%d, unitPrice:%d, rejectReason:%s", isAccepted, storeID, nameID, spuName, originalUnitPrice, unitPrice, rejectReason) + templateID := "" + fileURL := globals.WxBackstageHost + fmt.Sprintf("%s%d", WX_TO_STORE_SKU_PAGE_URL, storeID) + data := make(map[string]interface{}) + if isAccepted { + templateID = WX_CHANGE_APPROVED_TEMPLATE_ID + data = map[string]interface{}{ + "first": map[string]interface{}{ + "value": fmt.Sprintf("%s%s元,修改为%s元,已经通过审核。^_^", spuName, jxutils.IntPrice2StandardString(int64(originalUnitPrice)), jxutils.IntPrice2StandardString(int64(unitPrice))), + "color": "#333333", + }, + "keyword1": map[string]interface{}{ + "value": "审核通过", + "color": "#2E408E", + }, + "keyword2": map[string]interface{}{ + "value": utils.Time2Str(time.Now()), + "color": "#2E408E", + }, + "remark": map[string]interface{}{ + "value": "点击查看详情", + }, + } + } else { + templateID = WX_CHANGE_REJECTED_TEMPLATE_ID + data = map[string]interface{}{ + "first": map[string]interface{}{ + "value": fmt.Sprintf("您好!抱歉的通知您。%s%s元,修改为%s元,未通过审核。原因:%s", spuName, jxutils.IntPrice2StandardString(int64(originalUnitPrice)), jxutils.IntPrice2StandardString(int64(unitPrice)), rejectReason), + "color": "#E80000", + }, + "keyword1": map[string]interface{}{ + "value": "1", + "color": "#2E408E", + }, + "keyword2": map[string]interface{}{ + "value": utils.Time2Str(time.Now()), + "color": "#2E408E", + }, + "remark": map[string]interface{}{ + "value": "请您及时到商品管理修改价格,修改后请重新提交。", + }, + } + } + err = SendMsgToStore(storeID, templateID, fileURL, WX_MINI_TO_STORE_SKU_PAGE_URL, data) return err } From 456c7336021a5e4a49f9fa1a1fb58870de13ef9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 15:14:13 +0800 Subject: [PATCH 045/130] =?UTF-8?q?=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E6=9F=A5=E8=AF=A2=E5=A2=9E=E5=8A=A0types?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 483b2a7a4..89648fea5 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4545,10 +4545,10 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeIDs, nameIDs []int, status, if len(storeAudits) > 1 { return retVal, fmt.Errorf("查询到该门店该商品的待审核信息大于1条!storeID: %v, nameID: %v", storeID, v) } - flag := false + // flag := false //审核通过 if status == model.StoreAuditStatusCreated { - flag = true + // flag = true storeAudits[0].UserID = ctx.GetUserID() storeAudits[0].Status = model.StoreAuditStatusCreated storeAudits[0].Remark = remark From 59bc3393bb29eaf75e6382928e61a21350332165 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 15:17:48 +0800 Subject: [PATCH 046/130] =?UTF-8?q?=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E6=9F=A5=E8=AF=A2=E5=A2=9E=E5=8A=A0types?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 89648fea5..4073ed584 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4474,14 +4474,14 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto return false, err } //运营排除 - // if (ctx.GetFullUser().Type & model.UserTypeOperator) != 0 { - // if len(storeAudits) > 0 { - // storeAudits[0].DeletedAt = time.Now() - // dao.UpdateEntity(db, storeAudits[0], "DeletedAt") - // } - // globals.SugarLogger.Debugf("doStoreSkuAudit return2 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) - // return false, err - // } + if (ctx.GetFullUser().Type & model.UserTypeOperator) != 0 { + if len(storeAudits) > 0 { + storeAudits[0].DeletedAt = time.Now() + dao.UpdateEntity(db, storeAudits[0], "DeletedAt") + } + globals.SugarLogger.Debugf("doStoreSkuAudit return2 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) + return false, err + } if ctx.GetLoginType() != weixin.AuthTypeMP && ctx.GetLoginType() != weixin.AuthTypeMini { globals.SugarLogger.Debugf("doStoreSkuAudit return3 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) return false, err From 8cb466be653e7bd5ecb020a8680eff180c302655 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 15:23:10 +0800 Subject: [PATCH 047/130] =?UTF-8?q?=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E6=9F=A5=E8=AF=A2=E5=A2=9E=E5=8A=A0types?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 4073ed584..e6ab386ef 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4474,14 +4474,14 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto return false, err } //运营排除 - if (ctx.GetFullUser().Type & model.UserTypeOperator) != 0 { - if len(storeAudits) > 0 { - storeAudits[0].DeletedAt = time.Now() - dao.UpdateEntity(db, storeAudits[0], "DeletedAt") - } - globals.SugarLogger.Debugf("doStoreSkuAudit return2 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) - return false, err - } + // if (ctx.GetFullUser().Type & model.UserTypeOperator) != 0 { + // if len(storeAudits) > 0 { + // storeAudits[0].DeletedAt = time.Now() + // dao.UpdateEntity(db, storeAudits[0], "DeletedAt") + // } + // globals.SugarLogger.Debugf("doStoreSkuAudit return2 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) + // return false, err + // } if ctx.GetLoginType() != weixin.AuthTypeMP && ctx.GetLoginType() != weixin.AuthTypeMini { globals.SugarLogger.Debugf("doStoreSkuAudit return3 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) return false, err From d8eb7a247b16e91e1308f982c548d9e6a6843518 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 16:45:29 +0800 Subject: [PATCH 048/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 141 +++++++++++++++--------------- business/model/dao/store_sku.go | 6 +- controllers/cms_store_sku.go | 16 ++-- 3 files changed, 83 insertions(+), 80 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index e6ab386ef..07eb08151 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4457,8 +4457,8 @@ func RefreshJdsSkusStatus(ctx *jxcontext.Context) (err error) { return err } -func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs, statuss, types []int, name, remark string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd string, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { - pagedInfo, err = dao.GetStoreSkuAudit(dao.GetDB(), storeIDs, nameIDs, skuIDs, statuss, types, name, remark, utils.Str2Time(applyTimeStart), utils.Str2Time(applyTimeEnd), utils.Str2Time(auditTimeStart), utils.Str2Time(auditTimeEnd), pageSize, offset) +func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs, statuss, types []int, name, remark, keyword string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd string, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { + pagedInfo, err = dao.GetStoreSkuAudit(dao.GetDB(), storeIDs, nameIDs, skuIDs, statuss, types, name, remark, keyword, utils.Str2Time(applyTimeStart), utils.Str2Time(applyTimeEnd), utils.Str2Time(auditTimeStart), utils.Str2Time(auditTimeEnd), pageSize, offset) return pagedInfo, err } @@ -4529,83 +4529,82 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto return true, err } -func StoreSkuPriceAudit(ctx *jxcontext.Context, storeIDs, nameIDs []int, status, auditPrice int, remark string, isAsync, isContinueWhenError bool) (hint string, err error) { +func StoreSkuPriceAudit(ctx *jxcontext.Context, storeSkuAudits []*model.StoreSkuAudit, status int, isAsync, isContinueWhenError bool) (hint string, err error) { db := dao.GetDB() if status == model.StoreAuditStatusOnline { return "", fmt.Errorf("审核标志不正确!") } task := tasksch.NewParallelTask("StoreSkuPriceAudit", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - storeID := batchItemList[0].(int) - for _, v := range nameIDs { - storeAudits, err := dao.GetStoreSkuAuditLight(db, []int{storeID}, []int{v}, model.StoreAuditStatusOnline) - if len(storeAudits) == 0 || err != nil { - return retVal, fmt.Errorf("未查询到该门店该商品的待审核信息!storeID: %v, nameID: %v", storeID, v) - } - if len(storeAudits) > 1 { - return retVal, fmt.Errorf("查询到该门店该商品的待审核信息大于1条!storeID: %v, nameID: %v", storeID, v) - } - // flag := false - //审核通过 - if status == model.StoreAuditStatusCreated { - // flag = true - storeAudits[0].UserID = ctx.GetUserID() - storeAudits[0].Status = model.StoreAuditStatusCreated - storeAudits[0].Remark = remark - storeAudits[0].AuditPrice = auditPrice - _, err = dao.UpdateEntity(db, storeAudits[0], "UserID", "Status", "Remark", "AuditPrice") - var skuBindInfos = []*StoreSkuBindInfo{ - &StoreSkuBindInfo{ - NameID: v, - UnitPrice: storeAudits[0].UnitPrice, - }, - } - //证明填了额外的审核价格 - if auditPrice != 0 { - skuBindInfos[0].UnitPrice = auditPrice - } - //如果是关注改价 - if storeAudits[0].Type == model.StoreSkuAuditTypeFocus { - skuBindInfos[0].IsFocus = 1 - } - var num int64 - db := dao.GetDB() - skuIDs, err := updateStoresSkusWithoutSync(ctx, db, storeIDs, skuBindInfos, false) - if err != nil { - return "", err - } - isAsync = asyncStoreSkuOpFilter(ctx, isAsync) - num = int64(len(skuIDs)) - if num > 0 { - hint, err = CurVendorSync.SyncStoresSkus(ctx, nil, 0, db, nil, storeIDs, skuIDs, false, isAsync, isContinueWhenError) - } - if num == 0 || !isAsync || hint == "" { - hint = utils.Int64ToStr(num) - } - // _, err = UpdateStoresSkus(ctx, 0, []int{storeID}, skuBindInfos, false, isAsync, isContinueWhenError) - } else if status == model.StoreAuditStatusRejected { - storeAudits[0].UserID = ctx.GetUserID() - storeAudits[0].Status = model.StoreAuditStatusRejected - storeAudits[0].Remark = remark - _, err = dao.UpdateEntity(db, storeAudits[0], "UserID", "Status", "Remark") - } else { - return retVal, fmt.Errorf("审核标志不正确!") - } - if err == nil { - // skuAndNames, err := dao.GetSkus(db, nil, []int{v}, nil, nil, nil) - // if len(skuAndNames) > 0 && err == nil { - // price := 0 - // if auditPrice != 0 { - // price = auditPrice - // } else { - // price = storeAudits[0].UnitPrice - // } - // weixinmsg.NotifyStoreOpRequestStatus(flag, storeID, v, jxutils.ComposeSpuName(skuAndNames[0].Prefix, skuAndNames[0].Name, 0), storeAudits[0].OriginUnitPrice, price, remark) - // } - } + storeAudit := batchItemList[0].(*model.StoreSkuAudit) + storeAudits, err := dao.GetStoreSkuAuditLight(db, []int{storeAudit.StoreID}, []int{storeAudit.NameID}, model.StoreAuditStatusOnline) + if len(storeAudits) == 0 || err != nil { + return retVal, fmt.Errorf("未查询到该门店该商品的待审核信息!storeID: %v, nameID: %v", storeAudit.StoreID, storeAudit.NameID) } + if len(storeAudits) > 1 { + return retVal, fmt.Errorf("查询到该门店该商品的待审核信息大于1条!storeID: %v, nameID: %v", storeAudit.StoreID, storeAudit.NameID) + } + // flag := false + //审核通过 + if status == model.StoreAuditStatusCreated { + // flag = true + storeAudits[0].UserID = ctx.GetUserID() + storeAudits[0].Status = model.StoreAuditStatusCreated + storeAudits[0].Remark = storeAudit.Remark + storeAudits[0].AuditPrice = storeAudit.AuditPrice + _, err = dao.UpdateEntity(db, storeAudits[0], "UserID", "Status", "Remark", "AuditPrice") + var skuBindInfos = []*StoreSkuBindInfo{ + &StoreSkuBindInfo{ + NameID: storeAudit.NameID, + UnitPrice: storeAudits[0].UnitPrice, + }, + } + //证明填了额外的审核价格 + if storeAudit.AuditPrice != 0 { + skuBindInfos[0].UnitPrice = storeAudit.AuditPrice + } + //如果是关注改价 + if storeAudits[0].Type == model.StoreSkuAuditTypeFocus { + skuBindInfos[0].IsFocus = 1 + } + var num int64 + db := dao.GetDB() + skuIDs, err := updateStoresSkusWithoutSync(ctx, db, []int{storeAudit.StoreID}, skuBindInfos, false) + if err != nil { + return "", err + } + isAsync = asyncStoreSkuOpFilter(ctx, isAsync) + num = int64(len(skuIDs)) + if num > 0 { + hint, err = CurVendorSync.SyncStoresSkus(ctx, nil, 0, db, nil, []int{storeAudit.StoreID}, skuIDs, false, isAsync, isContinueWhenError) + } + if num == 0 || !isAsync || hint == "" { + hint = utils.Int64ToStr(num) + } + // _, err = UpdateStoresSkus(ctx, 0, []int{storeID}, skuBindInfos, false, isAsync, isContinueWhenError) + } else if status == model.StoreAuditStatusRejected { + storeAudits[0].UserID = ctx.GetUserID() + storeAudits[0].Status = model.StoreAuditStatusRejected + storeAudits[0].Remark = storeAudit.Remark + _, err = dao.UpdateEntity(db, storeAudits[0], "UserID", "Status", "Remark") + } else { + return retVal, fmt.Errorf("审核标志不正确!") + } + if err == nil { + // skuAndNames, err := dao.GetSkus(db, nil, []int{v}, nil, nil, nil) + // if len(skuAndNames) > 0 && err == nil { + // price := 0 + // if auditPrice != 0 { + // price = auditPrice + // } else { + // price = storeAudits[0].UnitPrice + // } + // weixinmsg.NotifyStoreOpRequestStatus(flag, storeID, v, jxutils.ComposeSpuName(skuAndNames[0].Prefix, skuAndNames[0].Name, 0), storeAudits[0].OriginUnitPrice, price, remark) + // } + } + return retVal, err - }, storeIDs) + }, storeSkuAudits) tasksch.HandleTask(task, nil, true).Run() if isAsync { hint = task.GetID() diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index ef0985b17..6385571fb 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1547,7 +1547,7 @@ type tStoreSkuAudit struct { Name string `json:"name"` } -func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss, types []int, name, remark string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { +func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss, types []int, name, remark, keyword string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { var requestList []*tStoreSkuAudit sql := ` SELECT SQL_CALC_FOUND_ROWS a.*, c.name sku_name, c.prefix, c.unit, c.spec_quality, c.spec_unit, c.img, d.name store_name, b.name @@ -1590,6 +1590,10 @@ func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss, types []int sql += " AND a.type IN (" + GenQuestionMarks(len(types)) + ")" sqlParams = append(sqlParams, types) } + if keyword != "" { + sql += " AND (b.name LIKE ? OR a.remark LIKE ? OR a.name_id LIKE ? OR a.user_id LIKE ? OR a.store_id LIKE ?)" + sqlParams = append(sqlParams, "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%") + } sql += " LIMIT ? OFFSET ?" pageSize = jxutils.FormalizePageSize(pageSize) sqlParams = append(sqlParams, pageSize, offset) diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index 16849d3b1..9fe4039e2 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -4,6 +4,8 @@ import ( "math" "time" + "git.rosy.net.cn/jx-callback/business/model" + "git.rosy.net.cn/baseapi/platformapi/jdapi" "git.rosy.net.cn/jx-callback/business/jxstore/cms" @@ -825,6 +827,7 @@ func (c *StoreSkuController) SyncMatterC4ToGy() { // @Param nameIDs query string false "id列表对象,当前指skuname id" // @Param statuss query string false "审核状态" // @Param types query string false "改价类型,1是普通改价,2是关注" +// @Param keyword query string false "关键字" // @Param offset query int false "门店列表起始序号(以0开始,缺省为0)" // @Param pageSize query int false "门店列表页大小(缺省为50,-1表示全部)" // @Success 200 {object} controllers.CallResult @@ -838,7 +841,7 @@ func (c *StoreSkuController) GetStoreSkuAudit() { if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs, params.NameIDs, &nameIDs, params.Statuss, &statuss, params.Types, &types); err != nil { return retVal, "", err } - retVal, err = cms.GetStoreSkuAudit(params.Ctx, storeIDs, nameIDs, nil, statuss, types, params.Name, params.Remark, params.ApplyTimeStart, params.ApplyTimeEnd, params.AuditTimeStart, params.AuditTimeEnd, params.PageSize, params.Offset) + retVal, err = cms.GetStoreSkuAudit(params.Ctx, storeIDs, nameIDs, nil, statuss, types, params.Name, params.Remark, params.Keyword, params.ApplyTimeStart, params.ApplyTimeEnd, params.AuditTimeStart, params.AuditTimeEnd, params.PageSize, params.Offset) return retVal, "", err }) } @@ -846,11 +849,8 @@ func (c *StoreSkuController) GetStoreSkuAudit() { // @Title 审核商品 // @Description 审核商品 // @Param token header string true "认证token" -// @Param storeIDs formData string false "门店ID列表" -// @Param nameIDs formData string false "id列表对象,当前指skuname id" -// @Param auditPrice formData int false "录入的审核价格" +// @Param payload formData string true "json数据,storeskuaudit对象" // @Param status formData int false "审核标志,1通过,-1 不通过" -// @Param remark formData string false "审核不通过原因" // @Param isAsync formData bool false "是否异步,缺省是同步" // @Param isContinueWhenError formData bool false "单个同步失败是否继续,缺省false" // @Success 200 {object} controllers.CallResult @@ -858,11 +858,11 @@ func (c *StoreSkuController) GetStoreSkuAudit() { // @router /StoreSkuPriceAudit [post] func (c *StoreSkuController) StoreSkuPriceAudit() { c.callStoreSkuPriceAudit(func(params *tStoreSkuStoreSkuPriceAuditParams) (retVal interface{}, errCode string, err error) { - var storeIDs, nameIDs []int - if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs, params.NameIDs, &nameIDs); err != nil { + var storeSkuAudits []*model.StoreSkuAudit + if err = jxutils.Strings2Objs(params.Payload, &storeSkuAudits); err != nil { return retVal, "", err } - retVal, err = cms.StoreSkuPriceAudit(params.Ctx, storeIDs, nameIDs, params.Status, params.AuditPrice, params.Remark, params.IsAsync, params.IsContinueWhenError) + retVal, err = cms.StoreSkuPriceAudit(params.Ctx, storeSkuAudits, params.Status, params.IsAsync, params.IsContinueWhenError) return retVal, "", err }) } From c2998abf633117f9292eaa89d60cf3f39892621c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 29 May 2020 17:59:50 +0800 Subject: [PATCH 049/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E8=A1=A8=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/store_sku.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/model/store_sku.go b/business/model/store_sku.go index 66bc9ba17..66efb31c7 100644 --- a/business/model/store_sku.go +++ b/business/model/store_sku.go @@ -207,7 +207,7 @@ type StoreSkuAudit struct { Remark string `orm:"size(255)" json:"remark"` } -func (*StoreSkuAudit) TableUnique() [][]string { +func (*StoreSkuAudit) TableIndex() [][]string { return [][]string{ []string{"StoreID", "Type", "NameID", "Status", "DeletedAt"}, } From 126d88c2b42f13a62fb255bcdf9462c12e1e0ecc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 1 Jun 2020 08:39:36 +0800 Subject: [PATCH 050/130] =?UTF-8?q?=E8=BF=94=E5=9B=9E=E9=99=84=E8=BF=91?= =?UTF-8?q?=E9=97=A8=E5=BA=97=E6=8E=92=E9=99=A4=E7=89=A9=E6=96=99=E5=BA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 532775f9d..4c3af0701 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -2501,11 +2501,13 @@ func GetStoreListByLocation(ctx *jxcontext.Context, lng, lat float64, needWalkDi JOIN store_map sm ON sm.store_id = t1.id AND sm.vendor_id = ? AND sm.deleted_at = ? AND sm.status <> ? WHERE t1.deleted_at = ? AND t1.status <> ? AND t1.lng > ? AND t1.lng < ? AND t1.lat > ? AND t1.lat < ? AND sm.is_order <> ? + AND t1.id <> ? ORDER BY t1.id ` sqlParams := []interface{}{ model.VendorIDJX, utils.DefaultTimeValue, model.StoreStatusDisabled, utils.DefaultTimeValue, model.StoreStatusDisabled, jxutils.StandardCoordinate2Int(lng1), jxutils.StandardCoordinate2Int(lng2), jxutils.StandardCoordinate2Int(lat1), jxutils.StandardCoordinate2Int(lat2), + model.MatterStoreID, model.YES, } var storeList1 []*Store4User From 8ef43dbb36b0aace96123897f0525601c5b7272f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 1 Jun 2020 08:59:24 +0800 Subject: [PATCH 051/130] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E7=89=A9=E6=96=99?= =?UTF-8?q?=E5=BA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 4c3af0701..78fb3c9c0 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -2510,8 +2510,11 @@ func GetStoreListByLocation(ctx *jxcontext.Context, lng, lat float64, needWalkDi model.MatterStoreID, model.YES, } + fmt.Println(sql) + fmt.Println(sqlParams) var storeList1 []*Store4User if err = dao.GetRows(dao.GetDB(), &storeList1, sql, sqlParams...); err == nil { + fmt.Println("test1", utils.Format4Output(storeList1, false)) var storeList2 []*Store4User for _, v := range storeList1 { distance := jxutils.Point2StoreDistance(lng, lat, v.Lng, v.Lat, v.DeliveryRangeType, v.DeliveryRange) From eec699c52f329ad210b1722f7681182d950ba8a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 1 Jun 2020 09:02:54 +0800 Subject: [PATCH 052/130] =?UTF-8?q?=E5=86=99=E5=8F=8D=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store.go | 5 +---- business/jxstore/cms/store_sku.go | 1 + 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 78fb3c9c0..39b5697b9 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -2507,14 +2507,11 @@ func GetStoreListByLocation(ctx *jxcontext.Context, lng, lat float64, needWalkDi sqlParams := []interface{}{ model.VendorIDJX, utils.DefaultTimeValue, model.StoreStatusDisabled, utils.DefaultTimeValue, model.StoreStatusDisabled, jxutils.StandardCoordinate2Int(lng1), jxutils.StandardCoordinate2Int(lng2), jxutils.StandardCoordinate2Int(lat1), jxutils.StandardCoordinate2Int(lat2), - model.MatterStoreID, model.YES, + model.MatterStoreID, } - fmt.Println(sql) - fmt.Println(sqlParams) var storeList1 []*Store4User if err = dao.GetRows(dao.GetDB(), &storeList1, sql, sqlParams...); err == nil { - fmt.Println("test1", utils.Format4Output(storeList1, false)) var storeList2 []*Store4User for _, v := range storeList1 { distance := jxutils.Point2StoreDistance(lng, lat, v.Lng, v.Lat, v.DeliveryRangeType, v.DeliveryRange) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 07eb08151..0ee349def 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4458,6 +4458,7 @@ func RefreshJdsSkusStatus(ctx *jxcontext.Context) (err error) { } func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs, statuss, types []int, name, remark, keyword string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd string, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { + fmt.Println(applyTimeStart, applyTimeEnd, auditTimeStart) pagedInfo, err = dao.GetStoreSkuAudit(dao.GetDB(), storeIDs, nameIDs, skuIDs, statuss, types, name, remark, keyword, utils.Str2Time(applyTimeStart), utils.Str2Time(applyTimeEnd), utils.Str2Time(auditTimeStart), utils.Str2Time(auditTimeEnd), pageSize, offset) return pagedInfo, err } From 21977636951e0f904f612c367c98451b0340abba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 1 Jun 2020 10:18:35 +0800 Subject: [PATCH 053/130] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E9=97=A8=E5=BA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 0ee349def..b60b21909 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4545,10 +4545,10 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeSkuAudits []*model.StoreSku if len(storeAudits) > 1 { return retVal, fmt.Errorf("查询到该门店该商品的待审核信息大于1条!storeID: %v, nameID: %v", storeAudit.StoreID, storeAudit.NameID) } - // flag := false + flag := false //审核通过 if status == model.StoreAuditStatusCreated { - // flag = true + flag = true storeAudits[0].UserID = ctx.GetUserID() storeAudits[0].Status = model.StoreAuditStatusCreated storeAudits[0].Remark = storeAudit.Remark @@ -4592,18 +4592,19 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeSkuAudits []*model.StoreSku return retVal, fmt.Errorf("审核标志不正确!") } if err == nil { - // skuAndNames, err := dao.GetSkus(db, nil, []int{v}, nil, nil, nil) - // if len(skuAndNames) > 0 && err == nil { - // price := 0 - // if auditPrice != 0 { - // price = auditPrice - // } else { - // price = storeAudits[0].UnitPrice - // } - // weixinmsg.NotifyStoreOpRequestStatus(flag, storeID, v, jxutils.ComposeSpuName(skuAndNames[0].Prefix, skuAndNames[0].Name, 0), storeAudits[0].OriginUnitPrice, price, remark) - // } + if !globals.IsProductEnv() { + skuAndNames, err := dao.GetSkus(db, nil, []int{storeAudit.NameID}, nil, nil, nil) + if len(skuAndNames) > 0 && err == nil { + price := 0 + if storeAudit.AuditPrice != 0 { + price = storeAudit.AuditPrice + } else { + price = storeAudits[0].UnitPrice + } + weixinmsg.NotifyStoreOpRequestStatus(flag, storeAudit.StoreID, storeAudit.NameID, jxutils.ComposeSpuName(skuAndNames[0].Prefix, skuAndNames[0].Name, 0), storeAudits[0].OriginUnitPrice, price, storeAudit.Remark) + } + } } - return retVal, err }, storeSkuAudits) tasksch.HandleTask(task, nil, true).Run() From 2e975d1ba867d6a24317eea0ab9ee4d46c441537 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 1 Jun 2020 11:59:33 +0800 Subject: [PATCH 054/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E8=A1=A5=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order.go | 10 +++++++++ business/partner/purchase/jdshop/order.go | 27 +++++++++++++++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 93a9c6705..0ecff74d2 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -7,6 +7,8 @@ import ( "strings" "time" + "git.rosy.net.cn/jx-callback/business/partner/purchase/jdshop" + "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" "git.rosy.net.cn/baseapi" @@ -995,3 +997,11 @@ func GetOrderSimpleInfo(ctx *jxcontext.Context, vendorOrderID string) (getOrderS return getOrderSimpleInfoResult, err } + +func SaveJdsOrders(ctx *jxcontext.Context, orderCreatedStart, orderCreatedEnd time.Time) (err error) { + orders, err := jdshop.CurPurchaseHandler.GetJdsOrders(ctx, utils.Time2Str(orderCreatedStart), utils.Time2Str(orderCreatedEnd)) + for _, _ = range orders { + + } + return err +} diff --git a/business/partner/purchase/jdshop/order.go b/business/partner/purchase/jdshop/order.go index f4f932caf..33772f9fd 100644 --- a/business/partner/purchase/jdshop/order.go +++ b/business/partner/purchase/jdshop/order.go @@ -97,6 +97,29 @@ func (p *PurchaseHandler) ConfirmReceivedReturnGoods(ctx *jxcontext.Context, ord return err } -func GetJdsOrder(ctx *jxcontext.Context, vendorOrderID string) { - +func (p *PurchaseHandler) GetJdsOrders(ctx *jxcontext.Context, orderCreatedStart, orderCreatedEnd string) (orders []*model.GoodsOrder, err error) { + orderResult, err := api.JdShopAPI.AllOrders(&jdshopapi.AllOrdersParam{ + Current: 1, + PageSize: 10, + OrderCreateDateRange: []string{orderCreatedStart, orderCreatedEnd}, + }) + orders, err = result2Orders(orderResult) + return orders, err +} + +func result2Orders(result *jdshopapi.AllOrdersResult) (orders []*model.GoodsOrder, err error) { + for _, jdsOrder := range result.OrderList { + order := &model.GoodsOrder{ + VendorOrderID: utils.Int64ToStr(jdsOrder.OrderID), + VendorID: model.VendorIDJDShop, + BaseFreightMoney: jxutils.StandardPrice2Int(jdsOrder.Freight), + VendorStatus: utils.Int2Str(jdsOrder.OrderStatus), + VendorUserID: jdsOrder.UserPin, + BuyerComment: jdsOrder.UserRemark, + // PickDeadline: utils.DefaultTimeValue, + OriginalData: string(utils.MustMarshal(jdsOrder)), + } + orders = append(orders, order) + } + return orders, err } From 1d0ba309931572efa0d58628b623590e6cd6dcaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 1 Jun 2020 12:02:34 +0800 Subject: [PATCH 055/130] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/dao_order.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/business/model/dao/dao_order.go b/business/model/dao/dao_order.go index fc8994645..55a9ebeda 100644 --- a/business/model/dao/dao_order.go +++ b/business/model/dao/dao_order.go @@ -391,6 +391,8 @@ func GetStoreOrderSkuList(db *DaoDB, storeIDs []int, finishedAtBegin, finishedAt sql += " AND t2.status IN (" + GenQuestionMarks(len(statusList)) + ")" sqlParams = append(sqlParams, statusList) } + fmt.Println(sql) + fmt.Println(sqlParams) err = GetRows(db, &skuList, sql, sqlParams...) return skuList, err } From 26fe2862e0b2f581835e6730a76cf40e30fbb415 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 1 Jun 2020 15:01:57 +0800 Subject: [PATCH 056/130] =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/store_sku.go | 1 + 1 file changed, 1 insertion(+) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 6385571fb..d205dcb3a 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1629,4 +1629,5 @@ func GetStoreSkuAuditLight(db *DaoDB, storeIDs, nameIDs []int, status int) (stor } err = GetRows(db, &storeSkuAudit, sql, sqlParams...) return storeSkuAudit, err + } From 16f5b15909fc8cd62c6a95462216f1ffb5eeb291 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 1 Jun 2020 15:20:39 +0800 Subject: [PATCH 057/130] =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/store_sku.go | 1 - 1 file changed, 1 deletion(-) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index d205dcb3a..6385571fb 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1629,5 +1629,4 @@ func GetStoreSkuAuditLight(db *DaoDB, storeIDs, nameIDs []int, status int) (stor } err = GetRows(db, &storeSkuAudit, sql, sqlParams...) return storeSkuAudit, err - } From e5932fa156bdd16e7935db9f0147efe5ee0802cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 1 Jun 2020 15:22:16 +0800 Subject: [PATCH 058/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E8=AE=A2=E5=8D=95new?= =?UTF-8?q?earingpingprice=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/jd/order.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/business/partner/purchase/jd/order.go b/business/partner/purchase/jd/order.go index 055ca98d8..a194711a5 100644 --- a/business/partner/purchase/jd/order.go +++ b/business/partner/purchase/jd/order.go @@ -146,6 +146,8 @@ func updateOrderBySettleMent(order *model.GoodsOrder, orderSettlement *jdapi.Ord order.NewEarningPrice = order.EarningPrice } } + } else { + order.NewEarningPrice = order.EarningPrice } } } From caa946fc4182f5f0088270050d927f0ab1f68e92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 1 Jun 2020 15:26:34 +0800 Subject: [PATCH 059/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E8=AE=A2=E5=8D=95new?= =?UTF-8?q?earingpingprice=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/jd/order.go | 1 + 1 file changed, 1 insertion(+) diff --git a/business/partner/purchase/jd/order.go b/business/partner/purchase/jd/order.go index a194711a5..a6163a31b 100644 --- a/business/partner/purchase/jd/order.go +++ b/business/partner/purchase/jd/order.go @@ -147,6 +147,7 @@ func updateOrderBySettleMent(order *model.GoodsOrder, orderSettlement *jdapi.Ord } } } else { + order.NewEarningPrice = order.EarningPrice } } From 28499146304a3464336322a7538d858c5508ea41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 1 Jun 2020 15:29:35 +0800 Subject: [PATCH 060/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E8=AE=A2=E5=8D=95new?= =?UTF-8?q?earingprice=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/jd/order.go | 1 - 1 file changed, 1 deletion(-) diff --git a/business/partner/purchase/jd/order.go b/business/partner/purchase/jd/order.go index a6163a31b..a194711a5 100644 --- a/business/partner/purchase/jd/order.go +++ b/business/partner/purchase/jd/order.go @@ -147,7 +147,6 @@ func updateOrderBySettleMent(order *model.GoodsOrder, orderSettlement *jdapi.Ord } } } else { - order.NewEarningPrice = order.EarningPrice } } From 6d5d93e1d7c29a9eb7013e410458e7277fd57586 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 1 Jun 2020 16:29:42 +0800 Subject: [PATCH 061/130] =?UTF-8?q?=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 18 ++++++++++++++++-- business/model/dao/dao_order.go | 2 -- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index b60b21909..9b88f77eb 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4458,8 +4458,22 @@ func RefreshJdsSkusStatus(ctx *jxcontext.Context) (err error) { } func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs, statuss, types []int, name, remark, keyword string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd string, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { - fmt.Println(applyTimeStart, applyTimeEnd, auditTimeStart) - pagedInfo, err = dao.GetStoreSkuAudit(dao.GetDB(), storeIDs, nameIDs, skuIDs, statuss, types, name, remark, keyword, utils.Str2Time(applyTimeStart), utils.Str2Time(applyTimeEnd), utils.Str2Time(auditTimeStart), utils.Str2Time(auditTimeEnd), pageSize, offset) + var ( + applyTimeStartp, applyTimeEndp, auditTimeStartp, auditTimeEndp time.Time + ) + if applyTimeStart != "" { + applyTimeStartp = utils.Str2Time(applyTimeStart) + } + if applyTimeEnd != "" { + applyTimeEndp = utils.Str2Time(applyTimeEnd) + } + if auditTimeStart != "" { + auditTimeStartp = utils.Str2Time(auditTimeStart) + } + if auditTimeEnd != "" { + auditTimeEndp = utils.Str2Time(auditTimeEnd) + } + pagedInfo, err = dao.GetStoreSkuAudit(dao.GetDB(), storeIDs, nameIDs, skuIDs, statuss, types, name, remark, keyword, applyTimeStartp, applyTimeEndp, auditTimeStartp, auditTimeEndp, pageSize, offset) return pagedInfo, err } diff --git a/business/model/dao/dao_order.go b/business/model/dao/dao_order.go index 55a9ebeda..fc8994645 100644 --- a/business/model/dao/dao_order.go +++ b/business/model/dao/dao_order.go @@ -391,8 +391,6 @@ func GetStoreOrderSkuList(db *DaoDB, storeIDs []int, finishedAtBegin, finishedAt sql += " AND t2.status IN (" + GenQuestionMarks(len(statusList)) + ")" sqlParams = append(sqlParams, statusList) } - fmt.Println(sql) - fmt.Println(sqlParams) err = GetRows(db, &skuList, sql, sqlParams...) return skuList, err } From d49230a110edc8414ba0e6787d2da70c3a8f05ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 1 Jun 2020 16:41:42 +0800 Subject: [PATCH 062/130] =?UTF-8?q?=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E6=9F=A5=E8=AF=A2=E5=A2=9E=E5=8A=A0markmphon?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 4 ++-- business/model/dao/store_sku.go | 6 +++++- controllers/cms_store_sku.go | 3 ++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 9b88f77eb..ec1c3603a 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4457,7 +4457,7 @@ func RefreshJdsSkusStatus(ctx *jxcontext.Context) (err error) { return err } -func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs, statuss, types []int, name, remark, keyword string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd string, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { +func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs, statuss, types []int, name, remark, keyword, marketManPhone, string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd string, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { var ( applyTimeStartp, applyTimeEndp, auditTimeStartp, auditTimeEndp time.Time ) @@ -4473,7 +4473,7 @@ func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs, statuss if auditTimeEnd != "" { auditTimeEndp = utils.Str2Time(auditTimeEnd) } - pagedInfo, err = dao.GetStoreSkuAudit(dao.GetDB(), storeIDs, nameIDs, skuIDs, statuss, types, name, remark, keyword, applyTimeStartp, applyTimeEndp, auditTimeStartp, auditTimeEndp, pageSize, offset) + pagedInfo, err = dao.GetStoreSkuAudit(dao.GetDB(), storeIDs, nameIDs, skuIDs, statuss, types, name, remark, keyword, marketManPhone, applyTimeStartp, applyTimeEndp, auditTimeStartp, auditTimeEndp, pageSize, offset) return pagedInfo, err } diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 6385571fb..8740f47ee 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1547,7 +1547,7 @@ type tStoreSkuAudit struct { Name string `json:"name"` } -func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss, types []int, name, remark, keyword string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { +func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss, types []int, name, remark, keyword, marketManPhone string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { var requestList []*tStoreSkuAudit sql := ` SELECT SQL_CALC_FOUND_ROWS a.*, c.name sku_name, c.prefix, c.unit, c.spec_quality, c.spec_unit, c.img, d.name store_name, b.name @@ -1594,6 +1594,10 @@ func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss, types []int sql += " AND (b.name LIKE ? OR a.remark LIKE ? OR a.name_id LIKE ? OR a.user_id LIKE ? OR a.store_id LIKE ?)" sqlParams = append(sqlParams, "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%") } + if marketManPhone != "" { + sql += " AND d.market_man_phone LIKE ? " + sqlParams = append(sqlParams, "%"+marketManPhone+"%") + } sql += " LIMIT ? OFFSET ?" pageSize = jxutils.FormalizePageSize(pageSize) sqlParams = append(sqlParams, pageSize, offset) diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index 9fe4039e2..3794fefd0 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -828,6 +828,7 @@ func (c *StoreSkuController) SyncMatterC4ToGy() { // @Param statuss query string false "审核状态" // @Param types query string false "改价类型,1是普通改价,2是关注" // @Param keyword query string false "关键字" +// @Param marketManPhone query string false "市场负责人电话" // @Param offset query int false "门店列表起始序号(以0开始,缺省为0)" // @Param pageSize query int false "门店列表页大小(缺省为50,-1表示全部)" // @Success 200 {object} controllers.CallResult @@ -841,7 +842,7 @@ func (c *StoreSkuController) GetStoreSkuAudit() { if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs, params.NameIDs, &nameIDs, params.Statuss, &statuss, params.Types, &types); err != nil { return retVal, "", err } - retVal, err = cms.GetStoreSkuAudit(params.Ctx, storeIDs, nameIDs, nil, statuss, types, params.Name, params.Remark, params.Keyword, params.ApplyTimeStart, params.ApplyTimeEnd, params.AuditTimeStart, params.AuditTimeEnd, params.PageSize, params.Offset) + retVal, err = cms.GetStoreSkuAudit(params.Ctx, storeIDs, nameIDs, nil, statuss, types, params.Name, params.Remark, params.Keyword, params.MarketManPhone, params.ApplyTimeStart, params.ApplyTimeEnd, params.AuditTimeStart, params.AuditTimeEnd, params.PageSize, params.Offset) return retVal, "", err }) } From eb0c50c211003f9dfd6394dbbe34ae11490410dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 1 Jun 2020 16:44:49 +0800 Subject: [PATCH 063/130] =?UTF-8?q?=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E6=9F=A5=E8=AF=A2=E5=A2=9E=E5=8A=A0markmphon?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index ec1c3603a..2b838975e 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4457,7 +4457,7 @@ func RefreshJdsSkusStatus(ctx *jxcontext.Context) (err error) { return err } -func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs, statuss, types []int, name, remark, keyword, marketManPhone, string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd string, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { +func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs, statuss, types []int, name, remark, keyword, marketManPhone, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd string, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { var ( applyTimeStartp, applyTimeEndp, auditTimeStartp, auditTimeEndp time.Time ) From c77f4381206f721df1abe0b87daa0b4ca25901c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 1 Jun 2020 17:23:20 +0800 Subject: [PATCH 064/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=93=81?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/jdshop/order.go | 1 + business/partner/purchase/jdshop/store_sku.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/business/partner/purchase/jdshop/order.go b/business/partner/purchase/jdshop/order.go index 33772f9fd..f68ad75e9 100644 --- a/business/partner/purchase/jdshop/order.go +++ b/business/partner/purchase/jdshop/order.go @@ -118,6 +118,7 @@ func result2Orders(result *jdshopapi.AllOrdersResult) (orders []*model.GoodsOrde BuyerComment: jdsOrder.UserRemark, // PickDeadline: utils.DefaultTimeValue, OriginalData: string(utils.MustMarshal(jdsOrder)), + StoreName: jdsOrder.StoreName, } orders = append(orders, order) } diff --git a/business/partner/purchase/jdshop/store_sku.go b/business/partner/purchase/jdshop/store_sku.go index 6360dc257..eac4b0ffc 100644 --- a/business/partner/purchase/jdshop/store_sku.go +++ b/business/partner/purchase/jdshop/store_sku.go @@ -604,7 +604,7 @@ func buildCreateWareParam(storeSku *dao.StoreSkuSyncInfo) (createSkuParamWare *j }, &jdshopapi.CreateSkuParamFeatures{ Key: "tssp", //支持自提 - Value: "4", + Value: "", }, // &jdshopapi.CreateSkuParamFeatures{ // Key: "fdms", //分单? From 33071ea7b7ea0bc462fb97d8c63056823d78cc46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 1 Jun 2020 17:50:39 +0800 Subject: [PATCH 065/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=93=81?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/jdshop/store_sku.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/partner/purchase/jdshop/store_sku.go b/business/partner/purchase/jdshop/store_sku.go index eac4b0ffc..dd87cb8e7 100644 --- a/business/partner/purchase/jdshop/store_sku.go +++ b/business/partner/purchase/jdshop/store_sku.go @@ -157,7 +157,7 @@ func (p *PurchaseHandler) UpdateStoreSkus(ctx *jxcontext.Context, storeID int, v }, &jdshopapi.CreateSkuParamFeatures{ Key: "tssp", //支持自提 - Value: "4", + Value: "", }, // &jdshopapi.CreateSkuParamFeatures{ // Key: "fdms", //分单? From 73d99734f2b06fffe6c54b6005f6d863988a8124 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 2 Jun 2020 08:35:21 +0800 Subject: [PATCH 066/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E8=AE=A2=E5=8D=95new?= =?UTF-8?q?raingprice=E4=BF=AE=E6=94=B9=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jxcallback/scheduler/basesch/basesch_ext.go | 14 +++++++------- business/partner/purchase/jd/order.go | 1 + 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/business/jxcallback/scheduler/basesch/basesch_ext.go b/business/jxcallback/scheduler/basesch/basesch_ext.go index 556879844..a0b537749 100644 --- a/business/jxcallback/scheduler/basesch/basesch_ext.go +++ b/business/jxcallback/scheduler/basesch/basesch_ext.go @@ -41,13 +41,13 @@ func (c *BaseScheduler) CreateWaybillOnProviders(ctx *jxcontext.Context, order * courierVendorID := storeCourier.VendorID bill, err2 := c.CreateWaybill(courierVendorID, order, maxDeliveryFee) if err = err2; err == nil { - stores, _ := dao.GetStoreList(dao.GetDB(), []int{order.StoreID}, nil, nil, nil, "") - if len(stores) > 0 { - if stores[0].PayPercentage <= 50 { - order.NewEarningPrice = (order.TotalShopMoney - bill.DesiredFee) * int64((100 - stores[0].PayPercentage/2)) / 100 - dao.UpdateEntity(dao.GetDB(), order, "NewEarningPrice") - } - } + // stores, _ := dao.GetStoreList(dao.GetDB(), []int{order.StoreID}, nil, nil, nil, "") + // if len(stores) > 0 { + // if stores[0].PayPercentage <= 50 { + // order.NewEarningPrice = (order.TotalShopMoney - bill.DesiredFee) * int64((100 - stores[0].PayPercentage/2)) / 100 + // dao.UpdateEntity(dao.GetDB(), order, "NewEarningPrice") + // } + // } globals.SugarLogger.Debugf("CreateWaybillOnProviders orderID:%s userName:%s vendorID:%d bill:%v", order.VendorOrderID, userName, courierVendorID, bill) bills = append(bills, bill) if createOnlyOne { diff --git a/business/partner/purchase/jd/order.go b/business/partner/purchase/jd/order.go index a194711a5..4185d3501 100644 --- a/business/partner/purchase/jd/order.go +++ b/business/partner/purchase/jd/order.go @@ -73,6 +73,7 @@ func (c *PurchaseHandler) updateOrderFinancialInfo(a *jdapi.API, orderID string) if err == nil { if orderSettlement != nil { updateOrderBySettleMent(order, orderSettlement) + globals.SugarLogger.Debugf("updateOrderBySettleMent", order.NewEarningPrice) err = partner.CurOrderManager.UpdateOrderFields(order, []string{ /*"WaybillTipMoney", */ "TotalShopMoney", "PmSubsidyMoney", "NewEarningPrice"}) } } From 8b74d2b1c7724b5b9e6683549d276c3dcb8d8f79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 2 Jun 2020 08:44:43 +0800 Subject: [PATCH 067/130] =?UTF-8?q?=E4=BB=B7=E6=A0=BC=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 2b838975e..d4f102410 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4498,6 +4498,10 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto // return false, err // } if ctx.GetLoginType() != weixin.AuthTypeMP && ctx.GetLoginType() != weixin.AuthTypeMini { + if len(storeAudits) > 0 { + storeAudits[0].DeletedAt = time.Now() + dao.UpdateEntity(db, storeAudits[0], "DeletedAt") + } globals.SugarLogger.Debugf("doStoreSkuAudit return3 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) return false, err } From 2b77ab109ddcc5cd093f70369284c0b71048aa76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 2 Jun 2020 09:18:14 +0800 Subject: [PATCH 068/130] =?UTF-8?q?=E4=BB=B7=E6=A0=BC=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8C=89updatedat=E5=80=92=E5=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/store_sku.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 8740f47ee..8a519ca84 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1598,7 +1598,7 @@ func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss, types []int sql += " AND d.market_man_phone LIKE ? " sqlParams = append(sqlParams, "%"+marketManPhone+"%") } - sql += " LIMIT ? OFFSET ?" + sql += " LIMIT ? OFFSET ? ORDER BY a.updated_at DESC" pageSize = jxutils.FormalizePageSize(pageSize) sqlParams = append(sqlParams, pageSize, offset) Begin(db) From 52830c50656fc1259f77ddad07f87f690b8ccd98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 2 Jun 2020 09:21:40 +0800 Subject: [PATCH 069/130] =?UTF-8?q?=E4=BB=B7=E6=A0=BC=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8C=89updatedat=E5=80=92=E5=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/store_sku.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 8a519ca84..ea31a2789 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1598,7 +1598,7 @@ func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss, types []int sql += " AND d.market_man_phone LIKE ? " sqlParams = append(sqlParams, "%"+marketManPhone+"%") } - sql += " LIMIT ? OFFSET ? ORDER BY a.updated_at DESC" + sql += " ORDER BY a.updated_at DESC LIMIT ? OFFSET ?" pageSize = jxutils.FormalizePageSize(pageSize) sqlParams = append(sqlParams, pageSize, offset) Begin(db) From 4417c3e7b529261c7497663e8b9cd1784303fd43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 2 Jun 2020 09:39:24 +0800 Subject: [PATCH 070/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=A2=9E=E5=8A=A0=E5=85=A8=E5=9B=BD=E4=B8=AD?= =?UTF-8?q?=E4=BD=8D=E4=BB=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 6 ++++++ business/model/dao/store_sku.go | 25 +++++++++++++++---------- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index d4f102410..e0c36a9e5 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4501,6 +4501,12 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto if len(storeAudits) > 0 { storeAudits[0].DeletedAt = time.Now() dao.UpdateEntity(db, storeAudits[0], "DeletedAt") + if !globals.IsProductEnv() { + skuAndNames, err := dao.GetSkus(db, nil, []int{skuBindInfo.NameID}, nil, nil, nil) + if len(skuAndNames) > 0 && err == nil { + weixinmsg.NotifyStoreOpRequestStatus(true, storeID, skuBindInfo.NameID, jxutils.ComposeSpuName(skuAndNames[0].Prefix, skuAndNames[0].Name, 0), storeAudits[0].OriginUnitPrice, skuBindInfo.UnitPrice, "") + } + } } globals.SugarLogger.Debugf("doStoreSkuAudit return3 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) return false, err diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index ea31a2789..5c572bec8 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1537,27 +1537,32 @@ func UpdateJdsWareID(db *DaoDB, storeSkuSyncInfo *StoreSkuSyncInfo) (err error) type tStoreSkuAudit struct { model.StoreSkuAudit - SkuName string `orm:"size(255)" json:"skuName"` - StoreName string `json:"storeName"` - Prefix string `orm:"size(255)" json:"prefix"` - Unit string `orm:"size(8)" json:"unit"` - SpecQuality float32 `json:"-"` // 为份必然为500,这个主要作用只是用于确保SkuName的唯一性 - SpecUnit string `orm:"size(8)" json:"-"` // 为份必然为克,这个主要作用只是用于确保SkuName的唯一性 - Img string `orm:"size(512)" json:"img"` - Name string `json:"name"` + SkuName string `orm:"size(255)" json:"skuName"` + StoreName string `json:"storeName"` + Prefix string `orm:"size(255)" json:"prefix"` + Unit string `orm:"size(8)" json:"unit"` + SpecQuality float32 `json:"-"` // 为份必然为500,这个主要作用只是用于确保SkuName的唯一性 + SpecUnit string `orm:"size(8)" json:"-"` // 为份必然为克,这个主要作用只是用于确保SkuName的唯一性 + Img string `orm:"size(512)" json:"img"` + Name string `json:"name"` + MidUnitPrice int `json:"midUnitPrice"` } func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss, types []int, name, remark, keyword, marketManPhone string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { var requestList []*tStoreSkuAudit sql := ` - SELECT SQL_CALC_FOUND_ROWS a.*, c.name sku_name, c.prefix, c.unit, c.spec_quality, c.spec_unit, c.img, d.name store_name, b.name + SELECT SQL_CALC_FOUND_ROWS a.*, c.name sku_name, c.prefix, c.unit, c.spec_quality, c.spec_unit, c.img, d.name store_name, b.name, e.mid_unit_price FROM store_sku_audit a LEFT JOIN user b ON a.user_id = b.user_id LEFT JOIN sku_name c ON c.id = a.name_id AND c.deleted_at = ? LEFT JOIN store d ON d.id = a.store_id AND d.deleted_at = ? + LEFT JOIN price_refer_snapshot e ON e.name_id = c.id AND e.city_code = ? AND e.snapshot_at = ? WHERE a.deleted_at = ? ` - sqlParams := []interface{}{utils.DefaultTimeValue, utils.DefaultTimeValue, utils.DefaultTimeValue} + sqlParams := []interface{}{ + utils.DefaultTimeValue, utils.DefaultTimeValue, + 0, utils.Time2Date(time.Now().AddDate(0, 0, -1)), + utils.DefaultTimeValue} if len(storeIDs) > 0 { sql += " AND a.store_id IN (" + GenQuestionMarks(len(storeIDs)) + ")" sqlParams = append(sqlParams, storeIDs) From 484114242e09370ee53f0e06411626ebd160170f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 2 Jun 2020 11:07:04 +0800 Subject: [PATCH 071/130] =?UTF-8?q?=E4=BB=B7=E6=A0=BC=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 44 +++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index e0c36a9e5..6c00282c1 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4640,3 +4640,47 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeSkuAudits []*model.StoreSku } return hint, err } + +func RefreshJXPriceChange(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) (hint string, err error) { + db := dao.GetDB() + var ( + stores []*model.Store + vendorIDs = []int{0, 1, 3, 5, 9} + ) + sql := ` + SELECT * + FROM store + WHERE deleted_at = ? AND status <> ? AND pay_percentage = ? + AND id = ? + ` + sqlParams := []interface{}{utils.DefaultTimeValue, model.StoreStatusDisabled, 80, 100118} + err = dao.GetRows(db, &stores, sql, sqlParams) + task := tasksch.NewParallelTask("刷新门店价格", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, + func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + store := batchItemList[0].(*model.Store) + var skuBindInfos []*StoreSkuBindInfo + // for _, v := range vendorIDs { + + // } + storeSkus, err := dao.GetStoresSkusInfo(db, []int{store.ID}, nil) + for _, v := range storeSkus { + skuAndName, _ := dao.GetSkus(db, []int{v.SkuID}, nil, nil, nil, nil) + skuBindInfo := &StoreSkuBindInfo{ + StoreID: store.ID, + NameID: skuAndName[0].NameID, + UnitPrice: v.UnitPrice * store.PayPercentage / 100, + } + skuBindInfos = append(skuBindInfos, skuBindInfo) + } + UpdateStoresSkusByBind(ctx, task, skuBindInfos, isAsync, isContinueWhenError, false) + return retVal, err + }, stores) + tasksch.HandleTask(task, nil, true).Run() + if isAsync { + hint = task.GetID() + } else { + _, err = task.GetResult(0) + hint = "1" + } + return hint, err +} From e804a54e5d81e7d493908b8a8b5228d6d67113d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 2 Jun 2020 11:08:55 +0800 Subject: [PATCH 072/130] =?UTF-8?q?=E5=8F=96=E6=B6=88=E4=BA=AC=E8=A5=BF?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=B8=8D=E8=87=AA=E5=8A=A8=E5=8F=91=E7=BE=8E?= =?UTF-8?q?=E5=9B=A2=E9=85=8D=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/scheduler/defsch/defsch.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 1a3df3005..dbe6d9e5a 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -717,9 +717,10 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf if savedOrderInfo.retryCount <= maxWaybillRetryCount { savedOrderInfo.isNeedCreate3rdWaybill = true excludeVendorIDs := savedOrderInfo.GetWaybillVendorIDs() - if order.VendorID == model.VendorIDJX { - excludeVendorIDs = append(excludeVendorIDs, model.VendorIDMTPS) - } + //TODO 取消京西不自动发美团 2020-06-02 + // if order.VendorID == model.VendorIDJX { + // excludeVendorIDs = append(excludeVendorIDs, model.VendorIDMTPS) + // } if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, excludeVendorIDs, false, maxDeliveryFee); err == nil { savedOrderInfo.retryCount++ } From 14f8b1e52d7adfb8100f42064961ece2030d75de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 2 Jun 2020 11:24:10 +0800 Subject: [PATCH 073/130] =?UTF-8?q?=E4=BA=AC=E8=A5=BF=E5=88=B7=E4=BB=B7?= =?UTF-8?q?=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 43 ----------------- business/jxstore/tempop/tempop.go | 66 +++++++++++++++++++++++++++ controllers/temp_op.go | 13 ++++++ routers/commentsRouter_controllers.go | 9 ++++ 4 files changed, 88 insertions(+), 43 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 6c00282c1..4d011b15a 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4641,46 +4641,3 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeSkuAudits []*model.StoreSku return hint, err } -func RefreshJXPriceChange(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) (hint string, err error) { - db := dao.GetDB() - var ( - stores []*model.Store - vendorIDs = []int{0, 1, 3, 5, 9} - ) - sql := ` - SELECT * - FROM store - WHERE deleted_at = ? AND status <> ? AND pay_percentage = ? - AND id = ? - ` - sqlParams := []interface{}{utils.DefaultTimeValue, model.StoreStatusDisabled, 80, 100118} - err = dao.GetRows(db, &stores, sql, sqlParams) - task := tasksch.NewParallelTask("刷新门店价格", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, - func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - store := batchItemList[0].(*model.Store) - var skuBindInfos []*StoreSkuBindInfo - // for _, v := range vendorIDs { - - // } - storeSkus, err := dao.GetStoresSkusInfo(db, []int{store.ID}, nil) - for _, v := range storeSkus { - skuAndName, _ := dao.GetSkus(db, []int{v.SkuID}, nil, nil, nil, nil) - skuBindInfo := &StoreSkuBindInfo{ - StoreID: store.ID, - NameID: skuAndName[0].NameID, - UnitPrice: v.UnitPrice * store.PayPercentage / 100, - } - skuBindInfos = append(skuBindInfos, skuBindInfo) - } - UpdateStoresSkusByBind(ctx, task, skuBindInfos, isAsync, isContinueWhenError, false) - return retVal, err - }, stores) - tasksch.HandleTask(task, nil, true).Run() - if isAsync { - hint = task.GetID() - } else { - _, err = task.GetResult(0) - hint = "1" - } - return hint, err -} diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index 9257cd023..ae8bdad66 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -1617,3 +1617,69 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { }) return err } + +func RefreshJXPriceChange(ctx *jxcontext.Context) (hint string, err error) { + db := dao.GetDB() + var ( + stores []*model.Store + vendorIDs = []int{0, 1, 3, 5, 9} + isAsync = true + isContinueWhenError = true + ) + sql := ` + SELECT * + FROM store + WHERE deleted_at = ? AND status <> ? AND pay_percentage = ? + AND id = ? + ` + sqlParams := []interface{}{utils.DefaultTimeValue, model.StoreStatusDisabled, 80, 100118} + err = dao.GetRows(db, &stores, sql, sqlParams) + task := tasksch.NewParallelTask("刷新门店价格", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, + func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + store := batchItemList[0].(*model.Store) + var skuBindInfos []*cms.StoreSkuBindInfo + for _, v := range vendorIDs { + storeMaps, _ := dao.GetStoresMapList(db, []int{v}, []int{store.ID}, nil, model.StoreStatusAll, model.StoreIsSyncAll, "") + if len(storeMaps) > 0 { + storeMap := storeMaps[0] + switch v { + case model.VendorIDJD: + storeMap.PricePercentagePack = "京东测试报价=结算价" + dao.UpdateEntity(db, storeMap, "PricePercentagePack") + case model.VendorIDEBAI: + storeMap.PricePercentagePack = "美团测试报价=结算价" + dao.UpdateEntity(db, storeMap, "PricePercentagePack") + case model.VendorIDMTWM: + storeMap.PricePercentagePack = "饿百测试报价=结算价" + dao.UpdateEntity(db, storeMap, "PricePercentagePack") + case model.VendorIDJDShop: + storeMap.PricePercentagePack = "京西100-100" + dao.UpdateEntity(db, storeMap, "PricePercentagePack") + case model.VendorIDJX: + storeMap.PricePercentagePack = "京西100-100" + dao.UpdateEntity(db, storeMap, "PricePercentagePack") + } + } + } + storeSkus, err := dao.GetStoresSkusInfo(db, []int{store.ID}, nil) + for _, v := range storeSkus { + skuAndName, _ := dao.GetSkus(db, []int{v.SkuID}, nil, nil, nil, nil) + skuBindInfo := &cms.StoreSkuBindInfo{ + StoreID: store.ID, + NameID: skuAndName[0].NameID, + UnitPrice: v.UnitPrice * store.PayPercentage / 100, + } + skuBindInfos = append(skuBindInfos, skuBindInfo) + } + cms.UpdateStoresSkusByBind(ctx, task, skuBindInfos, isAsync, isContinueWhenError, false) + return retVal, err + }, stores) + tasksch.HandleTask(task, nil, true).Run() + if isAsync { + hint = task.GetID() + } else { + _, err = task.GetResult(0) + hint = "1" + } + return hint, err +} diff --git a/controllers/temp_op.go b/controllers/temp_op.go index 82c9ba8ef..90b7f1791 100644 --- a/controllers/temp_op.go +++ b/controllers/temp_op.go @@ -381,3 +381,16 @@ func (c *TempOpController) UploadJdsImage() { return retVal, "", err }) } + +// @Title 京西刷新调价包和门店价格 +// @Description 京西刷新调价包和门店价格 +// @Param token header string true "认证token" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /RefreshJXPriceChange [post] +func (c *TempOpController) RefreshJXPriceChange() { + c.callRefreshJXPriceChange(func(params *tTempopRefreshJXPriceChangeParams) (retVal interface{}, errCode string, err error) { + retVal, err = tempop.RefreshJXPriceChange(params.Ctx) + return retVal, "", err + }) +} diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index ea057cdc2..bade9af68 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -2448,6 +2448,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TempOpController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TempOpController"], + beego.ControllerComments{ + Method: "RefreshJXPriceChange", + Router: `/RefreshJXPriceChange`, + AllowHTTPMethods: []string{"post"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TempOpController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TempOpController"], beego.ControllerComments{ Method: "RefreshMtpsWaybillFee", From a76b9a0795b1da2fad404bb5da8f6372c6c8c49f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 2 Jun 2020 11:35:05 +0800 Subject: [PATCH 074/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=9F=A5=E7=9C=8B=E4=B8=80=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/jd/order.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/partner/purchase/jd/order.go b/business/partner/purchase/jd/order.go index 4185d3501..93dbfad9a 100644 --- a/business/partner/purchase/jd/order.go +++ b/business/partner/purchase/jd/order.go @@ -73,7 +73,7 @@ func (c *PurchaseHandler) updateOrderFinancialInfo(a *jdapi.API, orderID string) if err == nil { if orderSettlement != nil { updateOrderBySettleMent(order, orderSettlement) - globals.SugarLogger.Debugf("updateOrderBySettleMent", order.NewEarningPrice) + globals.SugarLogger.Debugf("updateOrderBySettleMent: %v", order.NewEarningPrice) err = partner.CurOrderManager.UpdateOrderFields(order, []string{ /*"WaybillTipMoney", */ "TotalShopMoney", "PmSubsidyMoney", "NewEarningPrice"}) } } From eecde679758816759f6a6f41813f09350a3f5b73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 2 Jun 2020 11:35:20 +0800 Subject: [PATCH 075/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=9F=A5=E7=9C=8B=E4=B8=80=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/jd/order.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/partner/purchase/jd/order.go b/business/partner/purchase/jd/order.go index 93dbfad9a..273479a04 100644 --- a/business/partner/purchase/jd/order.go +++ b/business/partner/purchase/jd/order.go @@ -73,7 +73,7 @@ func (c *PurchaseHandler) updateOrderFinancialInfo(a *jdapi.API, orderID string) if err == nil { if orderSettlement != nil { updateOrderBySettleMent(order, orderSettlement) - globals.SugarLogger.Debugf("updateOrderBySettleMent: %v", order.NewEarningPrice) + globals.SugarLogger.Debugf("updateOrderBySettleMent: %v , %v", order.NewEarningPrice, order.TotalShopMoney) err = partner.CurOrderManager.UpdateOrderFields(order, []string{ /*"WaybillTipMoney", */ "TotalShopMoney", "PmSubsidyMoney", "NewEarningPrice"}) } } From 249353f0cce7b76082f2489ed66686f5313d675a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 2 Jun 2020 11:41:57 +0800 Subject: [PATCH 076/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E5=BA=97=E5=86=85=E5=88=86=E7=B1=BB=E5=88=9B=E5=BB=BA=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/jdshop/store_sku.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/business/partner/purchase/jdshop/store_sku.go b/business/partner/purchase/jdshop/store_sku.go index dd87cb8e7..5ac62d7fc 100644 --- a/business/partner/purchase/jdshop/store_sku.go +++ b/business/partner/purchase/jdshop/store_sku.go @@ -309,6 +309,9 @@ func (p *PurchaseHandler) CreateStoreCategory(ctx *jxcontext.Context, storeID in if status == -1 { return fmt.Errorf("京东商城店内分类创建失败!") } + if err != nil { + return err + } time.Sleep(time.Second * 2) // flag := false // for { @@ -323,6 +326,9 @@ func (p *PurchaseHandler) CreateStoreCategory(ctx *jxcontext.Context, storeID in break } } + if storeCat.VendorCatID == "" { + return fmt.Errorf("京东商城店内分类创建可能失败了!storeID: %v", storeID) + } // if flag { // break // } From bea20643c2266cd5a02684571e5ac5530ef33d9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 2 Jun 2020 14:00:05 +0800 Subject: [PATCH 077/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E5=95=86=E5=93=81=E9=80=8F=E5=9B=BE=E4=B8=8A?= =?UTF-8?q?=E4=BC=A0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/jdshop/store_sku.go | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/business/partner/purchase/jdshop/store_sku.go b/business/partner/purchase/jdshop/store_sku.go index 5ac62d7fc..4df250a4e 100644 --- a/business/partner/purchase/jdshop/store_sku.go +++ b/business/partner/purchase/jdshop/store_sku.go @@ -76,20 +76,15 @@ func (p *PurchaseHandler) CreateStoreSkus(ctx *jxcontext.Context, storeID int, v if img != "" { suffix := img[strings.LastIndex(img, "."):] if suffix != ".png" { - if resBinary, _, err := jxutils.DownloadFileByURL(img + model.SkuNameImgToPng); err == nil { - downloadURL, err2 := jxutils.UploadExportContent(resBinary, utils.Int64ToStr(time.Now().Unix())) - err = err2 - imageURL, err = uploadImg(downloadURL, name, "tou") + if resBinary, _, _ := jxutils.DownloadFileByURL(img + model.SkuNameImgToPng); err == nil { + downloadURL, _ := jxutils.UploadExportContent(resBinary, utils.Int64ToStr(time.Now().Unix())) + imageURL, _ = uploadImg(downloadURL, name, "tou") } } else { - imageURL, err = uploadImg(img, name, "tou") + imageURL, _ = uploadImg(img, name, "tou") } } - err2 := api.JdShopAPI.TransparentImageAdd(createSkuResult.WareID, imageURL) - if err2 != nil { - failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDJDShop], "创建商品") - return failedList, err - } + api.JdShopAPI.TransparentImageAdd(createSkuResult.WareID, imageURL) } var paramAttrs = make(map[string]*jdshopapi.CreateSkuParamSkus) var resultAttrs = make(map[string]int64) From 9b77c7df9efc4b8232fada437755a6d1141b15b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 2 Jun 2020 14:08:38 +0800 Subject: [PATCH 078/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E7=89=9B=E8=82=89=E5=88=86=E7=B1=BB=E5=88=9B=E5=BB=BA=E5=95=86?= =?UTF-8?q?=E5=93=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/jdshop/store_sku.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/business/partner/purchase/jdshop/store_sku.go b/business/partner/purchase/jdshop/store_sku.go index 4df250a4e..e9f6e1c74 100644 --- a/business/partner/purchase/jdshop/store_sku.go +++ b/business/partner/purchase/jdshop/store_sku.go @@ -481,6 +481,10 @@ func buildCreateWareParam(storeSku *dao.StoreSkuSyncInfo) (createSkuParamWare *j createSkuParamWare.PromiseID = jdshopapi.JdsPromiseID } + if storeSku.VendorVendorCatID == jdshopapi.JdsBeefCatID { + createSkuParamWare.MultiCategoryID = jdshopapi.JdsBeefLastCatID + } + //上传京东图片 //规则,有两张就传两张,没有就重复传一张 pic1, err := uploadImg(storeSku.Img, name, "1") From 4ff1bac2e7340a1c7dfedc96cacb9cdd7608e051 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 2 Jun 2020 14:24:32 +0800 Subject: [PATCH 079/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E7=89=9B=E8=82=89=E5=88=86=E7=B1=BB=E7=83=AD=E5=8D=96=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E5=A2=9E=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/jdshop/store_sku.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/business/partner/purchase/jdshop/store_sku.go b/business/partner/purchase/jdshop/store_sku.go index e9f6e1c74..221377bb8 100644 --- a/business/partner/purchase/jdshop/store_sku.go +++ b/business/partner/purchase/jdshop/store_sku.go @@ -532,6 +532,7 @@ func buildCreateWareParam(storeSku *dao.StoreSkuSyncInfo) (createSkuParamWare *j gcjkValueID int64 //国产,进口的id lbValueID int64 //类别的ID bcztValueID int64 //保存状态ID + rmsjValueID int64 //热卖时间ID attrsProp []*jdshopapi.CreateSkuParamAttrs ) attrs, err := api.JdShopAPI.FindAttrs(int(storeSku.VendorVendorCatID)) @@ -550,6 +551,8 @@ func buildCreateWareParam(storeSku *dao.StoreSkuSyncInfo) (createSkuParamWare *j attrIDs[v.Name] = v.ID } else if v.Name == "保存状态" { attrIDs[v.Name] = v.ID + } else if v.Name == "热卖时间" { + attrIDs[v.Name] = v.ID } } values, _, err := api.JdShopAPI.FindValuesByAttrId(attrIDs["贮存条件"]) @@ -586,6 +589,20 @@ func buildCreateWareParam(storeSku *dao.StoreSkuSyncInfo) (createSkuParamWare *j } attrsProp = append(attrsProp, attrbczt) } + if attrIDs["热卖时间"] != 0 { + values2, _, err2 := api.JdShopAPI.FindValuesByAttrId(attrIDs["热卖时间"]) + err = err2 + for _, v := range values2 { + if v.Name == "6月" { + rmsjValueID = v.ID + } + } + attrrmsj := &jdshopapi.CreateSkuParamAttrs{ + AttrID: utils.Int2Str(attrIDs["热卖时间"]), + AttrValues: []string{utils.Int64ToStr(rmsjValueID)}, + } + attrsProp = append(attrsProp, attrrmsj) + } attrZctj := &jdshopapi.CreateSkuParamAttrs{ AttrID: utils.Int2Str(attrIDs["贮存条件"]), AttrValues: []string{utils.Int64ToStr(zctjValueID)}, From 5a60d813eef5b6953fcf9b09dbc3b4e64540c4d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 2 Jun 2020 14:33:04 +0800 Subject: [PATCH 080/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E7=89=9B=E8=82=89=E5=88=86=E7=B1=BB=E7=83=AD=E5=8D=96=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E5=A2=9E=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/jdshop/store_sku.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/business/partner/purchase/jdshop/store_sku.go b/business/partner/purchase/jdshop/store_sku.go index 221377bb8..415e99382 100644 --- a/business/partner/purchase/jdshop/store_sku.go +++ b/business/partner/purchase/jdshop/store_sku.go @@ -593,7 +593,7 @@ func buildCreateWareParam(storeSku *dao.StoreSkuSyncInfo) (createSkuParamWare *j values2, _, err2 := api.JdShopAPI.FindValuesByAttrId(attrIDs["热卖时间"]) err = err2 for _, v := range values2 { - if v.Name == "6月" { + if v.Name == "12月" { rmsjValueID = v.ID } } @@ -603,6 +603,21 @@ func buildCreateWareParam(storeSku *dao.StoreSkuSyncInfo) (createSkuParamWare *j } attrsProp = append(attrsProp, attrrmsj) } + if storeSku.VendorVendorCatID == jdshopapi.JdsBeefCatID { + var exValueID int64 + values2, _, err2 := api.JdShopAPI.FindValuesByAttrId(150390) + err = err2 + for _, v := range values2 { + if v.Name == "其他" { + exValueID = v.ID + } + } + attrex := &jdshopapi.CreateSkuParamAttrs{ + AttrID: utils.Int2Str(150390), + AttrValues: []string{utils.Int64ToStr(exValueID)}, + } + attrsProp = append(attrsProp, attrex) + } attrZctj := &jdshopapi.CreateSkuParamAttrs{ AttrID: utils.Int2Str(attrIDs["贮存条件"]), AttrValues: []string{utils.Int64ToStr(zctjValueID)}, From cb51f0436ca7ce8e69175b17bb0bd2638145ec24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 2 Jun 2020 14:44:16 +0800 Subject: [PATCH 081/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E7=89=9B=E8=82=89=E5=88=86=E7=B1=BB=E7=83=AD=E5=8D=96=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E5=A2=9E=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/jdshop/store_sku.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/partner/purchase/jdshop/store_sku.go b/business/partner/purchase/jdshop/store_sku.go index 415e99382..1cf05436b 100644 --- a/business/partner/purchase/jdshop/store_sku.go +++ b/business/partner/purchase/jdshop/store_sku.go @@ -608,7 +608,7 @@ func buildCreateWareParam(storeSku *dao.StoreSkuSyncInfo) (createSkuParamWare *j values2, _, err2 := api.JdShopAPI.FindValuesByAttrId(150390) err = err2 for _, v := range values2 { - if v.Name == "其他" { + if v.Name == "其它" { exValueID = v.ID } } From 172d7fba6fc2cad708a5f9415df7d3d221c22361 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 2 Jun 2020 14:56:05 +0800 Subject: [PATCH 082/130] =?UTF-8?q?=E5=88=B7=E4=BA=AC=E8=A5=BF=E4=BB=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/tempop/tempop.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index ae8bdad66..25f9606c8 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -1629,10 +1629,10 @@ func RefreshJXPriceChange(ctx *jxcontext.Context) (hint string, err error) { sql := ` SELECT * FROM store - WHERE deleted_at = ? AND status <> ? AND pay_percentage = ? - AND id = ? + WHERE deleted_at = ? AND status <> ? + AND id in (?,?,?) ` - sqlParams := []interface{}{utils.DefaultTimeValue, model.StoreStatusDisabled, 80, 100118} + sqlParams := []interface{}{utils.DefaultTimeValue, model.StoreStatusDisabled, 100118, 100205, 100274} err = dao.GetRows(db, &stores, sql, sqlParams) task := tasksch.NewParallelTask("刷新门店价格", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { From c7a6fdc0837114fa16aca488a78c499a9e463c38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 2 Jun 2020 16:24:14 +0800 Subject: [PATCH 083/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/jdshop/order.go | 47 +++++++++++++++++++++-- 1 file changed, 44 insertions(+), 3 deletions(-) diff --git a/business/partner/purchase/jdshop/order.go b/business/partner/purchase/jdshop/order.go index f68ad75e9..52588dd17 100644 --- a/business/partner/purchase/jdshop/order.go +++ b/business/partner/purchase/jdshop/order.go @@ -1,11 +1,14 @@ package jdshop import ( + "time" + "git.rosy.net.cn/baseapi/platformapi/jdshopapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" + "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals/api" ) @@ -109,6 +112,14 @@ func (p *PurchaseHandler) GetJdsOrders(ctx *jxcontext.Context, orderCreatedStart func result2Orders(result *jdshopapi.AllOrdersResult) (orders []*model.GoodsOrder, err error) { for _, jdsOrder := range result.OrderList { + if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusWaittingPay { + continue + } + orderDetail, err := api.JdShopAPI.OrderDetail(utils.Int64ToStr(jdsOrder.OrderID)) + if err != nil { + globals.SugarLogger.Debugf("jds OrderDetail error: %v", err.Error()) + continue + } order := &model.GoodsOrder{ VendorOrderID: utils.Int64ToStr(jdsOrder.OrderID), VendorID: model.VendorIDJDShop, @@ -116,9 +127,39 @@ func result2Orders(result *jdshopapi.AllOrdersResult) (orders []*model.GoodsOrde VendorStatus: utils.Int2Str(jdsOrder.OrderStatus), VendorUserID: jdsOrder.UserPin, BuyerComment: jdsOrder.UserRemark, - // PickDeadline: utils.DefaultTimeValue, - OriginalData: string(utils.MustMarshal(jdsOrder)), - StoreName: jdsOrder.StoreName, + PickDeadline: utils.DefaultTimeValue, + OriginalData: string(utils.MustMarshal(jdsOrder)), + StoreName: jdsOrder.StoreName, + OrderCreatedAt: utils.Str2Time(jdsOrder.OrderCreateTime + ":00"), + ConsigneeAddress: orderDetail.ConsigneeAddress, + ConsigneeMobile: orderDetail.ConsigneeMobile, + ConsigneeName: orderDetail.ConsigneeName, + ActualPayPrice: orderDetail.ActualPayPrice, + // TotalShopMoney: orderDetail.ActualPayPrice * jdshopapi.JdsPayPercentage, + } + //如果是暂停,表示是预订单 + if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusPause { + order.BusinessType = model.BusinessTypeDingshida + order.ExpectedDeliveredTime = utils.Str2Time(orderDetail.ExpectedDeliveredTime) + } else if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusWaittingExport { + order.ExpectedDeliveredTime = order.CreatedAt.Add(time.Hour) + order.BusinessType = model.BusinessTypeImmediate + } else { + globals.SugarLogger.Errorf("未知的京东商城订单状态!status : %V", jdsOrder.OrderStatus) + } + for _, v := range jdsOrder.OrderItems { + sku := &model.OrderSku{ + VendorID: model.VendorIDJDShop, + VendorOrderID: utils.Int64ToStr(jdsOrder.OrderID), + Count: v.SkuNum, + VendorSkuID: utils.Int64ToStr(v.SkuID), + SkuName: v.SkuName, + VendorPrice: jxutils.StandardPrice2Int(v.JdPrice), + SalePrice: jxutils.StandardPrice2Int(v.JdPrice), + } + _, _, _, specUnit, _, specQuality := jxutils.SplitSkuName(v.SkuName) + sku.Weight = jxutils.FormatSkuWeight(specQuality, specUnit) + order.Skus = append(order.Skus, sku) } orders = append(orders, order) } From f9ef5ab49dafd1696b10f2aa9e434692152e3ad4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 2 Jun 2020 16:29:51 +0800 Subject: [PATCH 084/130] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/store_sku.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 5c572bec8..232f1a401 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1551,7 +1551,7 @@ type tStoreSkuAudit struct { func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss, types []int, name, remark, keyword, marketManPhone string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { var requestList []*tStoreSkuAudit sql := ` - SELECT SQL_CALC_FOUND_ROWS a.*, c.name sku_name, c.prefix, c.unit, c.spec_quality, c.spec_unit, c.img, d.name store_name, b.name, e.mid_unit_price + SELECT SQL_CALC_FOUND_ROWS DISTINCT a.*, c.name sku_name, c.prefix, c.unit, c.spec_quality, c.spec_unit, c.img, d.name store_name, b.name, e.mid_unit_price FROM store_sku_audit a LEFT JOIN user b ON a.user_id = b.user_id LEFT JOIN sku_name c ON c.id = a.name_id AND c.deleted_at = ? From 73139f28606e39a1d234a86e6c76a88ecb3769c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 2 Jun 2020 17:16:40 +0800 Subject: [PATCH 085/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E5=8F=96=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order.go | 10 --- business/jxstore/cms/cms.go | 8 +- business/jxstore/cms/sku.go | 2 +- business/jxstore/cms/store.go | 21 +++-- business/jxstore/cms/store_sku.go | 90 ++++++++++++++++++- business/jxstore/cms/sync.go | 2 +- business/jxstore/cms/sync_store.go | 2 +- business/jxstore/tempop/tempop.go | 2 +- business/jxutils/smsmsg/smsmsg.go | 2 +- business/model/dao/store.go | 10 ++- business/model/dao/store_sku.go | 2 +- business/partner/purchase/jdshop/order.go | 70 ++------------- .../partner/purchase/mtwm/order_comment.go | 2 +- controllers/cms_store.go | 2 +- 14 files changed, 121 insertions(+), 104 deletions(-) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 0ecff74d2..93a9c6705 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -7,8 +7,6 @@ import ( "strings" "time" - "git.rosy.net.cn/jx-callback/business/partner/purchase/jdshop" - "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" "git.rosy.net.cn/baseapi" @@ -997,11 +995,3 @@ func GetOrderSimpleInfo(ctx *jxcontext.Context, vendorOrderID string) (getOrderS return getOrderSimpleInfoResult, err } - -func SaveJdsOrders(ctx *jxcontext.Context, orderCreatedStart, orderCreatedEnd time.Time) (err error) { - orders, err := jdshop.CurPurchaseHandler.GetJdsOrders(ctx, utils.Time2Str(orderCreatedStart), utils.Time2Str(orderCreatedEnd)) - for _, _ = range orders { - - } - return err -} diff --git a/business/jxstore/cms/cms.go b/business/jxstore/cms/cms.go index 3a420aa95..94b5f0818 100644 --- a/business/jxstore/cms/cms.go +++ b/business/jxstore/cms/cms.go @@ -412,7 +412,7 @@ func DeleteConfig(ctx *jxcontext.Context, key, configType string) (err error) { db := dao.GetDB() switch configType { case model.ConfigTypePricePack: - storeMapList, err2 := dao.GetStoresMapList(db, nil, nil, nil, model.StoreStatusAll, model.StoreIsSyncYes, key) + storeMapList, err2 := dao.GetStoresMapList(db, nil, nil, nil, model.StoreStatusAll, model.StoreIsSyncYes, key, "") if err = err2; err == nil { var storeInfo []string for _, v := range storeMapList { @@ -423,7 +423,7 @@ func DeleteConfig(ctx *jxcontext.Context, key, configType string) (err error) { } } case model.ConfigTypeFreightPack: - storeMapList, err2 := dao.GetStoresMapList(db, nil, nil, nil, model.StoreStatusAll, model.StoreIsSyncYes, "") + storeMapList, err2 := dao.GetStoresMapList(db, nil, nil, nil, model.StoreStatusAll, model.StoreIsSyncYes, "", "") if err = err2; err == nil { var storeInfo []string for _, v := range storeMapList { @@ -503,7 +503,7 @@ func UpdateConfig(ctx *jxcontext.Context, key, configType, value string) (hint s } switch configType { case model.ConfigTypePricePack: - storeMapList, err := dao.GetStoresMapList(db, nil, nil, nil, model.StoreStatusAll, model.StoreIsSyncYes, key) + storeMapList, err := dao.GetStoresMapList(db, nil, nil, nil, model.StoreStatusAll, model.StoreIsSyncYes, key, "") if err != nil { dao.Rollback(db) return "", err @@ -522,7 +522,7 @@ func UpdateConfig(ctx *jxcontext.Context, key, configType, value string) (hint s } case model.ConfigTypeFreightPack: dao.Commit(db) - storeMapList, err := dao.GetStoresMapList(db, nil, nil, nil, model.StoreStatusAll, model.StoreIsSyncYes, "") + storeMapList, err := dao.GetStoresMapList(db, nil, nil, nil, model.StoreStatusAll, model.StoreIsSyncYes, "", "") if err != nil { return "", err } diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index 788bcd094..43785ed80 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -1124,7 +1124,7 @@ func AddSku(ctx *jxcontext.Context, nameID int, sku *model.Sku, userName string) storeSkus, err := dao.GetStoreSkusByNameIDs(db, []int{model.JdShopMainStoreID}, nameID) if len(storeSkus) > 0 { storeIDs := make(map[int]int) - storeMaps, err2 := dao.GetStoresMapList(db, []int{model.VendorIDJDShop}, nil, nil, model.StoreStatusAll, model.StoreIsSyncAll, "") + storeMaps, err2 := dao.GetStoresMapList(db, []int{model.VendorIDJDShop}, nil, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "") err = err2 for _, v := range storeMaps { storeSkus2, err2 := dao.GetStoreSkusByNameIDs(db, []int{v.StoreID}, nameID) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 39b5697b9..2e55777d0 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -426,7 +426,7 @@ func getStoresSql(ctx *jxcontext.Context, keyword string, params map[string]inte } func setStoreMapInfo(ctx *jxcontext.Context, db *dao.DaoDB, storesInfo *StoresInfo, storeIDs []int, briefLevel int) (err error) { - storeMapList, err := dao.GetStoresMapList(db, nil, storeIDs, nil, model.StoreStatusAll, model.StoreIsSyncAll, "") + storeMapList, err := dao.GetStoresMapList(db, nil, storeIDs, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "") if err != nil { return err } @@ -1194,7 +1194,7 @@ func AddStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, vendorID int, vend } } } - storeMapList, err := dao.GetStoresMapList2(db, []int{vendorID}, []int{storeID}, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", true) + storeMapList, err := dao.GetStoresMapList2(db, []int{vendorID}, []int{storeID}, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "", true) if len(storeMapList) > 0 { _, err = CurVendorSync.SyncStore(ctx, db, storeMap.VendorID, storeID, false, userName) } else { @@ -1806,7 +1806,7 @@ type EbaiStoreHealthy struct { func ExportShopsHealthInfo(ctx *jxcontext.Context, vendorIDs, storeIDs []int, isAsync, isContinueWhenError bool) (hint string, err error) { db := dao.GetDB() vendorID := model.VendorIDEBAI - storeMapList, err := dao.GetStoresMapList(db, []int{vendorID}, storeIDs, nil, model.StoreStatusAll, model.StoreIsSyncYes, "") + storeMapList, err := dao.GetStoresMapList(db, []int{vendorID}, storeIDs, nil, model.StoreStatusAll, model.StoreIsSyncYes, "", "") if err != nil { return "", err } @@ -1924,7 +1924,7 @@ func GetCorporationInfo(ctx *jxcontext.Context, licenceCode string) (corporation func GetStoresVendorSnapshot(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorIDs, storeIDs []int) (vendorStoreSnapshotList []*model.VendorStoreSnapshot, err error) { db := dao.GetDB() - storeMapList, err := dao.GetStoresMapList(db, vendorIDs, storeIDs, nil, model.StoreStatusAll, model.StoreIsSyncYes, "") + storeMapList, err := dao.GetStoresMapList(db, vendorIDs, storeIDs, nil, model.StoreStatusAll, model.StoreIsSyncYes, "", "") if err != nil { return nil, err } @@ -1971,7 +1971,7 @@ func getCurrentSnapshotAt(now time.Time) (snapshotAt time.Time) { } func updateVendorStoreStatusBySnapshot(db *dao.DaoDB, curSnapshotList []*model.VendorStoreSnapshot) (err error) { - storeMapList, err := dao.GetStoresMapList(db, nil, nil, nil, model.StoreStatusAll, model.StoreIsSyncAll, "") + storeMapList, err := dao.GetStoresMapList(db, nil, nil, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "") if err != nil { return err } @@ -2482,9 +2482,8 @@ func SyncStoresQualify(ctx *jxcontext.Context, storeIDs []int, isAsync, isContin return hint, err } -func GetStoreListByLocation(ctx *jxcontext.Context, lng, lat float64, needWalkDistance bool) (storeList []*Store4User, err error) { +func GetStoreListByLocation(ctx *jxcontext.Context, lng, lat float64, maxRadius int, needWalkDistance bool) (storeList []*Store4User, err error) { const ( - maxRadius = 20000 maxStoreCount4User = 5 ) @@ -2583,7 +2582,7 @@ func JdStoreInfoCoordinateRecover(ctx *jxcontext.Context, vendorOrgCode string, defer file1.Close() db := dao.GetDB() - storeList, err := dao.GetStoresMapList(db, []int{model.VendorIDJD}, nil, nil, model.StoreStatusAll, model.StoreIsSyncYes, "") + storeList, err := dao.GetStoresMapList(db, []int{model.VendorIDJD}, nil, nil, model.StoreStatusAll, model.StoreIsSyncYes, "", "") if err == nil { var validStoreList []*dao.StoreDetail for _, v := range storeList { @@ -2849,7 +2848,7 @@ func CreateStorePriceScore(ctx *jxcontext.Context) (err error) { func RefreshJdLevel(ctx *jxcontext.Context) (err error) { db := dao.GetDB() - storeMapList, err := dao.GetStoresMapList(db, []int{model.VendorIDJD}, nil, nil, model.StoreStatusOpened, -1, "") + storeMapList, err := dao.GetStoresMapList(db, []int{model.VendorIDJD}, nil, nil, model.StoreStatusOpened, -1, "", "") if len(storeMapList) > 0 { dao.Begin(db) defer func() { @@ -3036,7 +3035,7 @@ func checkYbParams(db *dao.DaoDB, storeMap *model.StoreMap, storeID int) (err er } } } - storeMaps, err := dao.GetStoresMapList2(db, []int{model.VendorIDYB}, nil, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", false) + storeMaps, err := dao.GetStoresMapList2(db, []int{model.VendorIDYB}, nil, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "", false) if len(storeMaps) > 0 { for _, v := range storeMaps { if v.YbAppID == appID { @@ -3121,7 +3120,7 @@ func DisabledStoreWithoutVendor(ctx *jxcontext.Context, isContinueWhenError, isA task := tasksch.NewParallelTask("DisabledStoreWithoutVendor", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { store := batchItemList[0].(*model.Store) - storeMaps, err := dao.GetStoresMapList(db, []int{model.VendorIDYB, model.VendorIDJD, model.VendorIDJX, model.VendorIDEBAI, model.VendorIDMTWM}, []int{store.ID}, nil, model.StoreStatusAll, model.StoreIsSyncAll, "") + storeMaps, err := dao.GetStoresMapList(db, []int{model.VendorIDYB, model.VendorIDJD, model.VendorIDJX, model.VendorIDEBAI, model.VendorIDMTWM}, []int{store.ID}, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "") if len(storeMaps) == 0 { store.Status = model.StoreStatusDisabled dao.UpdateEntity(db, store, "Status") diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index b08ea8622..8cd7a9996 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -27,6 +27,7 @@ import ( "git.rosy.net.cn/jx-callback/business/jxutils/excel" "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" "git.rosy.net.cn/jx-callback/business/partner/purchase/jd" + "git.rosy.net.cn/jx-callback/business/partner/purchase/jdshop" "git.rosy.net.cn/jx-callback/globals/api/apimanager" "git.rosy.net.cn/jx-callback/business/partner" @@ -702,7 +703,7 @@ func updateSaleInfo4StoreSkuName(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs } func getValidStoreVendorMap(db *dao.DaoDB, storeIDs []int) (realVendorMap map[int]int, err error) { - storeMapList, err := dao.GetStoresMapList(db, nil, storeIDs, nil, model.StoreStatusAll, model.StoreIsSyncYes, "") + storeMapList, err := dao.GetStoresMapList(db, nil, storeIDs, nil, model.StoreStatusAll, model.StoreIsSyncYes, "", "") if err != nil { return nil, err } @@ -2067,7 +2068,7 @@ func RefreshStoresSkuByVendor(ctx *jxcontext.Context, storeIDs []int, vendorID i return "", fmt.Errorf("此功能当前只支持京东到家平台") } db := dao.GetDB() - storeMapList, err := dao.GetStoresMapList(db, []int{vendorID}, storeIDs, nil, model.StoreStatusAll, model.StoreIsSyncAll, "") + storeMapList, err := dao.GetStoresMapList(db, []int{vendorID}, storeIDs, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "") if err != nil { return "", err } @@ -3479,7 +3480,7 @@ func SendSeckillSkusCountMsg(ctx *jxcontext.Context, vendorIDs []int, isAsync, i ddMsgresult []interface{} ) db := dao.GetDB() - storeList, err := dao.GetStoresMapList(db, vendorIDs, nil, []int{model.StoreStatusClosed, model.StoreStatusHaveRest, model.StoreStatusOpened}, model.StoreStatusOpened, model.StoreIsSyncAll, "") + storeList, err := dao.GetStoresMapList(db, vendorIDs, nil, []int{model.StoreStatusClosed, model.StoreStatusHaveRest, model.StoreStatusOpened}, model.StoreStatusOpened, model.StoreIsSyncAll, "", "") taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) { switch step { case 0: @@ -4447,3 +4448,86 @@ func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs []int, s pagedInfo, err = dao.GetStoreSkuAudit(dao.GetDB(), storeIDs, nameIDs, skuIDs, status, name, remark, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd, pageSize, offset) return pagedInfo, err } + +func SaveJdsOrders(ctx *jxcontext.Context, orderCreatedStart, orderCreatedEnd time.Time) (err error) { + var ( + pageNo = 1 + pageSize = 10 + ) + orderResult, err := jdshop.CurPurchaseHandler.GetJdsOrders(ctx, utils.Time2Str(orderCreatedStart), utils.Time2Str(orderCreatedEnd), pageNo, pageSize) + result2Orders(ctx, orderResult) + return err +} + +func result2Orders(ctx *jxcontext.Context, result *jdshopapi.AllOrdersResult) (orders []*model.GoodsOrder, err error) { + for _, jdsOrder := range result.OrderList { + if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusWaittingPay { + continue + } + orderDetail, err := api.JdShopAPI.OrderDetail(utils.Int64ToStr(jdsOrder.OrderID)) + if err != nil { + globals.SugarLogger.Debugf("jds OrderDetail error: %v", err.Error()) + continue + } + order := &model.GoodsOrder{ + VendorOrderID: utils.Int64ToStr(jdsOrder.OrderID), + VendorID: model.VendorIDJDShop, + BaseFreightMoney: jxutils.StandardPrice2Int(jdsOrder.Freight), + VendorStatus: utils.Int2Str(jdsOrder.OrderStatus), + VendorUserID: jdsOrder.UserPin, + BuyerComment: jdsOrder.UserRemark, + PickDeadline: utils.DefaultTimeValue, + OriginalData: string(utils.MustMarshal(jdsOrder)), + StoreName: jdsOrder.StoreName, + OrderCreatedAt: utils.Str2Time(jdsOrder.OrderCreateTime + ":00"), + ConsigneeAddress: orderDetail.ConsigneeAddress, + ConsigneeMobile: orderDetail.ConsigneeMobile, + ConsigneeName: orderDetail.ConsigneeName, + ActualPayPrice: orderDetail.ActualPayPrice, + TotalShopMoney: utils.Float64TwoInt64(math.Round(utils.Int64ToFloat64(orderDetail.ActualPayPrice) * jdshopapi.JdsPayPercentage)), + } + if order.TotalShopMoney < 100 { + order.TotalShopMoney = 100 + } + if order.ConsigneeAddress != "" { + lng, lat, _ := api.AutonaviAPI.GetCoordinateFromAddress(order.ConsigneeAddress, "") + order.ConsigneeLng = jxutils.StandardCoordinate2Int(lng) + order.ConsigneeLat = jxutils.StandardCoordinate2Int(lat) + } + if order.StoreName != "" { + storeMaps, _ := dao.GetStoresMapList(dao.GetDB(), []int{model.VendorIDJDShop}, nil, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", order.StoreName) + if len(storeMaps) > 0 { + order.StoreID = storeMaps[0].StoreID + order.VendorStoreID = storeMaps[0].VendorStoreID + } + } else { + GetStoreListByLocation(ctx, jxutils.IntCoordinate2Standard(order.ConsigneeLng), jxutils.IntCoordinate2Standard(order.ConsigneeLat), 5000, false) + } + //如果是暂停,表示是预订单 + if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusPause { + order.BusinessType = model.BusinessTypeDingshida + order.ExpectedDeliveredTime = utils.Str2Time(orderDetail.ExpectedDeliveredTime) + } else if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusWaittingExport { + order.ExpectedDeliveredTime = order.CreatedAt.Add(time.Hour) + order.BusinessType = model.BusinessTypeImmediate + } else { + globals.SugarLogger.Errorf("未知的京东商城订单状态!status : %V", jdsOrder.OrderStatus) + } + for _, v := range jdsOrder.OrderItems { + sku := &model.OrderSku{ + VendorID: model.VendorIDJDShop, + VendorOrderID: utils.Int64ToStr(jdsOrder.OrderID), + Count: v.SkuNum, + VendorSkuID: utils.Int64ToStr(v.SkuID), + SkuName: v.SkuName, + VendorPrice: jxutils.StandardPrice2Int(v.JdPrice), + SalePrice: jxutils.StandardPrice2Int(v.JdPrice), + } + _, _, _, specUnit, _, specQuality := jxutils.SplitSkuName(v.SkuName) + sku.Weight = jxutils.FormatSkuWeight(specQuality, specUnit) + order.Skus = append(order.Skus, sku) + } + orders = append(orders, order) + } + return orders, err +} diff --git a/business/jxstore/cms/sync.go b/business/jxstore/cms/sync.go index aba24309c..a2bac5eef 100644 --- a/business/jxstore/cms/sync.go +++ b/business/jxstore/cms/sync.go @@ -645,7 +645,7 @@ func (v *VendorSync) AmendAndPruneStoreStuff(ctx *jxcontext.Context, vendorIDs [ func (v *VendorSync) LoopStoresMap2(ctx *jxcontext.Context, parentTask tasksch.ITask, db *dao.DaoDB, taskName string, isAsync, isManageIt bool, vendorIDs []int, storeIDs []int, mustDirty bool, handler tasksch.WorkFunc, isContinueWhenError bool) (task tasksch.ITask, hint string, err error) { var storeMapList []*model.StoreMap - if storeMapList, err = dao.GetStoresMapList2(db, vendorIDs, storeIDs, nil, model.StoreStatusAll, model.StoreIsSyncYes, "", mustDirty); err != nil { + if storeMapList, err = dao.GetStoresMapList2(db, vendorIDs, storeIDs, nil, model.StoreStatusAll, model.StoreIsSyncYes, "", "", mustDirty); err != nil { return nil, "", err } if len(storeMapList) == 0 { diff --git a/business/jxstore/cms/sync_store.go b/business/jxstore/cms/sync_store.go index dcb95dc1d..5c76fe676 100644 --- a/business/jxstore/cms/sync_store.go +++ b/business/jxstore/cms/sync_store.go @@ -16,7 +16,7 @@ func OpenRemoteStoreByJxStatus(ctx *jxcontext.Context, vendorIDs, storeIDs []int if !isForce { status = model.StoreStatusClosed } - storeMapList, err := dao.GetStoresMapList(db, vendorIDs, storeIDs, nil, status, model.StoreIsSyncYes, "") + storeMapList, err := dao.GetStoresMapList(db, vendorIDs, storeIDs, nil, status, model.StoreIsSyncYes, "", "") if err != nil { return "", err } diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index 9257cd023..d71a05351 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -1236,7 +1236,7 @@ func FixMtwmCategory(ctx *jxcontext.Context, mtwmStoreIDs []int, isAsync, isCont func JdStoreInfo1125() (hint string, err error) { fileName := "老格恢复拓店进度.xlsx" db := dao.GetDB() - storeList, err := dao.GetStoresMapList(db, []int{model.VendorIDJD}, nil, nil, model.StoreStatusAll, model.StoreIsSyncYes, "") + storeList, err := dao.GetStoresMapList(db, []int{model.VendorIDJD}, nil, nil, model.StoreStatusAll, model.StoreIsSyncYes, "", "") if err == nil { var validStoreList []*dao.StoreDetail for _, v := range storeList { diff --git a/business/jxutils/smsmsg/smsmsg.go b/business/jxutils/smsmsg/smsmsg.go index 56d014418..6920761e7 100644 --- a/business/jxutils/smsmsg/smsmsg.go +++ b/business/jxutils/smsmsg/smsmsg.go @@ -86,7 +86,7 @@ func isPushSMS(order *model.GoodsOrder) bool { } else { storeID = order.StoreID } - stores, _ := dao.GetStoresMapList(dao.GetDB(), []int{order.VendorID}, []int{storeID}, nil, model.StoreStatusAll, model.StoreIsSyncAll, "") + stores, _ := dao.GetStoresMapList(dao.GetDB(), []int{order.VendorID}, []int{storeID}, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "") if len(stores) > 0 { if stores[0].IsOrder == model.NO { if storeID == model.MatterStoreID { diff --git a/business/model/dao/store.go b/business/model/dao/store.go index cea3c67b6..ea87453c6 100644 --- a/business/model/dao/store.go +++ b/business/model/dao/store.go @@ -231,7 +231,7 @@ func GetStoreCourierList(db *DaoDB, storeIDs []int, status, auditStatus int) (co return nil, err } -func GetStoresMapList2(db *DaoDB, vendorIDs, storeIDs, storeStatuss []int, status, isSync int, pricePack string, mustDirty bool) (storeMapList []*model.StoreMap, err error) { +func GetStoresMapList2(db *DaoDB, vendorIDs, storeIDs, storeStatuss []int, status, isSync int, pricePack, name string, mustDirty bool) (storeMapList []*model.StoreMap, err error) { sql := ` SELECT t1.* FROM store_map t1 @@ -266,6 +266,10 @@ func GetStoresMapList2(db *DaoDB, vendorIDs, storeIDs, storeStatuss []int, statu sql += " AND t1.price_percentage_pack = ?" sqlParams = append(sqlParams, pricePack) } + if name != "" { + sql += " AND t2.name LIKE ?" + sqlParams = append(sqlParams, "%"+name+"%") + } if mustDirty { sql += " AND t1.sync_status <> 0" } @@ -300,8 +304,8 @@ func SetStoresMapSyncStatus(db *DaoDB, vendorIDs, storeIDs []int, syncStatus int return err } -func GetStoresMapList(db *DaoDB, vendorIDs, storeIDs, storeStatuss []int, status, isSync int, pricePack string) (storeMapList []*model.StoreMap, err error) { - return GetStoresMapList2(db, vendorIDs, storeIDs, storeStatuss, status, isSync, pricePack, false) +func GetStoresMapList(db *DaoDB, vendorIDs, storeIDs, storeStatuss []int, status, isSync int, pricePack, name string) (storeMapList []*model.StoreMap, err error) { + return GetStoresMapList2(db, vendorIDs, storeIDs, storeStatuss, status, isSync, pricePack, name, false) } func StoreMapList2Map(storeMapList []*model.StoreMap) (storeMapMap map[int][]*model.StoreMap) { diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 7ad56c0e0..5f0c93252 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1288,7 +1288,7 @@ func UpdateActPrice4StoreSkuNameNew(db *DaoDB, storeIDs, skuIDs []int, skuNamesI vendorIDs = []int{actVendorID} } } else { - storeMapList, err := GetStoresMapList(db, nil, storeIDs, nil, model.StoreStatusAll, model.StoreIsSyncAll, "") + storeMapList, err := GetStoresMapList(db, nil, storeIDs, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "") if err != nil { return err } diff --git a/business/partner/purchase/jdshop/order.go b/business/partner/purchase/jdshop/order.go index 52588dd17..5d55dc961 100644 --- a/business/partner/purchase/jdshop/order.go +++ b/business/partner/purchase/jdshop/order.go @@ -1,14 +1,11 @@ package jdshop import ( - "time" - "git.rosy.net.cn/baseapi/platformapi/jdshopapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" - "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals/api" ) @@ -100,68 +97,11 @@ func (p *PurchaseHandler) ConfirmReceivedReturnGoods(ctx *jxcontext.Context, ord return err } -func (p *PurchaseHandler) GetJdsOrders(ctx *jxcontext.Context, orderCreatedStart, orderCreatedEnd string) (orders []*model.GoodsOrder, err error) { - orderResult, err := api.JdShopAPI.AllOrders(&jdshopapi.AllOrdersParam{ - Current: 1, - PageSize: 10, +func (p *PurchaseHandler) GetJdsOrders(ctx *jxcontext.Context, orderCreatedStart, orderCreatedEnd string, current, pageSize int) (orderResult *jdshopapi.AllOrdersResult, err error) { + orderResult, err = api.JdShopAPI.AllOrders(&jdshopapi.AllOrdersParam{ + Current: current, + PageSize: pageSize, OrderCreateDateRange: []string{orderCreatedStart, orderCreatedEnd}, }) - orders, err = result2Orders(orderResult) - return orders, err -} - -func result2Orders(result *jdshopapi.AllOrdersResult) (orders []*model.GoodsOrder, err error) { - for _, jdsOrder := range result.OrderList { - if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusWaittingPay { - continue - } - orderDetail, err := api.JdShopAPI.OrderDetail(utils.Int64ToStr(jdsOrder.OrderID)) - if err != nil { - globals.SugarLogger.Debugf("jds OrderDetail error: %v", err.Error()) - continue - } - order := &model.GoodsOrder{ - VendorOrderID: utils.Int64ToStr(jdsOrder.OrderID), - VendorID: model.VendorIDJDShop, - BaseFreightMoney: jxutils.StandardPrice2Int(jdsOrder.Freight), - VendorStatus: utils.Int2Str(jdsOrder.OrderStatus), - VendorUserID: jdsOrder.UserPin, - BuyerComment: jdsOrder.UserRemark, - PickDeadline: utils.DefaultTimeValue, - OriginalData: string(utils.MustMarshal(jdsOrder)), - StoreName: jdsOrder.StoreName, - OrderCreatedAt: utils.Str2Time(jdsOrder.OrderCreateTime + ":00"), - ConsigneeAddress: orderDetail.ConsigneeAddress, - ConsigneeMobile: orderDetail.ConsigneeMobile, - ConsigneeName: orderDetail.ConsigneeName, - ActualPayPrice: orderDetail.ActualPayPrice, - // TotalShopMoney: orderDetail.ActualPayPrice * jdshopapi.JdsPayPercentage, - } - //如果是暂停,表示是预订单 - if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusPause { - order.BusinessType = model.BusinessTypeDingshida - order.ExpectedDeliveredTime = utils.Str2Time(orderDetail.ExpectedDeliveredTime) - } else if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusWaittingExport { - order.ExpectedDeliveredTime = order.CreatedAt.Add(time.Hour) - order.BusinessType = model.BusinessTypeImmediate - } else { - globals.SugarLogger.Errorf("未知的京东商城订单状态!status : %V", jdsOrder.OrderStatus) - } - for _, v := range jdsOrder.OrderItems { - sku := &model.OrderSku{ - VendorID: model.VendorIDJDShop, - VendorOrderID: utils.Int64ToStr(jdsOrder.OrderID), - Count: v.SkuNum, - VendorSkuID: utils.Int64ToStr(v.SkuID), - SkuName: v.SkuName, - VendorPrice: jxutils.StandardPrice2Int(v.JdPrice), - SalePrice: jxutils.StandardPrice2Int(v.JdPrice), - } - _, _, _, specUnit, _, specQuality := jxutils.SplitSkuName(v.SkuName) - sku.Weight = jxutils.FormatSkuWeight(specQuality, specUnit) - order.Skus = append(order.Skus, sku) - } - orders = append(orders, order) - } - return orders, err + return orderResult, err } diff --git a/business/partner/purchase/mtwm/order_comment.go b/business/partner/purchase/mtwm/order_comment.go index 5fbc55e7e..702682933 100644 --- a/business/partner/purchase/mtwm/order_comment.go +++ b/business/partner/purchase/mtwm/order_comment.go @@ -44,7 +44,7 @@ func formalizeTagList(mtwmTagList string) (outTagList string) { } func (c *PurchaseHandler) RefreshComment(fromTime, toTime time.Time) (err error) { - storeMapList, err2 := dao.GetStoresMapList(dao.GetDB(), []int{model.VendorIDMTWM}, nil, nil, model.StoreStatusAll, model.StoreIsSyncYes, "") + storeMapList, err2 := dao.GetStoresMapList(dao.GetDB(), []int{model.VendorIDMTWM}, nil, nil, model.StoreStatusAll, model.StoreIsSyncYes, "", "") if err = err2; err != nil { return err } diff --git a/controllers/cms_store.go b/controllers/cms_store.go index c2b7bc993..82341a689 100644 --- a/controllers/cms_store.go +++ b/controllers/cms_store.go @@ -546,7 +546,7 @@ func (c *StoreController) SyncStoresCourierInfo() { // @router /GetStoreListByLocation [get] func (c *StoreController) GetStoreListByLocation() { c.callGetStoreListByLocation(func(params *tStoreGetStoreListByLocationParams) (retVal interface{}, errCode string, err error) { - retVal, err = cms.GetStoreListByLocation(params.Ctx, params.Lng, params.Lat, params.NeedWalkDistance) + retVal, err = cms.GetStoreListByLocation(params.Ctx, params.Lng, params.Lat, 20000, params.NeedWalkDistance) return retVal, "", err }) } From 7493033132ca7ea7e9bebaf3c4c58c9fa813acd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 2 Jun 2020 17:19:23 +0800 Subject: [PATCH 086/130] =?UTF-8?q?=E5=86=B2=E7=AA=81=E8=A7=A3=E5=86=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/tempop/tempop.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index c657c2f0d..8f0c88389 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -1639,7 +1639,7 @@ func RefreshJXPriceChange(ctx *jxcontext.Context) (hint string, err error) { store := batchItemList[0].(*model.Store) var skuBindInfos []*cms.StoreSkuBindInfo for _, v := range vendorIDs { - storeMaps, _ := dao.GetStoresMapList(db, []int{v}, []int{store.ID}, nil, model.StoreStatusAll, model.StoreIsSyncAll, "") + storeMaps, _ := dao.GetStoresMapList(db, []int{v}, []int{store.ID}, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "") if len(storeMaps) > 0 { storeMap := storeMaps[0] switch v { From 583b82d5f4ab683ef005b7bdbf5538501e8d8917 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 2 Jun 2020 17:24:37 +0800 Subject: [PATCH 087/130] =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E8=AF=A5=E4=BC=91?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 280c1540f..d153d0334 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4502,7 +4502,7 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto if len(storeAudits) > 0 { storeAudits[0].DeletedAt = time.Now() dao.UpdateEntity(db, storeAudits[0], "DeletedAt") - if !globals.IsProductEnv() { + if globals.IsProductEnv() { skuAndNames, err := dao.GetSkus(db, nil, []int{skuBindInfo.NameID}, nil, nil, nil) if len(skuAndNames) > 0 && err == nil { weixinmsg.NotifyStoreOpRequestStatus(true, storeID, skuBindInfo.NameID, jxutils.ComposeSpuName(skuAndNames[0].Prefix, skuAndNames[0].Name, 0), storeAudits[0].OriginUnitPrice, skuBindInfo.UnitPrice, "") @@ -4617,7 +4617,7 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeSkuAudits []*model.StoreSku return retVal, fmt.Errorf("审核标志不正确!") } if err == nil { - if !globals.IsProductEnv() { + if globals.IsProductEnv() { skuAndNames, err := dao.GetSkus(db, nil, []int{storeAudit.NameID}, nil, nil, nil) if len(skuAndNames) > 0 && err == nil { price := 0 From a9e79763e9ab47481afe680c415b1d8a5e9164e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 2 Jun 2020 18:02:27 +0800 Subject: [PATCH 088/130] =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index d153d0334..397552d98 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4481,8 +4481,10 @@ func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs, statuss func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*StoreSkuBindInfo) (isAudit bool, err error) { globals.SugarLogger.Debugf("doStoreSkuAudit storeIDs: %v", storeIDs) db := dao.GetDB() + globals.SugarLogger.Debugf("doStoreSkuAudit skuBindInfos: %v", utils.Format4Output(skuBindInfos, false)) for _, storeID := range storeIDs { for _, skuBindInfo := range skuBindInfos { + globals.SugarLogger.Debugf("doStoreSkuAudit storeID : %v nameID: %v", storeID, skuBindInfo.NameID) storeAudits, err := dao.GetStoreSkuAuditLight(db, []int{storeID}, []int{skuBindInfo.NameID}, model.StoreAuditStatusOnline) //取消关注,可售排除 if skuBindInfo.IsFocus == -1 || skuBindInfo.IsSale != 0 || skuBindInfo.UnitPrice == 0 { @@ -4694,7 +4696,11 @@ func result2Orders(ctx *jxcontext.Context, result *jdshopapi.AllOrdersResult) (o order.VendorStoreID = storeMaps[0].VendorStoreID } } else { - GetStoreListByLocation(ctx, jxutils.IntCoordinate2Standard(order.ConsigneeLng), jxutils.IntCoordinate2Standard(order.ConsigneeLat), 5000, false) + storeList, err := GetStoreListByLocation(ctx, jxutils.IntCoordinate2Standard(order.ConsigneeLng), jxutils.IntCoordinate2Standard(order.ConsigneeLat), 5000, false) + if err != nil { + globals.SugarLogger.Debugf("jds GetStoreListByLocation error: %v", err.Error()) + continue + } } //如果是暂停,表示是预订单 if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusPause { From f94a17fbb7c8ee79af900bdec3c3e11b21acb9c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 2 Jun 2020 18:04:24 +0800 Subject: [PATCH 089/130] ceshi --- business/jxstore/cms/store_sku.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 397552d98..0f1f93f70 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4696,11 +4696,11 @@ func result2Orders(ctx *jxcontext.Context, result *jdshopapi.AllOrdersResult) (o order.VendorStoreID = storeMaps[0].VendorStoreID } } else { - storeList, err := GetStoreListByLocation(ctx, jxutils.IntCoordinate2Standard(order.ConsigneeLng), jxutils.IntCoordinate2Standard(order.ConsigneeLat), 5000, false) - if err != nil { - globals.SugarLogger.Debugf("jds GetStoreListByLocation error: %v", err.Error()) - continue - } + // storeList, err := GetStoreListByLocation(ctx, jxutils.IntCoordinate2Standard(order.ConsigneeLng), jxutils.IntCoordinate2Standard(order.ConsigneeLat), 5000, false) + // if err != nil { + // globals.SugarLogger.Debugf("jds GetStoreListByLocation error: %v", err.Error()) + // continue + // } } //如果是暂停,表示是预订单 if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusPause { From eb9560cfad95f668d0323c49734c9ca57eca8019 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 2 Jun 2020 18:12:03 +0800 Subject: [PATCH 090/130] ceshi --- business/jxstore/cms/store_sku.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 0f1f93f70..95ca33e1c 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4481,10 +4481,8 @@ func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs, statuss func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*StoreSkuBindInfo) (isAudit bool, err error) { globals.SugarLogger.Debugf("doStoreSkuAudit storeIDs: %v", storeIDs) db := dao.GetDB() - globals.SugarLogger.Debugf("doStoreSkuAudit skuBindInfos: %v", utils.Format4Output(skuBindInfos, false)) for _, storeID := range storeIDs { for _, skuBindInfo := range skuBindInfos { - globals.SugarLogger.Debugf("doStoreSkuAudit storeID : %v nameID: %v", storeID, skuBindInfo.NameID) storeAudits, err := dao.GetStoreSkuAuditLight(db, []int{storeID}, []int{skuBindInfo.NameID}, model.StoreAuditStatusOnline) //取消关注,可售排除 if skuBindInfo.IsFocus == -1 || skuBindInfo.IsSale != 0 || skuBindInfo.UnitPrice == 0 { @@ -4543,15 +4541,27 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto storeAudits[0].DeletedAt = time.Now() dao.UpdateEntity(db, storeAudits[0], "DeletedAt") } + globals.SugarLogger.Debugf("doStoreSkuAudit 444: %v", storeIDs) } } else { + globals.SugarLogger.Debugf("doStoreSkuAudit 333: %v", storeIDs) return false, fmt.Errorf("未查询到该门店商品价,storeID: %v, nameID: %V", storeID, skuBindInfo.NameID) } + globals.SugarLogger.Debugf("doStoreSkuAudit 222: %v", storeIDs) storeSkuAudit.Type = model.StoreSkuAuditTypePrice storeSkuAudit.OriginUnitPrice = int(storeSkus[0].UnitPrice) } + dao.Begin(db) + defer func() { + if r := recover(); r != nil { + dao.Rollback(db) + panic(r) + } + }() + globals.SugarLogger.Debugf("doStoreSkuAudit 111: %v", storeIDs) dao.WrapAddIDCULDEntity(storeSkuAudit, ctx.GetUserName()) err = dao.CreateEntity(db, storeSkuAudit) + dao.Commit(db) } } return true, err From 7527abfcf98692902c3c1f7fb5440bb17cd75ad7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 2 Jun 2020 18:27:15 +0800 Subject: [PATCH 091/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E4=B8=8D=E9=80=9A=E8=BF=87=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 4 ---- business/jxutils/weixinmsg/weixinmsg.go | 10 +++++++++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 95ca33e1c..de19bdb21 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4541,13 +4541,10 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto storeAudits[0].DeletedAt = time.Now() dao.UpdateEntity(db, storeAudits[0], "DeletedAt") } - globals.SugarLogger.Debugf("doStoreSkuAudit 444: %v", storeIDs) } } else { - globals.SugarLogger.Debugf("doStoreSkuAudit 333: %v", storeIDs) return false, fmt.Errorf("未查询到该门店商品价,storeID: %v, nameID: %V", storeID, skuBindInfo.NameID) } - globals.SugarLogger.Debugf("doStoreSkuAudit 222: %v", storeIDs) storeSkuAudit.Type = model.StoreSkuAuditTypePrice storeSkuAudit.OriginUnitPrice = int(storeSkus[0].UnitPrice) } @@ -4558,7 +4555,6 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto panic(r) } }() - globals.SugarLogger.Debugf("doStoreSkuAudit 111: %v", storeIDs) dao.WrapAddIDCULDEntity(storeSkuAudit, ctx.GetUserName()) err = dao.CreateEntity(db, storeSkuAudit) dao.Commit(db) diff --git a/business/jxutils/weixinmsg/weixinmsg.go b/business/jxutils/weixinmsg/weixinmsg.go index 81a50cecd..f8ecee65a 100644 --- a/business/jxutils/weixinmsg/weixinmsg.go +++ b/business/jxutils/weixinmsg/weixinmsg.go @@ -58,7 +58,7 @@ const ( WX_NORMAL_STORE_MSG_TEMPLATE_ID = "EUeIJEz2TLUAn4TU2EffOGYLd3dEaYndD_y6Sw9FcSU" WX_CHANGE_APPROVED_TEMPLATE_ID = "gIG2olBZtQbjXmp6doNB_dESu60By5xuXYOGxksLv3Y" - WX_CHANGE_REJECTED_TEMPLATE_ID = "tn2QXWi4HtSIwaztmtN6Bb2uzNL-jBxWltCZTDNJuYE" + WX_CHANGE_REJECTED_TEMPLATE_ID = "OBF4-d5inK95epHcUltpdb1zq9boVp2HESpASVRh1Oo" WX_ORDER_APPLY_CANCEL_TEMPLATE_ID = "e6urTtcm4PL0rgDMG_1qWNOwrE3Qxqcm_dx0kWWCmEI" WX_ORDER_ORDER_CANCELED_TEMPLATE_ID = "HXjuSAbIk77Xh18hjgwoxHzbciR9jX3Rn2CpLJz9dZw" @@ -495,9 +495,17 @@ func NotifyStoreOpRequestStatus(isAccepted bool, storeID, nameID int, spuName st "color": "#2E408E", }, "keyword2": map[string]interface{}{ + "value": "审核不通过", + "color": "#2E408E", + }, + "keyword3": map[string]interface{}{ "value": utils.Time2Str(time.Now()), "color": "#2E408E", }, + "keyword4": map[string]interface{}{ + "value": "审核不通过", + "color": "#2E408E", + }, "remark": map[string]interface{}{ "value": "请您及时到商品管理修改价格,修改后请重新提交。", }, From bbc1ce9247e28effb684df3a90ffb51e1f8d2aab 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, 3 Jun 2020 08:31:59 +0800 Subject: [PATCH 092/130] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E4=BA=AC=E4=B8=9C?= =?UTF-8?q?=E5=95=86=E5=9F=8E=E5=BA=93=E5=AD=98=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sync.go | 42 ++++++++++-------------------------- 1 file changed, 11 insertions(+), 31 deletions(-) diff --git a/business/jxstore/cms/sync.go b/business/jxstore/cms/sync.go index a2bac5eef..5bd661a85 100644 --- a/business/jxstore/cms/sync.go +++ b/business/jxstore/cms/sync.go @@ -1115,14 +1115,12 @@ func (v *VendorSync) SyncJdsStoresSkus(ctx *jxcontext.Context, storeIDs []int, i func syncJdsStoresSkus(ctx *jxcontext.Context, db *dao.DaoDB, parentTask tasksch.ITask, storeMap *model.StoreMap, isAsync, isContinueWhenError bool) (hint string, err error) { var ( - mainSkusMap = make(map[int]*model.StoreSkuBind) - skusMap = make(map[int]*model.StoreSkuBind) - updateList []*model.StoreSkuBind - addList []*model.StoreSkuBind - skuBindInfos1 []*StoreSkuBindInfo - skuBindInfos2 []*StoreSkuBindInfo - resultInterface1 []interface{} - resultInterface2 []interface{} + mainSkusMap = make(map[int]*model.StoreSkuBind) + skusMap = make(map[int]*model.StoreSkuBind) + updateList []*model.StoreSkuBind + addList []*model.StoreSkuBind + skuBindInfos1 []*StoreSkuBindInfo + skuBindInfos2 []*StoreSkuBindInfo ) storeSkusMain, err := dao.GetStoresSkusInfo(db, []int{model.JdShopMainStoreID}, nil) for _, v := range storeSkusMain { @@ -1142,46 +1140,28 @@ func syncJdsStoresSkus(ctx *jxcontext.Context, db *dao.DaoDB, parentTask tasksch } } } - // fmt.Println("updateList", utils.Format4Output(updateList, false)) - // fmt.Println("addList", utils.Format4Output(addList, false)) task := tasksch.NewParallelTask("正在同步京东商城的库存商品", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx, func(ptTask *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { step := batchItemList[0].(int) switch step { case 0: if len(updateList) > 0 { - task := tasksch.NewParallelTask("同步门店库存", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx, - func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - storeBind := batchItemList[0].(*model.StoreSkuBind) - retVal = []*StoreSkuBindInfo{buildStoreSkuBindInfo(db, storeMap.StoreID, storeBind, false)} - return retVal, err - }, updateList) - tasksch.HandleTask(task, ptTask, false).Run() - resultInterface1, err = task.GetResult(0) - for _, v := range resultInterface1 { - skuBindInfos1 = append(skuBindInfos1, v.(*StoreSkuBindInfo)) + for _, v := range updateList { + skuBindInfos1 = append(skuBindInfos1, buildStoreSkuBindInfo(db, storeMap.StoreID, v, false)) } hint, err = UpdateStoresSkusByBind(ctx, ptTask, skuBindInfos1, isAsync, isContinueWhenError, false) } case 1: if len(addList) > 0 { - task := tasksch.NewParallelTask("同步门店商品", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx, - func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - storeBind := batchItemList[0].(*model.StoreSkuBind) - retVal = []*StoreSkuBindInfo{buildStoreSkuBindInfo(db, storeMap.StoreID, storeBind, true)} - return retVal, err - }, addList) - tasksch.HandleTask(task, ptTask, false).Run() - resultInterface2, err = task.GetResult(0) - for _, v := range resultInterface2 { - skuBindInfos2 = append(skuBindInfos2, v.(*StoreSkuBindInfo)) + for _, v := range addList { + skuBindInfos2 = append(skuBindInfos2, buildStoreSkuBindInfo(db, storeMap.StoreID, v, false)) } hint, err = UpdateStoresSkusByBind(ctx, ptTask, skuBindInfos2, isAsync, isContinueWhenError, false) } } return retVal, err }, []int{0, 1}) - tasksch.HandleTask(task, nil, true).Run() + tasksch.HandleTask(task, parentTask, true).Run() if isAsync { hint = task.GetID() } else { From afb55c7042cc4e24ce9db4c7df5eb6287ac50027 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, 3 Jun 2020 08:40:24 +0800 Subject: [PATCH 093/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E5=BA=97=E5=86=85=E5=88=86=E7=B1=BB=E4=BF=AE=E6=94=B9=E5=95=86?= =?UTF-8?q?=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/jdshop/store_sku.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/business/partner/purchase/jdshop/store_sku.go b/business/partner/purchase/jdshop/store_sku.go index 1cf05436b..da9124b68 100644 --- a/business/partner/purchase/jdshop/store_sku.go +++ b/business/partner/purchase/jdshop/store_sku.go @@ -117,10 +117,11 @@ func (p *PurchaseHandler) UpdateStoreSkus(ctx *jxcontext.Context, storeID int, v for _, v := range storeSkuList { name := filterSensitiveWord(v.Name) updateWareParam := &jdshopapi.UpdateWareParam{ - WareID: v.JdsWareID, - Title: name, - VenderID: jdshopapi.VenderID, - PromiseID: jdshopapi.JdsPromiseID, + WareID: v.JdsWareID, + Title: name, + VenderID: jdshopapi.VenderID, + PromiseID: jdshopapi.JdsPromiseID, + ShopCategorys: []int{utils.Str2Int(v.VendorCatID)}, } var desc string if v.DescImg != "" { From b7997f1032eb8d3a044a13cc772d2a6ce82b04bf 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, 3 Jun 2020 08:47:13 +0800 Subject: [PATCH 094/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 4 ++-- business/model/dao/store_sku.go | 11 ++++++++--- controllers/cms_store_sku.go | 3 ++- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index de19bdb21..5633091d7 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4458,7 +4458,7 @@ func RefreshJdsSkusStatus(ctx *jxcontext.Context) (err error) { return err } -func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs, statuss, types []int, name, remark, keyword, marketManPhone, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd string, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { +func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs, statuss, types []int, name, remark, keyword, cityName, marketManPhone, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd string, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { var ( applyTimeStartp, applyTimeEndp, auditTimeStartp, auditTimeEndp time.Time ) @@ -4474,7 +4474,7 @@ func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs, statuss if auditTimeEnd != "" { auditTimeEndp = utils.Str2Time(auditTimeEnd) } - pagedInfo, err = dao.GetStoreSkuAudit(dao.GetDB(), storeIDs, nameIDs, skuIDs, statuss, types, name, remark, keyword, marketManPhone, applyTimeStartp, applyTimeEndp, auditTimeStartp, auditTimeEndp, pageSize, offset) + pagedInfo, err = dao.GetStoreSkuAudit(dao.GetDB(), storeIDs, nameIDs, skuIDs, statuss, types, name, remark, keyword, marketManPhone, cityName, applyTimeStartp, applyTimeEndp, auditTimeStartp, auditTimeEndp, pageSize, offset) return pagedInfo, err } diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 4598ffcb7..f8b741397 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1548,7 +1548,7 @@ type tStoreSkuAudit struct { MidUnitPrice int `json:"midUnitPrice"` } -func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss, types []int, name, remark, keyword, marketManPhone string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { +func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss, types []int, name, remark, keyword, marketManPhone, cityName string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { var requestList []*tStoreSkuAudit sql := ` SELECT SQL_CALC_FOUND_ROWS DISTINCT a.*, c.name sku_name, c.prefix, c.unit, c.spec_quality, c.spec_unit, c.img, d.name store_name, b.name, e.mid_unit_price @@ -1556,6 +1556,7 @@ func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss, types []int LEFT JOIN user b ON a.user_id = b.user_id LEFT JOIN sku_name c ON c.id = a.name_id AND c.deleted_at = ? LEFT JOIN store d ON d.id = a.store_id AND d.deleted_at = ? + LEFT JOIN place e ON e.code = d.city_code LEFT JOIN price_refer_snapshot e ON e.name_id = c.id AND e.city_code = ? AND e.snapshot_at = ? WHERE a.deleted_at = ? ` @@ -1596,13 +1597,17 @@ func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss, types []int sqlParams = append(sqlParams, types) } if keyword != "" { - sql += " AND (b.name LIKE ? OR a.remark LIKE ? OR a.name_id LIKE ? OR a.user_id LIKE ? OR a.store_id LIKE ?)" - sqlParams = append(sqlParams, "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%") + sql += " AND (b.name LIKE ? OR a.remark LIKE ? OR a.name_id LIKE ? OR a.user_id LIKE ? OR a.store_id LIKE ? OR e.name LIKE ?)" + sqlParams = append(sqlParams, "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%") } if marketManPhone != "" { sql += " AND d.market_man_phone LIKE ? " sqlParams = append(sqlParams, "%"+marketManPhone+"%") } + if cityName != "" { + sql += " AND e.name LIKE ? " + sqlParams = append(sqlParams, "%"+cityName+"%") + } sql += " ORDER BY a.updated_at DESC LIMIT ? OFFSET ?" pageSize = jxutils.FormalizePageSize(pageSize) sqlParams = append(sqlParams, pageSize, offset) diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index 3794fefd0..a25d83f72 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -829,6 +829,7 @@ func (c *StoreSkuController) SyncMatterC4ToGy() { // @Param types query string false "改价类型,1是普通改价,2是关注" // @Param keyword query string false "关键字" // @Param marketManPhone query string false "市场负责人电话" +// @Param cityName query string false "城市名" // @Param offset query int false "门店列表起始序号(以0开始,缺省为0)" // @Param pageSize query int false "门店列表页大小(缺省为50,-1表示全部)" // @Success 200 {object} controllers.CallResult @@ -842,7 +843,7 @@ func (c *StoreSkuController) GetStoreSkuAudit() { if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs, params.NameIDs, &nameIDs, params.Statuss, &statuss, params.Types, &types); err != nil { return retVal, "", err } - retVal, err = cms.GetStoreSkuAudit(params.Ctx, storeIDs, nameIDs, nil, statuss, types, params.Name, params.Remark, params.Keyword, params.MarketManPhone, params.ApplyTimeStart, params.ApplyTimeEnd, params.AuditTimeStart, params.AuditTimeEnd, params.PageSize, params.Offset) + retVal, err = cms.GetStoreSkuAudit(params.Ctx, storeIDs, nameIDs, nil, statuss, types, params.Name, params.Remark, params.Keyword, params.MarketManPhone, params.CityName, params.ApplyTimeStart, params.ApplyTimeEnd, params.AuditTimeStart, params.AuditTimeEnd, params.PageSize, params.Offset) return retVal, "", err }) } From 9f85fa60470273ff5eccd5bd5a0576d78e691ee0 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, 3 Jun 2020 08:51:38 +0800 Subject: [PATCH 095/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/store_sku.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index f8b741397..e530cd0b0 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1556,7 +1556,7 @@ func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss, types []int LEFT JOIN user b ON a.user_id = b.user_id LEFT JOIN sku_name c ON c.id = a.name_id AND c.deleted_at = ? LEFT JOIN store d ON d.id = a.store_id AND d.deleted_at = ? - LEFT JOIN place e ON e.code = d.city_code + LEFT JOIN place f ON f.code = d.city_code LEFT JOIN price_refer_snapshot e ON e.name_id = c.id AND e.city_code = ? AND e.snapshot_at = ? WHERE a.deleted_at = ? ` @@ -1597,7 +1597,7 @@ func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss, types []int sqlParams = append(sqlParams, types) } if keyword != "" { - sql += " AND (b.name LIKE ? OR a.remark LIKE ? OR a.name_id LIKE ? OR a.user_id LIKE ? OR a.store_id LIKE ? OR e.name LIKE ?)" + sql += " AND (b.name LIKE ? OR a.remark LIKE ? OR a.name_id LIKE ? OR a.user_id LIKE ? OR a.store_id LIKE ? OR f.name LIKE ?)" sqlParams = append(sqlParams, "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%", "%"+keyword+"%") } if marketManPhone != "" { @@ -1605,7 +1605,7 @@ func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss, types []int sqlParams = append(sqlParams, "%"+marketManPhone+"%") } if cityName != "" { - sql += " AND e.name LIKE ? " + sql += " AND f.name LIKE ? " sqlParams = append(sqlParams, "%"+cityName+"%") } sql += " ORDER BY a.updated_at DESC LIMIT ? OFFSET ?" From 0b8bf27633e4dda1ff9effeee6f5e6ab7651e919 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, 3 Jun 2020 08:54:36 +0800 Subject: [PATCH 096/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/store_sku.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index e530cd0b0..54efe8f46 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1546,12 +1546,13 @@ type tStoreSkuAudit struct { Img string `orm:"size(512)" json:"img"` Name string `json:"name"` MidUnitPrice int `json:"midUnitPrice"` + CityName string `json:"cityName"` } func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss, types []int, name, remark, keyword, marketManPhone, cityName string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { var requestList []*tStoreSkuAudit sql := ` - SELECT SQL_CALC_FOUND_ROWS DISTINCT a.*, c.name sku_name, c.prefix, c.unit, c.spec_quality, c.spec_unit, c.img, d.name store_name, b.name, e.mid_unit_price + SELECT SQL_CALC_FOUND_ROWS DISTINCT a.*, c.name sku_name, c.prefix, c.unit, c.spec_quality, c.spec_unit, c.img, d.name store_name, b.name, e.mid_unit_price, f.name city_name FROM store_sku_audit a LEFT JOIN user b ON a.user_id = b.user_id LEFT JOIN sku_name c ON c.id = a.name_id AND c.deleted_at = ? From d7679ef6ee4df10b50fd285e250f879cd6cbd672 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, 3 Jun 2020 09:33:00 +0800 Subject: [PATCH 097/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=A2=9E=E5=8A=A0=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/store_sku.go | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 54efe8f46..7e0d85fbf 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1537,22 +1537,25 @@ func UpdateJdsWareID(db *DaoDB, storeSkuSyncInfo *StoreSkuSyncInfo) (err error) type tStoreSkuAudit struct { model.StoreSkuAudit - SkuName string `orm:"size(255)" json:"skuName"` - StoreName string `json:"storeName"` - Prefix string `orm:"size(255)" json:"prefix"` - Unit string `orm:"size(8)" json:"unit"` - SpecQuality float32 `json:"-"` // 为份必然为500,这个主要作用只是用于确保SkuName的唯一性 - SpecUnit string `orm:"size(8)" json:"-"` // 为份必然为克,这个主要作用只是用于确保SkuName的唯一性 - Img string `orm:"size(512)" json:"img"` - Name string `json:"name"` - MidUnitPrice int `json:"midUnitPrice"` - CityName string `json:"cityName"` + SkuName string `orm:"size(255)" json:"skuName"` + StoreName string `json:"storeName"` + Prefix string `orm:"size(255)" json:"prefix"` + Unit string `orm:"size(8)" json:"unit"` + SpecQuality float32 `json:"-"` // 为份必然为500,这个主要作用只是用于确保SkuName的唯一性 + SpecUnit string `orm:"size(8)" json:"-"` // 为份必然为克,这个主要作用只是用于确保SkuName的唯一性 + Img string `orm:"size(512)" json:"img"` + Name string `json:"name"` + MidUnitPrice int `json:"midUnitPrice"` + CityName string `json:"cityName"` + PayPercentage int `json:"payPercentage"` } func GetStoreSkuAudit(db *DaoDB, storeIDs, nameIDs, skuIDs, statuss, types []int, name, remark, keyword, marketManPhone, cityName string, applyTimeStart, applyTimeEnd, auditTimeStart, auditTimeEnd time.Time, pageSize, offset int) (pagedInfo *model.PagedInfo, err error) { var requestList []*tStoreSkuAudit sql := ` - SELECT SQL_CALC_FOUND_ROWS DISTINCT a.*, c.name sku_name, c.prefix, c.unit, c.spec_quality, c.spec_unit, c.img, d.name store_name, b.name, e.mid_unit_price, f.name city_name + SELECT SQL_CALC_FOUND_ROWS DISTINCT a.*, + c.name sku_name, c.prefix, c.unit, c.spec_quality, c.spec_unit, c.img, + d.name store_name, b.name, e.mid_unit_price, f.name city_name, d.pay_percentage FROM store_sku_audit a LEFT JOIN user b ON a.user_id = b.user_id LEFT JOIN sku_name c ON c.id = a.name_id AND c.deleted_at = ? From 1eb43ea9b96699c2f58da64ba758066fba5e98d4 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, 3 Jun 2020 09:54:37 +0800 Subject: [PATCH 098/130] =?UTF-8?q?=E5=88=B7=E6=96=B0=E9=97=A8=E5=BA=97?= =?UTF-8?q?=E4=BB=B7=E6=A0=BC=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 12 +++++++----- business/jxstore/tempop/tempop.go | 11 ++++++++--- controllers/temp_op.go | 3 ++- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 5633091d7..63994b51d 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4702,11 +4702,13 @@ func result2Orders(ctx *jxcontext.Context, result *jdshopapi.AllOrdersResult) (o order.VendorStoreID = storeMaps[0].VendorStoreID } } else { - // storeList, err := GetStoreListByLocation(ctx, jxutils.IntCoordinate2Standard(order.ConsigneeLng), jxutils.IntCoordinate2Standard(order.ConsigneeLat), 5000, false) - // if err != nil { - // globals.SugarLogger.Debugf("jds GetStoreListByLocation error: %v", err.Error()) - // continue - // } + storeList, err := GetStoreListByLocation(ctx, jxutils.IntCoordinate2Standard(order.ConsigneeLng), jxutils.IntCoordinate2Standard(order.ConsigneeLat), 5000, false) + if err != nil { + globals.SugarLogger.Debugf("jds GetStoreListByLocation error: %v", err.Error()) + continue + } + order.StoreID = storeList[0].ID + order.StoreName = storeList[0].Name } //如果是暂停,表示是预订单 if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusPause { diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index 8f0c88389..76473e3bb 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -1618,7 +1618,7 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) { return err } -func RefreshJXPriceChange(ctx *jxcontext.Context) (hint string, err error) { +func RefreshJXPriceChange(ctx *jxcontext.Context, storeID int) (hint string, err error) { db := dao.GetDB() var ( stores []*model.Store @@ -1630,9 +1630,12 @@ func RefreshJXPriceChange(ctx *jxcontext.Context) (hint string, err error) { SELECT * FROM store WHERE deleted_at = ? AND status <> ? - AND id in (?,?,?) ` - sqlParams := []interface{}{utils.DefaultTimeValue, model.StoreStatusDisabled, 100118, 100205, 100274} + sqlParams := []interface{}{utils.DefaultTimeValue, model.StoreStatusDisabled} + if storeID != 0 { + sql += " AND id = ?" + sqlParams = append(sqlParams, storeID) + } err = dao.GetRows(db, &stores, sql, sqlParams) task := tasksch.NewParallelTask("刷新门店价格", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError), ctx, func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { @@ -1672,6 +1675,8 @@ func RefreshJXPriceChange(ctx *jxcontext.Context) (hint string, err error) { skuBindInfos = append(skuBindInfos, skuBindInfo) } cms.UpdateStoresSkusByBind(ctx, task, skuBindInfos, isAsync, isContinueWhenError, false) + store.PayPercentage = 100 + dao.UpdateEntity(db, store, "PayPercentage") return retVal, err }, stores) tasksch.HandleTask(task, nil, true).Run() diff --git a/controllers/temp_op.go b/controllers/temp_op.go index 90b7f1791..21dc1f573 100644 --- a/controllers/temp_op.go +++ b/controllers/temp_op.go @@ -385,12 +385,13 @@ func (c *TempOpController) UploadJdsImage() { // @Title 京西刷新调价包和门店价格 // @Description 京西刷新调价包和门店价格 // @Param token header string true "认证token" +// @Param storeID formData int false "门店ID" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /RefreshJXPriceChange [post] func (c *TempOpController) RefreshJXPriceChange() { c.callRefreshJXPriceChange(func(params *tTempopRefreshJXPriceChangeParams) (retVal interface{}, errCode string, err error) { - retVal, err = tempop.RefreshJXPriceChange(params.Ctx) + retVal, err = tempop.RefreshJXPriceChange(params.Ctx, params.StoreID) return retVal, "", err }) } From 66ec7fc874949b81767070ffb956c7130691467c 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, 3 Jun 2020 11:16:49 +0800 Subject: [PATCH 099/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E8=A1=A5=E5=85=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order.go | 100 ++++++++++++ .../scheduler/basesch/basesch_ext.go | 15 +- .../jxcallback/scheduler/defsch/defsch.go | 4 + business/jxstore/cms/store.go | 140 ---------------- business/jxstore/cms/store_sku.go | 105 +----------- business/jxstore/common/common.go | 153 ++++++++++++++++++ business/partner/purchase/jdshop/order.go | 35 +++- controllers/cms_store.go | 3 +- 8 files changed, 309 insertions(+), 246 deletions(-) create mode 100644 business/jxstore/common/common.go diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 93a9c6705..1b5835f9d 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -7,9 +7,13 @@ import ( "strings" "time" + "git.rosy.net.cn/jx-callback/business/jxstore/common" "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" + "git.rosy.net.cn/jx-callback/business/partner/purchase/jdshop" + "git.rosy.net.cn/jx-callback/globals/api" "git.rosy.net.cn/baseapi" + "git.rosy.net.cn/baseapi/platformapi/jdshopapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxcallback/scheduler" "git.rosy.net.cn/jx-callback/business/jxutils" @@ -995,3 +999,99 @@ func GetOrderSimpleInfo(ctx *jxcontext.Context, vendorOrderID string) (getOrderS return getOrderSimpleInfoResult, err } + +func SaveJdsOrders(ctx *jxcontext.Context, orderCreatedStart, orderCreatedEnd time.Time) (err error) { + var ( + pageNo = 1 + pageSize = 10 + ) + orderResult, err := jdshop.CurPurchaseHandler.GetJdsOrders(ctx, utils.Time2Str(orderCreatedStart), utils.Time2Str(orderCreatedEnd), pageNo, pageSize) + orders, err := result2Orders(ctx, orderResult) + if err != nil { + globals.SugarLogger.Errorf("SaveJdsOrders : %v", err) + } + for _, order := range orders { + partner.CurOrderManager.OnOrderNew(order, model.Order2Status(order)) + } + return err +} + +func result2Orders(ctx *jxcontext.Context, result *jdshopapi.AllOrdersResult) (orders []*model.GoodsOrder, err error) { + for _, jdsOrder := range result.OrderList { + if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusWaittingPay { + continue + } + orderDetail, err := api.JdShopAPI.OrderDetail(utils.Int64ToStr(jdsOrder.OrderID)) + if err != nil { + globals.SugarLogger.Debugf("jds OrderDetail error: %v", err.Error()) + continue + } + order := &model.GoodsOrder{ + VendorOrderID: utils.Int64ToStr(jdsOrder.OrderID), + VendorID: model.VendorIDJDShop, + BaseFreightMoney: jxutils.StandardPrice2Int(jdsOrder.Freight), + VendorStatus: utils.Int2Str(jdsOrder.OrderStatus), + VendorUserID: jdsOrder.UserPin, + BuyerComment: jdsOrder.UserRemark, + PickDeadline: utils.DefaultTimeValue, + OriginalData: string(utils.MustMarshal(jdsOrder)), + StoreName: jdsOrder.StoreName, + OrderCreatedAt: utils.Str2Time(jdsOrder.OrderCreateTime + ":00"), + ConsigneeAddress: orderDetail.ConsigneeAddress, + ConsigneeMobile: orderDetail.ConsigneeMobile, + ConsigneeName: orderDetail.ConsigneeName, + ActualPayPrice: orderDetail.ActualPayPrice, + Status: model.OrderStatusNew, + TotalShopMoney: utils.Float64TwoInt64(math.Round(utils.Int64ToFloat64(orderDetail.ActualPayPrice) * jdshopapi.JdsPayPercentage)), + } + if order.TotalShopMoney < 100 { + order.TotalShopMoney = 100 + } + if order.ConsigneeAddress != "" { + lng, lat, _ := api.AutonaviAPI.GetCoordinateFromAddress(order.ConsigneeAddress, "") + order.ConsigneeLng = jxutils.StandardCoordinate2Int(lng) + order.ConsigneeLat = jxutils.StandardCoordinate2Int(lat) + } + if order.StoreName != "" { + storeMaps, _ := dao.GetStoresMapList(dao.GetDB(), []int{model.VendorIDJDShop}, nil, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", order.StoreName) + if len(storeMaps) > 0 { + order.StoreID = storeMaps[0].StoreID + order.VendorStoreID = storeMaps[0].VendorStoreID + } + } else { + storeList, err := common.GetStoreListByLocation(ctx, jxutils.IntCoordinate2Standard(order.ConsigneeLng), jxutils.IntCoordinate2Standard(order.ConsigneeLat), 5000, false) + if err != nil { + globals.SugarLogger.Debugf("jds GetStoreListByLocation error: %v", err.Error()) + continue + } + order.StoreID = storeList[0].ID + order.StoreName = storeList[0].Name + } + //如果是暂停,表示是预订单 + if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusPause { + order.BusinessType = model.BusinessTypeDingshida + order.ExpectedDeliveredTime = utils.Str2Time(orderDetail.ExpectedDeliveredTime) + } else if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusWaittingExport { + order.ExpectedDeliveredTime = order.CreatedAt.Add(time.Hour) + order.BusinessType = model.BusinessTypeImmediate + } else { + globals.SugarLogger.Errorf("未知的京东商城订单状态!status : %v", jdsOrder.OrderStatus) + } + for _, v := range jdsOrder.OrderItems { + sku := &model.OrderSku{ + VendorID: model.VendorIDJDShop, + VendorOrderID: utils.Int64ToStr(jdsOrder.OrderID), + Count: v.SkuNum, + VendorSkuID: utils.Int64ToStr(v.SkuID), + SkuName: v.SkuName, + VendorPrice: jxutils.StandardPrice2Int(v.JdPrice), + SalePrice: jxutils.StandardPrice2Int(v.JdPrice), + } + _, _, _, specUnit, _, specQuality := jxutils.SplitSkuName(v.SkuName) + sku.Weight = jxutils.FormatSkuWeight(specQuality, specUnit) + order.Skus = append(order.Skus, sku) + } + orders = append(orders, order) + } + return orders, err +} diff --git a/business/jxcallback/scheduler/basesch/basesch_ext.go b/business/jxcallback/scheduler/basesch/basesch_ext.go index a0b537749..197bc2ebe 100644 --- a/business/jxcallback/scheduler/basesch/basesch_ext.go +++ b/business/jxcallback/scheduler/basesch/basesch_ext.go @@ -5,6 +5,8 @@ import ( "strings" "time" + "git.rosy.net.cn/jx-callback/business/partner/purchase/jdshop" + "git.rosy.net.cn/baseapi/platformapi/dingdingapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils/errlist" @@ -41,13 +43,12 @@ func (c *BaseScheduler) CreateWaybillOnProviders(ctx *jxcontext.Context, order * courierVendorID := storeCourier.VendorID bill, err2 := c.CreateWaybill(courierVendorID, order, maxDeliveryFee) if err = err2; err == nil { - // stores, _ := dao.GetStoreList(dao.GetDB(), []int{order.StoreID}, nil, nil, nil, "") - // if len(stores) > 0 { - // if stores[0].PayPercentage <= 50 { - // order.NewEarningPrice = (order.TotalShopMoney - bill.DesiredFee) * int64((100 - stores[0].PayPercentage/2)) / 100 - // dao.UpdateEntity(dao.GetDB(), order, "NewEarningPrice") - // } - // } + if order.VendorID == model.VendorIDJDShop { + err = jdshop.CurPurchaseHandler.OrderExport(ctx, bill.VendorOrderID, bill.VendorWaybillID) + if err != nil { + errList.AddErr(fmt.Errorf("平台:%s,%s", jxutils.GetVendorName(courierVendorID), err.Error())) + } + } globals.SugarLogger.Debugf("CreateWaybillOnProviders orderID:%s userName:%s vendorID:%d bill:%v", order.VendorOrderID, userName, courierVendorID, bill) bills = append(bills, bill) if createOnlyOne { diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index dbe6d9e5a..1ccf37224 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -721,6 +721,10 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf // if order.VendorID == model.VendorIDJX { // excludeVendorIDs = append(excludeVendorIDs, model.VendorIDMTPS) // } + //京东商城订单目前不发美团配送 + if order.VendorID == model.VendorIDJDShop { + excludeVendorIDs = append(excludeVendorIDs, model.VendorIDMTPS) + } if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, excludeVendorIDs, false, maxDeliveryFee); err == nil { savedOrderInfo.retryCount++ } diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 2e55777d0..714fe5943 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -78,55 +78,6 @@ type StoreExt struct { OrderCount int `json:"orderCount"` } -type Store4User struct { - model.ModelIDCULD - - OriginalName string `orm:"-" json:"originalName"` - Name string `orm:"size(255)" json:"name"` - OpenTime1 int16 `json:"openTime1"` // 930就表示9点半,用两个的原因是为了支持中午休息,1与2的时间段不能交叉,为0表示没有 - CloseTime1 int16 `json:"closeTime1"` // 格式同上 - OpenTime2 int16 `json:"openTime2"` // 格式同上 - CloseTime2 int16 `json:"closeTime2"` // 格式同上 - Status int `json:"status"` - CityCode int `orm:"default(0);null" json:"cityCode"` // todo ? - DistrictCode int `orm:"default(0);null" json:"districtCode"` // todo ? - Address string `orm:"size(255)" json:"address"` - Tel1 string `orm:"size(32);index" json:"tel1"` - Tel2 string `orm:"size(32);index" json:"tel2"` - Lng int `json:"-"` // 乘了10的6次方 - Lat int `json:"-"` // 乘了10的6次方 - DeliveryRangeType int8 `json:"-"` // 参见相关常量定义 - DeliveryRange string `orm:"type(text)" json:"-"` // 如果DeliveryRangeType为DeliveryRangeTypePolygon,则为逗号分隔坐标,分号分隔的坐标点(坐标与Lng和Lat一样,都是整数),比如 121361504,31189308;121420555,31150238。否则为半径,单位为米 - - FloatLng float64 `json:"lng"` - FloatLat float64 `json:"lat"` - CityName string `json:"cityName"` - DistrictName string `json:"districtName"` - - Distance int `json:"distance"` - WalkDistance int `json:"walkDistance"` -} - -type Store4UserList []*Store4User - -func (x Store4UserList) Len() int { - return len(x) -} - -func (x Store4UserList) Less(i, j int) bool { - if x[i].Status != x[j].Status { - return x[i].Status > x[j].Status - } - if x[i].WalkDistance != x[j].WalkDistance { - return x[i].WalkDistance < x[j].WalkDistance - } - return x[i].Distance < x[j].Distance -} - -func (x Store4UserList) Swap(i, j int) { - x[i], x[j] = x[j], x[i] -} - type StoresInfo struct { TotalCount int `json:"totalCount"` MapCenterLng float64 `json:"mapCenterLng"` @@ -2482,97 +2433,6 @@ func SyncStoresQualify(ctx *jxcontext.Context, storeIDs []int, isAsync, isContin return hint, err } -func GetStoreListByLocation(ctx *jxcontext.Context, lng, lat float64, maxRadius int, needWalkDistance bool) (storeList []*Store4User, err error) { - const ( - maxStoreCount4User = 5 - ) - - lng2, _ := jxutils.ConvertDistanceToLogLat(lng, lat, float64(maxRadius), 90) - _, lat2 := jxutils.ConvertDistanceToLogLat(lng, lat, float64(maxRadius), 0) - lng1 := lng - (lng2 - lng) - lat1 := lat - (lat2 - lat) - // globals.SugarLogger.Debugf("%f,%f,%f,%f\n", lng1, lng2, lat1, lat2) - sql := ` - SELECT t1.*, - city.name city_name - FROM store t1 - JOIN place city ON city.code = t1.city_code - JOIN store_map sm ON sm.store_id = t1.id AND sm.vendor_id = ? AND sm.deleted_at = ? AND sm.status <> ? - WHERE t1.deleted_at = ? AND t1.status <> ? AND t1.lng > ? AND t1.lng < ? AND t1.lat > ? AND t1.lat < ? - AND sm.is_order <> ? - AND t1.id <> ? - ORDER BY t1.id - ` - sqlParams := []interface{}{ - model.VendorIDJX, utils.DefaultTimeValue, model.StoreStatusDisabled, - utils.DefaultTimeValue, model.StoreStatusDisabled, jxutils.StandardCoordinate2Int(lng1), jxutils.StandardCoordinate2Int(lng2), jxutils.StandardCoordinate2Int(lat1), jxutils.StandardCoordinate2Int(lat2), - model.YES, - model.MatterStoreID, - } - var storeList1 []*Store4User - if err = dao.GetRows(dao.GetDB(), &storeList1, sql, sqlParams...); err == nil { - var storeList2 []*Store4User - for _, v := range storeList1 { - distance := jxutils.Point2StoreDistance(lng, lat, v.Lng, v.Lat, v.DeliveryRangeType, v.DeliveryRange) - if distance > 0 || (lng == jxutils.IntCoordinate2Standard(v.Lng) && lat == jxutils.IntCoordinate2Standard(v.Lat)) { - v.Distance = distance - storeList2 = append(storeList2, v) - } - } - - // 为了审核用 - if len(storeList2) == 0 { - sql2 := ` - SELECT t1.*, - city.name city_name - FROM store t1 - JOIN place city ON city.code = t1.city_code - WHERE t1.deleted_at = ? AND t1.status <> ? AND t1.id = ? - ` - sqlParams2 := []interface{}{ - // model.VendorIDJX, utils.DefaultTimeValue, model.StoreStatusDisabled, - utils.DefaultTimeValue, - model.StoreStatusDisabled, - // jxutils.StandardCoordinate2Int(0), - // jxutils.StandardCoordinate2Int(10000), - // jxutils.StandardCoordinate2Int(0), - // jxutils.StandardCoordinate2Int(10000), - // model.YES, - 102919, //商城模板店 - } - dao.GetRows(dao.GetDB(), &storeList2, sql2, sqlParams2...) - // if len(storeList2) > 1 { - // storeList2 = storeList2[:1] - // } - } - - // 如果要求以步行距离来算 - if needWalkDistance { - var coordList []*autonavi.Coordinate - for _, v := range storeList2 { - coordList = append(coordList, &autonavi.Coordinate{ - Lng: v.FloatLng, - Lat: v.FloatLat, - }) - } - if distanceList, err2 := api.AutonaviAPI.BatchWalkingDistance(lng, lat, coordList); err2 == nil { - for k, v := range storeList2 { - v.WalkDistance = int(distanceList[k]) - } - } else { - return nil, err2 - } - } - - sort.Sort(Store4UserList(storeList2)) - storeList = storeList2 - if len(storeList) > maxStoreCount4User { - storeList = storeList[:maxStoreCount4User] - } - } - return storeList, err -} - func JdStoreInfoCoordinateRecover(ctx *jxcontext.Context, vendorOrgCode string, files []*multipart.FileHeader) (err error) { if len(files) == 0 { return errors.New("没有文件上传!") diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 63994b51d..ac52be065 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -27,7 +27,6 @@ import ( "git.rosy.net.cn/jx-callback/business/jxutils/excel" "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" "git.rosy.net.cn/jx-callback/business/partner/purchase/jd" - "git.rosy.net.cn/jx-callback/business/partner/purchase/jdshop" "git.rosy.net.cn/jx-callback/globals/api/apimanager" "git.rosy.net.cn/jx-callback/business/partner" @@ -4498,6 +4497,13 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto // globals.SugarLogger.Debugf("doStoreSkuAudit return2 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) // return false, err // } + dao.Begin(db) + defer func() { + if r := recover(); r != nil { + dao.Rollback(db) + panic(r) + } + }() if ctx.GetLoginType() != weixin.AuthTypeMP && ctx.GetLoginType() != weixin.AuthTypeMini { if len(storeAudits) > 0 { storeAudits[0].DeletedAt = time.Now() @@ -4541,6 +4547,7 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto storeAudits[0].DeletedAt = time.Now() dao.UpdateEntity(db, storeAudits[0], "DeletedAt") } + globals.SugarLogger.Debugf("doStoreSkuAudit cover storeID : %v nameID: %v", storeID, skuBindInfo.NameID) } } else { return false, fmt.Errorf("未查询到该门店商品价,storeID: %v, nameID: %V", storeID, skuBindInfo.NameID) @@ -4548,13 +4555,6 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto storeSkuAudit.Type = model.StoreSkuAuditTypePrice storeSkuAudit.OriginUnitPrice = int(storeSkus[0].UnitPrice) } - dao.Begin(db) - defer func() { - if r := recover(); r != nil { - dao.Rollback(db) - panic(r) - } - }() dao.WrapAddIDCULDEntity(storeSkuAudit, ctx.GetUserName()) err = dao.CreateEntity(db, storeSkuAudit) dao.Commit(db) @@ -4649,92 +4649,3 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeSkuAudits []*model.StoreSku } return hint, err } - -func SaveJdsOrders(ctx *jxcontext.Context, orderCreatedStart, orderCreatedEnd time.Time) (err error) { - var ( - pageNo = 1 - pageSize = 10 - ) - orderResult, err := jdshop.CurPurchaseHandler.GetJdsOrders(ctx, utils.Time2Str(orderCreatedStart), utils.Time2Str(orderCreatedEnd), pageNo, pageSize) - result2Orders(ctx, orderResult) - return err -} - -func result2Orders(ctx *jxcontext.Context, result *jdshopapi.AllOrdersResult) (orders []*model.GoodsOrder, err error) { - for _, jdsOrder := range result.OrderList { - if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusWaittingPay { - continue - } - orderDetail, err := api.JdShopAPI.OrderDetail(utils.Int64ToStr(jdsOrder.OrderID)) - if err != nil { - globals.SugarLogger.Debugf("jds OrderDetail error: %v", err.Error()) - continue - } - order := &model.GoodsOrder{ - VendorOrderID: utils.Int64ToStr(jdsOrder.OrderID), - VendorID: model.VendorIDJDShop, - BaseFreightMoney: jxutils.StandardPrice2Int(jdsOrder.Freight), - VendorStatus: utils.Int2Str(jdsOrder.OrderStatus), - VendorUserID: jdsOrder.UserPin, - BuyerComment: jdsOrder.UserRemark, - PickDeadline: utils.DefaultTimeValue, - OriginalData: string(utils.MustMarshal(jdsOrder)), - StoreName: jdsOrder.StoreName, - OrderCreatedAt: utils.Str2Time(jdsOrder.OrderCreateTime + ":00"), - ConsigneeAddress: orderDetail.ConsigneeAddress, - ConsigneeMobile: orderDetail.ConsigneeMobile, - ConsigneeName: orderDetail.ConsigneeName, - ActualPayPrice: orderDetail.ActualPayPrice, - TotalShopMoney: utils.Float64TwoInt64(math.Round(utils.Int64ToFloat64(orderDetail.ActualPayPrice) * jdshopapi.JdsPayPercentage)), - } - if order.TotalShopMoney < 100 { - order.TotalShopMoney = 100 - } - if order.ConsigneeAddress != "" { - lng, lat, _ := api.AutonaviAPI.GetCoordinateFromAddress(order.ConsigneeAddress, "") - order.ConsigneeLng = jxutils.StandardCoordinate2Int(lng) - order.ConsigneeLat = jxutils.StandardCoordinate2Int(lat) - } - if order.StoreName != "" { - storeMaps, _ := dao.GetStoresMapList(dao.GetDB(), []int{model.VendorIDJDShop}, nil, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", order.StoreName) - if len(storeMaps) > 0 { - order.StoreID = storeMaps[0].StoreID - order.VendorStoreID = storeMaps[0].VendorStoreID - } - } else { - storeList, err := GetStoreListByLocation(ctx, jxutils.IntCoordinate2Standard(order.ConsigneeLng), jxutils.IntCoordinate2Standard(order.ConsigneeLat), 5000, false) - if err != nil { - globals.SugarLogger.Debugf("jds GetStoreListByLocation error: %v", err.Error()) - continue - } - order.StoreID = storeList[0].ID - order.StoreName = storeList[0].Name - } - //如果是暂停,表示是预订单 - if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusPause { - order.BusinessType = model.BusinessTypeDingshida - order.ExpectedDeliveredTime = utils.Str2Time(orderDetail.ExpectedDeliveredTime) - } else if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusWaittingExport { - order.ExpectedDeliveredTime = order.CreatedAt.Add(time.Hour) - order.BusinessType = model.BusinessTypeImmediate - } else { - globals.SugarLogger.Errorf("未知的京东商城订单状态!status : %V", jdsOrder.OrderStatus) - } - for _, v := range jdsOrder.OrderItems { - sku := &model.OrderSku{ - VendorID: model.VendorIDJDShop, - VendorOrderID: utils.Int64ToStr(jdsOrder.OrderID), - Count: v.SkuNum, - VendorSkuID: utils.Int64ToStr(v.SkuID), - SkuName: v.SkuName, - VendorPrice: jxutils.StandardPrice2Int(v.JdPrice), - SalePrice: jxutils.StandardPrice2Int(v.JdPrice), - } - _, _, _, specUnit, _, specQuality := jxutils.SplitSkuName(v.SkuName) - sku.Weight = jxutils.FormatSkuWeight(specQuality, specUnit) - order.Skus = append(order.Skus, sku) - } - orders = append(orders, order) - } - return orders, err -} diff --git a/business/jxstore/common/common.go b/business/jxstore/common/common.go new file mode 100644 index 000000000..9c91f930e --- /dev/null +++ b/business/jxstore/common/common.go @@ -0,0 +1,153 @@ +package common + +import ( + "sort" + + "git.rosy.net.cn/baseapi/platformapi/autonavi" + "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/business/jxutils" + "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" + "git.rosy.net.cn/jx-callback/business/model" + "git.rosy.net.cn/jx-callback/business/model/dao" + "git.rosy.net.cn/jx-callback/globals/api" +) + +type Store4User struct { + model.ModelIDCULD + + OriginalName string `orm:"-" json:"originalName"` + Name string `orm:"size(255)" json:"name"` + OpenTime1 int16 `json:"openTime1"` // 930就表示9点半,用两个的原因是为了支持中午休息,1与2的时间段不能交叉,为0表示没有 + CloseTime1 int16 `json:"closeTime1"` // 格式同上 + OpenTime2 int16 `json:"openTime2"` // 格式同上 + CloseTime2 int16 `json:"closeTime2"` // 格式同上 + Status int `json:"status"` + CityCode int `orm:"default(0);null" json:"cityCode"` // todo ? + DistrictCode int `orm:"default(0);null" json:"districtCode"` // todo ? + Address string `orm:"size(255)" json:"address"` + Tel1 string `orm:"size(32);index" json:"tel1"` + Tel2 string `orm:"size(32);index" json:"tel2"` + Lng int `json:"-"` // 乘了10的6次方 + Lat int `json:"-"` // 乘了10的6次方 + DeliveryRangeType int8 `json:"-"` // 参见相关常量定义 + DeliveryRange string `orm:"type(text)" json:"-"` // 如果DeliveryRangeType为DeliveryRangeTypePolygon,则为逗号分隔坐标,分号分隔的坐标点(坐标与Lng和Lat一样,都是整数),比如 121361504,31189308;121420555,31150238。否则为半径,单位为米 + + FloatLng float64 `json:"lng"` + FloatLat float64 `json:"lat"` + CityName string `json:"cityName"` + DistrictName string `json:"districtName"` + + Distance int `json:"distance"` + WalkDistance int `json:"walkDistance"` +} + +type Store4UserList []*Store4User + +func (x Store4UserList) Len() int { + return len(x) +} + +func (x Store4UserList) Less(i, j int) bool { + if x[i].Status != x[j].Status { + return x[i].Status > x[j].Status + } + if x[i].WalkDistance != x[j].WalkDistance { + return x[i].WalkDistance < x[j].WalkDistance + } + return x[i].Distance < x[j].Distance +} + +func (x Store4UserList) Swap(i, j int) { + x[i], x[j] = x[j], x[i] +} + +func GetStoreListByLocation(ctx *jxcontext.Context, lng, lat float64, maxRadius int, needWalkDistance bool) (storeList []*Store4User, err error) { + const ( + maxStoreCount4User = 5 + ) + + lng2, _ := jxutils.ConvertDistanceToLogLat(lng, lat, float64(maxRadius), 90) + _, lat2 := jxutils.ConvertDistanceToLogLat(lng, lat, float64(maxRadius), 0) + lng1 := lng - (lng2 - lng) + lat1 := lat - (lat2 - lat) + // globals.SugarLogger.Debugf("%f,%f,%f,%f\n", lng1, lng2, lat1, lat2) + sql := ` + SELECT t1.*, + city.name city_name + FROM store t1 + JOIN place city ON city.code = t1.city_code + JOIN store_map sm ON sm.store_id = t1.id AND sm.vendor_id = ? AND sm.deleted_at = ? AND sm.status <> ? + WHERE t1.deleted_at = ? AND t1.status <> ? AND t1.lng > ? AND t1.lng < ? AND t1.lat > ? AND t1.lat < ? + AND sm.is_order <> ? + AND t1.id <> ? + ORDER BY t1.id + ` + sqlParams := []interface{}{ + model.VendorIDJX, utils.DefaultTimeValue, model.StoreStatusDisabled, + utils.DefaultTimeValue, model.StoreStatusDisabled, jxutils.StandardCoordinate2Int(lng1), jxutils.StandardCoordinate2Int(lng2), jxutils.StandardCoordinate2Int(lat1), jxutils.StandardCoordinate2Int(lat2), + model.YES, + model.MatterStoreID, + } + var storeList1 []*Store4User + if err = dao.GetRows(dao.GetDB(), &storeList1, sql, sqlParams...); err == nil { + var storeList2 []*Store4User + for _, v := range storeList1 { + distance := jxutils.Point2StoreDistance(lng, lat, v.Lng, v.Lat, v.DeliveryRangeType, v.DeliveryRange) + if distance > 0 || (lng == jxutils.IntCoordinate2Standard(v.Lng) && lat == jxutils.IntCoordinate2Standard(v.Lat)) { + v.Distance = distance + storeList2 = append(storeList2, v) + } + } + + // 为了审核用 + if len(storeList2) == 0 { + sql2 := ` + SELECT t1.*, + city.name city_name + FROM store t1 + JOIN place city ON city.code = t1.city_code + WHERE t1.deleted_at = ? AND t1.status <> ? AND t1.id = ? + ` + sqlParams2 := []interface{}{ + // model.VendorIDJX, utils.DefaultTimeValue, model.StoreStatusDisabled, + utils.DefaultTimeValue, + model.StoreStatusDisabled, + // jxutils.StandardCoordinate2Int(0), + // jxutils.StandardCoordinate2Int(10000), + // jxutils.StandardCoordinate2Int(0), + // jxutils.StandardCoordinate2Int(10000), + // model.YES, + 102919, //商城模板店 + } + dao.GetRows(dao.GetDB(), &storeList2, sql2, sqlParams2...) + // if len(storeList2) > 1 { + // storeList2 = storeList2[:1] + // } + } + + // 如果要求以步行距离来算 + if needWalkDistance { + var coordList []*autonavi.Coordinate + for _, v := range storeList2 { + coordList = append(coordList, &autonavi.Coordinate{ + Lng: v.FloatLng, + Lat: v.FloatLat, + }) + } + if distanceList, err2 := api.AutonaviAPI.BatchWalkingDistance(lng, lat, coordList); err2 == nil { + for k, v := range storeList2 { + v.WalkDistance = int(distanceList[k]) + } + } else { + return nil, err2 + } + } + + sort.Sort(Store4UserList(storeList2)) + storeList = storeList2 + if len(storeList) > maxStoreCount4User { + storeList = storeList[:maxStoreCount4User] + } + } + return storeList, err +} diff --git a/business/partner/purchase/jdshop/order.go b/business/partner/purchase/jdshop/order.go index 5d55dc961..8fb79f73f 100644 --- a/business/partner/purchase/jdshop/order.go +++ b/business/partner/purchase/jdshop/order.go @@ -1,11 +1,14 @@ package jdshop import ( + "time" + "git.rosy.net.cn/baseapi/platformapi/jdshopapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" + "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/globals/api" ) @@ -42,9 +45,16 @@ func (p *PurchaseHandler) GetOrderStatus(vendorOrgCode, vendorOrderID string) (s } func (p *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) { - return err + var status int + if isAcceptIt { + status = model.OrderStatusAccepted + } else { + status = model.OrderStatusCanceled + } + return changeOrderStatus(order.VendorOrderID, status, "") } func (p *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDelivery bool, userName string) (err error) { + err = changeOrderStatus(order.VendorOrderID, model.OrderStatusFinishedPickup, "") return err } @@ -105,3 +115,26 @@ func (p *PurchaseHandler) GetJdsOrders(ctx *jxcontext.Context, orderCreatedStart }) return orderResult, err } + +func changeOrderStatus(vendorOrderID string, status int, remark string) (err error) { + orderStatus := &model.OrderStatus{ + VendorOrderID: vendorOrderID, + VendorID: model.VendorIDJDShop, + OrderType: model.OrderTypeOrder, + RefVendorOrderID: vendorOrderID, + RefVendorID: model.VendorIDJDShop, + VendorStatus: utils.Int2Str(status), + Status: status, + StatusTime: time.Now(), + Remark: remark, + } + jxutils.CallMsgHandlerAsync(func() { + err = partner.CurOrderManager.OnOrderStatusChanged("", orderStatus) + }, jxutils.ComposeUniversalOrderID(vendorOrderID, model.VendorIDJDShop)) + return err +} + +func (p *PurchaseHandler) OrderExport(ctx *jxcontext.Context, vendorOrderID, vendorWaybillID string) (err error) { + err = api.JdShopAPI.OrderShipment(utils.Str2Int64(vendorOrderID), "", vendorWaybillID) + return err +} diff --git a/controllers/cms_store.go b/controllers/cms_store.go index 82341a689..56152b0e9 100644 --- a/controllers/cms_store.go +++ b/controllers/cms_store.go @@ -3,6 +3,7 @@ package controllers import ( "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxstore/cms" + "git.rosy.net.cn/jx-callback/business/jxstore/common" "git.rosy.net.cn/jx-callback/business/jxstore/misc" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/netprinter" @@ -546,7 +547,7 @@ func (c *StoreController) SyncStoresCourierInfo() { // @router /GetStoreListByLocation [get] func (c *StoreController) GetStoreListByLocation() { c.callGetStoreListByLocation(func(params *tStoreGetStoreListByLocationParams) (retVal interface{}, errCode string, err error) { - retVal, err = cms.GetStoreListByLocation(params.Ctx, params.Lng, params.Lat, 20000, params.NeedWalkDistance) + retVal, err = common.GetStoreListByLocation(params.Ctx, params.Lng, params.Lat, 20000, params.NeedWalkDistance) return retVal, "", err }) } From 2d86677b94e34e92ed3b1d46cb52a64eb46407fe 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, 3 Jun 2020 11:32:07 +0800 Subject: [PATCH 100/130] =?UTF-8?q?=E4=BA=8B=E5=8A=A1=E5=8E=BB=E6=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 8 -------- 1 file changed, 8 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index ac52be065..318f5d55b 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4497,13 +4497,6 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto // globals.SugarLogger.Debugf("doStoreSkuAudit return2 storeID : %v nameID: %v", storeID, skuBindInfo.NameID) // return false, err // } - dao.Begin(db) - defer func() { - if r := recover(); r != nil { - dao.Rollback(db) - panic(r) - } - }() if ctx.GetLoginType() != weixin.AuthTypeMP && ctx.GetLoginType() != weixin.AuthTypeMini { if len(storeAudits) > 0 { storeAudits[0].DeletedAt = time.Now() @@ -4557,7 +4550,6 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto } dao.WrapAddIDCULDEntity(storeSkuAudit, ctx.GetUserName()) err = dao.CreateEntity(db, storeSkuAudit) - dao.Commit(db) } } return true, err From 952d41c43a82239e3ed40b03523152097140c999 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, 3 Jun 2020 13:31:37 +0800 Subject: [PATCH 101/130] =?UTF-8?q?=E2=80=9C=E4=BA=AC=E4=B8=9C=E5=95=86?= =?UTF-8?q?=E5=9F=8E=E4=B9=9F=E5=8F=91=E7=BE=8E=E5=9B=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/scheduler/defsch/defsch.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 1ccf37224..dbe6d9e5a 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -721,10 +721,6 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf // if order.VendorID == model.VendorIDJX { // excludeVendorIDs = append(excludeVendorIDs, model.VendorIDMTPS) // } - //京东商城订单目前不发美团配送 - if order.VendorID == model.VendorIDJDShop { - excludeVendorIDs = append(excludeVendorIDs, model.VendorIDMTPS) - } if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, excludeVendorIDs, false, maxDeliveryFee); err == nil { savedOrderInfo.retryCount++ } From f040fdb0283e084a3ee52fc6755795900f262753 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, 3 Jun 2020 16:28:53 +0800 Subject: [PATCH 102/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order.go | 43 +++++++++++++- .../scheduler/basesch/basesch_ext.go | 8 --- .../jxcallback/scheduler/defsch/defsch.go | 6 +- business/jxstore/cms/store_sku.go | 1 + business/jxstore/common/common.go | 59 +++++++++++++------ business/jxstore/misc/misc.go | 1 + business/model/dao/dao_order.go | 11 ++++ business/partner/purchase/jdshop/order.go | 15 +++-- controllers/cms_store.go | 2 +- 9 files changed, 111 insertions(+), 35 deletions(-) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 1b5835f9d..eea2c4007 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -8,11 +8,13 @@ import ( "time" "git.rosy.net.cn/jx-callback/business/jxstore/common" + "git.rosy.net.cn/jx-callback/business/jxutils/ddmsg" "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" "git.rosy.net.cn/jx-callback/business/partner/purchase/jdshop" "git.rosy.net.cn/jx-callback/globals/api" "git.rosy.net.cn/baseapi" + "git.rosy.net.cn/baseapi/platformapi/dingdingapi" "git.rosy.net.cn/baseapi/platformapi/jdshopapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxcallback/scheduler" @@ -1012,6 +1014,8 @@ func SaveJdsOrders(ctx *jxcontext.Context, orderCreatedStart, orderCreatedEnd ti } for _, order := range orders { partner.CurOrderManager.OnOrderNew(order, model.Order2Status(order)) + noticeMsg := fmt.Sprintf("京东商城新订单,订单号:[%v]", order.VendorOrderID) + ddmsg.SendUserMessage(dingdingapi.MsgTyeText, "DDC5657B43EE11E9A9FF525400E86DC0", "京东商城来新订单了!", noticeMsg) } return err } @@ -1027,7 +1031,8 @@ func result2Orders(ctx *jxcontext.Context, result *jdshopapi.AllOrdersResult) (o continue } order := &model.GoodsOrder{ - VendorOrderID: utils.Int64ToStr(jdsOrder.OrderID), + VendorOrderID2: utils.Int64ToStr(jdsOrder.OrderID), + VendorOrderID: utils.Int64ToStr(jdsOrder.OrderID) + "01", VendorID: model.VendorIDJDShop, BaseFreightMoney: jxutils.StandardPrice2Int(jdsOrder.Freight), VendorStatus: utils.Int2Str(jdsOrder.OrderStatus), @@ -1059,7 +1064,7 @@ func result2Orders(ctx *jxcontext.Context, result *jdshopapi.AllOrdersResult) (o order.VendorStoreID = storeMaps[0].VendorStoreID } } else { - storeList, err := common.GetStoreListByLocation(ctx, jxutils.IntCoordinate2Standard(order.ConsigneeLng), jxutils.IntCoordinate2Standard(order.ConsigneeLat), 5000, false) + storeList, err := common.GetStoreListByLocation(ctx, jxutils.IntCoordinate2Standard(order.ConsigneeLng), jxutils.IntCoordinate2Standard(order.ConsigneeLat), 5000, false, true) if err != nil { globals.SugarLogger.Debugf("jds GetStoreListByLocation error: %v", err.Error()) continue @@ -1080,7 +1085,7 @@ func result2Orders(ctx *jxcontext.Context, result *jdshopapi.AllOrdersResult) (o for _, v := range jdsOrder.OrderItems { sku := &model.OrderSku{ VendorID: model.VendorIDJDShop, - VendorOrderID: utils.Int64ToStr(jdsOrder.OrderID), + VendorOrderID: order.VendorOrderID, Count: v.SkuNum, VendorSkuID: utils.Int64ToStr(v.SkuID), SkuName: v.SkuName, @@ -1095,3 +1100,35 @@ func result2Orders(ctx *jxcontext.Context, result *jdshopapi.AllOrdersResult) (o } return orders, err } + +func TransferJdsOrder(ctx *jxcontext.Context, vendorOrderID string, storeID int) (err error) { + globals.SugarLogger.Debugf("jds TransferJdsOrder vendorOrderID: %v, storeID : %v", vendorOrderID, storeID) + var ( + db = dao.GetDB() + ) + order, err := dao.GetSimpleOrder(db, vendorOrderID) + if err != nil || order == nil { + return fmt.Errorf("未查询到该订单!订单号:[%v]", vendorOrderID) + } + if order.Status == model.OrderStatusFinished { + return fmt.Errorf("暂不支持已完成的订单进行转移!") + } + if len(order.VendorOrderID) > 12 { + suffix := utils.Str2Int(order.VendorOrderID[12:len(order.VendorOrderID)]) + suffix++ + order.VendorOrderID = order.VendorOrderID2 + utils.Int2Str(suffix) + } + skus, err := dao.GetSimpleOrderSkus(db, vendorOrderID) + if err != nil || order == nil { + return fmt.Errorf("未查询到该订单商品!订单号:[%v]", vendorOrderID) + } + for _, sku := range skus { + sku.VendorOrderID = order.VendorOrderID + order.Skus = append(order.Skus, sku) + } + err = jdshop.ChangeOrderStatus(vendorOrderID, model.OrderStatusCanceled, "订单转移被取消") + if order.Status == model.OrderStatusDelivering { + + } + return err +} diff --git a/business/jxcallback/scheduler/basesch/basesch_ext.go b/business/jxcallback/scheduler/basesch/basesch_ext.go index 197bc2ebe..facb99a89 100644 --- a/business/jxcallback/scheduler/basesch/basesch_ext.go +++ b/business/jxcallback/scheduler/basesch/basesch_ext.go @@ -5,8 +5,6 @@ import ( "strings" "time" - "git.rosy.net.cn/jx-callback/business/partner/purchase/jdshop" - "git.rosy.net.cn/baseapi/platformapi/dingdingapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils/errlist" @@ -43,12 +41,6 @@ func (c *BaseScheduler) CreateWaybillOnProviders(ctx *jxcontext.Context, order * courierVendorID := storeCourier.VendorID bill, err2 := c.CreateWaybill(courierVendorID, order, maxDeliveryFee) if err = err2; err == nil { - if order.VendorID == model.VendorIDJDShop { - err = jdshop.CurPurchaseHandler.OrderExport(ctx, bill.VendorOrderID, bill.VendorWaybillID) - if err != nil { - errList.AddErr(fmt.Errorf("平台:%s,%s", jxutils.GetVendorName(courierVendorID), err.Error())) - } - } globals.SugarLogger.Debugf("CreateWaybillOnProviders orderID:%s userName:%s vendorID:%d bill:%v", order.VendorOrderID, userName, courierVendorID, bill) bills = append(bills, bill) if createOnlyOne { diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index dbe6d9e5a..a12ffdc3f 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -7,6 +7,7 @@ import ( "time" "git.rosy.net.cn/jx-callback/business/jxutils/ddmsg" + "git.rosy.net.cn/jx-callback/business/partner/purchase/jdshop" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/jxutils/netprinter" @@ -537,7 +538,10 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo } s.updateOrderByBill(order, bill, false) s.cancelOtherWaybillsCheckOrderDeliveryFlag(savedOrderInfo, bill, partner.CancelWaybillReasonNotAcceptIntime, partner.CancelWaybillReasonStrNotAcceptIntime) - + //京东商城的话,需要去把订单出库 + if order.VendorID == model.VendorIDJDShop { + err = jdshop.CurPurchaseHandler.OrderExport(jxcontext.AdminCtx, bill.VendorOrderID, bill.VendorWaybillID, true) + } if model.IsWaybillPlatformOwn(bill) { if bill.Status == model.WaybillStatusDelivering && order.Status < model.OrderStatusEndBegin { // 强制将订单状态置为配送中? diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 318f5d55b..fcc75c0f0 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4482,6 +4482,7 @@ func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*Sto db := dao.GetDB() for _, storeID := range storeIDs { for _, skuBindInfo := range skuBindInfos { + globals.SugarLogger.Debugf("doStoreSkuAudit storeID: %v , nameID: %v", storeID, skuBindInfo.NameID) storeAudits, err := dao.GetStoreSkuAuditLight(db, []int{storeID}, []int{skuBindInfo.NameID}, model.StoreAuditStatusOnline) //取消关注,可售排除 if skuBindInfo.IsFocus == -1 || skuBindInfo.IsSale != 0 || skuBindInfo.UnitPrice == 0 { diff --git a/business/jxstore/common/common.go b/business/jxstore/common/common.go index 9c91f930e..8e236f12b 100644 --- a/business/jxstore/common/common.go +++ b/business/jxstore/common/common.go @@ -61,32 +61,57 @@ func (x Store4UserList) Swap(i, j int) { x[i], x[j] = x[j], x[i] } -func GetStoreListByLocation(ctx *jxcontext.Context, lng, lat float64, maxRadius int, needWalkDistance bool) (storeList []*Store4User, err error) { +func GetStoreListByLocation(ctx *jxcontext.Context, lng, lat float64, maxRadius int, needWalkDistance, isJds bool) (storeList []*Store4User, err error) { const ( maxStoreCount4User = 5 ) + var ( + sql string + sqlParams []interface{} + ) + lng2, _ := jxutils.ConvertDistanceToLogLat(lng, lat, float64(maxRadius), 90) _, lat2 := jxutils.ConvertDistanceToLogLat(lng, lat, float64(maxRadius), 0) lng1 := lng - (lng2 - lng) lat1 := lat - (lat2 - lat) // globals.SugarLogger.Debugf("%f,%f,%f,%f\n", lng1, lng2, lat1, lat2) - sql := ` - SELECT t1.*, - city.name city_name - FROM store t1 - JOIN place city ON city.code = t1.city_code - JOIN store_map sm ON sm.store_id = t1.id AND sm.vendor_id = ? AND sm.deleted_at = ? AND sm.status <> ? - WHERE t1.deleted_at = ? AND t1.status <> ? AND t1.lng > ? AND t1.lng < ? AND t1.lat > ? AND t1.lat < ? - AND sm.is_order <> ? - AND t1.id <> ? - ORDER BY t1.id - ` - sqlParams := []interface{}{ - model.VendorIDJX, utils.DefaultTimeValue, model.StoreStatusDisabled, - utils.DefaultTimeValue, model.StoreStatusDisabled, jxutils.StandardCoordinate2Int(lng1), jxutils.StandardCoordinate2Int(lng2), jxutils.StandardCoordinate2Int(lat1), jxutils.StandardCoordinate2Int(lat2), - model.YES, - model.MatterStoreID, + if !isJds { + sql = ` + SELECT t1.*, + city.name city_name + FROM store t1 + JOIN place city ON city.code = t1.city_code + JOIN store_map sm ON sm.store_id = t1.id AND sm.vendor_id = ? AND sm.deleted_at = ? AND sm.status <> ? + WHERE t1.deleted_at = ? AND t1.status <> ? AND t1.lng > ? AND t1.lng < ? AND t1.lat > ? AND t1.lat < ? + AND sm.is_order <> ? + AND t1.id <> ? + ORDER BY t1.id + ` + sqlParams = []interface{}{ + model.VendorIDJX, utils.DefaultTimeValue, model.StoreStatusDisabled, + utils.DefaultTimeValue, model.StoreStatusDisabled, jxutils.StandardCoordinate2Int(lng1), jxutils.StandardCoordinate2Int(lng2), jxutils.StandardCoordinate2Int(lat1), jxutils.StandardCoordinate2Int(lat2), + model.YES, + model.MatterStoreID, + } + } else { + sql = ` + SELECT t1.*, + city.name city_name + FROM store t1 + JOIN place city ON city.code = t1.city_code + JOIN store_map sm ON sm.store_id = t1.id AND sm.vendor_id = ? AND sm.deleted_at = ? AND sm.status = ? + WHERE t1.deleted_at = ? AND t1.status = ? AND t1.lng > ? AND t1.lng < ? AND t1.lat > ? AND t1.lat < ? + AND sm.is_order <> ? + AND t1.id <> ? + ORDER BY t1.id + ` + sqlParams = []interface{}{ + model.VendorIDJDShop, utils.DefaultTimeValue, model.StoreStatusOpened, + utils.DefaultTimeValue, model.StoreStatusOpened, jxutils.StandardCoordinate2Int(lng1), jxutils.StandardCoordinate2Int(lng2), jxutils.StandardCoordinate2Int(lat1), jxutils.StandardCoordinate2Int(lat2), + model.YES, + model.MatterStoreID, + } } var storeList1 []*Store4User if err = dao.GetRows(dao.GetDB(), &storeList1, sql, sqlParams...); err == nil { diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index 0668bdb23..43e63a87d 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -262,6 +262,7 @@ func Init() { "04:05:06", }) ScheduleTimerFuncByInterval(func() { + orderman.SaveJdsOrders(jxcontext.AdminCtx, time.Now().Add(-5*time.Minute), time.Now()) }, 5*time.Second, 5*time.Minute) } if configs, err := dao.QueryConfigs(dao.GetDB(), "ebaiStorePageCookieExdTOKEN", model.ConfigTypeCookie, ""); err == nil { diff --git a/business/model/dao/dao_order.go b/business/model/dao/dao_order.go index fc8994645..6f090329b 100644 --- a/business/model/dao/dao_order.go +++ b/business/model/dao/dao_order.go @@ -1281,3 +1281,14 @@ func GetSimpleOrder(db *DaoDB, vendorOrderID string) (goods *model.GoodsOrder, e err = GetRow(db, &goods, sql, sqlParams) return goods, err } + +func GetSimpleOrderSkus(db *DaoDB, vendorOrderID string) (skus []*model.OrderSku, err error) { + sql := ` + SELECT * + FROM order_sku + WHERE vendor_order_id = ? + ` + sqlParams := []interface{}{vendorOrderID} + err = GetRows(db, &skus, sql, sqlParams) + return skus, err +} diff --git a/business/partner/purchase/jdshop/order.go b/business/partner/purchase/jdshop/order.go index 8fb79f73f..2c2c08bd0 100644 --- a/business/partner/purchase/jdshop/order.go +++ b/business/partner/purchase/jdshop/order.go @@ -51,10 +51,10 @@ func (p *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI } else { status = model.OrderStatusCanceled } - return changeOrderStatus(order.VendorOrderID, status, "") + return ChangeOrderStatus(order.VendorOrderID, status, "") } func (p *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDelivery bool, userName string) (err error) { - err = changeOrderStatus(order.VendorOrderID, model.OrderStatusFinishedPickup, "") + err = ChangeOrderStatus(order.VendorOrderID, model.OrderStatusFinishedPickup, "") return err } @@ -116,7 +116,7 @@ func (p *PurchaseHandler) GetJdsOrders(ctx *jxcontext.Context, orderCreatedStart return orderResult, err } -func changeOrderStatus(vendorOrderID string, status int, remark string) (err error) { +func ChangeOrderStatus(vendorOrderID string, status int, remark string) (err error) { orderStatus := &model.OrderStatus{ VendorOrderID: vendorOrderID, VendorID: model.VendorIDJDShop, @@ -134,7 +134,12 @@ func changeOrderStatus(vendorOrderID string, status int, remark string) (err err return err } -func (p *PurchaseHandler) OrderExport(ctx *jxcontext.Context, vendorOrderID, vendorWaybillID string) (err error) { - err = api.JdShopAPI.OrderShipment(utils.Str2Int64(vendorOrderID), "", vendorWaybillID) +func (p *PurchaseHandler) OrderExport(ctx *jxcontext.Context, vendorOrderID, vendorWaybillID string, isAuto bool) (err error) { + companyID := jdshopapi.JdsDeliveryCompany3rd + //表示是门店手动发京东 + if !isAuto { + companyID = jdshopapi.JdsDeliveryCompanyJD + } + err = api.JdShopAPI.OrderShipment(utils.Str2Int64(vendorOrderID[:12]), companyID, vendorWaybillID) return err } diff --git a/controllers/cms_store.go b/controllers/cms_store.go index 56152b0e9..d24330b3c 100644 --- a/controllers/cms_store.go +++ b/controllers/cms_store.go @@ -547,7 +547,7 @@ func (c *StoreController) SyncStoresCourierInfo() { // @router /GetStoreListByLocation [get] func (c *StoreController) GetStoreListByLocation() { c.callGetStoreListByLocation(func(params *tStoreGetStoreListByLocationParams) (retVal interface{}, errCode string, err error) { - retVal, err = common.GetStoreListByLocation(params.Ctx, params.Lng, params.Lat, 20000, params.NeedWalkDistance) + retVal, err = common.GetStoreListByLocation(params.Ctx, params.Lng, params.Lat, 20000, params.NeedWalkDistance, false) return retVal, "", err }) } From b56e45909eea1e055c7f165d47be669fa716560c 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, 3 Jun 2020 16:30:11 +0800 Subject: [PATCH 103/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/misc/misc.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index 43e63a87d..0edbfe1df 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -262,7 +262,7 @@ func Init() { "04:05:06", }) ScheduleTimerFuncByInterval(func() { - orderman.SaveJdsOrders(jxcontext.AdminCtx, time.Now().Add(-5*time.Minute), time.Now()) + // orderman.SaveJdsOrders(jxcontext.AdminCtx, time.Now().Add(-5*time.Minute), time.Now()) }, 5*time.Second, 5*time.Minute) } if configs, err := dao.QueryConfigs(dao.GetDB(), "ebaiStorePageCookieExdTOKEN", model.ConfigTypeCookie, ""); err == nil { From a04c1595bc9bdd2ebd966fcda369dc53504497ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 4 Jun 2020 09:34:53 +0800 Subject: [PATCH 104/130] =?UTF-8?q?=E7=89=A9=E6=96=99=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=A1=A5=E8=B6=B3=E4=BA=94=E9=A6=99=E7=B2=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order.go | 48 +++++++++++++++---- business/partner/purchase/jx/localjx/order.go | 26 +++++++++- 2 files changed, 64 insertions(+), 10 deletions(-) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index eea2c4007..74d031328 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -1104,7 +1104,8 @@ func result2Orders(ctx *jxcontext.Context, result *jdshopapi.AllOrdersResult) (o func TransferJdsOrder(ctx *jxcontext.Context, vendorOrderID string, storeID int) (err error) { globals.SugarLogger.Debugf("jds TransferJdsOrder vendorOrderID: %v, storeID : %v", vendorOrderID, storeID) var ( - db = dao.GetDB() + db = dao.GetDB() + waybill *model.Waybill ) order, err := dao.GetSimpleOrder(db, vendorOrderID) if err != nil || order == nil { @@ -1113,22 +1114,51 @@ func TransferJdsOrder(ctx *jxcontext.Context, vendorOrderID string, storeID int) if order.Status == model.OrderStatusFinished { return fmt.Errorf("暂不支持已完成的订单进行转移!") } - if len(order.VendorOrderID) > 12 { - suffix := utils.Str2Int(order.VendorOrderID[12:len(order.VendorOrderID)]) - suffix++ - order.VendorOrderID = order.VendorOrderID2 + utils.Int2Str(suffix) + if order.VendorID != model.VendorIDJDShop { + return fmt.Errorf("暂不支持非京狗的订单进行转移!") } skus, err := dao.GetSimpleOrderSkus(db, vendorOrderID) if err != nil || order == nil { return fmt.Errorf("未查询到该订单商品!订单号:[%v]", vendorOrderID) } + //将订单和运单取消 + if order.Status == model.OrderStatusDelivering { + waybills, err := dao.GetWaybills(db, vendorOrderID) + if err != nil || len(waybills) == 0 { + return fmt.Errorf("未查询到该订单对应的运单信息!订单号:[%v]", vendorOrderID) + } + for _, v := range waybills { + if v.Status != model.WaybillStatusCanceled { + waybill = v + } + } + handler := partner.DeliveryPlatformHandlers[waybill.WaybillVendorID] + err = handler.Handler.CancelWaybill(waybill, 0, "订单转移被取消") + if err != nil { + return err + } + } + err = jdshop.ChangeOrderStatus(vendorOrderID, model.OrderStatusCanceled, "订单转移被取消") + if err != nil { + return err + } + //重新构建order的数据 + storeMaps, err := dao.GetStoresMapList(db, []int{order.VendorID}, []int{order.StoreID}, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "") + if len(storeMaps) > 0 { + order.StoreID = storeID + order.StoreName = storeMaps[0].StoreName + } else { + return fmt.Errorf("未查询到该门店对应的平台信息!门店:[%v]", order.StoreID) + } + if len(order.VendorOrderID) > 12 { + suffix := utils.Str2Int(order.VendorOrderID[12:len(order.VendorOrderID)]) + suffix++ + order.VendorOrderID = order.VendorOrderID2 + utils.Int2Str(suffix) + } for _, sku := range skus { sku.VendorOrderID = order.VendorOrderID order.Skus = append(order.Skus, sku) } - err = jdshop.ChangeOrderStatus(vendorOrderID, model.OrderStatusCanceled, "订单转移被取消") - if order.Status == model.OrderStatusDelivering { - - } + err = partner.CurOrderManager.OnOrderNew(order, model.Order2Status(order)) return err } diff --git a/business/partner/purchase/jx/localjx/order.go b/business/partner/purchase/jx/localjx/order.go index 4613a34fd..7614f9449 100644 --- a/business/partner/purchase/jx/localjx/order.go +++ b/business/partner/purchase/jx/localjx/order.go @@ -49,7 +49,8 @@ const ( autoCancelOrderReason = "支付超时,系统自动取消!" cancelMatterOrderReason = "失败重发!" - splitMatterOrderMinWeight = 4500 //物料订单分包最少要4.5kg + splitMatterOrderMinWeight = 4500 //物料订单分包最少要4.5kg + jxwxfMatterEclpID = "EMG4418113943423" //京西五香粉物料编码 ) type JxSkuInfo struct { @@ -876,6 +877,7 @@ func orderSolutionForWuLiao(order *model.GoodsOrder) (err error) { goodsNos []string prices []string quantities []string + countSum int ) for _, v := range orderSkus { skus, err := dao.GetSkus(db, []int{v.SkuID}, nil, nil, nil, nil) @@ -885,6 +887,28 @@ func orderSolutionForWuLiao(order *model.GoodsOrder) (err error) { goodsNos = append(goodsNos, skus[0].EclpID) prices = append(prices, "0") quantities = append(quantities, utils.Int2Str(v.Count)) + countSum += v.Count + } + //总订单不足3kg && 商品数量不足3个 && 五香粉有库存,要送五香粉,补足3个 + stockResult, err := api.JdEclpAPI.QueryStock(jxwxfMatterEclpID) + if err == nil && len(stockResult) > 0 && stockResult[0].UsableNum > 0 { + if order.Weight < 3000 && countSum < 3 { + //要判断他本身买没买五香粉EMG4418113943423 + var index = 9999 + for k, v := range goodsNos { + if v == jxwxfMatterEclpID { + index = k + } + } + //说明他买了五香粉 + if index != 9999 { + quantities[index] = utils.Int2Str(utils.Str2Int(quantities[index]) + 3 - countSum) + } else { + goodsNos = append(goodsNos, jxwxfMatterEclpID) + prices = append(prices, "0") + quantities = append(quantities, utils.Int2Str(3-countSum)) + } + } } result, err := api.JdEclpAPI.AddOrder(&jdeclpapi.AddOrderParam{ IsvUUID: order.VendorOrderID, From 66bdac9c2ce5163a368d7094161bb94e247ad1b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 4 Jun 2020 15:15:12 +0800 Subject: [PATCH 105/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=EF=BC=8C=E5=95=86=E5=93=81=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=9A=82=E5=81=9C=E4=B8=80=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order.go | 9 +- business/jxstore/cms/store_sku.go | 1 + business/jxutils/jxutils.go | 34 ++++++++ business/partner/delivery/jdeclp/waybill.go | 82 +++++++++++++++++++ .../partner/delivery/jdeclp/waybill_test.go | 1 + 5 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 business/partner/delivery/jdeclp/waybill.go create mode 100644 business/partner/delivery/jdeclp/waybill_test.go diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 74d031328..689189091 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -1043,12 +1043,19 @@ func result2Orders(ctx *jxcontext.Context, result *jdshopapi.AllOrdersResult) (o StoreName: jdsOrder.StoreName, OrderCreatedAt: utils.Str2Time(jdsOrder.OrderCreateTime + ":00"), ConsigneeAddress: orderDetail.ConsigneeAddress, - ConsigneeMobile: orderDetail.ConsigneeMobile, ConsigneeName: orderDetail.ConsigneeName, ActualPayPrice: orderDetail.ActualPayPrice, Status: model.OrderStatusNew, TotalShopMoney: utils.Float64TwoInt64(math.Round(utils.Int64ToFloat64(orderDetail.ActualPayPrice) * jdshopapi.JdsPayPercentage)), } + //获取真实手机号 + fakeMobile, err := api.JdShopAPI.PhoneSensltiveInfo(order.VendorOrderID2, orderDetail.MobileKey) + if err != nil { + globals.SugarLogger.Debugf("jds PhoneSensltiveInfo error: %v", err.Error()) + continue + } else { + order.ConsigneeMobile = jxutils.DecryptDESECB([]byte(fakeMobile), []byte(jdshopapi.JdsMobileKey)) + } if order.TotalShopMoney < 100 { order.TotalShopMoney = 100 } diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index fcc75c0f0..58c271b01 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -4479,6 +4479,7 @@ func GetStoreSkuAudit(ctx *jxcontext.Context, storeIDs, nameIDs, skuIDs, statuss func doStoreSkuAudit(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*StoreSkuBindInfo) (isAudit bool, err error) { globals.SugarLogger.Debugf("doStoreSkuAudit storeIDs: %v", storeIDs) + time.Sleep(time.Second / 5) db := dao.GetDB() for _, storeID := range storeIDs { for _, skuBindInfo := range skuBindInfos { diff --git a/business/jxutils/jxutils.go b/business/jxutils/jxutils.go index 723130186..945b0f832 100644 --- a/business/jxutils/jxutils.go +++ b/business/jxutils/jxutils.go @@ -3,6 +3,8 @@ package jxutils import ( "bytes" "context" + "crypto/aes" + "encoding/base64" "fmt" "io/ioutil" "math" @@ -882,3 +884,35 @@ func TranslateSoundSize(vendorID, soundPercentage int) (soundSize string) { } return soundSize } + +//ECB,AES模式解密 +//目前就京东商城订单手机号解密用 +func DecryptDESECB(d, key []byte) string { + data, err := base64.StdEncoding.DecodeString(string(d)) + if err != nil { + return "" + } + block, err := aes.NewCipher(key) + if err != nil { + return "" + } + bs := block.BlockSize() + if len(data)%bs != 0 { + return "" + } + out := make([]byte, len(data)) + dst := out + for len(data) > 0 { + block.Decrypt(dst, data[:bs]) + data = data[bs:] + dst = dst[bs:] + } + out = PKCS5UnPadding(out) + return string(out) +} + +func PKCS5UnPadding(origData []byte) []byte { + length := len(origData) + unpadding := int(origData[length-1]) + return origData[:(length - unpadding)] +} diff --git a/business/partner/delivery/jdeclp/waybill.go b/business/partner/delivery/jdeclp/waybill.go new file mode 100644 index 000000000..dabe83115 --- /dev/null +++ b/business/partner/delivery/jdeclp/waybill.go @@ -0,0 +1,82 @@ +package jdeclp + +import ( + "fmt" + + "git.rosy.net.cn/baseapi/platformapi/jdeclpapi" + "git.rosy.net.cn/jx-callback/business/jxutils" + "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" + "git.rosy.net.cn/jx-callback/business/model" + "git.rosy.net.cn/jx-callback/business/model/dao" + "git.rosy.net.cn/jx-callback/business/partner" + "git.rosy.net.cn/jx-callback/globals/api" +) + +var ( + CurDeliveryHandler *DeliveryHandler +) + +type DeliveryHandler struct { +} + +func init() { + CurDeliveryHandler = new(DeliveryHandler) + partner.RegisterDeliveryPlatform(CurDeliveryHandler, true) +} + +func (c *DeliveryHandler) GetVendorID() int { + return model.VendorIDJDWL +} + +func (c *DeliveryHandler) CreateStore(ctx *jxcontext.Context, storeDetail *dao.StoreDetail2) (vendorStoreID string, status int, err error) { + return vendorStoreID, status, err +} +func (c *DeliveryHandler) GetStore(ctx *jxcontext.Context, storeID int, vendorStoreID string) (storeDetail *dao.StoreDetail2, err error) { + return storeDetail, err +} +func (c *DeliveryHandler) IsErrStoreNotExist(err error) bool { + return false +} +func (c *DeliveryHandler) IsErrStoreExist(err error) bool { + return false +} +func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee int64) (bill *model.Waybill, err error) { + storeID := jxutils.GetShowStoreIDFromOrder(order) + stores, err := dao.GetStoreList(dao.GetDB(), []int{storeID}, nil, nil, nil, "") + if len(stores) == 0 || err != nil { + return bill, fmt.Errorf("未查询到该门店! 门店id :[%v]", storeID) + } + _, err = api.JdEclpAPI.WaybillReceive(&jdeclpapi.WaybillReceiveParam{ + SalePlat: jdeclpapi.SalePlatSourceDelivery, + CustomerCode: jdeclpapi.CustomerCode, + OrderID: order.VendorOrderID, + SenderName: order.StoreName, + SenderAddress: stores[0].Address, + SenderTel: stores[0].Tel1, + ReceiveName: order.ConsigneeName, + ReceiveAddress: order.ConsigneeAddress, + ReceiveTel: order.ConsigneeMobile, + Weight: order.Weight, + Vloumn: order.Weight, + PackageCount: 1, + Description: "生鲜", + }) + // partner.CurOrderManager.OnWaybillStatusChanged(order) + return bill, err +} +func (c *DeliveryHandler) CancelWaybill(bill *model.Waybill, cancelReasonID int, cancelReason string) (err error) { + err = api.JdEclpAPI.CancelWayBill(&jdeclpapi.CancelWayBillParam{ + WaybillCode: bill.VendorWaybillID, + CustomerCode: jdeclpapi.CustomerCode, + Source: "JOS", + CancelReason: cancelReason, + OperatorName: "jxadmin", + }) + return err +} +func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInfo *partner.WaybillFeeInfo, err error) { + return deliveryFeeInfo, err +} +func (c *DeliveryHandler) ComplaintRider(bill *model.Waybill, resonID int, resonContent string) (err error) { + return err +} diff --git a/business/partner/delivery/jdeclp/waybill_test.go b/business/partner/delivery/jdeclp/waybill_test.go new file mode 100644 index 000000000..a8b1b4a51 --- /dev/null +++ b/business/partner/delivery/jdeclp/waybill_test.go @@ -0,0 +1 @@ +package jdeclp From fd5c46e0e8268642708a2b305bf4b2e92ece7674 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 4 Jun 2020 16:05:32 +0800 Subject: [PATCH 106/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E9=97=A8=E5=BA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order.go | 32 ++++++++++++++------- business/partner/delivery/jdeclp/waybill.go | 18 ++++++++++-- controllers/jx_order.go | 29 +++++++++++++++++++ routers/commentsRouter_controllers.go | 18 ++++++++++++ 4 files changed, 84 insertions(+), 13 deletions(-) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 689189091..bb2c14e79 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -1013,9 +1013,10 @@ func SaveJdsOrders(ctx *jxcontext.Context, orderCreatedStart, orderCreatedEnd ti globals.SugarLogger.Errorf("SaveJdsOrders : %v", err) } for _, order := range orders { - partner.CurOrderManager.OnOrderNew(order, model.Order2Status(order)) - noticeMsg := fmt.Sprintf("京东商城新订单,订单号:[%v]", order.VendorOrderID) + // partner.CurOrderManager.OnOrderNew(order, model.Order2Status(order)) + noticeMsg := fmt.Sprintf("京东商城新订单,订单号:[%v] ,将要发到的门店id:[%v] , 门店名:[%v]", order.VendorOrderID, order.StoreID, order.StoreName) ddmsg.SendUserMessage(dingdingapi.MsgTyeText, "DDC5657B43EE11E9A9FF525400E86DC0", "京东商城来新订单了!", noticeMsg) + ddmsg.SendUserMessage(dingdingapi.MsgTyeText, "1439B3E07D3911EA881A525400E86DC0", "京东商城来新订单了!", noticeMsg) } return err } @@ -1108,7 +1109,7 @@ func result2Orders(ctx *jxcontext.Context, result *jdshopapi.AllOrdersResult) (o return orders, err } -func TransferJdsOrder(ctx *jxcontext.Context, vendorOrderID string, storeID int) (err error) { +func TransferJdsOrder(ctx *jxcontext.Context, vendorOrderID string, storeID int) (vendorOrderIDJds string, err error) { globals.SugarLogger.Debugf("jds TransferJdsOrder vendorOrderID: %v, storeID : %v", vendorOrderID, storeID) var ( db = dao.GetDB() @@ -1116,23 +1117,23 @@ func TransferJdsOrder(ctx *jxcontext.Context, vendorOrderID string, storeID int) ) order, err := dao.GetSimpleOrder(db, vendorOrderID) if err != nil || order == nil { - return fmt.Errorf("未查询到该订单!订单号:[%v]", vendorOrderID) + return "", fmt.Errorf("未查询到该订单!订单号:[%v]", vendorOrderID) } if order.Status == model.OrderStatusFinished { - return fmt.Errorf("暂不支持已完成的订单进行转移!") + return "", fmt.Errorf("暂不支持已完成的订单进行转移!") } if order.VendorID != model.VendorIDJDShop { - return fmt.Errorf("暂不支持非京狗的订单进行转移!") + return "", fmt.Errorf("暂不支持非京狗的订单进行转移!") } skus, err := dao.GetSimpleOrderSkus(db, vendorOrderID) if err != nil || order == nil { - return fmt.Errorf("未查询到该订单商品!订单号:[%v]", vendorOrderID) + return "", fmt.Errorf("未查询到该订单商品!订单号:[%v]", vendorOrderID) } //将订单和运单取消 if order.Status == model.OrderStatusDelivering { waybills, err := dao.GetWaybills(db, vendorOrderID) if err != nil || len(waybills) == 0 { - return fmt.Errorf("未查询到该订单对应的运单信息!订单号:[%v]", vendorOrderID) + return "", fmt.Errorf("未查询到该订单对应的运单信息!订单号:[%v]", vendorOrderID) } for _, v := range waybills { if v.Status != model.WaybillStatusCanceled { @@ -1142,12 +1143,12 @@ func TransferJdsOrder(ctx *jxcontext.Context, vendorOrderID string, storeID int) handler := partner.DeliveryPlatformHandlers[waybill.WaybillVendorID] err = handler.Handler.CancelWaybill(waybill, 0, "订单转移被取消") if err != nil { - return err + return "", err } } err = jdshop.ChangeOrderStatus(vendorOrderID, model.OrderStatusCanceled, "订单转移被取消") if err != nil { - return err + return "", err } //重新构建order的数据 storeMaps, err := dao.GetStoresMapList(db, []int{order.VendorID}, []int{order.StoreID}, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "") @@ -1155,7 +1156,7 @@ func TransferJdsOrder(ctx *jxcontext.Context, vendorOrderID string, storeID int) order.StoreID = storeID order.StoreName = storeMaps[0].StoreName } else { - return fmt.Errorf("未查询到该门店对应的平台信息!门店:[%v]", order.StoreID) + return "", fmt.Errorf("未查询到该门店对应的平台信息!门店:[%v]", order.StoreID) } if len(order.VendorOrderID) > 12 { suffix := utils.Str2Int(order.VendorOrderID[12:len(order.VendorOrderID)]) @@ -1166,6 +1167,15 @@ func TransferJdsOrder(ctx *jxcontext.Context, vendorOrderID string, storeID int) sku.VendorOrderID = order.VendorOrderID order.Skus = append(order.Skus, sku) } + order.Status = model.OrderStatusNew err = partner.CurOrderManager.OnOrderNew(order, model.Order2Status(order)) + vendorOrderIDJds = order.VendorOrderID + return vendorOrderIDJds, err +} + +func SendJdwlForJdsOrder(ctx *jxcontext.Context, vendorOrderID string) (err error) { + order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, model.VendorIDJDShop) + handler := partner.DeliveryPlatformHandlers[model.VendorIDJDWL] + _, err = handler.Handler.CreateWaybill(order, 0) return err } diff --git a/business/partner/delivery/jdeclp/waybill.go b/business/partner/delivery/jdeclp/waybill.go index dabe83115..8887cd55a 100644 --- a/business/partner/delivery/jdeclp/waybill.go +++ b/business/partner/delivery/jdeclp/waybill.go @@ -2,8 +2,10 @@ package jdeclp import ( "fmt" + "time" "git.rosy.net.cn/baseapi/platformapi/jdeclpapi" + "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" @@ -46,7 +48,7 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee if len(stores) == 0 || err != nil { return bill, fmt.Errorf("未查询到该门店! 门店id :[%v]", storeID) } - _, err = api.JdEclpAPI.WaybillReceive(&jdeclpapi.WaybillReceiveParam{ + vendorWaybillID, err := api.JdEclpAPI.WaybillReceive(&jdeclpapi.WaybillReceiveParam{ SalePlat: jdeclpapi.SalePlatSourceDelivery, CustomerCode: jdeclpapi.CustomerCode, OrderID: order.VendorOrderID, @@ -60,8 +62,20 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee Vloumn: order.Weight, PackageCount: 1, Description: "生鲜", + Aging: 5, }) - // partner.CurOrderManager.OnWaybillStatusChanged(order) + waybill := &model.Waybill{ + VendorOrderID: order.VendorOrderID, + OrderVendorID: model.VendorIDJDShop, + VendorWaybillID: vendorWaybillID, + WaybillVendorID: model.VendorIDJDWL, + Status: model.WaybillStatusDelivering, + WaybillCreatedAt: time.Now(), + StatusTime: time.Now(), + WaybillFinishedAt: utils.DefaultTimeValue, + DeliveryFlag: model.OrderDeliveryFlagMaskScheduleDisabled, + } + dao.CreateEntity(dao.GetDB(), waybill) return bill, err } func (c *DeliveryHandler) CancelWaybill(bill *model.Waybill, cancelReasonID int, cancelReason string) (err error) { diff --git a/controllers/jx_order.go b/controllers/jx_order.go index 271794378..49ae5a1b2 100644 --- a/controllers/jx_order.go +++ b/controllers/jx_order.go @@ -1059,3 +1059,32 @@ func (c *OrderController) GetOrderUserBuyFirst() { return retVal, "", err }) } + +// @Title 京东商城订单转移 +// @Description 京东商城订单转移 +// @Param token header string true "认证token" +// @Param storeID formData int true "转移的门店ID" +// @Param vendorOrderID formData string true "转移的订单号" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /TransferJdsOrder [post] +func (c *OrderController) TransferJdsOrder() { + c.callTransferJdsOrder(func(params *tOrderTransferJdsOrderParams) (retVal interface{}, errCode string, err error) { + err = orderman.TransferJdsOrder(params.Ctx, params.VendorOrderID, params.StoreID) + return retVal, "", err + }) +} + +// @Title 京东商城订单发送京东物流 +// @Description 京东商城订单发送京东物流 +// @Param token header string true "认证token" +// @Param vendorOrderID formData string true "订单号" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /SendJdwlForJdsOrder [post] +func (c *OrderController) SendJdwlForJdsOrder() { + c.callSendJdwlForJdsOrder(func(params *tOrderSendJdwlForJdsOrderParams) (retVal interface{}, errCode string, err error) { + err = orderman.SendJdwlForJdsOrder(params.Ctx, params.VendorOrderID) + return retVal, "", err + }) +} diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index bade9af68..4cf9a19d1 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -1242,6 +1242,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"], + beego.ControllerComments{ + Method: "SendJdwlForJdsOrder", + Router: `/SendJdwlForJdsOrder`, + AllowHTTPMethods: []string{"post"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"], beego.ControllerComments{ Method: "SetOrderPrintStatus", @@ -1251,6 +1260,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"], + beego.ControllerComments{ + Method: "TransferJdsOrder", + Router: `/TransferJdsOrder`, + AllowHTTPMethods: []string{"post"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:OrderController"], beego.ControllerComments{ Method: "UpdateOrderWaybillTip", From 81c99d3ee26bf70cddb607a2ba9ca20ed3033e4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 4 Jun 2020 16:06:37 +0800 Subject: [PATCH 107/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E9=97=A8=E5=BA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/misc/misc.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index 0edbfe1df..e312c4f8a 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -158,6 +158,10 @@ func Init() { if globals.IsProductEnv() { ScheduleTimerFunc("doDailyWork", doDailyWork, dailyWorkTimeList) + ScheduleTimerFuncByInterval(func() { + orderman.SaveJdsOrders(jxcontext.AdminCtx, time.Now().Add(-5*time.Minute), time.Now()) + }, 5*time.Second, 5*time.Minute) + ScheduleTimerFuncByInterval(func() { RefreshRealMobile(jxcontext.AdminCtx, model.VendorIDEBAI, time.Now().Add(-24*time.Hour), utils.DefaultTimeValue, false, true) }, 5*time.Second, 1*time.Hour) @@ -261,9 +265,6 @@ func Init() { }, []string{ "04:05:06", }) - ScheduleTimerFuncByInterval(func() { - // orderman.SaveJdsOrders(jxcontext.AdminCtx, time.Now().Add(-5*time.Minute), time.Now()) - }, 5*time.Second, 5*time.Minute) } if configs, err := dao.QueryConfigs(dao.GetDB(), "ebaiStorePageCookieExdTOKEN", model.ConfigTypeCookie, ""); err == nil { ebaiStorePageCookieExdTOKEN = configs[0].Value From 98452fc3fcf32b0355775b7d804cea14ed0d51e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 4 Jun 2020 16:09:01 +0800 Subject: [PATCH 108/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E9=97=A8=E5=BA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/jx_order.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/jx_order.go b/controllers/jx_order.go index 49ae5a1b2..640f07f68 100644 --- a/controllers/jx_order.go +++ b/controllers/jx_order.go @@ -1070,7 +1070,7 @@ func (c *OrderController) GetOrderUserBuyFirst() { // @router /TransferJdsOrder [post] func (c *OrderController) TransferJdsOrder() { c.callTransferJdsOrder(func(params *tOrderTransferJdsOrderParams) (retVal interface{}, errCode string, err error) { - err = orderman.TransferJdsOrder(params.Ctx, params.VendorOrderID, params.StoreID) + retVal, err = orderman.TransferJdsOrder(params.Ctx, params.VendorOrderID, params.StoreID) return retVal, "", err }) } From 4f10721d59e3931d2482e1c86af840cb36044211 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 4 Jun 2020 16:30:23 +0800 Subject: [PATCH 109/130] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E8=BD=AC=E7=A7=BB?= =?UTF-8?q?=E8=A7=84=E5=88=99=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index bb2c14e79..3dfd1e7b0 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -1119,8 +1119,8 @@ func TransferJdsOrder(ctx *jxcontext.Context, vendorOrderID string, storeID int) if err != nil || order == nil { return "", fmt.Errorf("未查询到该订单!订单号:[%v]", vendorOrderID) } - if order.Status == model.OrderStatusFinished { - return "", fmt.Errorf("暂不支持已完成的订单进行转移!") + if order.Status >= model.OrderStatusDelivering { + return "", fmt.Errorf("暂不支持此状态的订单进行转移!") } if order.VendorID != model.VendorIDJDShop { return "", fmt.Errorf("暂不支持非京狗的订单进行转移!") @@ -1130,11 +1130,11 @@ func TransferJdsOrder(ctx *jxcontext.Context, vendorOrderID string, storeID int) return "", fmt.Errorf("未查询到该订单商品!订单号:[%v]", vendorOrderID) } //将订单和运单取消 - if order.Status == model.OrderStatusDelivering { - waybills, err := dao.GetWaybills(db, vendorOrderID) - if err != nil || len(waybills) == 0 { - return "", fmt.Errorf("未查询到该订单对应的运单信息!订单号:[%v]", vendorOrderID) - } + waybills, err := dao.GetWaybills(db, vendorOrderID) + if err != nil { + return "", err + } + if len(waybills) > 0 { for _, v := range waybills { if v.Status != model.WaybillStatusCanceled { waybill = v From 096355d1d08abc345119c2835aa633f60f01cd4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 4 Jun 2020 17:13:18 +0800 Subject: [PATCH 110/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E8=BD=AC=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order.go | 3 ++- business/jxcallback/scheduler/defsch/defsch.go | 16 ++++++++++++++-- business/partner/delivery/jdeclp/waybill.go | 2 +- business/partner/purchase/jdshop/order.go | 10 ++++++++++ 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 3dfd1e7b0..a78d67dce 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -1176,6 +1176,7 @@ func TransferJdsOrder(ctx *jxcontext.Context, vendorOrderID string, storeID int) func SendJdwlForJdsOrder(ctx *jxcontext.Context, vendorOrderID string) (err error) { order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, model.VendorIDJDShop) handler := partner.DeliveryPlatformHandlers[model.VendorIDJDWL] - _, err = handler.Handler.CreateWaybill(order, 0) + waybill, err := handler.Handler.CreateWaybill(order, 0) + jdshop.CurPurchaseHandler.OrderTransfer(ctx, vendorOrderID, waybill.VendorWaybillID, false) return err } diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index a12ffdc3f..8a1efa716 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -538,9 +538,9 @@ func (s *DefScheduler) OnWaybillStatusChanged(bill *model.Waybill, isPending boo } s.updateOrderByBill(order, bill, false) s.cancelOtherWaybillsCheckOrderDeliveryFlag(savedOrderInfo, bill, partner.CancelWaybillReasonNotAcceptIntime, partner.CancelWaybillReasonStrNotAcceptIntime) - //京东商城的话,需要去把订单出库 + //京东商城的话,需要去把订单出库,如果是转移过的订单,则需要修改转移订单号 if order.VendorID == model.VendorIDJDShop { - err = jdshop.CurPurchaseHandler.OrderExport(jxcontext.AdminCtx, bill.VendorOrderID, bill.VendorWaybillID, true) + s.solutionJdsOrder(bill) } if model.IsWaybillPlatformOwn(bill) { if bill.Status == model.WaybillStatusDelivering && order.Status < model.OrderStatusEndBegin { @@ -756,6 +756,18 @@ func (s *DefScheduler) cancelOtherWaybillsCheckOrderDeliveryFlag(savedOrderInfo return err } +func (s *DefScheduler) solutionJdsOrder(bill *model.Waybill) (err error) { + //表示此订单是京东商城转移的订单,不用出库,但要去修改运单号 + if len(bill.VendorOrderID) > 12 { + if utils.Str2Int(bill.VendorOrderID[12:len(bill.VendorOrderID)]) > 1 { + err = jdshop.CurPurchaseHandler.OrderTransfer(jxcontext.AdminCtx, bill.VendorOrderID, bill.VendorWaybillID, true) + } else { + err = jdshop.CurPurchaseHandler.OrderExport(jxcontext.AdminCtx, bill.VendorOrderID, bill.VendorWaybillID, true) + } + } + return err +} + func (s *DefScheduler) cancelOtherWaybills(savedOrderInfo *WatchOrderInfo, bill2Keep *model.Waybill, cancelReasonID int, cancelReason string) (err error) { globals.SugarLogger.Debugf("cancelOtherWaybills, orderID:%s, bill:%v", savedOrderInfo.order.VendorOrderID, bill2Keep) for _, v := range savedOrderInfo.waybills { diff --git a/business/partner/delivery/jdeclp/waybill.go b/business/partner/delivery/jdeclp/waybill.go index 8887cd55a..0a86dae61 100644 --- a/business/partner/delivery/jdeclp/waybill.go +++ b/business/partner/delivery/jdeclp/waybill.go @@ -76,7 +76,7 @@ func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee DeliveryFlag: model.OrderDeliveryFlagMaskScheduleDisabled, } dao.CreateEntity(dao.GetDB(), waybill) - return bill, err + return waybill, err } func (c *DeliveryHandler) CancelWaybill(bill *model.Waybill, cancelReasonID int, cancelReason string) (err error) { err = api.JdEclpAPI.CancelWayBill(&jdeclpapi.CancelWayBillParam{ diff --git a/business/partner/purchase/jdshop/order.go b/business/partner/purchase/jdshop/order.go index 2c2c08bd0..ec03a1324 100644 --- a/business/partner/purchase/jdshop/order.go +++ b/business/partner/purchase/jdshop/order.go @@ -143,3 +143,13 @@ func (p *PurchaseHandler) OrderExport(ctx *jxcontext.Context, vendorOrderID, ven err = api.JdShopAPI.OrderShipment(utils.Str2Int64(vendorOrderID[:12]), companyID, vendorWaybillID) return err } + +func (p *PurchaseHandler) OrderTransfer(ctx *jxcontext.Context, vendorOrderID, vendorWaybillID string, isAuto bool) (err error) { + companyID := jdshopapi.JdsDeliveryCompany3rd + //表示是门店手动发京东 + if !isAuto { + companyID = jdshopapi.JdsDeliveryCompanyJD + } + err = api.JdShopAPI.UpdateWaybill(vendorOrderID[:12], companyID, vendorWaybillID) + return err +} From 6bdadfff62fa6cf6a2b0623f902b9d647e9fc0b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 4 Jun 2020 17:16:28 +0800 Subject: [PATCH 111/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E8=BD=AC=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/scheduler/defsch/defsch.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 8a1efa716..94c9ad097 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -761,6 +761,9 @@ func (s *DefScheduler) solutionJdsOrder(bill *model.Waybill) (err error) { if len(bill.VendorOrderID) > 12 { if utils.Str2Int(bill.VendorOrderID[12:len(bill.VendorOrderID)]) > 1 { err = jdshop.CurPurchaseHandler.OrderTransfer(jxcontext.AdminCtx, bill.VendorOrderID, bill.VendorWaybillID, true) + if err != nil { + globals.SugarLogger.Errorf("京东商城订单自动转移失败!", err) + } } else { err = jdshop.CurPurchaseHandler.OrderExport(jxcontext.AdminCtx, bill.VendorOrderID, bill.VendorWaybillID, true) } From 791d9e0d21c72feb09b7faea467085e7729416c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 4 Jun 2020 17:37:45 +0800 Subject: [PATCH 112/130] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index a78d67dce..a82544b1c 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -1023,7 +1023,8 @@ func SaveJdsOrders(ctx *jxcontext.Context, orderCreatedStart, orderCreatedEnd ti func result2Orders(ctx *jxcontext.Context, result *jdshopapi.AllOrdersResult) (orders []*model.GoodsOrder, err error) { for _, jdsOrder := range result.OrderList { - if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusWaittingPay { + //等待付款的排除 + if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusWaittingPay || jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusWaittingPayDel { continue } orderDetail, err := api.JdShopAPI.OrderDetail(utils.Int64ToStr(jdsOrder.OrderID)) From 80494da2801c80ef83f57569708c440d5be80ad1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 4 Jun 2020 17:46:03 +0800 Subject: [PATCH 113/130] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index a82544b1c..969881368 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -1014,6 +1014,7 @@ func SaveJdsOrders(ctx *jxcontext.Context, orderCreatedStart, orderCreatedEnd ti } for _, order := range orders { // partner.CurOrderManager.OnOrderNew(order, model.Order2Status(order)) + globals.SugarLogger.Debugf("SaveJdsOrders, order: [%v]", order) noticeMsg := fmt.Sprintf("京东商城新订单,订单号:[%v] ,将要发到的门店id:[%v] , 门店名:[%v]", order.VendorOrderID, order.StoreID, order.StoreName) ddmsg.SendUserMessage(dingdingapi.MsgTyeText, "DDC5657B43EE11E9A9FF525400E86DC0", "京东商城来新订单了!", noticeMsg) ddmsg.SendUserMessage(dingdingapi.MsgTyeText, "1439B3E07D3911EA881A525400E86DC0", "京东商城来新订单了!", noticeMsg) @@ -1024,7 +1025,12 @@ func SaveJdsOrders(ctx *jxcontext.Context, orderCreatedStart, orderCreatedEnd ti func result2Orders(ctx *jxcontext.Context, result *jdshopapi.AllOrdersResult) (orders []*model.GoodsOrder, err error) { for _, jdsOrder := range result.OrderList { //等待付款的排除 - if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusWaittingPay || jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusWaittingPayDel { + if jdsOrder.OrderStatus != jdshopapi.JdsOrderStatusWaittingExport && jdsOrder.OrderStatus != jdshopapi.JdsOrderStatusPause { + continue + } + //有可能是库里已经有这个订单了 + orderE, err := partner.CurOrderManager.LoadOrder(utils.Int64ToStr(jdsOrder.OrderID)+"01", model.VendorIDJDShop) + if orderE != nil { continue } orderDetail, err := api.JdShopAPI.OrderDetail(utils.Int64ToStr(jdsOrder.OrderID)) From 3e887d949aec0ebb5810522fd789d08fad96a028 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 4 Jun 2020 18:01:12 +0800 Subject: [PATCH 114/130] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E8=B0=83=E8=AF=95?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 969881368..3ea7c1fbb 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -1014,7 +1014,7 @@ func SaveJdsOrders(ctx *jxcontext.Context, orderCreatedStart, orderCreatedEnd ti } for _, order := range orders { // partner.CurOrderManager.OnOrderNew(order, model.Order2Status(order)) - globals.SugarLogger.Debugf("SaveJdsOrders, order: [%v]", order) + globals.SugarLogger.Debugf("SaveJdsOrders, order: [%v]", utils.Format4Output(order, false)) noticeMsg := fmt.Sprintf("京东商城新订单,订单号:[%v] ,将要发到的门店id:[%v] , 门店名:[%v]", order.VendorOrderID, order.StoreID, order.StoreName) ddmsg.SendUserMessage(dingdingapi.MsgTyeText, "DDC5657B43EE11E9A9FF525400E86DC0", "京东商城来新订单了!", noticeMsg) ddmsg.SendUserMessage(dingdingapi.MsgTyeText, "1439B3E07D3911EA881A525400E86DC0", "京东商城来新订单了!", noticeMsg) From c3d553473590cc3c4ee8ef79f274050f6f1afbbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 4 Jun 2020 18:21:58 +0800 Subject: [PATCH 115/130] =?UTF-8?q?=E9=94=99=E5=BC=80=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sync.go | 45 ++++++++++++----------------------- business/jxstore/misc/misc.go | 14 +++++++++-- 2 files changed, 27 insertions(+), 32 deletions(-) diff --git a/business/jxstore/cms/sync.go b/business/jxstore/cms/sync.go index 5bd661a85..bde6e4312 100644 --- a/business/jxstore/cms/sync.go +++ b/business/jxstore/cms/sync.go @@ -1101,7 +1101,7 @@ func (v *VendorSync) SyncJdsStoresSkus(ctx *jxcontext.Context, storeIDs []int, i func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { storeMap := batchItemList[0].(*model.StoreMap) if storeMap.Status > model.StoreStatusDisabled && storeMap.StoreID != model.JdShopMainStoreID && storeMap.SyncRule != 0 { - _, err = syncJdsStoresSkus(ctx, db, task, storeMap, isAsync, isContinueWhenError) + err = syncJdsStoresSkus(ctx, db, task, storeMap, isAsync, isContinueWhenError) } return nil, err }, loopMapInfo.StoreMapList) @@ -1113,7 +1113,7 @@ func (v *VendorSync) SyncJdsStoresSkus(ctx *jxcontext.Context, storeIDs []int, i return hint, err } -func syncJdsStoresSkus(ctx *jxcontext.Context, db *dao.DaoDB, parentTask tasksch.ITask, storeMap *model.StoreMap, isAsync, isContinueWhenError bool) (hint string, err error) { +func syncJdsStoresSkus(ctx *jxcontext.Context, db *dao.DaoDB, parentTask tasksch.ITask, storeMap *model.StoreMap, isAsync, isContinueWhenError bool) (err error) { var ( mainSkusMap = make(map[int]*model.StoreSkuBind) skusMap = make(map[int]*model.StoreSkuBind) @@ -1140,35 +1140,20 @@ func syncJdsStoresSkus(ctx *jxcontext.Context, db *dao.DaoDB, parentTask tasksch } } } - task := tasksch.NewParallelTask("正在同步京东商城的库存商品", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx, - func(ptTask *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { - step := batchItemList[0].(int) - switch step { - case 0: - if len(updateList) > 0 { - for _, v := range updateList { - skuBindInfos1 = append(skuBindInfos1, buildStoreSkuBindInfo(db, storeMap.StoreID, v, false)) - } - hint, err = UpdateStoresSkusByBind(ctx, ptTask, skuBindInfos1, isAsync, isContinueWhenError, false) - } - case 1: - if len(addList) > 0 { - for _, v := range addList { - skuBindInfos2 = append(skuBindInfos2, buildStoreSkuBindInfo(db, storeMap.StoreID, v, false)) - } - hint, err = UpdateStoresSkusByBind(ctx, ptTask, skuBindInfos2, isAsync, isContinueWhenError, false) - } - } - return retVal, err - }, []int{0, 1}) - tasksch.HandleTask(task, parentTask, true).Run() - if isAsync { - hint = task.GetID() - } else { - _, err = task.GetResult(0) - hint = "1" + if len(updateList) > 0 { + for _, v := range updateList { + skuBindInfos1 = append(skuBindInfos1, buildStoreSkuBindInfo(db, storeMap.StoreID, v, false)) + } + _, err = UpdateStoresSkusByBind(ctx, parentTask, skuBindInfos1, isAsync, isContinueWhenError, false) } - return hint, err + + if len(addList) > 0 { + for _, v := range addList { + skuBindInfos2 = append(skuBindInfos2, buildStoreSkuBindInfo(db, storeMap.StoreID, v, false)) + } + _, err = UpdateStoresSkusByBind(ctx, parentTask, skuBindInfos2, isAsync, isContinueWhenError, false) + } + return err } func buildStoreSkuBindInfo(db *dao.DaoDB, storeID int, storeBind *model.StoreSkuBind, isFocus bool) (skuBindInfo *StoreSkuBindInfo) { diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index e312c4f8a..ca3e6c3c7 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -45,6 +45,9 @@ var ( dailyWorkTimeList = []string{ "22:00:00", } + dailyWorkTimeList2 = []string{ + "23:00:00", + } priceReferTimeList = []string{ "01:00:00", } @@ -158,6 +161,8 @@ func Init() { if globals.IsProductEnv() { ScheduleTimerFunc("doDailyWork", doDailyWork, dailyWorkTimeList) + ScheduleTimerFunc("doDailyWork2", doDailyWork2, dailyWorkTimeList2) + ScheduleTimerFuncByInterval(func() { orderman.SaveJdsOrders(jxcontext.AdminCtx, time.Now().Add(-5*time.Minute), time.Now()) }, 5*time.Second, 5*time.Minute) @@ -375,6 +380,13 @@ func syncStoreSku() { tasksch.HandleTask(task, nil, true).Run() } +func doDailyWork2() { + globals.SugarLogger.Debug("doDailyWork2") + + //同步京东商城门店库存和商品 + cms.CurVendorSync.SyncJdsStoresSkus(jxcontext.AdminCtx, nil, true, true) +} + func doDailyWork() { globals.SugarLogger.Debug("doDailyWork") @@ -405,8 +417,6 @@ func doDailyWork() { cms.CurVendorSync.SyncStoreSkusFromYb(jxcontext.AdminCtx, nil, true, true) //刷新京东商城订单结算价 orderman.RefreshJdShopOrdersEarningPrice(jxcontext.AdminCtx, time.Now().AddDate(0, 0, -3).Format("20060102"), time.Now().Format("20060102")) - //同步京东商城门店库存和商品 - cms.CurVendorSync.SyncJdsStoresSkus(jxcontext.AdminCtx, nil, true, true) //同步上架京东商城待售商品 cms.RefreshJdsSkusStatus(jxcontext.AdminCtx) } From f510dd1c7cff58cad1af625085ce7ef10bf1c190 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Thu, 4 Jun 2020 18:28:23 +0800 Subject: [PATCH 116/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/misc/misc.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index ca3e6c3c7..c4fd985a1 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -164,7 +164,7 @@ func Init() { ScheduleTimerFunc("doDailyWork2", doDailyWork2, dailyWorkTimeList2) ScheduleTimerFuncByInterval(func() { - orderman.SaveJdsOrders(jxcontext.AdminCtx, time.Now().Add(-5*time.Minute), time.Now()) + orderman.SaveJdsOrders(jxcontext.AdminCtx, time.Now().Add(-10*time.Minute), time.Now()) }, 5*time.Second, 5*time.Minute) ScheduleTimerFuncByInterval(func() { From d865b43e963495d6006d23bbeb8d079a96fc0b32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 5 Jun 2020 08:35:55 +0800 Subject: [PATCH 117/130] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E4=BA=AC=E4=B8=9C?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E9=97=B4=E9=9A=94=E6=94=B9=E4=B8=80=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/misc/misc.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index c4fd985a1..44b1251bb 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -164,8 +164,8 @@ func Init() { ScheduleTimerFunc("doDailyWork2", doDailyWork2, dailyWorkTimeList2) ScheduleTimerFuncByInterval(func() { - orderman.SaveJdsOrders(jxcontext.AdminCtx, time.Now().Add(-10*time.Minute), time.Now()) - }, 5*time.Second, 5*time.Minute) + orderman.SaveJdsOrders(jxcontext.AdminCtx, time.Now().Add(-15*time.Minute), time.Now()) + }, 5*time.Second, 10*time.Minute) ScheduleTimerFuncByInterval(func() { RefreshRealMobile(jxcontext.AdminCtx, model.VendorIDEBAI, time.Now().Add(-24*time.Hour), utils.DefaultTimeValue, false, true) From dd606890093f9ec28d1003be7863d8ccac2abb8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 5 Jun 2020 08:55:01 +0800 Subject: [PATCH 118/130] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E4=BA=AC=E4=B8=9C?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E9=97=B4=E9=9A=94=E6=94=B9=E4=B8=80=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/misc/misc.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/jxstore/misc/misc.go b/business/jxstore/misc/misc.go index 44b1251bb..88538c5e4 100644 --- a/business/jxstore/misc/misc.go +++ b/business/jxstore/misc/misc.go @@ -165,7 +165,7 @@ func Init() { ScheduleTimerFuncByInterval(func() { orderman.SaveJdsOrders(jxcontext.AdminCtx, time.Now().Add(-15*time.Minute), time.Now()) - }, 5*time.Second, 10*time.Minute) + }, 10*time.Second, 10*time.Minute) ScheduleTimerFuncByInterval(func() { RefreshRealMobile(jxcontext.AdminCtx, model.VendorIDEBAI, time.Now().Add(-24*time.Hour), utils.DefaultTimeValue, false, true) From eb71787c70df7cd7d7c4286789a4349d137ad95f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 5 Jun 2020 09:48:16 +0800 Subject: [PATCH 119/130] =?UTF-8?q?=E4=B8=8D=E7=94=A8=E8=A1=A5=E6=94=B9?= =?UTF-8?q?=E4=BB=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order.go | 28 +++++++++++++++++++++++++-- business/jxstore/cms/store_sku.go | 12 ++++++++++++ business/jxstore/tempop/tempop.go | 6 ++++-- controllers/cms_store_sku.go | 21 ++++++++++++++++++++ routers/commentsRouter_controllers.go | 9 +++++++++ 5 files changed, 72 insertions(+), 4 deletions(-) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 3ea7c1fbb..deca4febc 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -1181,9 +1181,33 @@ func TransferJdsOrder(ctx *jxcontext.Context, vendorOrderID string, storeID int) } func SendJdwlForJdsOrder(ctx *jxcontext.Context, vendorOrderID string) (err error) { + db := dao.GetDB() order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, model.VendorIDJDShop) + if order == nil || err != nil { + return fmt.Errorf("目前只支持京狗订单创建!") + } + if order.Status >= model.OrderStatusDelivering { + return fmt.Errorf("订单当前状态不支持创建!") + } + waybill := &model.Waybill{} + waybills, err := dao.GetWaybills(db, vendorOrderID) + if err != nil { + return err + } + if len(waybills) > 0 { + for _, v := range waybills { + if v.Status != model.WaybillStatusCanceled { + waybill = v + } + } + handler := partner.DeliveryPlatformHandlers[waybill.WaybillVendorID] + err = handler.Handler.CancelWaybill(waybill, 0, "订单已发送其他物流") + if err != nil { + return err + } + } handler := partner.DeliveryPlatformHandlers[model.VendorIDJDWL] - waybill, err := handler.Handler.CreateWaybill(order, 0) - jdshop.CurPurchaseHandler.OrderTransfer(ctx, vendorOrderID, waybill.VendorWaybillID, false) + waybill2, err := handler.Handler.CreateWaybill(order, 0) + jdshop.CurPurchaseHandler.OrderExport(ctx, vendorOrderID, waybill2.VendorWaybillID, false) return err } diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 58c271b01..5346350c2 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -863,6 +863,18 @@ func UpdateStoresSkus(ctx *jxcontext.Context, causeFlag int, storeIDs []int, sku return hint, err } +func UpdateStoresSkusWithoutSync(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*StoreSkuBindInfo) (err error) { + db := dao.GetDB() + if len(storeIDs) == 0 { + stores, _ := dao.GetStoreList(db, nil, nil, nil, nil, "") + for _, v := range stores { + storeIDs = append(storeIDs, v.ID) + } + } + updateStoresSkusWithoutSync(ctx, db, storeIDs, skuBindInfos, false) + return err +} + func UpdateStoresSkusByBind(ctx *jxcontext.Context, parentTask tasksch.ITask, skuBindInfos []*StoreSkuBindInfo, isAsync, isContinueWhenError, isFos bool) (hint string, err error) { // if len(skuBindInfos) > maxStoreNameBind { // return "", fmt.Errorf("门店商品信息大于%d", maxStoreNameBind) diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index 76473e3bb..b85d98af9 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -1630,6 +1630,7 @@ func RefreshJXPriceChange(ctx *jxcontext.Context, storeID int) (hint string, err SELECT * FROM store WHERE deleted_at = ? AND status <> ? + AND id <> 100118 AND id <> 100274 AND id <> 100205 ` sqlParams := []interface{}{utils.DefaultTimeValue, model.StoreStatusDisabled} if storeID != 0 { @@ -1668,13 +1669,14 @@ func RefreshJXPriceChange(ctx *jxcontext.Context, storeID int) (hint string, err for _, v := range storeSkus { skuAndName, _ := dao.GetSkus(db, []int{v.SkuID}, nil, nil, nil, nil) skuBindInfo := &cms.StoreSkuBindInfo{ - StoreID: store.ID, + // StoreID: store.ID, NameID: skuAndName[0].NameID, UnitPrice: v.UnitPrice * store.PayPercentage / 100, } skuBindInfos = append(skuBindInfos, skuBindInfo) } - cms.UpdateStoresSkusByBind(ctx, task, skuBindInfos, isAsync, isContinueWhenError, false) + // cms.UpdateStoresSkusByBind(ctx, task, skuBindInfos, isAsync, isContinueWhenError, false) + cms.UpdateStoresSkusWithoutSync(ctx, []int{store.ID}, skuBindInfos) store.PayPercentage = 100 dao.UpdateEntity(db, store, "PayPercentage") return retVal, err diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index a25d83f72..fa1794177 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -233,6 +233,27 @@ func (c *StoreSkuController) UpdateStoresSkus() { }) } +// @Title 批量修改多商家商品绑定(不同步) +// @Description 批量修改多商家商品绑定(不同步) +// @Param token header string true "认证token" +// @Param storeIDs formData string true "门店ID列表" +// @Param payload formData string true "json数据,StoreSkuBindInfo对象数组" +// @Param isRefreshHigh formData bool true "是否只刷门店价高于给的价" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /UpdateStoresSkusWithoutSync [put] +func (c *StoreSkuController) UpdateStoresSkusWithoutSync() { + c.callUpdateStoresSkusWithoutSync(func(params *tStoreSkuUpdateStoresSkusWithoutSyncParams) (retVal interface{}, errCode string, err error) { + var storeIDs []int + var skuBindInfos []*cms.StoreSkuBindInfo + if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs, params.Payload, &skuBindInfos); err != nil { + return retVal, "", err + } + err = cms.UpdateStoresSkusWithoutSync(params.Ctx, storeIDs, skuBindInfos) + return retVal, "", err + }) +} + // @Title 按门店商品维度批量修改多商家商品绑定 // @Description 按门店商品维度批量修改多商家商品绑定 // @Param token header string true "认证token" diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 4cf9a19d1..a94561d7f 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -2205,6 +2205,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"], + beego.ControllerComments{ + Method: "UpdateStoresSkusWithoutSync", + Router: `/UpdateStoresSkusWithoutSync`, + AllowHTTPMethods: []string{"put"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SyncController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SyncController"], beego.ControllerComments{ Method: "AddCreateFlagForJxStoreSku", From 244dd71de08f7dedec2e61e59d9d81a7a70519c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 5 Jun 2020 10:08:19 +0800 Subject: [PATCH 120/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=95=B0=E6=8D=AE=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index deca4febc..e0439b2c0 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -1107,6 +1107,15 @@ func result2Orders(ctx *jxcontext.Context, result *jdshopapi.AllOrdersResult) (o VendorPrice: jxutils.StandardPrice2Int(v.JdPrice), SalePrice: jxutils.StandardPrice2Int(v.JdPrice), } + var storeSku *model.StoreSkuBind + sql := ` + SELECT * FROM store_sku_bind WHERE store_id = ? AND jds_id = ? AND deleted_at = ? + ` + sqlParams := []interface{}{model.JdShopMainStoreID, v.SkuID, utils.DefaultTimeValue} + err = dao.GetRow(dao.GetDB(), &storeSku, sql, sqlParams) + if storeSku != nil { + sku.SkuID = storeSku.SkuID + } _, _, _, specUnit, _, specQuality := jxutils.SplitSkuName(v.SkuName) sku.Weight = jxutils.FormatSkuWeight(specQuality, specUnit) order.Skus = append(order.Skus, sku) From 47cdfe835e45619d34702194c55021f4945728fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 5 Jun 2020 10:10:30 +0800 Subject: [PATCH 121/130] =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/cms_store_sku.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index fa1794177..025805350 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -236,7 +236,7 @@ func (c *StoreSkuController) UpdateStoresSkus() { // @Title 批量修改多商家商品绑定(不同步) // @Description 批量修改多商家商品绑定(不同步) // @Param token header string true "认证token" -// @Param storeIDs formData string true "门店ID列表" +// @Param storeIDs formData string false "门店ID列表" // @Param payload formData string true "json数据,StoreSkuBindInfo对象数组" // @Param isRefreshHigh formData bool true "是否只刷门店价高于给的价" // @Success 200 {object} controllers.CallResult From bdddda508c4ef982c6d930cb33c292453cbcfc60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 5 Jun 2020 10:29:07 +0800 Subject: [PATCH 122/130] =?UTF-8?q?=E9=97=A8=E5=BA=97=E5=95=86=E5=93=81?= =?UTF-8?q?=E6=A0=87=E5=BF=97=EF=BC=8C=E5=8F=AA=E5=88=B7=E9=AB=98=E4=BB=B7?= =?UTF-8?q?=E7=9A=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 48 +++++++++++++++++------------ business/jxstore/cms/sync.go | 4 +-- business/jxstore/tempop/tempop.go | 2 +- business/jxstore/yonghui/yonghui.go | 2 +- controllers/cms_store_sku.go | 5 +-- 5 files changed, 36 insertions(+), 25 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 5346350c2..eb46d94c1 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -838,16 +838,16 @@ func UpdateStoreSku(ctx *jxcontext.Context, causeFlag, storeID int, skuBindInfo } func UpdateStoreSkus(ctx *jxcontext.Context, causeFlag, storeID int, skuBindInfos []*StoreSkuBindInfo, isAsync, isContinueWhenError bool) (hint string, err error) { - return UpdateStoresSkus(ctx, causeFlag, []int{storeID}, skuBindInfos, false, isAsync, isContinueWhenError) + return UpdateStoresSkus(ctx, causeFlag, []int{storeID}, skuBindInfos, false, false, isAsync, isContinueWhenError) } -func UpdateStoresSkus(ctx *jxcontext.Context, causeFlag int, storeIDs []int, skuBindInfos []*StoreSkuBindInfo, isScale, isAsync, isContinueWhenError bool) (hint string, err error) { +func UpdateStoresSkus(ctx *jxcontext.Context, causeFlag int, storeIDs []int, skuBindInfos []*StoreSkuBindInfo, isScale, isRefreshHigh, isAsync, isContinueWhenError bool) (hint string, err error) { globals.SugarLogger.Debugf("UpdateStoresSkus:%s, storeIDs:%v, skuBindInfos:%s", ctx.GetTrackInfo(), storeIDs, utils.Format4Output(skuBindInfos, true)) flag, err := doStoreSkuAudit(ctx, storeIDs, skuBindInfos) if !flag { var num int64 db := dao.GetDB() - skuIDs, err := updateStoresSkusWithoutSync(ctx, db, storeIDs, skuBindInfos, isScale) + skuIDs, err := updateStoresSkusWithoutSync(ctx, db, storeIDs, skuBindInfos, isScale, isRefreshHigh) if err != nil { return "", err } @@ -863,7 +863,7 @@ func UpdateStoresSkus(ctx *jxcontext.Context, causeFlag int, storeIDs []int, sku return hint, err } -func UpdateStoresSkusWithoutSync(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*StoreSkuBindInfo) (err error) { +func UpdateStoresSkusWithoutSync(ctx *jxcontext.Context, storeIDs []int, skuBindInfos []*StoreSkuBindInfo, isRefreshHigh bool) (err error) { db := dao.GetDB() if len(storeIDs) == 0 { stores, _ := dao.GetStoreList(db, nil, nil, nil, nil, "") @@ -871,7 +871,7 @@ func UpdateStoresSkusWithoutSync(ctx *jxcontext.Context, storeIDs []int, skuBind storeIDs = append(storeIDs, v.ID) } } - updateStoresSkusWithoutSync(ctx, db, storeIDs, skuBindInfos, false) + updateStoresSkusWithoutSync(ctx, db, storeIDs, skuBindInfos, false, isRefreshHigh) return err } @@ -900,7 +900,7 @@ func UpdateStoresSkusByBind(ctx *jxcontext.Context, parentTask tasksch.ITask, sk // } // }() for _, storeID := range storeIDs { - skuIDs, err2 := updateStoresSkusWithoutSync(ctx, db, []int{storeID}, skuBindInfosMap[storeID], false) + skuIDs, err2 := updateStoresSkusWithoutSync(ctx, db, []int{storeID}, skuBindInfosMap[storeID], false, false) if err = err2; err != nil { // dao.Rollback(db) return "", err @@ -980,7 +980,7 @@ func uniqueStoreNameBind(skuBindInfos []*StoreSkuBindInfo) (outSkuBindInfos []*S return outSkuBindInfos } -func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs []int, skuBindInfos []*StoreSkuBindInfo, isScale bool) (needSyncSkus []int, err error) { +func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs []int, skuBindInfos []*StoreSkuBindInfo, isScale, isRefreshHigh bool) (needSyncSkus []int, err error) { // if len(storeIDs)*len(skuBindInfos) > maxStoreNameBind2 { // return nil, fmt.Errorf("门店商品信息大于%d", maxStoreNameBind2) // } @@ -1194,11 +1194,21 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs setStoreSkuBindStatus(skuBind, model.SyncFlagPriceMask) updateFieldMap["Price"] = 1 } - skuBind.UnitPrice = unitPrice - skuBind.Price = price - skuBind.JxPrice = jxPrice - updateFieldMap["UnitPrice"] = 1 - updateFieldMap["JxPrice"] = 1 + if isRefreshHigh { + if beforeMsg.UnitPrice > skuBindInfo.UnitPrice { + skuBind.UnitPrice = unitPrice + skuBind.Price = price + skuBind.JxPrice = jxPrice + updateFieldMap["UnitPrice"] = 1 + updateFieldMap["JxPrice"] = 1 + } + } else { + skuBind.UnitPrice = unitPrice + skuBind.Price = price + skuBind.JxPrice = jxPrice + updateFieldMap["UnitPrice"] = 1 + updateFieldMap["JxPrice"] = 1 + } } } if skuBindInfo.StatusSaleBegin != 0 && skuBindInfo.StatusSaleEnd != 0 { @@ -1877,7 +1887,7 @@ func AcceptStoreOpRequests(ctx *jxcontext.Context, reqIDs []int) (err error) { } } if err2 == nil { - _, err2 := UpdateStoresSkus(ctx, 0, []int{op.StoreID}, []*StoreSkuBindInfo{skuBindInfo}, false, false, false) + _, err2 := UpdateStoresSkus(ctx, 0, []int{op.StoreID}, []*StoreSkuBindInfo{skuBindInfo}, false, false, false, false) isLocalSucess := true if err2 != nil { subErrors[reqID] = err2 @@ -2596,7 +2606,7 @@ func RefershStoreSkusMidPrice(ctx *jxcontext.Context, storeIDs []int, isCountry } } } - updateStoresSkusWithoutSync(ctx, db, []int{v}, skuBindInfos, false) + updateStoresSkusWithoutSync(ctx, db, []int{v}, skuBindInfos, false, false) } if err == nil { CreateStorePriceScore(ctx) @@ -2738,7 +2748,7 @@ func RefreshJxPriceByExcelBin(ctx *jxcontext.Context, storeIDs []int, reader io. skuBindInfoList = append(skuBindInfoList, v.(*StoreSkuBindInfo)) } if isErr { - UpdateStoresSkus(ctx, 0, storeIDs, skuBindInfoList, false, isAsync, isContinueWhenError) + UpdateStoresSkus(ctx, 0, storeIDs, skuBindInfoList, false, false, isAsync, isContinueWhenError) } case 3: //写Excel @@ -3398,7 +3408,7 @@ func AutoFocusStoreSkusWithoutFocus(ctx *jxcontext.Context, skuIDs []int, isSync if isSync { UpdateStoreSkus(ctx, 0, v.StoreID, skuBindInfoList, true, true) } else { - updateStoresSkusWithoutSync(ctx, db, []int{v.StoreID}, skuBindInfoList, false) + updateStoresSkusWithoutSync(ctx, db, []int{v.StoreID}, skuBindInfoList, false, false) } } return err @@ -4102,7 +4112,7 @@ func RefreshMatterStock(ctx *jxcontext.Context, skuID int) (err error) { } } //物料店666666 - updateStoresSkusWithoutSync(ctx, db, []int{666666}, skuBindInfos, false) + updateStoresSkusWithoutSync(ctx, db, []int{666666}, skuBindInfos, false, false) return err } @@ -4450,7 +4460,7 @@ func focusC4Matters(ctx *jxcontext.Context, db *dao.DaoDB, v *model.Sku) (err er } skuBindInfos = append(skuBindInfos, skuBindInfo) } - updateStoresSkusWithoutSync(ctx, db, []int{model.MatterStoreID}, skuBindInfos, false) + updateStoresSkusWithoutSync(ctx, db, []int{model.MatterStoreID}, skuBindInfos, false, false) } return err } @@ -4609,7 +4619,7 @@ func StoreSkuPriceAudit(ctx *jxcontext.Context, storeSkuAudits []*model.StoreSku } var num int64 db := dao.GetDB() - skuIDs, err := updateStoresSkusWithoutSync(ctx, db, []int{storeAudit.StoreID}, skuBindInfos, false) + skuIDs, err := updateStoresSkusWithoutSync(ctx, db, []int{storeAudit.StoreID}, skuBindInfos, false, false) if err != nil { return "", err } diff --git a/business/jxstore/cms/sync.go b/business/jxstore/cms/sync.go index bde6e4312..e85044885 100644 --- a/business/jxstore/cms/sync.go +++ b/business/jxstore/cms/sync.go @@ -1028,7 +1028,7 @@ func syncStoreSkusFromYb(ctx *jxcontext.Context, storeID, vendorID int, vendorSt for _, v := range resultDel { skuBindInfosDel = append(skuBindInfosDel, v.(*StoreSkuBindInfo)) } - _, err = updateStoresSkusWithoutSync(ctx, db, []int{storeID}, skuBindInfosDel, false) + _, err = updateStoresSkusWithoutSync(ctx, db, []int{storeID}, skuBindInfosDel, false, false) } case 2: if len(updateList) > 0 { @@ -1071,7 +1071,7 @@ func syncStoreSkusFromYb(ctx *jxcontext.Context, storeID, vendorID int, vendorSt for _, v := range resultUpt { skuBindInfosUpt = append(skuBindInfosUpt, v.(*StoreSkuBindInfo)) } - _, err = updateStoresSkusWithoutSync(ctx, db, []int{storeID}, skuBindInfosUpt, false) + _, err = updateStoresSkusWithoutSync(ctx, db, []int{storeID}, skuBindInfosUpt, false, false) } case 3: _, err = CurVendorSync.SyncStoresSkus2(jxcontext.AdminCtx, nil, 0, db, []int{0, 1, 3}, nil, false, nil, nil, 0, true, true) diff --git a/business/jxstore/tempop/tempop.go b/business/jxstore/tempop/tempop.go index b85d98af9..59bd8017c 100644 --- a/business/jxstore/tempop/tempop.go +++ b/business/jxstore/tempop/tempop.go @@ -1676,7 +1676,7 @@ func RefreshJXPriceChange(ctx *jxcontext.Context, storeID int) (hint string, err skuBindInfos = append(skuBindInfos, skuBindInfo) } // cms.UpdateStoresSkusByBind(ctx, task, skuBindInfos, isAsync, isContinueWhenError, false) - cms.UpdateStoresSkusWithoutSync(ctx, []int{store.ID}, skuBindInfos) + cms.UpdateStoresSkusWithoutSync(ctx, []int{store.ID}, skuBindInfos, false) store.PayPercentage = 100 dao.UpdateEntity(db, store, "PayPercentage") return retVal, err diff --git a/business/jxstore/yonghui/yonghui.go b/business/jxstore/yonghui/yonghui.go index a56207879..38cbb183d 100644 --- a/business/jxstore/yonghui/yonghui.go +++ b/business/jxstore/yonghui/yonghui.go @@ -851,7 +851,7 @@ func UpdateJxPriceByWeimob(ctx *jxcontext.Context, storeIDs []int, isAsync, isCo for _, v := range storeSkuBindInfoList { skuBindInfos = append(skuBindInfos, v.(*cms.StoreSkuBindInfo)) } - cms.UpdateStoresSkus(ctx, 0, storeIDs, skuBindInfos, false, isAsync, isContinueWhenError) + cms.UpdateStoresSkus(ctx, 0, storeIDs, skuBindInfos, false, false, isAsync, isContinueWhenError) case 2: WriteToExcel3(task, dataStoreSkusSuccess.dataStoreSkusSuccessList, dataFailed.dataFailedList) } diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index 025805350..53c0fe180 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -216,6 +216,7 @@ func (c *StoreSkuController) SyncStoresSkus() { // @Param payload formData string true "json数据,StoreSkuBindInfo对象数组" // @Param isScale formData bool false "是否按门店结算比例缩放" // @Param causeFlag formData int false "操作类型" +// @Param isRefreshHigh formData bool true "是否只刷门店价高于给的价" // @Param isContinueWhenError formData bool false "单个同步失败是否继续,缺省false" // @Param isAsync formData bool false "是否异步操作" // @Success 200 {object} controllers.CallResult @@ -228,7 +229,7 @@ func (c *StoreSkuController) UpdateStoresSkus() { if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs, params.Payload, &skuBindInfos); err != nil { return retVal, "", err } - retVal, err = cms.UpdateStoresSkus(params.Ctx, params.CauseFlag, storeIDs, skuBindInfos, params.IsScale, params.IsAsync, params.IsContinueWhenError) + retVal, err = cms.UpdateStoresSkus(params.Ctx, params.CauseFlag, storeIDs, skuBindInfos, params.IsScale, params.IsRefreshHigh, params.IsAsync, params.IsContinueWhenError) return retVal, "", err }) } @@ -249,7 +250,7 @@ func (c *StoreSkuController) UpdateStoresSkusWithoutSync() { if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs, params.Payload, &skuBindInfos); err != nil { return retVal, "", err } - err = cms.UpdateStoresSkusWithoutSync(params.Ctx, storeIDs, skuBindInfos) + err = cms.UpdateStoresSkusWithoutSync(params.Ctx, storeIDs, skuBindInfos, params.IsRefreshHigh) return retVal, "", err }) } From 6952ca3bf0f6287336503e2931d905481a8e4c93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 5 Jun 2020 11:03:24 +0800 Subject: [PATCH 123/130] =?UTF-8?q?=E5=95=86=E5=93=81=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=80=BB=E5=BA=93=E5=AD=98=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/sku.go | 3 ++- business/partner/purchase/jdshop/order.go | 28 +++++++++++++++++++++-- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/business/model/sku.go b/business/model/sku.go index 25c31e894..6d1a8e8fb 100644 --- a/business/model/sku.go +++ b/business/model/sku.go @@ -184,7 +184,8 @@ type SkuName struct { // JdSyncStatus int8 `orm:"default(2)" json:"jdSyncStatus"` // LinkID int `orm:"column(link_id);null;index" json:"linkID"` - YbNameSuffix string `json:"ybNameSuffix"` //银豹商品后缀 + YbNameSuffix string `json:"ybNameSuffix"` //银豹商品后缀 + JdsStockSwitch int8 `orm:"default(1)" json:"jdsStockSwitch"` } func (*SkuName) TableUnique() [][]string { diff --git a/business/partner/purchase/jdshop/order.go b/business/partner/purchase/jdshop/order.go index ec03a1324..7b37f7363 100644 --- a/business/partner/purchase/jdshop/order.go +++ b/business/partner/purchase/jdshop/order.go @@ -41,7 +41,12 @@ func (p *PurchaseHandler) GetOrder(vendorOrgCode, vendorOrderID string) (order * return p.Map2Order(utils.Struct2FlatMap(resultOrders)), err } func (p *PurchaseHandler) GetOrderStatus(vendorOrgCode, vendorOrderID string) (status int, err error) { - return status, err + orderResult, err := api.JdShopAPI.AllOrders(&jdshopapi.AllOrdersParam{ + OrderID: vendorOrderID, + Current: 1, + PageSize: 1, + }) + return status2Jxstatus(orderResult.OrderList[0].OrderStatus), err } func (p *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptIt bool, userName string) (err error) { @@ -54,7 +59,13 @@ func (p *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI return ChangeOrderStatus(order.VendorOrderID, status, "") } func (p *PurchaseHandler) PickupGoods(order *model.GoodsOrder, isSelfDelivery bool, userName string) (err error) { - err = ChangeOrderStatus(order.VendorOrderID, model.OrderStatusFinishedPickup, "") + status, err := p.GetOrderStatus("", order.VendorOrderID2) + //说明此时该订单在平台上已经取消了 + if status == model.OrderStatusApplyCancel { + err = ChangeOrderStatus(order.VendorOrderID, model.OrderStatusFinishedPickup, "自动拣货完成") + } else { + err = ChangeOrderStatus(order.VendorOrderID, model.OrderStatusCanceled, "订单状态发生了改变") + } return err } @@ -153,3 +164,16 @@ func (p *PurchaseHandler) OrderTransfer(ctx *jxcontext.Context, vendorOrderID, v err = api.JdShopAPI.UpdateWaybill(vendorOrderID[:12], companyID, vendorWaybillID) return err } + +func status2Jxstatus(status int) (statusJx int) { + if status == jdshopapi.JdsOrderStatusWaittingPay { + statusJx = model.OrderStatusWait4Pay + } else if status == jdshopapi.JdsOrderStatusWaittingPayDel { + statusJx = model.OrderStatusApplyCancel + } else if status == jdshopapi.JdsOrderStatusWaittingExport { + statusJx = model.OrderStatusAccepted + } else if status == jdshopapi.JdsOrderStatusPause { + statusJx = model.OrderStatusNew + } + return statusJx +} From f8ba1b1a827c4f0f4060d5fb972e5bf4abd7ae93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 5 Jun 2020 11:08:19 +0800 Subject: [PATCH 124/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxcallback/orderman/order.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index e0439b2c0..b8254c1d3 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -1008,10 +1008,13 @@ func SaveJdsOrders(ctx *jxcontext.Context, orderCreatedStart, orderCreatedEnd ti pageSize = 10 ) orderResult, err := jdshop.CurPurchaseHandler.GetJdsOrders(ctx, utils.Time2Str(orderCreatedStart), utils.Time2Str(orderCreatedEnd), pageNo, pageSize) - orders, err := result2Orders(ctx, orderResult) if err != nil { + noticeMsg := fmt.Sprintf("京东商城保存订单出错!(多半是cookie过期了),err :[%v]", err) + ddmsg.SendUserMessage(dingdingapi.MsgTyeText, "DDC5657B43EE11E9A9FF525400E86DC0", "cookie", noticeMsg) + ddmsg.SendUserMessage(dingdingapi.MsgTyeText, "1439B3E07D3911EA881A525400E86DC0", "cookie", noticeMsg) globals.SugarLogger.Errorf("SaveJdsOrders : %v", err) } + orders, err := result2Orders(ctx, orderResult) for _, order := range orders { // partner.CurOrderManager.OnOrderNew(order, model.Order2Status(order)) globals.SugarLogger.Debugf("SaveJdsOrders, order: [%v]", utils.Format4Output(order, false)) From c9ae0f1ab190f515bc87cafde77a0bdf63a87dd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 5 Jun 2020 11:18:11 +0800 Subject: [PATCH 125/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/cms_store_sku.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index 53c0fe180..0882031f8 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -216,7 +216,7 @@ func (c *StoreSkuController) SyncStoresSkus() { // @Param payload formData string true "json数据,StoreSkuBindInfo对象数组" // @Param isScale formData bool false "是否按门店结算比例缩放" // @Param causeFlag formData int false "操作类型" -// @Param isRefreshHigh formData bool true "是否只刷门店价高于给的价" +// @Param isRefreshHigh formData bool false "是否只刷门店价高于给的价" // @Param isContinueWhenError formData bool false "单个同步失败是否继续,缺省false" // @Param isAsync formData bool false "是否异步操作" // @Success 200 {object} controllers.CallResult From e7d459dfb19d316a4836e70e12e4e2990f34a9c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 5 Jun 2020 11:23:18 +0800 Subject: [PATCH 126/130] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index eb46d94c1..4732c377f 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -1194,21 +1194,21 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs setStoreSkuBindStatus(skuBind, model.SyncFlagPriceMask) updateFieldMap["Price"] = 1 } - if isRefreshHigh { - if beforeMsg.UnitPrice > skuBindInfo.UnitPrice { - skuBind.UnitPrice = unitPrice - skuBind.Price = price - skuBind.JxPrice = jxPrice - updateFieldMap["UnitPrice"] = 1 - updateFieldMap["JxPrice"] = 1 - } - } else { - skuBind.UnitPrice = unitPrice - skuBind.Price = price - skuBind.JxPrice = jxPrice - updateFieldMap["UnitPrice"] = 1 - updateFieldMap["JxPrice"] = 1 - } + // if isRefreshHigh { + // if beforeMsg.UnitPrice > skuBindInfo.UnitPrice { + skuBind.UnitPrice = unitPrice + skuBind.Price = price + skuBind.JxPrice = jxPrice + updateFieldMap["UnitPrice"] = 1 + updateFieldMap["JxPrice"] = 1 + // } + // } else { + // skuBind.UnitPrice = unitPrice + // skuBind.Price = price + // skuBind.JxPrice = jxPrice + // updateFieldMap["UnitPrice"] = 1 + // updateFieldMap["JxPrice"] = 1 + // } } } if skuBindInfo.StatusSaleBegin != 0 && skuBindInfo.StatusSaleEnd != 0 { From 2f7f996e6429d61580654d4fb99ba508cfcf7b63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 5 Jun 2020 11:33:53 +0800 Subject: [PATCH 127/130] =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 4732c377f..eb46d94c1 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -1194,21 +1194,21 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs setStoreSkuBindStatus(skuBind, model.SyncFlagPriceMask) updateFieldMap["Price"] = 1 } - // if isRefreshHigh { - // if beforeMsg.UnitPrice > skuBindInfo.UnitPrice { - skuBind.UnitPrice = unitPrice - skuBind.Price = price - skuBind.JxPrice = jxPrice - updateFieldMap["UnitPrice"] = 1 - updateFieldMap["JxPrice"] = 1 - // } - // } else { - // skuBind.UnitPrice = unitPrice - // skuBind.Price = price - // skuBind.JxPrice = jxPrice - // updateFieldMap["UnitPrice"] = 1 - // updateFieldMap["JxPrice"] = 1 - // } + if isRefreshHigh { + if beforeMsg.UnitPrice > skuBindInfo.UnitPrice { + skuBind.UnitPrice = unitPrice + skuBind.Price = price + skuBind.JxPrice = jxPrice + updateFieldMap["UnitPrice"] = 1 + updateFieldMap["JxPrice"] = 1 + } + } else { + skuBind.UnitPrice = unitPrice + skuBind.Price = price + skuBind.JxPrice = jxPrice + updateFieldMap["UnitPrice"] = 1 + updateFieldMap["JxPrice"] = 1 + } } } if skuBindInfo.StatusSaleBegin != 0 && skuBindInfo.StatusSaleEnd != 0 { From e2eec50b802487ed2ee3aa3d328c153780421626 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 5 Jun 2020 13:49:03 +0800 Subject: [PATCH 128/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sku.go | 4 +++- business/jxstore/cms/sync_store_sku.go | 13 +++++++------ business/model/dao/store_sku.go | 2 ++ business/partner/partner_store_sku.go | 13 +++++++------ business/partner/purchase/jdshop/store_sku.go | 3 +++ 5 files changed, 22 insertions(+), 13 deletions(-) diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index 43785ed80..e69a0546e 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -595,7 +595,8 @@ func GetSkuNames(ctx *jxcontext.Context, keyword string, isBySku, isQueryMidPric t1.ex_prefix, t1.ex_prefix_begin, t1.ex_prefix_end, - t1.yb_name_suffix + t1.yb_name_suffix, + t1.jds_stock_switch ` if isQueryMidPrice { sql += `, @@ -635,6 +636,7 @@ func GetSkuNames(ctx *jxcontext.Context, keyword string, isBySku, isQueryMidPric t1.ex_prefix_begin, t1.ex_prefix_end, t1.yb_name_suffix, + t1.jds_stock_switch, ` if isQueryMidPrice { sqlData += " t4.mid_unit_price," diff --git a/business/jxstore/cms/sync_store_sku.go b/business/jxstore/cms/sync_store_sku.go index 3c0d35393..d5f5786a9 100644 --- a/business/jxstore/cms/sync_store_sku.go +++ b/business/jxstore/cms/sync_store_sku.go @@ -231,12 +231,13 @@ func storeSkuSyncInfo2Bare(inSku *dao.StoreSkuSyncInfo) (outSku *partner.StoreSk NameID: inSku.NameID, VendorNameID: inSku.VendorNameID, - Status: inSku.MergedStatus, - VendorPrice: inSku.VendorPrice, - Seq: inSku.Seq, - JxPrice: inSku.Price, - JxUnitPrice: inSku.UnitPrice, - VendorSkuID2: utils.Int64ToStr(inSku.JdsWareID), + Status: inSku.MergedStatus, + VendorPrice: inSku.VendorPrice, + Seq: inSku.Seq, + JxPrice: inSku.Price, + JxUnitPrice: inSku.UnitPrice, + VendorSkuID2: utils.Int64ToStr(inSku.JdsWareID), + JdsStockSwitch: inSku.JdsStockSwitch, } if !isStoreSkuSyncNeedDelete(inSku) { outSku.Stock = model.MaxStoreSkuStockQty diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 7e0d85fbf..47b81512d 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -86,6 +86,7 @@ type StoreSkuSyncInfo struct { NameCategoryID int `orm:"column(name_category_id)"` YbNameSuffix string //银豹的商品条码后缀 YbBarCode string //银豹的商品条码 + JdsStockSwitch string // 平台相关的图片信息 Img string @@ -403,6 +404,7 @@ func GetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, mustDirty boo t1.store_id, t1.deleted_at bind_deleted_at,t1.status_sale_begin,t1.status_sale_end, t1.jds_ware_id, t2.*, t3.id name_id, t3.prefix, t3.name, t3.unit, t3.upc, t3.status name_status, t3.ex_prefix, t3.ex_prefix_begin, t3.ex_prefix_end, t3.category_id name_category_id, t3.yb_name_suffix, + t3.jds_stock_switch, IF(t11.%s <> '', t11.%s, t3.img) img, IF(t12.%s <> '', t12.%s, t3.img2) img2, IF(t13.%s <> '', t13.%s, t3.desc_img) desc_img, diff --git a/business/partner/partner_store_sku.go b/business/partner/partner_store_sku.go index 89867ba3c..46b73bdab 100644 --- a/business/partner/partner_store_sku.go +++ b/business/partner/partner_store_sku.go @@ -46,12 +46,13 @@ type StoreSkuInfo struct { Seq int `json:"seq,omitempty"` - ActPrice int64 `json:"actPrice,omitempty"` - VendorActID string `json:"vendorActID,omitempty"` - IsSpecialty int `json:"isSpecialty,omitempty"` - JxPrice int64 `json:"jxPrice,omitempty"` - JxUnitPrice int64 `json:"jxUnitPrice,omitempty"` - VendorSkuID2 string `json:"vendorSkuID2,omitempty"` + ActPrice int64 `json:"actPrice,omitempty"` + VendorActID string `json:"vendorActID,omitempty"` + IsSpecialty int `json:"isSpecialty,omitempty"` + JxPrice int64 `json:"jxPrice,omitempty"` + JxUnitPrice int64 `json:"jxUnitPrice,omitempty"` + VendorSkuID2 string `json:"vendorSkuID2,omitempty"` + JdsStockSwitch int `json:"jdsStockSwitch"` } type StoreSkuInfoWithErr struct { diff --git a/business/partner/purchase/jdshop/store_sku.go b/business/partner/purchase/jdshop/store_sku.go index da9124b68..c824cb56d 100644 --- a/business/partner/purchase/jdshop/store_sku.go +++ b/business/partner/purchase/jdshop/store_sku.go @@ -244,6 +244,9 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr stock = 9999 } if storeID == model.JdShopMainStoreID { + if v.JdsStockSwitch == model.NO { + stock = 0 + } err = api.JdShopAPI.UpdateSkuStock(utils.Str2Int(v.VendorSkuID), stock) } else { storeSkus, err2 := dao.GetStoresSkusInfo(dao.GetDB(), []int{model.JdShopMainStoreID}, []int{v.SkuID}) From 14be2a49892422c8078db781c3087132fd9cb7e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 5 Jun 2020 13:49:38 +0800 Subject: [PATCH 129/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/store_sku.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 47b81512d..404a477e4 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -86,7 +86,7 @@ type StoreSkuSyncInfo struct { NameCategoryID int `orm:"column(name_category_id)"` YbNameSuffix string //银豹的商品条码后缀 YbBarCode string //银豹的商品条码 - JdsStockSwitch string + JdsStockSwitch int // 平台相关的图片信息 Img string From 5d44d79eedff6980a4fcfad18227a20ff3ffbb95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Fri, 5 Jun 2020 14:00:22 +0800 Subject: [PATCH 130/130] =?UTF-8?q?=E4=BA=AC=E4=B8=9C=E5=95=86=E5=9F=8E?= =?UTF-8?q?=E5=95=86=E5=93=81=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sku.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/business/jxstore/cms/sku.go b/business/jxstore/cms/sku.go index e69a0546e..deac305ac 100644 --- a/business/jxstore/cms/sku.go +++ b/business/jxstore/cms/sku.go @@ -994,6 +994,12 @@ func UpdateSkuName(ctx *jxcontext.Context, nameID int, payload map[string]interf dao.Rollback(db) return 0, err } + if valid["jdsStockSwitch"] != nil { + if _, err = SetStoreSkuSyncStatus2(db, []int{model.JdShopMainStoreID}, []int{model.VendorIDJDShop}, skuIDs, model.SyncFlagSaleMask); err != nil { + dao.Rollback(db) + return 0, err + } + } } dao.Commit(db)