Merge branch 'jdshop' of e.coding.net:rosydev/jx-callback into jdshop

This commit is contained in:
邹宗楠
2022-11-14 15:20:29 +08:00
6 changed files with 146 additions and 22 deletions

View File

@@ -1186,6 +1186,25 @@ func SetStoreSkuSyncStatus2(db *dao.DaoDB, storeIDs []int, vendorIDs, skuIDs []i
return num, nil
}
func UpdateSkuImg(ctx *jxcontext.Context, skuID int, payload map[string]interface{}) (string, error) {
var (
db = dao.GetDB()
)
globals.SugarLogger.Debugf("UpdateSkuImg pre test data: %s\n", payload)
if skuID == 0 {
return "skuID必传", nil
} else if payload["img"] == "" {
return "img必传", nil
}
if _, err := dao.ExecuteSQL(db, `
UPDATE sku_name s
SET s.img = ?,s.img2 = ?,s.img3 = ?,s.img4 = ?,s.img5 = ?,s.desc_img = ?
WHERE s.id = ? `, payload["img"], payload["img2"], payload["img3"], payload["img4"], payload["img5"], payload["descImg"], skuID); err != nil {
return "数据库操作失败", err
}
return "", nil
}
func DeleteSkuName(ctx *jxcontext.Context, nameID int, userName string) (num int64, err error) {
db := dao.GetDB()
txDB, _ := dao.Begin(db)

View File

@@ -1522,7 +1522,8 @@ func AddStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, vendorID int, vend
return nil, fmt.Errorf("此平台门店ID已在京西有绑定请先解除绑定平台门店ID :[%v]", storeMap.VendorStoreID)
}
if vendorID == model.VendorIDDD { //抖店绑定店铺时 检查并补充创建
if err2 := tiktok_store.CreateAndBindAllV2(vendorOrgCode, int64(storeMap.StoreID), utils.Str2Int64(storeMap.VendorStoreID), int64(storeMap.DeliveryFeeDeductionFee), utils.Str2Int64(storeMap.YbStorePrefix), userName); err2 != nil {
globals.SugarLogger.Debugf("vendorID ==============%d", vendorID)
if err2 := tiktok_store.CreateOrUpdateAll(vendorOrgCode, int64(storeMap.StoreID), utils.Str2Int64(storeMap.VendorStoreID), int64(storeMap.DeliveryFeeDeductionFee), utils.Str2Int64(storeMap.YbStorePrefix)); err2 != nil {
errList.AddErr(err2)
}
}
@@ -5893,9 +5894,89 @@ func UpdateStorePoiStatus(ctx *jxcontext.Context) error {
//抖音定时任务
//func UpdateStoreRelInformation(ctx *jxcontext.Context) error {
// var (
// db = dao.GetDB()
// storeIDs []string
// temp map[int64]string
// db = dao.GetDB()
// errList = errlist.New()
// tempIDs map[string][]string
// FreightTemplate = &model.FreightTemplate{}
// )
//storeList,_:=dao.GetStoreList(db,[]int{model.VendorIDDD},nil,[]int{model.store})
// vendorOrgCodes, _ := dao.GetVendorOrgCode(db, model.VendorIDDD, "", "platform")
// for _, v := range vendorOrgCodes {
// if temp, err = tiktok_store.GetAllVendorStoreMap(ctx, v.VendorOrgCode); err != nil {
// return nil, err
// }
// //tempIDs[v.VendorOrgCode] = temp
// }
//
// if handler, ok := partner.GetPurchasePlatformFromVendorID(model.VendorIDDD).(partner.IStoreHandler); ok {
// rootTask := tasksch.NewParallelTask("UpdateStoreRelInformation 根据平台门店ID同步本地相关信息", tasksch.NewParallelConfig().SetParallelCount(1), ctx,
// func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
// vendorOrgCodes, _ := dao.GetVendorOrgCode(db, model.VendorIDDD, "", "platform")
// for _, v := range vendorOrgCodes {
// if temp, err = tiktok_store.GetAllVendorStoreMap(ctx, v.VendorOrgCode); err != nil {
// return nil, err
// }
// //tempIDs[v.VendorOrgCode] = temp
// }
//
// subTask := tasksch.NewSeqTask("UpdateStoreRelInformation 根据平台门店ID同步本地相关信息", ctx,
// func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
// switch step {
// case 0:
// for i, j := range tempIDs {
// for _, v := range j {
// //(1)仓库以及电子围栏
// if bindWarehouse, err := tiktok_store.GetWarehouseByStore(i, utils.Str2Int64(v)); err != nil {
// errList.AddErr(fmt.Errorf("同步任务: 获取门店(%s)绑定的仓库以及电子围栏失败:%v", v, err))
// } else if len(bindWarehouse[utils.Str2Int64(i)][0].OutFenceIds) > 0 {
// tempStr := ""
// for k, v := range bindWarehouse[utils.Str2Int64(i)][0].OutFenceIds {
// tempStr += v
// if k != len(bindWarehouse[utils.Str2Int64(i)][0].OutFenceIds) {
// tempStr += ","
// }
// }
// FreightTemplate.FenceID = tempStr
// FreightTemplate.WarehouseID = bindWarehouse[utils.Str2Int64(i)][0].WarehouseId
// }
// //(2)运费模板
// if bindFreightIDs, err := tiktok_store.GetStoreFreight(i, utils.Str2Int64(v)); err != nil {
// globals.SugarLogger.Debugf("同步任务: 获取门店(%s) 绑定运费模板出错:%v", v, err)
// errList.AddErr(fmt.Errorf("同步任务: 获取门店(%s) 绑定运费模板出错:%v", v, err))
// } else {
// FreightTemplate.TemplateID = bindFreightIDs
// }
// //(3)限售模板
// if bindTradeLimitID, err := tiktok_store.GetStoreSaleLimit(i, utils.Str2Int64(v)); err != nil {
// globals.SugarLogger.Debugf("同步任务: 获取门店(%s) 限售模板出错:%v", v, err)
// errList.AddErr(fmt.Errorf("同步任务: 获取门店(%s) 限售模板出错:%v", v, err))
// } else {
// FreightTemplate.TradeLimitID = bindTradeLimitID
// }
// }
// }
//
// if _, err := dao.UpdateEntity(db, FreightTemplate, "TemplateID", "WarehouseID", "FenceID", "TradeLimitID "); err != nil {
// if err1 := dao.CreateEntity(db, FreightTemplate); err != nil {
// errList.AddErr(fmt.Errorf("同步进数据库错误信息:%v", err1))
// } else {
// errList.AddErr(fmt.Errorf("同步进数据库错误信息:%v", err))
// }
// }
// dao.WrapAddIDCULDEntity(FreightTemplate, "同步任务操作")
// }
// return nil, err
// }, 4)
// return retVal, err
// }, storeIDs)
// }
//
// //task := tasksch.NewSeqTask(fmt.Sprintf("平台:抖店小时达 UpdateStoreRelInformation"), ctx,
// // func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
// //
// // }, 3)
// //tasksch.ManageTask(task).Run()
// return nil
//}
@@ -5944,8 +6025,3 @@ func GetVendorOrgCode(ctx *jxcontext.Context, db *dao.DaoDB, storeID, vendorID i
}
return storeMap, dao.GetEntitiesByKV(db, &storeMap, cond, false)
}
//批量绑定抖店平台门店
func BatchBindVendorStore(ctx *jxcontext.Context) {
}

View File

@@ -1023,7 +1023,7 @@ type FreightTemplate struct {
VendorStoreID string `orm:"column(vendor_store_id)" json:"vendorStoreID"` //抖店平台门店ID
TemplateID int64 `orm:"column(template_id)" json:"templateID"` //运费模板ID 1对1
WarehouseID int64 `orm:"column(warehouse_id)" json:"warehouseID"` //创建门店时绑定的仓库id 1对1(仓库和电子围栏1对n)
FenceID string `orm:"column(fence_id)" json:"fenceID"` //电子围栏id 1对1
FenceID string `orm:"column(fence_id)" json:"fenceID"` //电子围栏id 多个以逗号连接
TradeLimitID int64 `orm:"column(trade_limit_id)" json:"tradeLimitID"` //限售模板id 1对1(默认会创建)
}

View File

@@ -146,7 +146,6 @@ type IPurchasePlatformHandler interface {
// 只与平台相关
GetVendorCategories(ctx *jxcontext.Context) (vendorCats []*model.SkuVendorCategory, err error)
////////
// Store
ReadStore(ctx *jxcontext.Context, vendorOrgCode, vendorStoreID, vendorStoreName string) (store *dao.StoreDetail, err error)
UpdateStore(db *dao.DaoDB, storeID int, userName string) (err error)

View File

@@ -13,6 +13,7 @@ import (
shop_bindStoreSaleLimit_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_bindStoreSaleLimit/request"
shop_editStore_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_editStore/request"
shop_getStoreDetail_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_getStoreDetail/request"
shop_getStoreList_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_getStoreList/request"
shop_storeSuspend_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_storeSuspend/request"
shop_unsuspendStore_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_unsuspendStore/request"
trade_UpdateTradeLimitTemplate_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/trade_UpdateTradeLimitTemplate/request"
@@ -143,7 +144,7 @@ func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri
errList.AddErr(dao.CreateEntity(db, storeMap))
}
vendorStoreIDs = utils.Int64ToStr(resp.ResultList[0].Store.StoreId)
if err := CreateAndBindAllV2(storeDetail.VendorOrgCode, int64(storeDetail.Store.ID), resp.ResultList[0].Store.StoreId, int64(storeDetail.DeliveryFeeDeductionFee), utils.Str2Int64(storeDetail.YbStorePrefix), userName); err != nil {
if err := CreateOrUpdateAll(storeDetail.VendorOrgCode, int64(storeDetail.Store.ID), resp.ResultList[0].Store.StoreId, int64(storeDetail.DeliveryFeeDeductionFee), utils.Str2Int64(storeDetail.YbStorePrefix)); err != nil {
errList.AddErr(err)
}
}
@@ -151,7 +152,6 @@ func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri
return vendorStoreIDs, errors.New(fmt.Sprintf("创建抖店平台店铺相关错误信息:%v", endErr))
}
// todo 暂时不删除
func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID, deliveryFeeDeductionFee, minPrice int64) error {
var (
errList = errlist.New()
@@ -161,13 +161,13 @@ func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID, deliveryFee
//1.平台获取门店运费模板
bindFreightIDs, err := GetStoreFreight(vendorOrgCode, vendorStoreID)
if err != nil {
globals.SugarLogger.Debug("获取门店(%d) 绑定运费模板出错:%v", vendorStoreID, err)
globals.SugarLogger.Debugf("获取门店(%d) 绑定运费模板出错:%v", vendorStoreID, err)
errList.AddErr(fmt.Errorf("获取门店(%d) 绑定运费模板出错:%v", vendorStoreID, err))
}
if bindFreightIDs == 0 { //1未查询到绑定信息不算错误
//创建
if freightTemplateID, err := CreateFreightTemplate(int(storeID)); err != nil || freightTemplateID == 0 || utils.IsNil(freightTemplateID) {
globals.SugarLogger.Debug("京西菜市门店:%d 平台门店:%d 创建运费模板:%d 失败:%v", storeID, vendorStoreID, freightTemplateID, err)
globals.SugarLogger.Debugf("京西菜市门店:%d 平台门店:%d 创建运费模板:%d 失败:%v", storeID, vendorStoreID, freightTemplateID, err)
errList.AddErr(fmt.Errorf("京西菜市门店:%d 平台门店:%d 创建运费模板:%d 失败:%v", storeID, vendorStoreID, freightTemplateID, err))
} else { //绑定
if err = ShopBindStoreFreight(vendorOrgCode, vendorStoreID, freightTemplateID); err != nil {
@@ -915,16 +915,15 @@ func (P *PurchaseHandler) EnableAutoAcceptOrder(ctx *jxcontext.Context, vendorOr
// 获取店铺所有平台ID
func (P *PurchaseHandler) GetAllStoresVendorID(ctx *jxcontext.Context, vendorOrgCode string) (vendorStoreIDs []string, err error) {
//param := &shop_getStoreList_request.ShopGetStoreListParam{
// Page: 0,
// PageSize: 10,
// Page: "0",
// PageSize: "20",
//}
//storeList, err := api.DouDianApi.GetStoreList(param)
//if err != nil {
// return nil, err
//if stores, err := getAPI(vendorOrgCode, 0, "").GetStoreList(param); err != nil || stores.Total == 0 {
// return nil, errors.New(fmt.Sprintf("暂时无门店数据返回,请重试:%v", err))
//}
//if len(storeList.StoreDetailList) > 0 {
// vendorStoreIDs = make([]string, len(storeList.StoreDetailList))
// for k, v := range storeList.StoreDetailList {
//else if len(stores.StoreDetailList) > 0 {
// vendorStoreIDs = make([]string, len(stores.StoreDetailList))
// for k, v := range stores.StoreDetailList {
// vendorStoreIDs[k] = utils.Int64ToStr(v.Store.StoreId)
// }
//}
@@ -932,6 +931,19 @@ func (P *PurchaseHandler) GetAllStoresVendorID(ctx *jxcontext.Context, vendorOrg
return nil, err
}
//获取京西 抖店门店映射关系
func GetAllVendorStoreMap(ctx *jxcontext.Context, vendorOrgCode string) (map[int64]string, error) {
param := &shop_getStoreList_request.ShopGetStoreListParam{
Page: "0",
PageSize: "20",
}
if stores, err := getAPI(vendorOrgCode, 0, "").GetStoreList(param); err != nil || len(stores) == 0 {
return nil, errors.New(fmt.Sprintf("暂时无门店数据返回,请重试:%v", err))
} else {
return stores, err
}
}
func (P *PurchaseHandler) UpdateStoreLineStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, lineStatus int) (err error) {
a := getAPI(vendorOrgCode, storeID, vendorStoreID)
if lineStatus == model.StoreStatusOpened {

View File

@@ -222,6 +222,24 @@ func (c *SkuController) UpdateSkuName() {
})
}
// @Title 仅修改商品图片
// @Description 仅在本地数据库修改商品图片
// @Param token header string true "认证token"`
// @Param skuID formData int true "商品名ID"
// @Param payload formData string true "商品图片"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /UpdateSkuImg [put]
func (c *SkuController) UpdateSkuImg() {
c.callUpdateSkuImg(func(params *tSkuUpdateSkuImgParams) (retVal interface{}, errCode string, err error) {
payload := make(map[string]interface{})
if err = utils.UnmarshalUseNumber([]byte(params.Payload), &payload); err == nil {
retVal, err = cms.UpdateSkuImg(params.Ctx, params.SkuID, payload)
}
return retVal, "", nil
})
}
// @Title 删除商品名
// @Description 此前商品名下的所有商品也会被级连删除
// @Param token header string true "认证token"