1
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package cms
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"git.rosy.net.cn/baseapi/platformapi/ebaiapi"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
||||
@@ -17,37 +18,59 @@ import (
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||
)
|
||||
|
||||
const (
|
||||
SyncTypeSku = 1
|
||||
SyncTypeAct = 2
|
||||
SyncTypeAll = 3
|
||||
)
|
||||
|
||||
// CopyOnStoreSkuToOther 将一个美团门店分类和商品复制到另一个门店
|
||||
func CopyOnStoreSkuToOther(ctx *jxcontext.Context, fromStoreId, toStoreId string, vendorId int, isAsync bool, offSet int) (hint string, err error) {
|
||||
func CopyOnStoreSkuToOther(ctx *jxcontext.Context, fromStoreId, toStoreId string, vendorId int, isAsync bool, offSet int, syncType int) ([]error, error) {
|
||||
var (
|
||||
db = dao.GetDB()
|
||||
copySkuErr = make([]error, 0, 0)
|
||||
err error
|
||||
)
|
||||
|
||||
// 门店api加载
|
||||
toStore, err := dao.GetStoreDetailByVendorStoreID(db, toStoreId, vendorId, "")
|
||||
if err != nil {
|
||||
return "", err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
fromStore, err := dao.GetStoreDetailByVendorStoreID(db, fromStoreId, vendorId, "")
|
||||
if err != nil {
|
||||
return "", err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if syncType == SyncTypeSku || syncType == SyncTypeAll {
|
||||
switch vendorId {
|
||||
case model.VendorIDMTWM:
|
||||
return CopyMtToMT(ctx, fromStore, toStore, isAsync, offSet)
|
||||
_, copySkuErr, err = CopyMtToMT(ctx, fromStore, toStore, isAsync, offSet)
|
||||
case model.VendorIDEBAI:
|
||||
return CopyEBaiToEBai(ctx, fromStore, toStore, isAsync, offSet)
|
||||
_, copySkuErr, err = CopyEBaiToEBai(ctx, fromStore, toStore, isAsync, offSet)
|
||||
default:
|
||||
return "", fmt.Errorf("暂时还不支持")
|
||||
return nil, fmt.Errorf("暂时还不支持")
|
||||
}
|
||||
}
|
||||
|
||||
if syncType == SyncTypeAct || syncType == SyncTypeAll {
|
||||
if vendorId == model.VendorIDMTWM {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return copySkuErr, err
|
||||
}
|
||||
|
||||
//#region 同步商品
|
||||
|
||||
// CopyEBaiToEBai 饿了么商品复制到饿了么
|
||||
func CopyEBaiToEBai(ctx *jxcontext.Context, fromStore, toStore *dao.StoreDetail, isAsync bool, offset int) (hint string, err error) {
|
||||
func CopyEBaiToEBai(ctx *jxcontext.Context, fromStore, toStore *dao.StoreDetail, isAsync bool, offset int) (hint string, errList []error, err error) {
|
||||
VendorCategoryIDMap := map[int64]int64{}
|
||||
var errListData = make([]error, 0, 0)
|
||||
api := api.EbaiAPI
|
||||
|
||||
taskName := fmt.Sprintf("将饿了么平台门店[%s],分类和商品复制到[%s]", fromStore.VendorStoreID, toStore.VendorStoreID)
|
||||
config := tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(false)
|
||||
work := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
@@ -94,8 +117,10 @@ func CopyEBaiToEBai(ctx *jxcontext.Context, fromStore, toStore *dao.StoreDetail,
|
||||
if len(fromFoodList.List) == 0 || fromFoodList == nil {
|
||||
return nil, fmt.Errorf("fromFoodList 为空 %s ,i:= %d", utils.Format4Output(err1, false), i)
|
||||
}
|
||||
if err = BatchInitSkuEBai2EBai(ctx, fromFoodList.List, api, utils.Int2Str(toStore.ID), VendorCategoryIDMap); err != nil {
|
||||
globals.SugarLogger.Debugf("BatchInitData : %s", utils.Format4Output(err, false))
|
||||
errList := BatchInitSkuEBai2EBai(ctx, fromFoodList.List, api, utils.Int2Str(toStore.ID), VendorCategoryIDMap)
|
||||
if errList != nil {
|
||||
errListData = append(errListData, errList...)
|
||||
globals.SugarLogger.Debugf("BatchInitData : %s", utils.Format4Output(errList, false))
|
||||
}
|
||||
i = i + 1
|
||||
}
|
||||
@@ -111,11 +136,12 @@ func CopyEBaiToEBai(ctx *jxcontext.Context, fromStore, toStore *dao.StoreDetail,
|
||||
} else {
|
||||
hint = task.ID
|
||||
}
|
||||
return hint, err
|
||||
return hint, errList, err
|
||||
}
|
||||
|
||||
// BatchInitSkuEBai2EBai 批量创建商品
|
||||
func BatchInitSkuEBai2EBai(ctx *jxcontext.Context, fromSku []*ebaiapi.SkuInfo, toApi *ebaiapi.API, storeID string, VendorCategoryIDMap map[int64]int64) error {
|
||||
func BatchInitSkuEBai2EBai(ctx *jxcontext.Context, fromSku []*ebaiapi.SkuInfo, toApi *ebaiapi.API, storeID string, VendorCategoryIDMap map[int64]int64) []error {
|
||||
var errList = make([]error, 0, 0)
|
||||
for _, storeSku := range fromSku {
|
||||
params := map[string]interface{}{
|
||||
"left_num": model.MaxStoreSkuStockQty,
|
||||
@@ -144,17 +170,19 @@ func BatchInitSkuEBai2EBai(ctx *jxcontext.Context, fromSku []*ebaiapi.SkuInfo, t
|
||||
}
|
||||
_, err := toApi.SkuCreate(ctx.GetTrackInfo(), storeID, utils.Str2Int64(storeSku.CustomSkuID), params)
|
||||
if err != nil {
|
||||
globals.SugarLogger.Debugf("错误商品id: %d,商品名称:%s, %v", storeSku.SkuId, storeSku.Name, err)
|
||||
errList = append(errList, err)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
return errList
|
||||
}
|
||||
|
||||
// CopyMtToMT 美团商品复制到美团
|
||||
func CopyMtToMT(ctx *jxcontext.Context, fromStore, toStore *dao.StoreDetail, isAsync bool, offSet int) (hint string, err error) {
|
||||
func CopyMtToMT(ctx *jxcontext.Context, fromStore, toStore *dao.StoreDetail, isAsync bool, offSet int) (hint string, data []error, err error) {
|
||||
var fromApi *mtwmapi.API
|
||||
var toApi *mtwmapi.API
|
||||
var errList = make([]*mtwmapi.AppFoodResult, 0, 0)
|
||||
var errData = make([]error, 0, 0)
|
||||
|
||||
if fromStore.VendorOrgCode == globals.Mtwm2Code {
|
||||
fromApi = mtwmapi.New(beego.AppConfig.DefaultString("mtwmAppID2", ""), beego.AppConfig.DefaultString("mtwmSecret2", ""), beego.AppConfig.DefaultString("mtwmCallbackURL2", ""), "")
|
||||
@@ -210,7 +238,6 @@ func CopyMtToMT(ctx *jxcontext.Context, fromStore, toStore *dao.StoreDetail, isA
|
||||
}
|
||||
case 2:
|
||||
i := offSet
|
||||
errList := make([]*mtwmapi.AppFoodResult, 0, 0)
|
||||
for {
|
||||
// 同步商品
|
||||
fromFoodList, err1 := fromApi.RetailListAll(fromStore.VendorStoreID, i)
|
||||
@@ -226,7 +253,6 @@ func CopyMtToMT(ctx *jxcontext.Context, fromStore, toStore *dao.StoreDetail, isA
|
||||
globals.SugarLogger.Debugf("errListData %d:= %s", i, utils.Format4Output(errDataList, false))
|
||||
errList = append(errList, errDataList...)
|
||||
}
|
||||
globals.SugarLogger.Debugf("==============i: %d len: %d", i, len(fromFoodList))
|
||||
if len(fromFoodList) < 100 {
|
||||
break
|
||||
}
|
||||
@@ -243,7 +269,12 @@ func CopyMtToMT(ctx *jxcontext.Context, fromStore, toStore *dao.StoreDetail, isA
|
||||
} else {
|
||||
hint = task.ID
|
||||
}
|
||||
return hint, err
|
||||
|
||||
for _, v := range errList {
|
||||
errData = append(errData, fmt.Errorf("food_id:%s,错误:%s", v.AppFoodCode, v.ErrorMsg))
|
||||
}
|
||||
|
||||
return hint, errData, err
|
||||
}
|
||||
|
||||
// BatchInitSkuMT2MT 批量创建商品
|
||||
@@ -340,3 +371,65 @@ func BatchInitSkuMT2MT(ctx *jxcontext.Context, fromSku []*mtwmapi.AppFood, toApi
|
||||
|
||||
return errList, nil
|
||||
}
|
||||
|
||||
//#endregion
|
||||
|
||||
//#region 同步活动
|
||||
|
||||
func CopyMtActToMt(ctx *jxcontext.Context, fromStore, toStore *dao.StoreDetail) {
|
||||
var fromApi *mtwmapi.API
|
||||
var toApi *mtwmapi.API
|
||||
var errData = make([]error, 0, 0)
|
||||
|
||||
if fromStore.VendorOrgCode == globals.Mtwm2Code {
|
||||
fromApi = mtwmapi.New(beego.AppConfig.DefaultString("mtwmAppID2", ""), beego.AppConfig.DefaultString("mtwmSecret2", ""), beego.AppConfig.DefaultString("mtwmCallbackURL2", ""), "")
|
||||
fromApi.SetToken(fromStore.MtwmToken)
|
||||
} else {
|
||||
fromApi = partner.CurAPIManager.GetAPI(model.VendorIDMTWM, fromStore.VendorOrgCode).(*mtwmapi.API)
|
||||
}
|
||||
|
||||
if toStore.VendorOrgCode == globals.Mtwm2Code {
|
||||
toApi = mtwmapi.New(beego.AppConfig.DefaultString("mtwmAppID2", ""), beego.AppConfig.DefaultString("mtwmSecret2", ""), beego.AppConfig.DefaultString("mtwmCallbackURL2", ""), "")
|
||||
toApi.SetToken(toStore.MtwmToken)
|
||||
} else {
|
||||
toApi = partner.CurAPIManager.GetAPI(model.VendorIDMTWM, toStore.VendorOrgCode).(*mtwmapi.API)
|
||||
}
|
||||
|
||||
// 买赠活动
|
||||
buyGiftList, err := fromApi.BatchQueryBuyGiftsAll(fromStore.VendorStoreID)
|
||||
if err != nil {
|
||||
errData = append(errData, fmt.Errorf("买赠活动异常:%v", errData))
|
||||
}
|
||||
if len(buyGiftList) == model.NO {
|
||||
errData = append(errData, fmt.Errorf("门店暂无买赠活动"))
|
||||
}
|
||||
|
||||
param := make([]*mtwmapi.BatchCreateBuyGiftsParam, 0, 0)
|
||||
for _, v := range buyGiftList {
|
||||
buyGift := &mtwmapi.BatchCreateBuyGiftsParam{
|
||||
AppSpuCode: v.AppSpuCode,
|
||||
StartTime: v.StartTime,
|
||||
EndTime: v.EndTime,
|
||||
GiftsType: v.GiftsType,
|
||||
GiftsName: v.GiftsName,
|
||||
GiftsAppSpuCode: v.GiftsAppSpuCode,
|
||||
BuyNum: v.BuyNum,
|
||||
GiftsNum: v.GiftsNum,
|
||||
GiftsCharge: v.GiftsCharge,
|
||||
GiftsDayLimit: v.GiftsDayLimit,
|
||||
}
|
||||
|
||||
// 赠品成本
|
||||
giftsCharge := &mtwmapi.GiftsChargeObj{}
|
||||
if err := json.Unmarshal([]byte(v.Charge), giftsCharge); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
buyGift.GiftsCharge = utils.Str2Float64(fmt.Sprintf("%.2f", utils.Str2Float64(giftsCharge.GiftsCharge)))
|
||||
param = append(param, buyGift)
|
||||
}
|
||||
toApi.BatchCreateBuyGifts(toStore.VendorStoreID, param)
|
||||
|
||||
}
|
||||
|
||||
//#endregion
|
||||
|
||||
@@ -1051,13 +1051,14 @@ func (c *StoreSkuController) CopyMtToJd() {
|
||||
// @Param fromStoreID formData string true "被复制门店id"
|
||||
// @Param toStoreID formData string true "复制到门店id"
|
||||
// @Param vendorID formData int true "平台id"
|
||||
// @Param offSet formData int true "跳过页码"
|
||||
// @Param offSet formData int false "跳过页码"
|
||||
// @Param syncType formData int true "同步类型[1-商品/2-活动/3-前两者一起同步]"
|
||||
// @Success 200 {object} controllers.CallResult
|
||||
// @Failure 200 {object} controllers.CallResult
|
||||
// @router /CopyMtToMt [post]
|
||||
func (c *StoreSkuController) CopyMtToMt() {
|
||||
c.callCopyMtToMt(func(params *tStoreSkuCopyMtToMtParams) (retVal interface{}, errCode string, err error) {
|
||||
retVal, err = cms.CopyOnStoreSkuToOther(params.Ctx, params.FromStoreID, params.ToStoreID, params.VendorID, false, params.OffSet)
|
||||
retVal, err = cms.CopyOnStoreSkuToOther(params.Ctx, params.FromStoreID, params.ToStoreID, params.VendorID, false, params.OffSet, params.SyncType)
|
||||
return retVal, errCode, err
|
||||
})
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ func (c *Djsw2Controller) handleMsg(handler func(*jdapi.API, interface{}) *jdapi
|
||||
func (c *Djsw2Controller) orderStatus() {
|
||||
if c.Ctx.Input.Method() == http.MethodPost {
|
||||
callbackResponse := c.handleMsg(func(a *jdapi.API, obj interface{}) (callbackResponse *jdapi.CallbackResponse) {
|
||||
globals.SugarLogger.Debugf("========jds2 := %s", utils.Format4Output(obj, false))
|
||||
if orderMsg, ok := obj.(*jdapi.CallbackOrderMsg); ok {
|
||||
orderman.FixedOrderManager.OnNewFakeJdOrder(orderMsg.BillID)
|
||||
}
|
||||
@@ -41,6 +42,7 @@ func (c *Djsw2Controller) orderStatus() {
|
||||
}
|
||||
|
||||
func (c *Djsw2Controller) NewOrder() {
|
||||
globals.SugarLogger.Debugf("========jds2 := %s", "NewOrder")
|
||||
c.orderStatus()
|
||||
}
|
||||
|
||||
@@ -49,18 +51,22 @@ func (c *Djsw2Controller) OrderAdjust() {
|
||||
}
|
||||
|
||||
func (c *Djsw2Controller) OrderWaitOutStore() {
|
||||
globals.SugarLogger.Debugf("========jds2 := %s", "OrderWaitOutStore")
|
||||
c.nullOperation()
|
||||
}
|
||||
|
||||
func (c *Djsw2Controller) PickFinishOrder() {
|
||||
globals.SugarLogger.Debugf("========jds2 := %s", "PickFinishOrder")
|
||||
c.nullOperation()
|
||||
}
|
||||
|
||||
func (c *Djsw2Controller) DeliveryOrder() {
|
||||
globals.SugarLogger.Debugf("========jds2 := %s", "DeliveryOrder")
|
||||
c.nullOperation()
|
||||
}
|
||||
|
||||
func (c *Djsw2Controller) FinishOrder() {
|
||||
globals.SugarLogger.Debugf("========jds2 := %s", "FinishOrder")
|
||||
c.nullOperation()
|
||||
}
|
||||
|
||||
@@ -73,6 +79,7 @@ func (c *Djsw2Controller) UnlockOrder() {
|
||||
}
|
||||
|
||||
func (c *Djsw2Controller) UserCancelOrder() {
|
||||
globals.SugarLogger.Debugf("========jds2 := %s", "UserCancelOrder")
|
||||
c.nullOperation()
|
||||
}
|
||||
|
||||
|
||||
@@ -35,8 +35,10 @@ func (c *DjswController) handleMsg(handler func(*jdapi.API, interface{}) *jdapi.
|
||||
}
|
||||
|
||||
func (c *DjswController) orderStatus() {
|
||||
globals.SugarLogger.Debugf("========jds := %s", "orderStatus")
|
||||
if c.Ctx.Input.Method() == http.MethodPost {
|
||||
callbackResponse := c.handleMsg(func(a *jdapi.API, obj interface{}) (callbackResponse *jdapi.CallbackResponse) {
|
||||
globals.SugarLogger.Debugf("========obj := %s", utils.Format4Output(obj, false))
|
||||
callbackResponse = jd.OnOrderMsg(obj.(*jdapi.CallbackOrderMsg), a)
|
||||
return callbackResponse
|
||||
})
|
||||
@@ -48,30 +50,37 @@ func (c *DjswController) orderStatus() {
|
||||
}
|
||||
|
||||
func (c *DjswController) NewOrder() {
|
||||
globals.SugarLogger.Debugf("========jds := %s", "NewOrder")
|
||||
c.orderStatus()
|
||||
}
|
||||
|
||||
func (c *DjswController) OrderAdjust() {
|
||||
globals.SugarLogger.Debugf("========jds := %s", "OrderAdjust")
|
||||
c.orderStatus()
|
||||
}
|
||||
|
||||
func (c *DjswController) OrderWaitOutStore() {
|
||||
globals.SugarLogger.Debugf("========jds := %s", "OrderWaitOutStore")
|
||||
c.orderStatus()
|
||||
}
|
||||
|
||||
func (c *DjswController) PickFinishOrder() {
|
||||
globals.SugarLogger.Debugf("========jds := %s", "PickFinishOrder")
|
||||
c.orderStatus()
|
||||
}
|
||||
|
||||
func (c *DjswController) DeliveryOrder() {
|
||||
globals.SugarLogger.Debugf("========jds := %s", "DeliveryOrder")
|
||||
c.orderStatus()
|
||||
}
|
||||
|
||||
func (c *DjswController) FinishOrder() {
|
||||
globals.SugarLogger.Debugf("========jds := %s", "FinishOrder")
|
||||
c.orderStatus()
|
||||
}
|
||||
|
||||
func (c *DjswController) LockOrder() {
|
||||
globals.SugarLogger.Debugf("========jds := %s", "LockOrder")
|
||||
c.orderStatus()
|
||||
}
|
||||
|
||||
@@ -80,6 +89,7 @@ func (c *DjswController) UnlockOrder() {
|
||||
}
|
||||
|
||||
func (c *DjswController) UserCancelOrder() {
|
||||
globals.SugarLogger.Debugf("========jds := %s", "UserCancelOrder")
|
||||
c.orderStatus()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user