From 2915c41fc3d6de5c76098fe92563d6262dbd1e04 Mon Sep 17 00:00:00 2001 From: gazebo Date: Thu, 12 Dec 2019 18:02:10 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E5=8E=BB=E9=99=A4BaseTask.run=E4=B8=AD?= =?UTF-8?q?=E7=9A=84recover?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxutils/tasksch/task.go | 6 ------ 1 file changed, 6 deletions(-) diff --git a/business/jxutils/tasksch/task.go b/business/jxutils/tasksch/task.go index b9a6bb194..6cd7fce63 100644 --- a/business/jxutils/tasksch/task.go +++ b/business/jxutils/tasksch/task.go @@ -388,12 +388,6 @@ func (t *BaseTask) MarshalJSON() ([]byte, error) { func (t *BaseTask) run(taskHandler func()) { if t.GetStatus() == TaskStatusBegin { utils.CallFuncAsync(func() { - defer func() { - if r := recover(); r != nil { - globals.SugarLogger.Errorf("panic in BaseTask.run task:%s, task detail:%s, r:%v", t.Name, utils.Format4Output(t, false), r) - } - }() - taskHandler() task := t From 2ddd16460aabf29ba3398a3d2071e203b7170411 Mon Sep 17 00:00:00 2001 From: gazebo Date: Fri, 13 Dec 2019 10:47:58 +0800 Subject: [PATCH 2/8] =?UTF-8?q?GetSkusWithVendor=E4=B8=AD=E5=8F=96?= =?UTF-8?q?=E5=95=86=E5=93=81=E5=9F=8E=E5=B8=82=E7=9A=84bug=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/sync2.go | 5 +-- business/model/dao/sku.go | 64 ++++++++++++++++++++++++----------- globals/globals.go | 4 +++ 3 files changed, 51 insertions(+), 22 deletions(-) diff --git a/business/jxstore/cms/sync2.go b/business/jxstore/cms/sync2.go index 0d28c262a..10962053d 100644 --- a/business/jxstore/cms/sync2.go +++ b/business/jxstore/cms/sync2.go @@ -84,10 +84,11 @@ func syncCategories(ctx *jxcontext.Context, db *dao.DaoDB, parentTask tasksch.IT } func SyncCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorIDs []int, appOrgCodes []string, catIDs []int, isAsync bool) (hint string, err error) { - globals.SugarLogger.Debugf("SyncCategories catIDs:%v", catIDs) + globals.SugarLogger.Debugf("SyncCategories vendorIDs:%v, appOrgCodes:%v, catIDs:%v", vendorIDs, appOrgCodes, catIDs) db := dao.GetDB() catList, err := dao.GetSkuCategoryWithVendor(db, vendorIDs, appOrgCodes, -1, catIDs, true) if err == nil && len(catList) > 0 { + // TODO 同一平台不同账号会有影响needSyncParentIDs,暂不处理 var needSyncParentIDs []int for _, cat := range catList { if cat.Level == 2 && cat.ParentVendorCatID == "" { @@ -128,7 +129,7 @@ func SyncCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorIDs } func SyncSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorIDs []int, appOrgCodes []string, nameIDs, skuIDs []int, isAsync bool) (hint string, err error) { - globals.SugarLogger.Debugf("SyncSkus nameIDs:%v, skuIDs:%v", nameIDs, skuIDs) + globals.SugarLogger.Debugf("SyncSkus vendorIDs:%v, appOrgCodes:%v, nameIDs:%v, skuIDs:%v", vendorIDs, appOrgCodes, nameIDs, skuIDs) db := dao.GetDB() skuList, err := dao.GetSkusWithVendor(db, vendorIDs, appOrgCodes, nameIDs, skuIDs, true) if err == nil && len(skuList) > 0 { diff --git a/business/model/dao/sku.go b/business/model/dao/sku.go index 3edd64d28..6cf87d936 100644 --- a/business/model/dao/sku.go +++ b/business/model/dao/sku.go @@ -8,16 +8,17 @@ import ( "git.rosy.net.cn/jx-callback/globals" ) -type tStoreSkuSyncInfo2 struct { - StoreSkuSyncInfo - VendorPlaceCode string -} - type SkuCategoryWithVendor struct { *model.SkuCategory MapList []*model.ThingMap `json:"mapList"` } +type SkuNamePlace struct { + model.Place + NameID int `orm:"column(name_id)" json:"nameID"` + SkuID int `orm:"column(sku_id)" json:"skuID"` +} + func GetSellCities(db *DaoDB, nameID int, vendorID int) (cities []*model.Place, err error) { cities = []*model.Place{} sql := ` @@ -211,7 +212,7 @@ func GetSkuCategoryWithVendor(db *DaoDB, vendorIDs []int, appOrgCodes []string, ` sqlParams = append(sqlParams, model.ThingTypeCategory, utils.DefaultTimeValue) if mustDirty { - sql += " AND t1m.sync_status <> 0" + sql += " AND t1m.sync_status IS NOT NULL AND t1m.sync_status <> 0" } else { sql += " AND t1.deleted_at = ?" sqlParams = append(sqlParams, utils.DefaultTimeValue) @@ -253,8 +254,6 @@ func GetSkusWithVendor(db *DaoDB, vendorIDs []int, appOrgCodes []string, nameIDs IF(t12.resource_type IS NULL OR t12.resource_type <> ?, t2.img2, '') img2, t2.desc_img, - t5.jd_code vendor_place_code, - t3.jd_category_id vendor_vendor_cat_id, t3m.sync_status cat_sync_status, @@ -281,15 +280,13 @@ func GetSkusWithVendor(db *DaoDB, vendorIDs []int, appOrgCodes []string, nameIDs LEFT JOIN sku_category t3 ON t3.id = t2.category_id LEFT JOIN thing_map t3m ON t3m.thing_id = t3.id AND t3m.thing_type = ? AND t3m.deleted_at = ? AND t3m.vendor_id = t1m.vendor_id AND t3m.vendor_org_code = t1m.vendor_org_code - LEFT JOIN sku_name_place_bind t4 ON t2.is_global = 0 AND t4.name_id = t1.name_id - LEFT JOIN place t5 ON t5.code = t4.place_code LEFT JOIN data_resource t11 ON t11.main_url = t2.img LEFT JOIN data_resource t12 ON t12.main_url = t2.img2 WHERE 1 = 1 ` sqlParams = append(sqlParams, model.ThingTypeCategory, utils.DefaultTimeValue) if mustDirty { - sql += " AND t1m.sync_status <> 0" + sql += " AND t1m.sync_status IS NOT NULL AND t1m.sync_status <> 0" } else { sql += " AND t1.deleted_at = ?" sqlParams = append(sqlParams, utils.DefaultTimeValue) @@ -304,18 +301,45 @@ func GetSkusWithVendor(db *DaoDB, vendorIDs []int, appOrgCodes []string, nameIDs } sql += " ORDER BY t1.seq" - var list []*tStoreSkuSyncInfo2 - if err = GetRows(db, &list, sql, sqlParams...); err == nil { - skuMap := make(map[int]*StoreSkuSyncInfo) - for _, v := range list { - if skuMap[v.SkuID] == nil { - skuMap[v.SkuID] = &v.StoreSkuSyncInfo - skuList = append(skuList, &v.StoreSkuSyncInfo) + if err = GetRows(db, &skuList, sql, sqlParams...); err == nil { + skuPlaceList, err2 := GetSkuNamePlaces(db, nameIDs, skuIDs) + if err = err2; err == nil { + skuPlaceMap := make(map[int][]*SkuNamePlace) + for _, v := range skuPlaceList { + skuPlaceMap[v.SkuID] = append(skuPlaceMap[v.SkuID], v) } - if !IsVendorThingIDEmpty(v.VendorPlaceCode) { - skuMap[v.SkuID].SellCities = append(skuMap[v.SkuID].SellCities, v.VendorPlaceCode) + for _, v := range skuList { + if v.IsGlobal == 0 { + for _, v2 := range skuPlaceMap[v.SkuID] { + // 京东到家 + v.SellCities = append(v.SellCities, utils.Int2Str(v2.JdCode)) + } + } } } } return skuList, err } + +func GetSkuNamePlaces(db *DaoDB, nameIDs, skuIDs []int) (skuPlaceList []*SkuNamePlace, err error) { + sql := ` + SELECT + t4.*, + t2.id sku_id, t2.name_id + FROM sku t2 + JOIN sku_name_place_bind t3 ON t3.name_id = t2.name_id + JOIN place t4 ON t4.code = t3.place_code + WHERE t2.deleted_at = ? + ` + sqlParams := []interface{}{utils.DefaultTimeValue} + if len(nameIDs) > 0 { + sql += " AND t2.name_id IN (" + GenQuestionMarks(len(nameIDs)) + ")" + sqlParams = append(sqlParams, nameIDs) + } + if len(skuIDs) > 0 { + sql += " AND t2.id IN (" + GenQuestionMarks(len(skuIDs)) + ")" + sqlParams = append(sqlParams, skuIDs) + } + err = GetRows(db, &skuPlaceList, sql, sqlParams...) + return skuPlaceList, err +} diff --git a/globals/globals.go b/globals/globals.go index 17727ac4f..13299daeb 100644 --- a/globals/globals.go +++ b/globals/globals.go @@ -54,9 +54,13 @@ var ( Jd2OrgCode string IsUseThingMap bool + + OutputDebugMsgLevel int ) func init() { + OutputDebugMsgLevel = 1 + logs.SetLogFuncCallDepth(3) beego.BConfig.Log.AccessLogs = true From b7ca827ca7ed6b4bb5feae64ecbe7be2d1ce1773 Mon Sep 17 00:00:00 2001 From: gazebo Date: Fri, 13 Dec 2019 10:59:21 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E5=8E=BB=E9=99=A4getAPI("")=E8=B0=83?= =?UTF-8?q?=E7=94=A8=EF=BC=8C=E6=B2=A1=E6=9C=89vendorOrgCode=E6=97=B6?= =?UTF-8?q?=E6=8A=A5=E8=AD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/jd/act.go | 2 +- business/partner/purchase/jd/callback.go | 6 +++--- business/partner/purchase/jd/financial.go | 2 +- business/partner/purchase/jd/jd.go | 21 ++++----------------- business/partner/purchase/jd/sku2.go | 3 ++- business/partner/purchase/jd/waybill.go | 2 +- controllers/jd_callback.go | 2 +- globals/globals.go | 6 ++++-- 8 files changed, 17 insertions(+), 27 deletions(-) diff --git a/business/partner/purchase/jd/act.go b/business/partner/purchase/jd/act.go index 613ce32d2..450f469e6 100644 --- a/business/partner/purchase/jd/act.go +++ b/business/partner/purchase/jd/act.go @@ -325,7 +325,7 @@ func (c *PurchaseHandler) onActMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.C if _, ok := actMap.Load(intPromotionID); !ok { utils.CallFuncAsync(func() { if !partner.CurActManager.IsVendorActExist(jxcontext.AdminCtx, promotionID, model.VendorIDJD) { - act, actStoreSkuList, err := getActFromJD(appKey2OrgCode(msg.AppKey), promotionID) + act, actStoreSkuList, err := getActFromJD(AppKey2OrgCode(msg.AppKey), promotionID) if err == nil && len(actStoreSkuList) > 0 { _, err = partner.CurActManager.CreateActFromVendor(jxcontext.AdminCtx, act, actStoreSkuList) } diff --git a/business/partner/purchase/jd/callback.go b/business/partner/purchase/jd/callback.go index 9a4b0bf16..3e542426e 100644 --- a/business/partner/purchase/jd/callback.go +++ b/business/partner/purchase/jd/callback.go @@ -6,21 +6,21 @@ import ( func OnOrderMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) { if CurPurchaseHandler != nil { - retVal = CurPurchaseHandler.OnOrderMsg(appKey2OrgCode(msg.AppKey), msg) + retVal = CurPurchaseHandler.OnOrderMsg(AppKey2OrgCode(msg.AppKey), msg) } return retVal } func OnWaybillMsg(msg *jdapi.CallbackDeliveryStatusMsg) (retVal *jdapi.CallbackResponse) { if CurPurchaseHandler != nil { - retVal = CurPurchaseHandler.OnWaybillMsg(appKey2OrgCode(msg.AppKey), msg) + retVal = CurPurchaseHandler.OnWaybillMsg(AppKey2OrgCode(msg.AppKey), msg) } return retVal } func OnStoreMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) { if CurPurchaseHandler != nil { - retVal = CurPurchaseHandler.OnStoreMsg(appKey2OrgCode(msg.AppKey), msg) + retVal = CurPurchaseHandler.OnStoreMsg(AppKey2OrgCode(msg.AppKey), msg) } return retVal } diff --git a/business/partner/purchase/jd/financial.go b/business/partner/purchase/jd/financial.go index 45037f159..080ea5bd6 100644 --- a/business/partner/purchase/jd/financial.go +++ b/business/partner/purchase/jd/financial.go @@ -18,7 +18,7 @@ func (p *PurchaseHandler) OnFinancialMsg(msg *jdapi.CallbackOrderMsg) (retVal *j // 京东正向/退款订单类型处理--存储 func (p *PurchaseHandler) onFinancialMsg(msg *jdapi.CallbackOrderMsg) (retVal *jdapi.CallbackResponse) { var err error - a := GetAPIByAppKey(msg.AppKey) + a := getAPI(AppKey2OrgCode(msg.AppKey)) // if msg.StatusID == jdapi.OrderStatusPayFinishedSettle || msg.StatusID == jdapi.OrderStatusTipChanged || msg.StatusID == jdapi.OrderStatusSwitch2SelfSettle { // 如果是正向单 if msg.StatusID == jdapi.OrderStatusPayFinishedSettle || msg.StatusID == jdapi.OrderStatusTipChanged || msg.StatusID == jdapi.OrderStatusAdjustSettle || msg.StatusID == jdapi.OrderStatusSwitch2SelfSettle { // 如果是正向单 order, err2 := partner.CurOrderManager.LoadOrder(msg.BillID, model.VendorIDJD) diff --git a/business/partner/purchase/jd/jd.go b/business/partner/purchase/jd/jd.go index 33f85cc61..580f56d95 100644 --- a/business/partner/purchase/jd/jd.go +++ b/business/partner/purchase/jd/jd.go @@ -23,6 +23,9 @@ func init() { } func getAPI(appOrgCode string) (apiObj *jdapi.API) { + if appOrgCode == "" { + globals.SugarLogger.Warnf("getAPI appOrgCode is empty") + } return partner.CurAPIManager.GetAPI(model.VendorIDJD, appOrgCode).(*jdapi.API) } @@ -30,7 +33,7 @@ func GetAPI(appOrgCode string) (apiObj *jdapi.API) { return getAPI(appOrgCode) } -func appKey2OrgCode(appKey string) (vendorOrgCode string) { +func AppKey2OrgCode(appKey string) (vendorOrgCode string) { apiList := partner.CurAPIManager.GetAppOrgCodeList(model.VendorIDJD) for _, v := range apiList { jdAPI := partner.CurAPIManager.GetAPI(model.VendorIDJD, v).(*jdapi.API) @@ -42,22 +45,6 @@ func appKey2OrgCode(appKey string) (vendorOrgCode string) { return vendorOrgCode } -func GetAPIByAppKey(appKey string) (apiObj *jdapi.API) { - if appKey == "" { - apiObj = getAPI("") - } else { - apiList := partner.CurAPIManager.GetAppOrgCodeList(model.VendorIDJD) - for _, v := range apiList { - jdAPI := partner.CurAPIManager.GetAPI(model.VendorIDJD, v).(*jdapi.API) - if jdAPI.GetAppKey() == appKey { - apiObj = jdAPI - break - } - } - } - return apiObj -} - func (c *PurchaseHandler) GetVendorID() int { return model.VendorIDJD } diff --git a/business/partner/purchase/jd/sku2.go b/business/partner/purchase/jd/sku2.go index 5529bb772..09f02f0b3 100644 --- a/business/partner/purchase/jd/sku2.go +++ b/business/partner/purchase/jd/sku2.go @@ -6,6 +6,7 @@ import ( "git.rosy.net.cn/baseapi/platformapi/jdapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils" + "git.rosy.net.cn/jx-callback/globals/api" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" "git.rosy.net.cn/jx-callback/business/model" @@ -113,7 +114,7 @@ func (p *PurchaseHandler) ReorderCategories2(ctx *jxcontext.Context, vendorOrgCo func (p *PurchaseHandler) getVendorCategories(level int, pid int64) (vendorCats []*model.SkuVendorCategory, err error) { // 得到平台的分类,不需要指定分账号 - cats, err := getAPI("").QueryChildCategoriesForOP(pid) + cats, err := api.Jd2API.QueryChildCategoriesForOP(pid) if err != nil { return nil, err } diff --git a/business/partner/purchase/jd/waybill.go b/business/partner/purchase/jd/waybill.go index 521c2a2c9..4b1068f0f 100644 --- a/business/partner/purchase/jd/waybill.go +++ b/business/partner/purchase/jd/waybill.go @@ -64,7 +64,7 @@ func (c *PurchaseHandler) callbackMsg2Waybill(msg *jdapi.CallbackDeliveryStatusM StatusTime: utils.Str2Time(msg.DeliveryStatusTime), Remark: msg.Remark, - VendorOrgCode: appKey2OrgCode(msg.AppKey), + VendorOrgCode: AppKey2OrgCode(msg.AppKey), } return retVal } diff --git a/controllers/jd_callback.go b/controllers/jd_callback.go index 73819c55f..97dd0bd95 100644 --- a/controllers/jd_callback.go +++ b/controllers/jd_callback.go @@ -23,7 +23,7 @@ func (c *DjswController) handleMsg(isNeedDecode bool, handler func(*jdapi.API, i callbackMsg, mapData, callbackResponse := jdapi.GetCallbackMsg2(getUsefulRequest(c.Ctx)) globals.SugarLogger.Debug(utils.Format4Output(callbackMsg, true)) if callbackResponse == nil { - if jdAPI := jd.GetAPIByAppKey(callbackMsg.AppKey); jdAPI != nil { + if jdAPI := jd.GetAPI(jd.AppKey2OrgCode(callbackMsg.AppKey)); jdAPI != nil { if callbackResponse = jdAPI.CheckCallbackValidation2(mapData, callbackMsg.Sign); callbackResponse == nil { callbackResponse = handler(jdAPI, callbackMsg.Param) } diff --git a/globals/globals.go b/globals/globals.go index 13299daeb..4d4d3c85d 100644 --- a/globals/globals.go +++ b/globals/globals.go @@ -59,8 +59,6 @@ var ( ) func init() { - OutputDebugMsgLevel = 1 - logs.SetLogFuncCallDepth(3) beego.BConfig.Log.AccessLogs = true @@ -71,6 +69,10 @@ func init() { } func Init() { + if IsProductEnv(){ + OutputDebugMsgLevel = 1 + } + SugarLogger.Infof("globals RunMode=%s", beego.BConfig.RunMode) ReallyCallPlatformAPI = (beego.BConfig.RunMode != "dev" && beego.BConfig.RunMode != "test") ReallySendWeixinMsg = ReallyCallPlatformAPI && IsProductEnv() From 00c565777a6929d6f331155bc6bc30ac3cacaf07 Mon Sep 17 00:00:00 2001 From: gazebo Date: Fri, 13 Dec 2019 11:01:44 +0800 Subject: [PATCH 4/8] up --- business/model/dao/sku.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/business/model/dao/sku.go b/business/model/dao/sku.go index 6cf87d936..f49b9b3e6 100644 --- a/business/model/dao/sku.go +++ b/business/model/dao/sku.go @@ -312,7 +312,9 @@ func GetSkusWithVendor(db *DaoDB, vendorIDs []int, appOrgCodes []string, nameIDs if v.IsGlobal == 0 { for _, v2 := range skuPlaceMap[v.SkuID] { // 京东到家 - v.SellCities = append(v.SellCities, utils.Int2Str(v2.JdCode)) + if v2.JdCode > 0 { + v.SellCities = append(v.SellCities, utils.Int2Str(v2.JdCode)) + } } } } From 91e5bf39399a569c7387e0f8cf93addbfc2feb14 Mon Sep 17 00:00:00 2001 From: gazebo Date: Fri, 13 Dec 2019 11:09:28 +0800 Subject: [PATCH 5/8] fk --- business/partner/purchase/jd/jd.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/business/partner/purchase/jd/jd.go b/business/partner/purchase/jd/jd.go index 580f56d95..b3e40a2b7 100644 --- a/business/partner/purchase/jd/jd.go +++ b/business/partner/purchase/jd/jd.go @@ -24,7 +24,7 @@ func init() { func getAPI(appOrgCode string) (apiObj *jdapi.API) { if appOrgCode == "" { - globals.SugarLogger.Warnf("getAPI appOrgCode is empty") + // globals.SugarLogger.Warnf("getAPI appOrgCode is empty") } return partner.CurAPIManager.GetAPI(model.VendorIDJD, appOrgCode).(*jdapi.API) } From a6925cfb70b7965f1908186327dcb2533f06a615 Mon Sep 17 00:00:00 2001 From: gazebo Date: Fri, 13 Dec 2019 12:04:18 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E4=BF=AE=E5=A4=8DgetStoreDetail=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E5=BE=97=E5=88=B0vendorOrgCode=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/model/dao/store.go | 2 +- business/model/dao/store_sku.go | 2 +- business/partner/purchase/jd/jd.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/business/model/dao/store.go b/business/model/dao/store.go index 08ac3f9ae..489869d41 100644 --- a/business/model/dao/store.go +++ b/business/model/dao/store.go @@ -78,7 +78,7 @@ func (s *StoreDetail) GetPricePerentage(price int) (pricePercentage int) { func getStoreDetail(db *DaoDB, storeID, vendorID int, vendorStoreID string) (storeDetail *StoreDetail, err error) { sql := ` SELECT t1.*, - t2.vendor_store_id, t2.status vendor_status, t2.delivery_fee, t2.sync_status, + t2.vendor_store_id, t2.status vendor_status, t2.delivery_fee, t2.sync_status, t2.vendor_org_code, t2.price_percentage, t2.auto_pickup, t2.delivery_type, t2.delivery_competition, t2.is_sync, t3.value price_percentage_pack_str, t4.value freight_deduction_pack_str, diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index e2c7c908f..b5cab108b 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -329,7 +329,7 @@ func newGetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, mustDirty } sql += ` FROM store_sku_bind t1 - LEFT JOIN store_map t14 ON t14.store_id = t1.store_id AND t14.vendor_id = ? AND t14.deleted_at = ? + JOIN store_map t14 ON t14.store_id = t1.store_id AND t14.vendor_id = ? AND t14.deleted_at = ? LEFT JOIN sku t2 ON t1.sku_id = t2.id AND t2.deleted_at = ? AND t2.status = ? LEFT JOIN sku_name t3 ON t2.name_id = t3.id AND t3.deleted_at = ? AND t3.status = ? LEFT JOIN sku_category t4 ON t3.category_id = t4.id AND t4.deleted_at = ? diff --git a/business/partner/purchase/jd/jd.go b/business/partner/purchase/jd/jd.go index b3e40a2b7..580f56d95 100644 --- a/business/partner/purchase/jd/jd.go +++ b/business/partner/purchase/jd/jd.go @@ -24,7 +24,7 @@ func init() { func getAPI(appOrgCode string) (apiObj *jdapi.API) { if appOrgCode == "" { - // globals.SugarLogger.Warnf("getAPI appOrgCode is empty") + globals.SugarLogger.Warnf("getAPI appOrgCode is empty") } return partner.CurAPIManager.GetAPI(model.VendorIDJD, appOrgCode).(*jdapi.API) } From d20d98816e631d1694a521b67798a6d05a0994ee Mon Sep 17 00:00:00 2001 From: gazebo Date: Fri, 13 Dec 2019 15:18:06 +0800 Subject: [PATCH 7/8] +GenFakeUPC --- business/jxutils/jxutils.go | 4 ++++ business/jxutils/jxutils_act_test.go | 18 ++++++---------- business/jxutils/jxutils_cms_test.go | 32 +++++++++++++--------------- business/jxutils/jxutils_test.go | 17 +++++++++++++++ 4 files changed, 43 insertions(+), 28 deletions(-) diff --git a/business/jxutils/jxutils.go b/business/jxutils/jxutils.go index 94b79e6c8..e6662dd29 100644 --- a/business/jxutils/jxutils.go +++ b/business/jxutils/jxutils.go @@ -409,6 +409,10 @@ func SplitSkuName(skuName string) (prefix, name, comment, specUnit, unit string, return prefix, name, comment, specUnit, unit, specQuality } +func GenFakeUPC(skuID int) string { + return fmt.Sprintf("%013d", int64(skuID)+6666000000000) +} + func MakeValidationMapFromSlice(validValues []string, flag int) map[string]int { retVal := make(map[string]int) for _, v := range validValues { diff --git a/business/jxutils/jxutils_act_test.go b/business/jxutils/jxutils_act_test.go index 79d4d1577..9e3563557 100644 --- a/business/jxutils/jxutils_act_test.go +++ b/business/jxutils/jxutils_act_test.go @@ -2,18 +2,14 @@ package jxutils import ( "testing" - - "git.rosy.net.cn/baseapi/utils" - "git.rosy.net.cn/jx-callback/business/model" - "git.rosy.net.cn/jx-callback/business/model/dao" ) func TestGetActStoreSku(t *testing.T) { - actStoreSkuList, err := dao.GetEffectiveActStoreSkuInfo(dao.GetDB(), 0, []int{model.VendorIDMTWM}, []int{102046}, []int{25430, 30611}, - utils.Str2Time("2019-07-27 13:29:57"), utils.Str2Time("2019-07-27 13:29:57")) - if err != nil { - t.Fatal(err) - } - storeSkuMap := jxutils.NewActStoreSkuMap(actStoreSkuList, false) - t.Log(storeSkuMap.GetActStoreSku(1, 2, 3)) + // actStoreSkuList, err := dao.GetEffectiveActStoreSkuInfo(dao.GetDB(), 0, []int{model.VendorIDMTWM}, []int{102046}, []int{25430, 30611}, + // utils.Str2Time("2019-07-27 13:29:57"), utils.Str2Time("2019-07-27 13:29:57")) + // if err != nil { + // t.Fatal(err) + // } + // storeSkuMap := jxutils.NewActStoreSkuMap(actStoreSkuList, false) + // t.Log(storeSkuMap.GetActStoreSku(1, 2, 3)) } diff --git a/business/jxutils/jxutils_cms_test.go b/business/jxutils/jxutils_cms_test.go index 701e3093b..864bdd23c 100644 --- a/business/jxutils/jxutils_cms_test.go +++ b/business/jxutils/jxutils_cms_test.go @@ -2,12 +2,10 @@ package jxutils import ( "fmt" - "strings" "testing" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/model" - "git.rosy.net.cn/jx-callback/business/model/dao" ) func TestSplitSlice(t *testing.T) { @@ -109,22 +107,22 @@ func TestCalcPolygonAreaAutonavi(t *testing.T) { // pointers := GetPolygonFromCircle(104.065702, 30.657488, 3000, 128) // area := CalcPolygonAreaAutonavi(pointers) // t.Logf("area:%f", area) - db := dao.GetDB() - storeList, err := dao.GetStoreList(db, nil, nil, "") - if err != nil { - t.Fatal(err) - } + // db := dao.GetDB() + // storeList, err := dao.GetStoreList(db, nil, nil, "") + // if err != nil { + // t.Fatal(err) + // } - strBuilder := &strings.Builder{} - strBuilder.WriteString("\n") - for _, v := range storeList { - if v.DeliveryRangeType == model.DeliveryRangeTypePolygon { - pointers := CoordinateStr2Points(v.DeliveryRange) - area1 := CalcPolygonAreaAutonavi(pointers) - strBuilder.WriteString(fmt.Sprintf("%d,%f\n", v.ID, area1)) - } - } - t.Log(strBuilder.String()) + // strBuilder := &strings.Builder{} + // strBuilder.WriteString("\n") + // for _, v := range storeList { + // if v.DeliveryRangeType == model.DeliveryRangeTypePolygon { + // pointers := CoordinateStr2Points(v.DeliveryRange) + // area1 := CalcPolygonAreaAutonavi(pointers) + // strBuilder.WriteString(fmt.Sprintf("%d,%f\n", v.ID, area1)) + // } + // } + // t.Log(strBuilder.String()) } func TestCaculateSkuPrice(t *testing.T) { diff --git a/business/jxutils/jxutils_test.go b/business/jxutils/jxutils_test.go index 55a78db84..f1bab58e6 100644 --- a/business/jxutils/jxutils_test.go +++ b/business/jxutils/jxutils_test.go @@ -284,3 +284,20 @@ func TestGetOneEmailFromStr(t *testing.T) { } } } + +func TestGenFakeUPC(t *testing.T) { + for _, v := range [][]string{ + []string{ + "6666000000123", + "123", + }, + []string{ + "6666007654321", + "7654321", + }, + } { + if str := GenFakeUPC(int(utils.Str2Int64(v[1]))); str != v[0] { + t.Errorf("%s failed, result:%s, expect:%s", v[1], str, v[0]) + } + } +} From 5a37a9cf284e70d6c42514448c2352674021571b Mon Sep 17 00:00:00 2001 From: gazebo Date: Fri, 13 Dec 2019 16:22:22 +0800 Subject: [PATCH 8/8] up --- business/model/dao/store_sku.go | 2 +- business/partner/purchase/jd/sku2.go | 6 +++++- business/partner/purchase/mtwm/store_sku2.go | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index bad97e074..bef89ed5c 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -69,7 +69,7 @@ type StoreSkuSyncInfo struct { // 平台相关的图片信息 Img string Img2 string - DescImg string // 饿百是SkuName中的DescImgEbai + DescImg string VendorVendorCatID int64 `orm:"column(vendor_vendor_cat_id)"` // 平台商品分类(叶子结点) diff --git a/business/partner/purchase/jd/sku2.go b/business/partner/purchase/jd/sku2.go index 09f02f0b3..a90ee8274 100644 --- a/business/partner/purchase/jd/sku2.go +++ b/business/partner/purchase/jd/sku2.go @@ -6,13 +6,13 @@ import ( "git.rosy.net.cn/baseapi/platformapi/jdapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils" - "git.rosy.net.cn/jx-callback/globals/api" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" "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" + "git.rosy.net.cn/jx-callback/globals/api" "github.com/astaxie/beego" ) @@ -167,6 +167,10 @@ func skuInfo2Param(ctx *jxcontext.Context, sku *dao.StoreSkuSyncInfo) (param *jd Upc: sku.Upc, Images: jxutils.BatchString2Slice(sku.Img, sku.Img2), } + // 不为份的SKU,如果没有设置upc,自动生成一个假的 + // if sku.Unit != model.SpecialUnit && param.Upc == "" { + // param.Upc = jxutils.GenFakeUPC(sku.SkuID) + // } if param.CategoryID == 0 { param.CategoryID = int64(getDefJdCategoryID()) } diff --git a/business/partner/purchase/mtwm/store_sku2.go b/business/partner/purchase/mtwm/store_sku2.go index a54934195..6c52ec66a 100644 --- a/business/partner/purchase/mtwm/store_sku2.go +++ b/business/partner/purchase/mtwm/store_sku2.go @@ -284,7 +284,9 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI skus[0]["price"] = foodData["price"] } skus[0]["stock"] = stockCount2Mtwm(model.MaxStoreSkuStockQty) - skus[0]["upc"] = storeSku.Upc + if storeSku.Upc != "" { + skus[0]["upc"] = storeSku.Upc + } if foodData["tag_id"] != nil { skus[0]["weight"] = storeSku.Weight // weight字段仅限服饰鞋帽、美妆、日用品、母婴、生鲜果蔬、生活超市下的便利店/超市门店品类的商家使用 }