- UpdateStoreSku

This commit is contained in:
gazebo
2018-09-13 23:11:02 +08:00
parent 20c3c0341a
commit 84ea7d20ba
4 changed files with 119 additions and 14 deletions

View File

@@ -2,6 +2,7 @@ package cms
import ( import (
"strconv" "strconv"
"strings"
"git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model"
@@ -19,6 +20,14 @@ type StoreSkuNamesInfo struct {
SkuNames []*StoreSkuNameExt `json:"skuNames"` SkuNames []*StoreSkuNameExt `json:"skuNames"`
} }
type StoreSkuBindInfo struct {
SkuID int `json:"skuID"`
SubStoreID int `json:"subStoreID"`
IsFocus int `json:"isFocus"` // -1不关注0忽略1关注
IsSale int `json:"isSale"` // -1不可售0忽略1可售
Price int `json:"price"`
}
func GetStoreSkus(storeID int, keyword string, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *StoreSkuNamesInfo, err error) { func GetStoreSkus(storeID int, keyword string, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *StoreSkuNamesInfo, err error) {
db := dao.GetDB() db := dao.GetDB()
sql := ` sql := `
@@ -153,10 +162,81 @@ func GetStoreSkus(storeID int, keyword string, params map[string]interface{}, of
return skuNamesInfo, err return skuNamesInfo, err
} }
func SetStoreSkuStatus(storeID int, isSale bool, userName string) (num int64, err error) { func UpdateStoreSku(storeID int, skuBinds []*StoreSkuBindInfo, userName string) (num int64, err error) {
return num, err db := dao.GetDB()
} var existBinds []*model.StoreSkuBind
skuIDs := make([]int, len(skuBinds))
func SetStoreFocusSku(storeID int, skuID int, isFocus, isSale bool, userName string) (num int64, err error) { placeHolders := make([]string, len(skuBinds))
for k, v := range skuBinds {
skuIDs[k] = v.SkuID
placeHolders[k] = "?"
}
questions := "(" + strings.Join(placeHolders, ",") + ")"
if err = dao.GetRows(db, &existBinds, `
SELECT *
FROM store_sku_bind
WHERE store_id = ?
AND sku_id IN `+questions, storeID, skuIDs); err == nil {
existBindsMap := make(map[int]*model.StoreSkuBind, len(existBinds))
for _, v := range existBinds {
existBindsMap[v.SkuID] = v
}
dao.Begin(db)
for _, v := range skuBinds {
skuBind, ok := existBindsMap[v.SkuID]
if !ok {
if v.IsFocus == 1 {
skuBind = &model.StoreSkuBind{
StoreID: storeID,
SkuID: v.SkuID,
SubStoreID: v.SubStoreID, // todo 这个应该从用户信息中自动获得
}
dao.WrapAddIDCULDEntity(skuBind, userName)
}
} else {
if v.IsFocus != -1 {
dao.WrapUpdateULEntity(skuBind, userName)
}
}
if skuBind != nil {
if v.Price != 0 {
skuBind.Price = v.Price
}
if v.IsSale != 0 {
if v.IsSale == 1 {
skuBind.Status = model.StoreSkuBindStatusNormal
} else {
skuBind.Status = model.StoreSkuBindStatusDontSale
}
}
if ok {
if v.IsFocus == -1 {
_, err = dao.DeleteEntityLogically(db, skuBind, nil, userName, map[string]interface{}{
model.FieldJdSyncStatus: model.SyncFlagDeletedMask,
model.FieldElmSyncStatus: model.SyncFlagDeletedMask,
model.FieldEbaiSyncStatus: model.SyncFlagDeletedMask,
})
} else {
skuBind.DeletedAt = utils.DefaultTimeValue
skuBind.JdSyncStatus = model.SyncFlagModifiedMask
skuBind.ElmSyncStatus = model.SyncFlagModifiedMask
skuBind.EbaiSyncStatus = model.SyncFlagModifiedMask
_, err = dao.UpdateEntity(db, skuBind)
}
} else {
skuBind.JdSyncStatus = model.SyncFlagNewMask
skuBind.ElmSyncStatus = model.SyncFlagNewMask
skuBind.EbaiSyncStatus = model.SyncFlagNewMask
err = dao.CreateEntity(db, skuBind)
}
}
if err != nil {
dao.Rollback(db)
return num, err
}
}
dao.Commit(db)
err = CurVendorSync.SyncStoreSku(db, storeID, -1, false, userName)
}
return num, err return num, err
} }

View File

@@ -97,3 +97,7 @@ func (v *VendorSync) SyncSku(db *dao.DaoDB, nameID, skuID int, isForce bool, use
} }
return err return err
} }
func (v *VendorSync) SyncStoreSku(db *dao.DaoDB, storeID, skuID int, isForce bool, userName string) (err error) {
return err
}

View File

@@ -14,6 +14,8 @@ const (
FieldStatus = "Status" FieldStatus = "Status"
FieldSyncStatus = "SyncStatus" FieldSyncStatus = "SyncStatus"
FieldJdSyncStatus = "JdSyncStatus" FieldJdSyncStatus = "JdSyncStatus"
FieldElmSyncStatus = "ElmSyncStatus"
FieldEbaiSyncStatus = "EbaiSyncStatus"
FieldVendorID = "VendorID" FieldVendorID = "VendorID"
FieldStoreID = "StoreID" FieldStoreID = "StoreID"

View File

@@ -1,6 +1,7 @@
package controllers package controllers
import ( import (
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxstore/cms" "git.rosy.net.cn/jx-callback/business/jxstore/cms"
"github.com/astaxie/beego" "github.com/astaxie/beego"
) )
@@ -34,3 +35,21 @@ func (c *StoreSkuController) GetStoreSkus() {
return retVal, "", err return retVal, "", err
}) })
} }
// @Title 修改商家商品绑定
// @Description 修改商家商品绑定
// @Param token header string true "认证token"
// @Param storeID formData int true "需要修改的商品名IDpayload中的相应数据会被忽略"
// @Param payload formData string true "json数据StoreSkuBindInfo对象数组
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /UpdateStoreSku [put]
func (c *StoreSkuController) UpdateStoreSku() {
c.callUpdateStoreSku(func(params *tStoreSkuUpdateStoreSkuParams) (retVal interface{}, errCode string, err error) {
var skuBinds []*cms.StoreSkuBindInfo
if err = utils.UnmarshalUseNumber([]byte(params.Payload), &skuBinds); err == nil {
retVal, err = cms.UpdateStoreSku(params.StoreID, skuBinds, GetUserNameFromToken(params.Token))
}
return retVal, "", err
})
}