- UpdateStoresSkusSale
This commit is contained in:
@@ -258,11 +258,11 @@ func updateStoreSkusWithoutSync(storeID int, skuBindInfos []*StoreSkuBindInfo, u
|
|||||||
if err = dao.GetRows(db, &allBinds, `
|
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
|
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
|
FROM sku t1
|
||||||
LEFT JOIN store_sku_bind t2 ON t2.sku_id = t1.id AND store_id = ?
|
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
|
JOIN sku_name t3 ON t1.name_id = t3.id AND t3.deleted_at = ?
|
||||||
WHERE t1.name_id = ?
|
WHERE t1.name_id = ? AND t1.deleted_at = ?
|
||||||
`, storeID, skuBindInfo.NameID); err == nil {
|
`, storeID, utils.DefaultTimeValue, utils.DefaultTimeValue, skuBindInfo.NameID, utils.DefaultTimeValue); err == nil {
|
||||||
globals.SugarLogger.Debug(len(allBinds))
|
// globals.SugarLogger.Debug(len(allBinds))
|
||||||
inSkuBinsMap := make(map[int]*StoreSkuBindSkuInfo, len(inSkuBinds))
|
inSkuBinsMap := make(map[int]*StoreSkuBindSkuInfo, len(inSkuBinds))
|
||||||
for _, v := range inSkuBinds {
|
for _, v := range inSkuBinds {
|
||||||
inSkuBinsMap[v.SkuID] = v
|
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) {
|
func UpdateStoresSkus(storeIDs []int, skuBindInfos []*StoreSkuBindInfo, userName string) (num int64, err error) {
|
||||||
for _, storeID := range storeIDs {
|
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
|
return 0, err
|
||||||
}
|
}
|
||||||
|
num += int64(len(skuIDs))
|
||||||
}
|
}
|
||||||
skuIDs := make([]int, 0)
|
skuIDs := make([]int, 0)
|
||||||
for _, v := range skuBindInfos {
|
for _, v := range skuBindInfos {
|
||||||
@@ -383,7 +385,62 @@ func UpdateStoresSkus(storeIDs []int, skuBindInfos []*StoreSkuBindInfo, userName
|
|||||||
}
|
}
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
_, err = CurVendorSync.SyncStoresSkus(db, nil, storeIDs, skuIDs, false, userName)
|
_, 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) {
|
func CopyStoreSkus(fromStoreID, toStoreID int, copyMode string, params map[string]interface{}, userName string) (num int64, err error) {
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
package legacymodel
|
package legacymodel
|
||||||
|
|
||||||
import "git.rosy.net.cn/jx-callback/globals"
|
type Elemeorder struct {
|
||||||
|
|
||||||
type Elemeorder2 struct {
|
|
||||||
Id int `orm:"column(id);auto"`
|
Id int `orm:"column(id);auto"`
|
||||||
Orderid string `orm:"column(orderid);size(50);null;unique"`
|
Orderid string `orm:"column(orderid);size(50);null;unique"`
|
||||||
Data string `orm:"column(data);null"`
|
Data string `orm:"column(data);null"`
|
||||||
@@ -12,6 +10,6 @@ type Elemeorder2 struct {
|
|||||||
OrderCreatedAt string `orm:"column(order_created_at);size(50);index"`
|
OrderCreatedAt string `orm:"column(order_created_at);size(50);index"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Elemeorder2) TableName() string {
|
func (t *Elemeorder) TableName() string {
|
||||||
return globals.ElemeorderTableName
|
return "elemeorder"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
package legacymodel
|
package legacymodel
|
||||||
|
|
||||||
import (
|
type Jdorder struct {
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
|
||||||
)
|
|
||||||
|
|
||||||
type Jdorder2 struct {
|
|
||||||
Id int `orm:"column(id);auto"`
|
Id int `orm:"column(id);auto"`
|
||||||
Code string `orm:"column(code);size(2);null"`
|
Code string `orm:"column(code);size(2);null"`
|
||||||
Msg string `orm:"column(msg);size(100);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"`
|
Orderstatustime string `orm:"column(orderstatustime);size(50);null;index"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Jdorder2) TableName() string {
|
func (t *Jdorder) TableName() string {
|
||||||
return globals.JdorderTableName
|
return "jdorder"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
package legacymodel
|
package legacymodel
|
||||||
|
|
||||||
import "git.rosy.net.cn/jx-callback/globals"
|
type Jxorder struct {
|
||||||
|
|
||||||
type Jxorder2 struct {
|
|
||||||
Id int `orm:"column(id);auto"`
|
Id int `orm:"column(id);auto"`
|
||||||
VenderId int8 `orm:"column(vender_id);null"`
|
VenderId int8 `orm:"column(vender_id);null"`
|
||||||
OrderId int64 `orm:"column(order_id);null;unique"`
|
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"`
|
IsRecallDelivery int `orm:"column(is_recall_delivery);default(0);null"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Jxorder2) TableName() string {
|
func (t *Jxorder) TableName() string {
|
||||||
return globals.JxorderTableName
|
return "jxorder"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
package legacymodel
|
package legacymodel
|
||||||
|
|
||||||
import "git.rosy.net.cn/jx-callback/globals"
|
type Jxordersku struct {
|
||||||
|
|
||||||
type Jxordersku2 struct {
|
|
||||||
Id int `orm:"column(id);auto"`
|
Id int `orm:"column(id);auto"`
|
||||||
VenderId int8 `orm:"column(vender_id);null"`
|
VenderId int8 `orm:"column(vender_id);null"`
|
||||||
OrderId int64 `orm:"column(order_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"`
|
SkuImg string `orm:"column(sku_img);size(120);null"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Jxordersku2) TableName() string {
|
func (t *Jxordersku) TableName() string {
|
||||||
return globals.JxorderskuTableName
|
return "jxordersku"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ const (
|
|||||||
FieldJdID = "JdID"
|
FieldJdID = "JdID"
|
||||||
FieldElmID = "ElmID"
|
FieldElmID = "ElmID"
|
||||||
FieldEbaiID = "EbaiID"
|
FieldEbaiID = "EbaiID"
|
||||||
|
|
||||||
|
FieldSkuID = "SkuID"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ModelIDCUL struct {
|
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) {
|
func (p *PurchaseHandler) SyncStoresSkus(db *dao.DaoDB, storeIDs []int, skuIDs []int, isAsync bool, userName string) (hint string, err error) {
|
||||||
for _, storeID := range storeIDs {
|
if globals.EnableStoreWrite {
|
||||||
err = p.syncOneStoreSkus(db, storeID, skuIDs, isAsync, userName)
|
for _, storeID := range storeIDs {
|
||||||
if err != nil {
|
err = p.syncOneStoreSkus(db, storeID, skuIDs, isAsync, userName)
|
||||||
break
|
if err != nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return hint, err
|
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) {
|
func (p *PurchaseHandler) SyncStoresCategories(db *dao.DaoDB, storeIDs []int, userName string) (err error) {
|
||||||
globals.SugarLogger.Debugf("SyncStoresCategories storeIDs:%d, userName:%s", storeIDs, userName)
|
globals.SugarLogger.Debugf("SyncStoresCategories storeIDs:%d, userName:%s", storeIDs, userName)
|
||||||
|
|
||||||
for _, storeID := range storeIDs {
|
if globals.EnableStoreWrite {
|
||||||
if err = p.SyncOneStoreCategories(db, storeID, userName); err != nil {
|
for _, storeID := range storeIDs {
|
||||||
break
|
if err = p.SyncOneStoreCategories(db, storeID, userName); err != nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
@@ -325,7 +329,6 @@ func (p *PurchaseHandler) syncOneStoreCategoriesFromRemote2Local(db *dao.DaoDB,
|
|||||||
cat1Map := map[string]*tStoreCatInfo{}
|
cat1Map := map[string]*tStoreCatInfo{}
|
||||||
for _, v := range catList {
|
for _, v := range catList {
|
||||||
v.Name = formatName(v.Name)
|
v.Name = formatName(v.Name)
|
||||||
globals.SugarLogger.Debug(v.Name)
|
|
||||||
if v.Level == 1 {
|
if v.Level == 1 {
|
||||||
cat1 := cat1Map[v.Name]
|
cat1 := cat1Map[v.Name]
|
||||||
if cat1 == nil {
|
if cat1 == nil {
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ dadaAppSecret = "2c717ad914767d6e2beb3f743db9e477"
|
|||||||
|
|
||||||
autonaviKey = "4427170f870af2110becb8852d36ab08"
|
autonaviKey = "4427170f870af2110becb8852d36ab08"
|
||||||
|
|
||||||
generateLegacyJxOrder = false
|
|
||||||
enableStore = true
|
enableStore = true
|
||||||
enableStoreWrite = false
|
enableStoreWrite = false
|
||||||
|
|
||||||
|
|||||||
@@ -145,3 +145,24 @@ func (c *StoreSkuController) CopyStoreSkus() {
|
|||||||
return retVal, "", err
|
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 (
|
var (
|
||||||
GenerateLegacyJxOrder bool
|
|
||||||
ReallyCallPlatformAPI bool
|
ReallyCallPlatformAPI bool
|
||||||
ReallySendWeixinMsg bool
|
ReallySendWeixinMsg bool
|
||||||
|
|
||||||
SugarLogger *zap.SugaredLogger
|
SugarLogger *zap.SugaredLogger
|
||||||
|
|
||||||
JxorderTableName string
|
|
||||||
JxorderskuTableName string
|
|
||||||
ElemeorderTableName string
|
|
||||||
JdorderTableName string
|
|
||||||
|
|
||||||
Cacher cache.ICacher
|
Cacher cache.ICacher
|
||||||
|
|
||||||
AliKey string
|
AliKey string
|
||||||
@@ -53,12 +47,6 @@ func init() {
|
|||||||
func Init() {
|
func Init() {
|
||||||
ReallySendWeixinMsg = beego.BConfig.RunMode == "prod"
|
ReallySendWeixinMsg = beego.BConfig.RunMode == "prod"
|
||||||
ReallyCallPlatformAPI = true
|
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", ""))
|
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(),
|
MethodParams: param.Make(),
|
||||||
Params: 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: "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.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TaskController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:TaskController"],
|
||||||
beego.ControllerComments{
|
beego.ControllerComments{
|
||||||
Method: "GetTasks",
|
Method: "GetTasks",
|
||||||
|
|||||||
Reference in New Issue
Block a user