diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 0606f240b..fba99c6d0 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -258,11 +258,11 @@ func updateStoreSkusWithoutSync(storeID int, skuBindInfos []*StoreSkuBindInfo, u if err = dao.GetRows(db, &allBinds, ` SELECT t2.*, t1.id real_sku_id, t1.spec_quality, t1.spec_unit, t3.price sku_name_price, t3.unit sku_name_unit FROM sku t1 - LEFT JOIN store_sku_bind t2 ON t2.sku_id = t1.id AND store_id = ? - JOIN sku_name t3 ON t1.name_id = t3.id - WHERE t1.name_id = ? - `, storeID, skuBindInfo.NameID); err == nil { - globals.SugarLogger.Debug(len(allBinds)) + LEFT JOIN store_sku_bind t2 ON t2.sku_id = t1.id AND store_id = ? AND t2.deleted_at = ? + JOIN sku_name t3 ON t1.name_id = t3.id AND t3.deleted_at = ? + WHERE t1.name_id = ? AND t1.deleted_at = ? + `, storeID, utils.DefaultTimeValue, utils.DefaultTimeValue, skuBindInfo.NameID, utils.DefaultTimeValue); err == nil { + // globals.SugarLogger.Debug(len(allBinds)) inSkuBinsMap := make(map[int]*StoreSkuBindSkuInfo, len(inSkuBinds)) for _, v := range inSkuBinds { inSkuBinsMap[v.SkuID] = v @@ -371,9 +371,11 @@ func updateStoreSkusWithoutSync(storeID int, skuBindInfos []*StoreSkuBindInfo, u func UpdateStoresSkus(storeIDs []int, skuBindInfos []*StoreSkuBindInfo, userName string) (num int64, err error) { for _, storeID := range storeIDs { - if _, err = updateStoreSkusWithoutSync(storeID, skuBindInfos, userName); err != nil { + skuIDs, err2 := updateStoreSkusWithoutSync(storeID, skuBindInfos, userName) + if err = err2; err != nil { return 0, err } + num += int64(len(skuIDs)) } skuIDs := make([]int, 0) for _, v := range skuBindInfos { @@ -383,7 +385,62 @@ func UpdateStoresSkus(storeIDs []int, skuBindInfos []*StoreSkuBindInfo, userName } db := dao.GetDB() _, err = CurVendorSync.SyncStoresSkus(db, nil, storeIDs, skuIDs, false, userName) - return int64(len(skuIDs)), err + return num, err +} + +func updateStoreSkusSaleWithoutSync(storeID int, skuBindSkuInfos []*StoreSkuBindSkuInfo, userName string) (needSyncSkus []int, err error) { + var num int64 + db := dao.GetDB() + needSyncIDMap := make(map[int]int) + dao.Begin(db) + defer func() { + if r := recover(); r != nil { + dao.Rollback(db) + panic(r) + } + }() + for _, v := range skuBindSkuInfos { + if v.IsSale != 0 { + skuBind := &model.StoreSkuBind{} + if v.IsSale == 1 { + skuBind.Status = model.StoreSkuBindStatusNormal + } else { + skuBind.Status = model.StoreSkuBindStatusDontSale + } + if num, err = dao.UpdateEntityLogically(db, skuBind, map[string]interface{}{ + model.FieldStatus: skuBind.Status, + }, userName, map[string]interface{}{ + model.FieldStoreID: storeID, + model.FieldSkuID: v.SkuID, + }); err != nil { + dao.Rollback(db) + return nil, err + } + if num == 1 { + needSyncIDMap[v.SkuID] = 1 + } + } + } + dao.Commit(db) + needSyncSkus = jxutils.IntMap2List(needSyncIDMap) + return needSyncSkus, err +} + +func UpdateStoresSkusSale(storeIDs []int, skuBindSkuInfos []*StoreSkuBindSkuInfo, userName string) (num int64, err error) { + for _, storeID := range storeIDs { + skuIDs, err2 := updateStoreSkusSaleWithoutSync(storeID, skuBindSkuInfos, userName) + if err = err2; err != nil { + return 0, err + } + num += int64(len(skuIDs)) + } + skuIDs := make([]int, 0) + for _, v := range skuBindSkuInfos { + skuIDs = append(skuIDs, v.SkuID) + } + db := dao.GetDB() + _, err = CurVendorSync.SyncStoresSkus(db, nil, storeIDs, skuIDs, false, userName) + return num, err } func CopyStoreSkus(fromStoreID, toStoreID int, copyMode string, params map[string]interface{}, userName string) (num int64, err error) { diff --git a/business/model/legacymodel2/elemeorder.go b/business/model/legacymodel2/elemeorder.go index 8ba70dc87..2b4ff0045 100644 --- a/business/model/legacymodel2/elemeorder.go +++ b/business/model/legacymodel2/elemeorder.go @@ -1,8 +1,6 @@ package legacymodel -import "git.rosy.net.cn/jx-callback/globals" - -type Elemeorder2 struct { +type Elemeorder struct { Id int `orm:"column(id);auto"` Orderid string `orm:"column(orderid);size(50);null;unique"` Data string `orm:"column(data);null"` @@ -12,6 +10,6 @@ type Elemeorder2 struct { OrderCreatedAt string `orm:"column(order_created_at);size(50);index"` } -func (t *Elemeorder2) TableName() string { - return globals.ElemeorderTableName +func (t *Elemeorder) TableName() string { + return "elemeorder" } diff --git a/business/model/legacymodel2/jdorder.go b/business/model/legacymodel2/jdorder.go index 947c10033..0bd5c8787 100644 --- a/business/model/legacymodel2/jdorder.go +++ b/business/model/legacymodel2/jdorder.go @@ -1,10 +1,6 @@ package legacymodel -import ( - "git.rosy.net.cn/jx-callback/globals" -) - -type Jdorder2 struct { +type Jdorder struct { Id int `orm:"column(id);auto"` Code string `orm:"column(code);size(2);null"` Msg string `orm:"column(msg);size(100);null"` @@ -16,6 +12,6 @@ type Jdorder2 struct { Orderstatustime string `orm:"column(orderstatustime);size(50);null;index"` } -func (t *Jdorder2) TableName() string { - return globals.JdorderTableName +func (t *Jdorder) TableName() string { + return "jdorder" } diff --git a/business/model/legacymodel2/jxorder.go b/business/model/legacymodel2/jxorder.go index 1be86f241..c26192115 100644 --- a/business/model/legacymodel2/jxorder.go +++ b/business/model/legacymodel2/jxorder.go @@ -1,8 +1,6 @@ package legacymodel -import "git.rosy.net.cn/jx-callback/globals" - -type Jxorder2 struct { +type Jxorder struct { Id int `orm:"column(id);auto"` VenderId int8 `orm:"column(vender_id);null"` OrderId int64 `orm:"column(order_id);null;unique"` @@ -56,6 +54,6 @@ type Jxorder2 struct { IsRecallDelivery int `orm:"column(is_recall_delivery);default(0);null"` } -func (t *Jxorder2) TableName() string { - return globals.JxorderTableName +func (t *Jxorder) TableName() string { + return "jxorder" } diff --git a/business/model/legacymodel2/jxordersku.go b/business/model/legacymodel2/jxordersku.go index 4880cdf0a..05048f72b 100644 --- a/business/model/legacymodel2/jxordersku.go +++ b/business/model/legacymodel2/jxordersku.go @@ -1,8 +1,6 @@ package legacymodel -import "git.rosy.net.cn/jx-callback/globals" - -type Jxordersku2 struct { +type Jxordersku struct { Id int `orm:"column(id);auto"` VenderId int8 `orm:"column(vender_id);null"` OrderId int64 `orm:"column(order_id);null"` @@ -18,6 +16,6 @@ type Jxordersku2 struct { SkuImg string `orm:"column(sku_img);size(120);null"` } -func (t *Jxordersku2) TableName() string { - return globals.JxorderskuTableName +func (t *Jxordersku) TableName() string { + return "jxordersku" } diff --git a/business/model/model.go b/business/model/model.go index a3b5ffb58..c2e03c513 100644 --- a/business/model/model.go +++ b/business/model/model.go @@ -28,6 +28,8 @@ const ( FieldJdID = "JdID" FieldElmID = "ElmID" FieldEbaiID = "EbaiID" + + FieldSkuID = "SkuID" ) type ModelIDCUL struct { diff --git a/business/partner/purchase/ebai/store_sku.go b/business/partner/purchase/ebai/store_sku.go index cbfbb68c0..6c36a4376 100644 --- a/business/partner/purchase/ebai/store_sku.go +++ b/business/partner/purchase/ebai/store_sku.go @@ -72,10 +72,12 @@ var ( ) func (p *PurchaseHandler) SyncStoresSkus(db *dao.DaoDB, storeIDs []int, skuIDs []int, isAsync bool, userName string) (hint string, err error) { - for _, storeID := range storeIDs { - err = p.syncOneStoreSkus(db, storeID, skuIDs, isAsync, userName) - if err != nil { - break + if globals.EnableStoreWrite { + for _, storeID := range storeIDs { + err = p.syncOneStoreSkus(db, storeID, skuIDs, isAsync, userName) + if err != nil { + break + } } } return hint, err @@ -183,9 +185,11 @@ func (p *PurchaseHandler) syncOneStoreSkus(db *dao.DaoDB, storeID int, skuIDs [] func (p *PurchaseHandler) SyncStoresCategories(db *dao.DaoDB, storeIDs []int, userName string) (err error) { globals.SugarLogger.Debugf("SyncStoresCategories storeIDs:%d, userName:%s", storeIDs, userName) - for _, storeID := range storeIDs { - if err = p.SyncOneStoreCategories(db, storeID, userName); err != nil { - break + if globals.EnableStoreWrite { + for _, storeID := range storeIDs { + if err = p.SyncOneStoreCategories(db, storeID, userName); err != nil { + break + } } } return err @@ -325,7 +329,6 @@ func (p *PurchaseHandler) syncOneStoreCategoriesFromRemote2Local(db *dao.DaoDB, cat1Map := map[string]*tStoreCatInfo{} for _, v := range catList { v.Name = formatName(v.Name) - globals.SugarLogger.Debug(v.Name) if v.Level == 1 { cat1 := cat1Map[v.Name] if cat1 == nil { diff --git a/conf/app.conf b/conf/app.conf index 19b255fb1..09714236f 100644 --- a/conf/app.conf +++ b/conf/app.conf @@ -14,7 +14,6 @@ dadaAppSecret = "2c717ad914767d6e2beb3f743db9e477" autonaviKey = "4427170f870af2110becb8852d36ab08" -generateLegacyJxOrder = false enableStore = true enableStoreWrite = false diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index 2b8927d66..d80237a36 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -145,3 +145,24 @@ func (c *StoreSkuController) CopyStoreSkus() { return retVal, "", err }) } + +// @Title 批量修改多商家商品可售状态 +// @Description 批量修改多商家商品可售状态 +// @Param token header string true "认证token" +// @Param storeIDs formData string true "门店ID列表" +// @Param payload formData string true "json数据,StoreSkuBindSkuInfo对象数组" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /UpdateStoresSkusSale [put] +func (c *StoreSkuController) UpdateStoresSkusSale() { + c.callUpdateStoresSkusSale(func(params *tStoreSkuUpdateStoresSkusSaleParams) (retVal interface{}, errCode string, err error) { + var storeIDs []int + var skuBindSkuInfos []*cms.StoreSkuBindSkuInfo + if err = utils.UnmarshalUseNumber([]byte(params.StoreIDs), &storeIDs); err == nil { + if err = utils.UnmarshalUseNumber([]byte(params.Payload), &skuBindSkuInfos); err == nil { + retVal, err = cms.UpdateStoresSkusSale(storeIDs, skuBindSkuInfos, GetUserNameFromToken(params.Token)) + } + } + return retVal, "", err + }) +} diff --git a/globals/globals.go b/globals/globals.go index ce92087bb..f74838a29 100644 --- a/globals/globals.go +++ b/globals/globals.go @@ -15,17 +15,11 @@ const ( ) var ( - GenerateLegacyJxOrder bool ReallyCallPlatformAPI bool ReallySendWeixinMsg bool SugarLogger *zap.SugaredLogger - JxorderTableName string - JxorderskuTableName string - ElemeorderTableName string - JdorderTableName string - Cacher cache.ICacher AliKey string @@ -53,12 +47,6 @@ func init() { func Init() { ReallySendWeixinMsg = beego.BConfig.RunMode == "prod" ReallyCallPlatformAPI = true - GenerateLegacyJxOrder = beego.AppConfig.DefaultBool("generateLegacyJxOrder", false) - - JxorderTableName = "jxorder" - JxorderskuTableName = "jxordersku" - ElemeorderTableName = "elemeorder" - JdorderTableName = "jdorder" Cacher = redis.New(beego.AppConfig.DefaultString("redisHost", "localhost"), beego.AppConfig.DefaultInt("redisPort", 0), beego.AppConfig.DefaultString("redisPassword", "")) diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 218df1614..6d7f7192a 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -495,6 +495,14 @@ func init() { MethodParams: param.Make(), 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: "UpdateStoresSkusSale", + Router: `/UpdateStoresSkusSale`, + AllowHTTPMethods: []string{"put"}, + MethodParams: param.Make(), + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TaskController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TaskController"], beego.ControllerComments{ Method: "GetTasks",