增加商品力荐标志,目前只有美团

This commit is contained in:
苏尹岚
2020-01-19 16:27:41 +08:00
parent 27c3763ff9
commit 8b1c0726fb
7 changed files with 146 additions and 1 deletions

View File

@@ -1288,7 +1288,8 @@ func updateStoreSkusSaleWithoutSync(ctx *jxcontext.Context, storeID int, skuBind
func BuildDiffData(mapData map[string]interface{}) string {
dd := utils.MustMarshal(mapData)
return string(dd)
result := utils.LimitUTF8StringLen(string(dd), 3200)
return result
}
func uniqueStoreSkuBind(skuBindSkuInfos []*StoreSkuBindSkuInfo) (outSkuBindSkuInfos []*StoreSkuBindSkuInfo) {
@@ -3250,3 +3251,86 @@ func AutoFocusStoreSkusWithoutFocus(ctx *jxcontext.Context, skuIDs []int, isSync
}
return err
}
func UpdateStoreSkusSpecTag(ctx *jxcontext.Context, vendorIDs []int, files []*multipart.FileHeader, isAsync, isContinueWhenError bool) (hint string, err error) {
if len(files) == 0 {
return "", errors.New("没有文件上传!")
}
fileHeader := files[0]
file, err := fileHeader.Open()
hint, err = UpdateStoreSkusSpecTagBin(ctx, file, vendorIDs, isAsync, isContinueWhenError)
file.Close()
return hint, err
}
func UpdateStoreSkusSpecTagBin(ctx *jxcontext.Context, reader io.Reader, vendorIDs []int, isAsync, isContinueWhenError bool) (hint string, err error) {
var (
db = dao.GetDB()
storeSkuMap = make(map[int][]*partner.StoreSkuInfo)
)
taskSeqFunc := func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
switch step {
case 0:
// xlsx, err := excelize.OpenFile("111.xlsx")
xlsx, err := excelize.OpenReader(reader)
if err != nil {
return result, err
}
rows, _ := xlsx.GetRows(xlsx.GetSheetName(1))
for rowNum, row := range rows {
if rowNum < 1 {
continue
}
getCellForSpecTag(rowNum, row, storeSkuMap)
}
case 1:
for storeID, storeSkuInfos := range storeSkuMap {
for i := 0; i < len(storeSkuInfos)/2; i++ {
tmp := storeSkuInfos[i]
storeSkuInfos[i] = storeSkuInfos[len(storeSkuInfos)-i-1]
storeSkuInfos[len(storeSkuInfos)-i-1] = tmp
}
for _, v := range vendorIDs {
store, _ := dao.GetStoreDetail(db, storeID, v)
for _, vv := range apimanager.CurAPIManager.GetAppOrgCodeList(v) {
handler := partner.GetPurchasePlatformFromVendorID(v).(partner.IPurchasePlatformStoreSkuHandler)
err = handler.UpdateStoreSkusSpecTag(ctx, vv, storeID, store.VendorStoreID, storeSkuMap[storeID])
}
}
}
}
return result, err
}
taskSeq := tasksch.NewSeqTask2("修改平台力荐商品", ctx, isContinueWhenError, taskSeqFunc, 2)
tasksch.HandleTask(taskSeq, nil, true).Run()
if !isAsync {
_, err = taskSeq.GetResult(0)
hint = "1"
} else {
hint = taskSeq.GetID()
}
return hint, err
}
func getCellForSpecTag(rowNum int, row []string, storeSkuMap map[int][]*partner.StoreSkuInfo) {
var (
skuMap = &partner.StoreSkuInfo{}
storeID int
skuID int
isSpec int
)
for k, cell := range row {
if k == 0 {
storeID = int(utils.Str2Int64(cell))
}
if k == 1 {
skuID = int(utils.Str2Int64(cell))
}
if k == 2 {
isSpec = int(utils.Str2Int64(cell))
}
}
skuMap.SkuID = skuID
skuMap.IsSpecialty = isSpec
storeSkuMap[storeID] = append(storeSkuMap[storeID], skuMap)
}

View File

@@ -48,6 +48,7 @@ type StoreSkuInfo struct {
ActPrice int64 `json:"actPrice,omitempty"`
VendorActID string `json:"vendorActID,omitempty"`
IsSpecialty int `json:"isSpecialty,omitempty"`
}
type StoreSkuInfoWithErr struct {
@@ -151,6 +152,7 @@ type IPurchasePlatformStoreSkuHandler interface {
CreateStoreSkusAct(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*StoreSkuInfo) (failedList []*StoreSkuInfoWithErr, err error)
CancelActs(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*StoreSkuInfo) (failedList []*StoreSkuInfoWithErr, err error)
UpdateStoreSkusSpecTag(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*StoreSkuInfo) (err error)
}
type ISingleStoreStoreSkuHandler interface {

View File

@@ -492,3 +492,7 @@ func (p *PurchaseHandler) CancelActs(ctx *jxcontext.Context, vendorOrgCode strin
}
return failedList, err
}
func (p *PurchaseHandler) UpdateStoreSkusSpecTag(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (err error) {
return err
}

View File

@@ -291,3 +291,7 @@ func (p *PurchaseHandler) CancelActs(ctx *jxcontext.Context, vendorOrgCode strin
}
return failedList, err
}
func (p *PurchaseHandler) UpdateStoreSkusSpecTag(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (err error) {
return err
}

View File

@@ -592,3 +592,24 @@ func (p *PurchaseHandler) CreateStoreSkusAct(ctx *jxcontext.Context, vendorOrgCo
func (p *PurchaseHandler) CancelActs(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (failedList []*partner.StoreSkuInfoWithErr, err error) {
return cancelOneShopAct(putils.GetFixDirectDownAct(vendorOrgCode, storeID, 0), vendorStoreID, putils.StoreSku2ActStoreSku(model.SyncFlagDeletedMask, vendorStoreID, storeSkuList))
}
func (p *PurchaseHandler) UpdateStoreSkusSpecTag(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, storeSkuList []*partner.StoreSkuInfo) (err error) {
var foodDataList = []map[string]interface{}{}
for _, v := range storeSkuList {
var foodData = make(map[string]interface{})
if v.IsSpecialty != 0 && v.IsSpecialty == -1 {
v.IsSpecialty = 0
}
foodData["is_specialty"] = v.IsSpecialty
foodData["app_food_code"] = v.SkuID
foodDataList = append(foodDataList, foodData)
}
if globals.EnableMtwmStoreWrite {
if len(foodDataList) == 1 {
err = api.MtwmAPI.RetailInitData(ctx.GetTrackInfo(), vendorStoreID, utils.Int2Str(storeSkuList[0].SkuID), foodDataList[0])
} else if len(foodDataList) > 0 {
_, err = api.MtwmAPI.RetailBatchInitData(ctx.GetTrackInfo(), vendorStoreID, foodDataList)
}
}
return err
}

View File

@@ -628,3 +628,24 @@ func (c *StoreSkuController) AutoFocusStoreSkusForTopSkus() {
return retVal, "", err
})
}
// @Title 设置平台商品力荐标志
// @Description 设置平台商品力荐标志
// @Param token header string true "认证token"
// @Param vendorIDs formData string true "厂商ID列表"
// @Param isAsync formData bool true "是否异步,缺省是同步"
// @Param isContinueWhenError formData bool true "单个同步失败是否继续缺省false"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /UpdateStoreSkusSpecTag [post]
func (c *StoreSkuController) UpdateStoreSkusSpecTag() {
var vendorIDList []int
c.callUpdateStoreSkusSpecTag(func(params *tStoreSkuUpdateStoreSkusSpecTagParams) (retVal interface{}, errCode string, err error) {
r := c.Ctx.Request
files := r.MultipartForm.File["userfiles"]
if jxutils.Strings2Objs(params.VendorIDs, &vendorIDList); err == nil {
retVal, err = cms.UpdateStoreSkusSpecTag(params.Ctx, vendorIDList, files, params.IsAsync, params.IsContinueWhenError)
}
return retVal, "", err
})
}

View File

@@ -1881,6 +1881,15 @@ func init() {
Filters: 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: "UpdateStoreSkusSpecTag",
Router: `/UpdateStoreSkusSpecTag`,
AllowHTTPMethods: []string{"post"},
MethodParams: param.Make(),
Filters: 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: "UpdateStoresSkus",