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

View File

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

View File

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

View File

@@ -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 "需要修改的商品名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
})
}