- UpdateStoreSku
This commit is contained in:
@@ -2,6 +2,7 @@ package cms
|
||||
|
||||
import (
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
@@ -19,6 +20,14 @@ type StoreSkuNamesInfo struct {
|
||||
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) {
|
||||
db := dao.GetDB()
|
||||
sql := `
|
||||
@@ -153,10 +162,81 @@ func GetStoreSkus(storeID int, keyword string, params map[string]interface{}, of
|
||||
return skuNamesInfo, err
|
||||
}
|
||||
|
||||
func SetStoreSkuStatus(storeID int, isSale bool, userName string) (num int64, err error) {
|
||||
return num, err
|
||||
}
|
||||
|
||||
func SetStoreFocusSku(storeID int, skuID int, isFocus, isSale bool, userName string) (num int64, err error) {
|
||||
func UpdateStoreSku(storeID int, skuBinds []*StoreSkuBindInfo, userName string) (num int64, err error) {
|
||||
db := dao.GetDB()
|
||||
var existBinds []*model.StoreSkuBind
|
||||
skuIDs := make([]int, len(skuBinds))
|
||||
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
|
||||
}
|
||||
|
||||
@@ -97,3 +97,7 @@ func (v *VendorSync) SyncSku(db *dao.DaoDB, nameID, skuID int, isForce bool, use
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (v *VendorSync) SyncStoreSku(db *dao.DaoDB, storeID, skuID int, isForce bool, userName string) (err error) {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -5,15 +5,17 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
FieldID = "ID"
|
||||
FieldParentID = "ParentID"
|
||||
FieldDeletedAt = "DeletedAt"
|
||||
FieldCreatedAt = "CreatedAt"
|
||||
FieldUpdatedAt = "UpdatedAt"
|
||||
FieldLastOperator = "LastOperator"
|
||||
FieldStatus = "Status"
|
||||
FieldSyncStatus = "SyncStatus"
|
||||
FieldJdSyncStatus = "JdSyncStatus"
|
||||
FieldID = "ID"
|
||||
FieldParentID = "ParentID"
|
||||
FieldDeletedAt = "DeletedAt"
|
||||
FieldCreatedAt = "CreatedAt"
|
||||
FieldUpdatedAt = "UpdatedAt"
|
||||
FieldLastOperator = "LastOperator"
|
||||
FieldStatus = "Status"
|
||||
FieldSyncStatus = "SyncStatus"
|
||||
FieldJdSyncStatus = "JdSyncStatus"
|
||||
FieldElmSyncStatus = "ElmSyncStatus"
|
||||
FieldEbaiSyncStatus = "EbaiSyncStatus"
|
||||
|
||||
FieldVendorID = "VendorID"
|
||||
FieldStoreID = "StoreID"
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package controllers
|
||||
|
||||
import (
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/jxstore/cms"
|
||||
"github.com/astaxie/beego"
|
||||
)
|
||||
@@ -34,3 +35,21 @@ func (c *StoreSkuController) GetStoreSkus() {
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
|
||||
// @Title 修改商家商品绑定
|
||||
// @Description 修改商家商品绑定
|
||||
// @Param token header string true "认证token"
|
||||
// @Param storeID formData int true "需要修改的商品名ID,payload中的相应数据会被忽略"
|
||||
// @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
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user