- UpdateStoresSkusSale

This commit is contained in:
gazebo
2018-10-16 15:01:59 +08:00
parent d7b93b8bf2
commit ac76040e99
11 changed files with 118 additions and 50 deletions

View File

@@ -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) {

View File

@@ -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"
}

View File

@@ -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"
}

View File

@@ -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"
}

View File

@@ -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"
}

View File

@@ -28,6 +28,8 @@ const (
FieldJdID = "JdID"
FieldElmID = "ElmID"
FieldEbaiID = "EbaiID"
FieldSkuID = "SkuID"
)
type ModelIDCUL struct {

View File

@@ -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 {

View File

@@ -14,7 +14,6 @@ dadaAppSecret = "2c717ad914767d6e2beb3f743db9e477"
autonaviKey = "4427170f870af2110becb8852d36ab08"
generateLegacyJxOrder = false
enableStore = true
enableStoreWrite = false

View File

@@ -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
})
}

View File

@@ -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", ""))

View File

@@ -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",