- UpdateStoresSkusSale
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -28,6 +28,8 @@ const (
|
||||
FieldJdID = "JdID"
|
||||
FieldElmID = "ElmID"
|
||||
FieldEbaiID = "EbaiID"
|
||||
|
||||
FieldSkuID = "SkuID"
|
||||
)
|
||||
|
||||
type ModelIDCUL struct {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -14,7 +14,6 @@ dadaAppSecret = "2c717ad914767d6e2beb3f743db9e477"
|
||||
|
||||
autonaviKey = "4427170f870af2110becb8852d36ab08"
|
||||
|
||||
generateLegacyJxOrder = false
|
||||
enableStore = true
|
||||
enableStoreWrite = false
|
||||
|
||||
|
||||
@@ -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
|
||||
})
|
||||
}
|
||||
|
||||
@@ -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", ""))
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user