Merge branch 'jdshop' of e.coding.net:rosydev/jx-callback into jdshop
This commit is contained in:
@@ -14,6 +14,8 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable"
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/business/partner/purchase/mtwm"
|
"git.rosy.net.cn/jx-callback/business/partner/purchase/mtwm"
|
||||||
|
|
||||||
warehouse_getFences_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/warehouse_getFences/response"
|
warehouse_getFences_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/warehouse_getFences/response"
|
||||||
@@ -6321,6 +6323,84 @@ func BatchUpdateMTStoreLogos(vendorOrgCode string, relInfo []MtRelInfo) (hint st
|
|||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type TaoBindInfo struct {
|
||||||
|
VendorStoreID string `json:"vendorStoreID"`
|
||||||
|
VendorStoreName string `json:"vendorStoreName"`
|
||||||
|
Status string `json:"status"` //渠道营业状态
|
||||||
|
}
|
||||||
|
|
||||||
|
var TaoStoreStatus = map[string]int{
|
||||||
|
tao_vegetable.StoreOnlineWord: model.StoreStatusOpened,
|
||||||
|
tao_vegetable.StoreOfflineWord: model.StoreStatusClosed,
|
||||||
|
}
|
||||||
|
|
||||||
|
// SingleBindTaoVegetable 单独绑定淘鲜达平台三方映射
|
||||||
|
func SingleBindTaoVegetable(ctx *jxcontext.Context, bind []TaoBindInfo) (error, string) {
|
||||||
|
var (
|
||||||
|
storeID = ""
|
||||||
|
db *dao.DaoDB
|
||||||
|
errList errlist.ErrList
|
||||||
|
errIDName = make([]string, 0)
|
||||||
|
storeMaps = make([]model.StoreMap, 0)
|
||||||
|
)
|
||||||
|
if len(bind) == 0 {
|
||||||
|
return fmt.Errorf("绑定门店数据为空,请检查"), ""
|
||||||
|
}
|
||||||
|
for _, v := range bind {
|
||||||
|
if len(v.VendorStoreID) == 0 || len(v.VendorStoreName) == 0 {
|
||||||
|
errIDName = append(errIDName, v.VendorStoreID)
|
||||||
|
//errList.AddErr(fmt.Errorf("门店%s Id/名字不合法", v.VendorStoreID))
|
||||||
|
} else {
|
||||||
|
if strings.Contains(v.VendorStoreID, "X") {
|
||||||
|
temp := strings.Split(v.VendorStoreID, "X")
|
||||||
|
storeID = temp[1]
|
||||||
|
} else {
|
||||||
|
return fmt.Errorf("淘鲜达门店ID不合法"), ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
storeMap := model.StoreMap{
|
||||||
|
StoreID: utils.Str2Int(storeID),
|
||||||
|
VendorID: model.VendorIDTaoVegetable,
|
||||||
|
VendorOrgCode: "",
|
||||||
|
Status: TaoStoreStatus[v.Status],
|
||||||
|
DeliveryType: model.StoreDeliveryTypeByStore,
|
||||||
|
SyncStatus: 0,
|
||||||
|
VendorStoreName: v.VendorStoreName,
|
||||||
|
MtwmToken: "",
|
||||||
|
MtwmRefreshToken: "",
|
||||||
|
VendorStoreID: v.VendorStoreID,
|
||||||
|
}
|
||||||
|
storeMaps = append(storeMaps, storeMap)
|
||||||
|
}
|
||||||
|
userName := ctx.GetUserName()
|
||||||
|
for _, k := range storeMaps {
|
||||||
|
dao.WrapAddIDCULDEntity(k, userName)
|
||||||
|
if db == nil {
|
||||||
|
db = dao.GetDB()
|
||||||
|
}
|
||||||
|
txDB, _ := dao.Begin(db)
|
||||||
|
defer func() {
|
||||||
|
if r := recover(); r != nil {
|
||||||
|
dao.Rollback(db, txDB)
|
||||||
|
panic(r)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
if err := dao.CreateEntity(db, k); err == nil {
|
||||||
|
errList.AddErr(fmt.Errorf("%s:%v", k.VendorStoreID, err))
|
||||||
|
dao.Commit(db, txDB)
|
||||||
|
} else {
|
||||||
|
dao.Rollback(db, txDB)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if len(errIDName) > 0 {
|
||||||
|
errList.AddErr(fmt.Errorf("门店%s Id/名字不合法", errIDName))
|
||||||
|
}
|
||||||
|
if errList.GetErrListAsOne() != nil {
|
||||||
|
return nil, fmt.Sprintf("批量绑定淘鲜达门店错误:%v", errList.GetErrListAsOne())
|
||||||
|
}
|
||||||
|
return nil, ""
|
||||||
|
}
|
||||||
|
|
||||||
//操作 freight_template
|
//操作 freight_template
|
||||||
func ReplaceInsertFreight(storeID, templateID, warehouseID, tradeLimitID int, vendorStoreID, fenceID string) error {
|
func ReplaceInsertFreight(storeID, templateID, warehouseID, tradeLimitID int, vendorStoreID, fenceID string) error {
|
||||||
return dao.ReplaceInsertFreight2(storeID, templateID, warehouseID, tradeLimitID, vendorStoreID, fenceID)
|
return dao.ReplaceInsertFreight2(storeID, templateID, warehouseID, tradeLimitID, vendorStoreID, fenceID)
|
||||||
|
|||||||
@@ -1,7 +1,13 @@
|
|||||||
package tao_vegetable
|
package tao_vegetable
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable/sdk/ability2770/domain"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
|
"git.rosy.net.cn/baseapi/platformapi/mtwmapi"
|
||||||
|
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable"
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||||
@@ -14,15 +20,15 @@ import (
|
|||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
)
|
)
|
||||||
|
|
||||||
func jxActType2Mtwm(actType int) int {
|
func actType2Txd(actType int) *int64 {
|
||||||
if actType == model.ActSkuDirectDown {
|
if actType == model.ActSkuDirectDown {
|
||||||
actType = mtwmapi.RetailActTypeDirectDown
|
actType = tao_vegetable.DiscountTypeDeductMoney
|
||||||
} else if actType == model.ActSkuSecKill {
|
} else if actType == model.ActSkuSecKill {
|
||||||
actType = mtwmapi.RetailActTypeSecKill
|
actType = tao_vegetable.DiscountTypeOnePrice
|
||||||
} else {
|
} else {
|
||||||
actType = 0
|
actType = tao_vegetable.DiscountTypeDiscounts
|
||||||
}
|
}
|
||||||
return actType
|
return utils.Int64ToPointer(int64(actType))
|
||||||
}
|
}
|
||||||
|
|
||||||
func actOrderRules2Mtwm(actOrderRules []*model.ActOrderRule) (actDetails []*mtwmapi.FullDiscountActDetail) {
|
func actOrderRules2Mtwm(actOrderRules []*model.ActOrderRule) (actDetails []*mtwmapi.FullDiscountActDetail) {
|
||||||
@@ -35,37 +41,83 @@ func actOrderRules2Mtwm(actOrderRules []*model.ActOrderRule) (actDetails []*mtwm
|
|||||||
return actDetails
|
return actDetails
|
||||||
}
|
}
|
||||||
|
|
||||||
func storeSku2ActData(act *model.Act2, actStoreSku []*model.ActStoreSku2, handler func(int8) bool) (actData []*mtwmapi.RetailDiscountActData) {
|
//创建活动详情
|
||||||
orderLimit := 1
|
func act2TxdActivity(act *model.Act2) (activity *domain.AlibabaRetailMarketingItemdiscountActivityCreateItemDiscountActivityOperateRequest) {
|
||||||
if act.LimitCount > 0 {
|
actName := act.GetRealActName()
|
||||||
orderLimit = act.LimitCount
|
activity = &domain.AlibabaRetailMarketingItemdiscountActivityCreateItemDiscountActivityOperateRequest{
|
||||||
|
ActivityName: &actName,
|
||||||
|
CreatorId: &act.VendorActID,
|
||||||
|
CreatorName: &act.LastOperator,
|
||||||
|
Description: &act.Advertising,
|
||||||
|
Terminals: &[]int32{tao_vegetable.TerminalsAPP, tao_vegetable.TerminalsPOS},
|
||||||
|
//StoreIds: &[]string{act.Act.},
|
||||||
|
DiscountType: actType2Txd(act.Type),
|
||||||
|
StartTime: utils.Int64ToPointer(act.BeginAt.UnixNano() / int64(time.Millisecond)),
|
||||||
|
EndTime: utils.Int64ToPointer(act.EndAt.UnixNano() / int64(time.Millisecond)),
|
||||||
}
|
}
|
||||||
|
return activity
|
||||||
|
}
|
||||||
|
|
||||||
|
func storeSku2ActData(act *model.Act2, actStoreSku []*model.ActStoreSku2, handler func(int8) bool) (actData *domain.AlibabaRetailMarketingItemdiscountActivitySkuAddItemDiscountActivityElementOperateRequest) {
|
||||||
|
var (
|
||||||
|
limitCount = int64(1)
|
||||||
|
userLimitCount = int64(1)
|
||||||
|
fixPriceMoney = int64(0)
|
||||||
|
discountRate = int64(0)
|
||||||
|
decreaseMoney = int64(0)
|
||||||
|
limitDaily = int64(0)
|
||||||
|
)
|
||||||
|
if act.LimitCount > 0 {
|
||||||
|
limitCount = int64(act.LimitCount)
|
||||||
|
if act.LimitUser > 0 {
|
||||||
|
userLimitCount = int64(act.LimitCount)
|
||||||
|
}
|
||||||
|
} else if act.LimitDaily > 0 {
|
||||||
|
limitDaily = int64(act.LimitDaily)
|
||||||
|
}
|
||||||
|
|
||||||
for _, v := range actStoreSku {
|
for _, v := range actStoreSku {
|
||||||
if handler == nil || handler(v.SyncStatus) {
|
if handler == nil || handler(v.SyncStatus) {
|
||||||
dayLimit := -1
|
stock := int64(0)
|
||||||
if v.Stock > 0 {
|
if v.Stock > 0 {
|
||||||
dayLimit = v.Stock
|
stock = int64(v.Stock)
|
||||||
}
|
}
|
||||||
actData = append(actData, &mtwmapi.RetailDiscountActData{
|
|
||||||
AppFoodCode: utils.Int2Str(v.SkuID),
|
sType := *actType2Txd(v.Type)
|
||||||
// UserType: 0,
|
switch sType {
|
||||||
StartTime: act.BeginAt.Unix(),
|
case tao_vegetable.DiscountTypeDeductMoney:
|
||||||
EndTime: act.EndAt.Unix(),
|
decreaseMoney = v.VendorPrice - v.ActualActPrice
|
||||||
OrderLimit: orderLimit,
|
case tao_vegetable.DiscountTypeOnePrice:
|
||||||
DayLimit: dayLimit,
|
fixPriceMoney = v.ActualActPrice
|
||||||
// Period: "",
|
case tao_vegetable.DiscountTypeDiscounts:
|
||||||
// WeeksTime: "",
|
discountRate = int64(v.PricePercentage * 10)
|
||||||
SettingType: mtwmapi.SettingTypeAsPrice,
|
}
|
||||||
ActPrice: jxutils.IntPrice2Standard(v.ActualActPrice),
|
|
||||||
// DiscountCoefficient: 0,
|
actData = &domain.AlibabaRetailMarketingItemdiscountActivitySkuAddItemDiscountActivityElementOperateRequest{
|
||||||
// Sequence: int(v.ActPrice), // 此字段不允许重复
|
SkuElements: &[]domain.AlibabaRetailMarketingItemdiscountActivitySkuAddSkuActivityElementDto{{
|
||||||
// ItemID: utils.Str2Int64WithDefault(v.VendorActID, 0),
|
SkuCode: utils.String2Pointer(utils.Int2Str(v.SkuID)),
|
||||||
})
|
FixPriceMoney: &fixPriceMoney,
|
||||||
|
DiscountRate: &discountRate,
|
||||||
|
DecreaseMoney: &decreaseMoney,
|
||||||
|
Limit: &domain.AlibabaRetailMarketingItemdiscountActivitySkuAddLimitDto{
|
||||||
|
TotalLimitCnt: &stock,
|
||||||
|
DailyTotalLimitCnt: &limitDaily,
|
||||||
|
UserTotalLimitCnt: &userLimitCount,
|
||||||
|
UserDailyLimitCnt: &userLimitCount,
|
||||||
|
OrderLimitCnt: &limitCount,
|
||||||
|
},
|
||||||
|
}},
|
||||||
|
CreatorId: &v.VendorSkuID,
|
||||||
|
CreatorName: &v.LastOperator,
|
||||||
|
OutActId: utils.String2Pointer(utils.Int2Str(v.ActID)),
|
||||||
|
}
|
||||||
|
//actData = append(actData, temp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return actData
|
return actData
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//删除活动详情
|
||||||
func storeSku2ActData4Delete(actStoreSku []*model.ActStoreSku2, handler func(int8) bool) (actIDList []string) {
|
func storeSku2ActData4Delete(actStoreSku []*model.ActStoreSku2, handler func(int8) bool) (actIDList []string) {
|
||||||
for _, v := range actStoreSku {
|
for _, v := range actStoreSku {
|
||||||
if handler == nil || handler(v.SyncStatus) {
|
if handler == nil || handler(v.SyncStatus) {
|
||||||
@@ -77,46 +129,86 @@ func storeSku2ActData4Delete(actStoreSku []*model.ActStoreSku2, handler func(int
|
|||||||
return actIDList
|
return actIDList
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//删除活动的商品详情
|
||||||
|
func actSku2Delete(actIDs []string) (map[string]domain.AlibabaRetailMarketingItemdiscountActivitySkuDeleteItemDiscountActivityElementOperateRequest, error) {
|
||||||
|
var (
|
||||||
|
SkuElement []domain.AlibabaRetailMarketingItemdiscountActivitySkuDeleteSkuActivityElementDto
|
||||||
|
deData = make(map[string]domain.AlibabaRetailMarketingItemdiscountActivitySkuDeleteItemDiscountActivityElementOperateRequest, 0)
|
||||||
|
)
|
||||||
|
for _, v := range actIDs {
|
||||||
|
i := utils.Str2Int64(v)
|
||||||
|
if skus, err := api.TaoVegetableApi.ActivitySkuQuery(i); err == nil {
|
||||||
|
//查询商品
|
||||||
|
for _, sku := range skus {
|
||||||
|
SkuElement = append(SkuElement, domain.AlibabaRetailMarketingItemdiscountActivitySkuDeleteSkuActivityElementDto{
|
||||||
|
SkuCode: sku.SkuCode,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//查询活动详情
|
||||||
|
act, err := api.TaoVegetableApi.ActivityQuery(i, "")
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
deData[v] = domain.AlibabaRetailMarketingItemdiscountActivitySkuDeleteItemDiscountActivityElementOperateRequest{
|
||||||
|
SkuElements: &SkuElement,
|
||||||
|
ActId: &i,
|
||||||
|
CreatorId: act.CreatorId,
|
||||||
|
CreatorName: act.CreatorName,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return deData, nil
|
||||||
|
}
|
||||||
|
|
||||||
func isCreateOrUpdate(syncStatus int8) bool {
|
func isCreateOrUpdate(syncStatus int8) bool {
|
||||||
return model.IsSyncStatusNeedCreate(syncStatus) || model.IsSyncStatusNeedUpdate(syncStatus)
|
return model.IsSyncStatusNeedCreate(syncStatus) || model.IsSyncStatusNeedUpdate(syncStatus)
|
||||||
}
|
}
|
||||||
|
|
||||||
func createOneShopAct(act *model.Act2, vendorStoreID string, actStoreSku []*model.ActStoreSku2) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
func createOneShopAct(act *model.Act2, vendorStoreID string, actStoreSku []*model.ActStoreSku2) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
||||||
actData := storeSku2ActData(act, actStoreSku, isCreateOrUpdate)
|
//1 活动详情
|
||||||
if len(actData) > 0 {
|
actData := act2TxdActivity(act)
|
||||||
|
//2 活动商品详情
|
||||||
|
actSkuData := storeSku2ActData(act, actStoreSku, isCreateOrUpdate)
|
||||||
|
|
||||||
|
if actData != nil && actSkuData != nil {
|
||||||
if globals.EnableMtwmStoreWrite {
|
if globals.EnableMtwmStoreWrite {
|
||||||
actResult, faileInfoList, err2 := api.MtwmAPI.RetailDiscountBatchSave2(vendorStoreID, jxActType2Mtwm(act.Type), actData)
|
//创建活动
|
||||||
err = err2
|
actID, err1 := api.TaoVegetableApi.ActivityCreate(*actData)
|
||||||
// 忽略错误,都放在failedList里
|
if err1 != nil || actID == 0 {
|
||||||
// if err != nil {
|
failedList = append(failedList, &partner.StoreSkuInfoWithErr{
|
||||||
// return nil, err
|
VendoreID: model.VendorIDTaoVegetable,
|
||||||
// }
|
ErrMsg: fmt.Sprintf("%v", err1),
|
||||||
|
StoreID: int(utils.Str2Int64WithDefault(vendorStoreID, 0)),
|
||||||
|
})
|
||||||
|
return failedList, err1
|
||||||
|
}
|
||||||
|
//活动增加商品
|
||||||
|
actSkuData.ActId = &actID
|
||||||
|
err3, successSkuCode, failSkuCode := api.TaoVegetableApi.ActivitySkuCreate(*actSkuData)
|
||||||
|
err = err3
|
||||||
actStoreSkuMap := make(map[int]*model.ActStoreSku2)
|
actStoreSkuMap := make(map[int]*model.ActStoreSku2)
|
||||||
for _, v := range actStoreSku {
|
for _, v := range actStoreSku {
|
||||||
actStoreSkuMap[v.SkuID] = v
|
actStoreSkuMap[v.SkuID] = v
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, v := range actResult {
|
for _, v := range successSkuCode.SkuID {
|
||||||
if v2 := actStoreSkuMap[int(utils.Str2Int64WithDefault(v.AppFoodCode, 0))]; v2 != nil {
|
if v2 := actStoreSkuMap[int(utils.Str2Int64WithDefault(v, 0))]; v2 != nil {
|
||||||
v2.VendorActID = utils.Int64ToStr(v.ActID)
|
v2.VendorActID = utils.Int64ToStr(successSkuCode.ActID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for _, v := range faileInfoList {
|
|
||||||
if v2 := actStoreSkuMap[int(utils.Str2Int64WithDefault(v.AppFoodCode, 0))]; v2 != nil {
|
for _, v := range failSkuCode {
|
||||||
|
if v2 := actStoreSkuMap[int(utils.Str2Int64WithDefault(v, 0))]; v2 != nil {
|
||||||
failedList = append(failedList, &partner.StoreSkuInfoWithErr{
|
failedList = append(failedList, &partner.StoreSkuInfoWithErr{
|
||||||
StoreSkuInfo: &partner.StoreSkuInfo{
|
StoreSkuInfo: &partner.StoreSkuInfo{
|
||||||
SkuID: v2.SkuID,
|
SkuID: v2.SkuID,
|
||||||
},
|
},
|
||||||
VendoreID: model.VendorIDMTWM,
|
VendoreID: model.VendorIDTaoVegetable,
|
||||||
StoreID: int(utils.Str2Int64WithDefault(vendorStoreID, 0)),
|
StoreID: int(utils.Str2Int64WithDefault(vendorStoreID, 0)),
|
||||||
ErrMsg: v.ErrorMsg,
|
ErrMsg: fmt.Sprint(err3),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
for _, v := range actStoreSku {
|
|
||||||
v.VendorActID = utils.Int64ToStr(jxutils.GenFakeID())
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return failedList, err
|
return failedList, err
|
||||||
@@ -125,24 +217,32 @@ func createOneShopAct(act *model.Act2, vendorStoreID string, actStoreSku []*mode
|
|||||||
func cancelOneShopAct(act *model.Act2, vendorStoreID string, actStoreSku []*model.ActStoreSku2) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
func cancelOneShopAct(act *model.Act2, vendorStoreID string, actStoreSku []*model.ActStoreSku2) (failedList []*partner.StoreSkuInfoWithErr, err error) {
|
||||||
if list := storeSku2ActData4Delete(actStoreSku, nil /*model.IsSyncStatusNeedDelete*/); len(list) > 0 {
|
if list := storeSku2ActData4Delete(actStoreSku, nil /*model.IsSyncStatusNeedDelete*/); len(list) > 0 {
|
||||||
if globals.EnableMtwmStoreWrite {
|
if globals.EnableMtwmStoreWrite {
|
||||||
failedList2, err2 := api.MtwmAPI.RetailDiscountDelete2(vendorStoreID, jxActType2Mtwm(act.Type), list)
|
|
||||||
actStoreSkuMap := make(map[string]*model.ActStoreSku2)
|
actStoreSkuMap := make(map[string]*model.ActStoreSku2)
|
||||||
for _, v := range actStoreSku {
|
for _, v := range actStoreSku {
|
||||||
actStoreSkuMap[v.VendorActID] = v
|
actStoreSkuMap[v.VendorActID] = v
|
||||||
}
|
}
|
||||||
for _, v := range failedList2 {
|
//查找删除的活动商品
|
||||||
if !mtwmapi.CanDeleteActErrMsgIgnore(v.ErrorMsg) {
|
sku2Delete, err := actSku2Delete(list)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
//删除活动以及商品
|
||||||
|
for k, v := range sku2Delete {
|
||||||
|
if err = api.TaoVegetableApi.ActivitySkuDelete(v); err == nil {
|
||||||
|
err = api.TaoVegetableApi.ActivityDelete(*v.CreatorId, *v.CreatorName, utils.Str2Int64(k))
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
failedList = append(failedList, &partner.StoreSkuInfoWithErr{
|
failedList = append(failedList, &partner.StoreSkuInfoWithErr{
|
||||||
StoreSkuInfo: &partner.StoreSkuInfo{
|
StoreSkuInfo: &partner.StoreSkuInfo{
|
||||||
SkuID: actStoreSkuMap[utils.Int64ToStr(v.ActID)].SkuID,
|
SkuID: actStoreSkuMap[k].SkuID,
|
||||||
},
|
},
|
||||||
StoreID: int(utils.Str2Int64WithDefault(vendorStoreID, 0)),
|
StoreID: int(utils.Str2Int64WithDefault(vendorStoreID, 0)),
|
||||||
ErrMsg: v.ErrorMsg,
|
ErrMsg: fmt.Sprint(err),
|
||||||
VendoreID: model.VendorIDMTWM,
|
VendoreID: model.VendorIDTaoVegetable,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
err = err2
|
|
||||||
err = nil // 强制不返回错误,使用部分错误
|
err = nil // 强制不返回错误,使用部分错误
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1658,6 +1658,25 @@ func (c *StoreController) BatchUpdateMTStoreLogos() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Title 批量绑定淘鲜达门店
|
||||||
|
// @Description 批量绑定淘鲜达门店
|
||||||
|
// @Param token header string true "认证token"
|
||||||
|
// @Param bindInfos formData string true "TaoBindInfo"
|
||||||
|
// @Success 200 {object} controllers.CallResult
|
||||||
|
// @Failure 200 {object} controllers.CallResult
|
||||||
|
// @router /SingleBindTaoVegetable [post]
|
||||||
|
func (c *StoreController) SingleBindTaoVegetable() {
|
||||||
|
c.callSingleBindTaoVegetable(func(params *tStoreSingleBindTaoVegetableParams) (retVal interface{}, hint string, err error) {
|
||||||
|
taoBindInfo := make([]cms.TaoBindInfo, 0)
|
||||||
|
b := bytes.NewBufferString(params.BindInfos)
|
||||||
|
decoder := json.NewDecoder(b)
|
||||||
|
if err = decoder.Decode(&taoBindInfo); err == nil {
|
||||||
|
err, hint = cms.SingleBindTaoVegetable(params.Ctx, taoBindInfo)
|
||||||
|
}
|
||||||
|
return nil, hint, err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
// @Title 测试操作freight_template
|
// @Title 测试操作freight_template
|
||||||
// @Description 测试操作freight_template
|
// @Description 测试操作freight_template
|
||||||
// @Param token header string true "认证token"
|
// @Param token header string true "认证token"
|
||||||
|
|||||||
@@ -3109,7 +3109,15 @@ func init() {
|
|||||||
MethodParams: param.Make(),
|
MethodParams: param.Make(),
|
||||||
Filters: nil,
|
Filters: nil,
|
||||||
Params: nil})
|
Params: nil})
|
||||||
|
//单独绑定淘鲜达门店
|
||||||
|
web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"],
|
||||||
|
web.ControllerComments{
|
||||||
|
Method: "SingleBindTaoVegetable",
|
||||||
|
Router: `/SingleBindTaoVegetable`,
|
||||||
|
AllowHTTPMethods: []string{"post"},
|
||||||
|
MethodParams: param.Make(),
|
||||||
|
Filters: nil,
|
||||||
|
Params: nil})
|
||||||
//测试用-ysq
|
//测试用-ysq
|
||||||
web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"],
|
web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"],
|
||||||
web.ControllerComments{
|
web.ControllerComments{
|
||||||
|
|||||||
Reference in New Issue
Block a user