打包费以及起送价

This commit is contained in:
richboo111
2022-11-03 17:38:18 +08:00
parent e2e11949e9
commit 3774561b54
4 changed files with 97 additions and 44 deletions

View File

@@ -1524,17 +1524,17 @@ func AddStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, vendorID int, vend
}
if vendorID == model.VendorIDDD { //抖店绑定店铺时 检查并补充创建
globals.SugarLogger.Debugf("vendorID ==============%d", vendorID)
if str, err2 := tiktok_store.CreateOrUpdateAll(vendorOrgCode, int64(storeMap.StoreID), utils.Str2Int64(storeMap.VendorStoreID)); err2 != nil {
errList.AddErr(fmt.Errorf("wrongAns=%s,err=%v", str, err2))
if err2 := tiktok_store.CreateOrUpdateAll(vendorOrgCode, int64(storeMap.StoreID), utils.Str2Int64(storeMap.VendorStoreID)); err2 != nil {
errList.AddErr(err2)
}
}
} else if vendorID == model.VendorIDJX {
ReCalculateJxPriceLight(db, ctx, storeID)
} else if vendorID == model.VendorIDYB {
err = checkYbParams(db, storeMap, storeID)
if err != nil {
return nil, err
}
//} else if vendorID == model.VendorIDYB {
// err = checkYbParams(db, storeMap, storeID)
// if err != nil {
// return nil, err
// }
} else if vendorID == model.VendorIDJDShop {
if storeMap.VendorStoreID == "" {
storeMap.SyncStatus = model.SyncFlagNewMask //京东商城要去建店
@@ -1698,12 +1698,12 @@ func UpdateStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, storeID, vendor
//增加同步到抖店厂商的同步标志
DDFlag := false
errList := errlist.ErrList{}
if valid["deliveryFeeDeductionSill"] != nil && vendorID == model.VendorIDDD {
if (valid["deliveryFeeDeductionSill"] != nil || valid["deliveryFeeDeductionFee"] != nil || valid["ybStorePrefix"]) && vendorID == model.VendorIDDD {
DDFlag = true
} //特殊处理抖店运费模板
} //特殊处理抖店运费模板、打包费
if DDFlag {
globals.SugarLogger.Debug("进入DDFlag 特殊处理运费模板")
if err := tiktok_store.FreightSpecialTreat(storeMap.VendorOrgCode, utils.Str2Int64(storeMap.VendorStoreID), int64(storeMap.StoreID)); err != nil {
if err := tiktok_store.SpecialTreat(storeMap.VendorOrgCode, utils.Str2Int64(storeMap.VendorStoreID), int64(storeMap.StoreID), int64(storeMap.DeliveryFeeDeductionFee), utils.Str2Int64(storeMap.YbStorePrefix)); err != nil {
errList.AddErr(fmt.Errorf("抖店运费模板相关处理错误:%v", err))
}
}

View File

@@ -481,10 +481,10 @@ type StoreMap struct {
PricePercentagePack string `orm:"size(32)" json:"pricePercentagePack"` //
FreightDeductionPack string `orm:"size(32)" json:"freightDeductionPack"` //
AutoPickup int8 `orm:"default(1)" json:"autoPickup"` // 是否自动拣货
DeliveryType int8 `orm:"default(0)" json:"deliveryType"` // 配送类型
DeliveryFeeDeductionSill int `json:"deliveryFeeDeductionSill"`
DeliveryFeeDeductionFee int `json:"deliveryFeeDeductionFee"`
AutoPickup int8 `orm:"default(1)" json:"autoPickup"` // 是否自动拣货
DeliveryType int8 `orm:"default(0)" json:"deliveryType"` // 配送类型
DeliveryFeeDeductionSill int `json:"deliveryFeeDeductionSill"` //在vendorID=14,存储满 x 包邮金额
DeliveryFeeDeductionFee int `json:"deliveryFeeDeductionFee"` //在vendorID=14,存储打包费
DeliveryCompetition int8 `orm:"default(1)" json:"deliveryCompetition"` // 是否支持配送竞争
CreateDeliveryType int `orm:"default(0)" json:"createDeliveryType"` //默认0系统发单1为门店发单
@@ -503,7 +503,7 @@ type StoreMap struct {
YbAppID string `orm:"column(yb_app_id);size(255)" json:"ybAppID"`
YbAppKey string `orm:"size(255)" json:"ybAppKey"`
YbStorePrefix string `orm:"size(255)" json:"ybStorePrefix"`
YbStorePrefix string `orm:"size(255)" json:"ybStorePrefix"` //在vendorID=14,存储抖店门店起送金额 单位分
MtwmToken string `orm:"size(512)" json:"mtwmToken"` //美团外卖商超token有效期30天每20天刷一次
MtwmRefreshToken string `orm:"size(255)" json:"mtwmRefreshToken"` //美团外卖商超refreshToken

View File

@@ -127,7 +127,7 @@ func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri
return "", err
} else {
vendorStoreIDs = utils.Int64ToStr(resp.ResultList[0].Store.StoreId)
if _, err := CreateOrUpdateAll(storeDetail.VendorOrgCode, int64(storeDetail.Store.ID), resp.ResultList[0].Store.StoreId); err != nil {
if err := CreateOrUpdateAll(storeDetail.VendorOrgCode, int64(storeDetail.Store.ID), resp.ResultList[0].Store.StoreId); err != nil {
errList.AddErr(err)
}
}
@@ -136,7 +136,7 @@ func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri
}
//电子围栏 仓库 运费模板 限售模板 更新与绑定
func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID int64) (string, error) {
func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID int64) error {
var (
errList = errlist.New()
FreightTemplate = &model.FreightTemplate{}
@@ -201,6 +201,7 @@ func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID int64) (stri
FreightTemplate.FenceID = utils.Int64ToStr(storeID)
}
} else {
//电子围栏二次验证
if len(bindWarehouseAndFence[vendorStoreID][0].OutFenceIds) == 0 || utils.IsNil(bindWarehouseAndFence[vendorStoreID][0].OutFenceIds) { //未绑定电子围栏
globals.SugarLogger.Debug("进入创建电子围栏=========")
if fenceID, err := CreateFenceByStore(vendorOrgCode, storeID); err != nil || utils.Str2Int(fenceID) == 0 || utils.IsNil(fenceID) { //创建
@@ -248,18 +249,19 @@ func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID int64) (stri
}
if err = dao.CreateEntity(db, FreightTemplate); err != nil {
globals.SugarLogger.Debug("db update storeID,vendorStoreID defeat on :%v", err)
errList.AddErr(fmt.Errorf("db update storeID,vendorStoreID defeat on :%v", err))
} else {
_, err1 := dao.UpdateEntity(db, FreightTemplate, "TemplateID", "WarehouseID", "FenceID", "TradeLimitID")
errList.AddErr(fmt.Errorf("同步进数据库错误信息:%v", err1))
if err1 == nil {
errList.AddErr(fmt.Errorf("同步进数据库错误信息:%v", err))
} else {
errList.AddErr(fmt.Errorf("同步进数据库错误信息:%v", err1))
}
}
endErr := errList.GetErrListAsOne()
if utils.IsNil(errList) {
globals.SugarLogger.Debug("绑定门店需进行的错误处理:%v", errors.New(fmt.Sprintf("%s", utils.Format4Output(errList, true))))
return "门店绑定成功,但需要根据提示进行处理", endErr
return endErr
} else {
return "门店绑定成功", nil
return nil
}
}
@@ -339,6 +341,8 @@ func (P *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin
errList.AddErr(fmt.Errorf("获取门店(%d) 电子围栏失败:%v", utils.Str2Int64(storeInfo.VendorStoreID), err))
}
if len(bindWarehouseAndFence) == 0 || (len(bindWarehouseAndFence) != 0 && len(bindWarehouseAndFence[utils.Str2Int64(storeInfo.VendorStoreID)][0].OutFenceIds) == 0) {
globals.SugarLogger.Debug("")
if fenceID, err := CreateFenceByStore(storeInfo.VendorOrgCode, int64(storeID)); err != nil || utils.Str2Int(fenceID) == 0 || utils.IsNil(fenceID) { //创建
globals.SugarLogger.Debug("门店(%d) 创建电子围栏失败:%v", storeID, err)
errList.AddErr(fmt.Errorf("门店(%d) 创建电子围栏失败:%v", storeID, err))
@@ -575,7 +579,7 @@ func ShopBindStoreFreight(vendorOrgCode string, storeID, freightID int64) error
func GetStoreFreight(vendorOrgCode string, storeID int64) (int64, error) {
resp, err := getAPI(vendorOrgCode, int(storeID), "").GetStoreFreight(storeID)
if err != nil || len(resp) == 0 {
return 0, errors.New(fmt.Sprintf("获取门店绑定运费模板失败:%v", err))
return 0, err
}
return resp[0], nil
}
@@ -614,33 +618,63 @@ func (P *PurchaseHandler) GetAddressList(param *address_list_request.AddressList
return listInfo, nil
}
// /trade/createTradeLimitTemplate 创建限售模板
func CreateTradeLimitTemplate(appOrgCode string, storeID int64) (tradeLimitID int64, err error) {
var (
items []trade_createTradeLimitTemplate_request.TradeLimitRuleRequestListItem
)
item := trade_createTradeLimitTemplate_request.TradeLimitRuleRequestListItem{
TradeLimitModel: tiktok_api.TradeLimitModelQuantity,
TradeLimitResource: tiktok_api.TradeLimitResourceDouDian,
TradeLimitPattern: &trade_createTradeLimitTemplate_request.TradeLimitPattern{
Minimum: 1,
Maximum: 1000,
CumulativeMax: 10000,
},
TradeLimitSubjectList: []int32{tiktok_api.TradeLimitSubjectBuyMobile},
}
items = append(items, item)
// /trade/createTradeLimitTemplate 创建限售模板 默认模板
func CreateTradeLimitTemplate(appOrgCode string, vendorStoreID int64) (tradeLimitID int64, err error) {
param := &trade_createTradeLimitTemplate_request.TradeCreateTradeLimitTemplateParam{
StoreId: storeID,
TradeLimitRuleRequestList: items,
StoreId: vendorStoreID,
TradeLimitRuleRequestList: []trade_createTradeLimitTemplate_request.TradeLimitRuleRequestListItem{
{
TradeLimitModel: tiktok_api.TradeLimitModelQuantity,
TradeLimitResource: tiktok_api.TradeLimitResourceDouDian,
TradeLimitPattern: &trade_createTradeLimitTemplate_request.TradeLimitPattern{
Minimum: 1,
Maximum: 1000,
CumulativeMax: 10000,
},
TradeLimitSubjectList: []int32{tiktok_api.TradeLimitSubjectBuyMobile},
},
},
}
resp, err := getAPI(appOrgCode, 0, utils.Int64ToStr(storeID)).CreateTradeLimitTemplate(param)
resp, err := getAPI(appOrgCode, 0, utils.Int64ToStr(vendorStoreID)).CreateTradeLimitTemplate(param)
if err != nil {
return 0, err
}
return resp.TradeLimitId, nil
}
//创建起送价的 运费模板以及绑定
func CreateAndBindMinPriceTemplate(vendorOrgCode string, vendorStoreID, minimum int64) error {
param := &trade_createTradeLimitTemplate_request.TradeCreateTradeLimitTemplateParam{
StoreId: vendorStoreID,
TradeLimitRuleRequestList: []trade_createTradeLimitTemplate_request.TradeLimitRuleRequestListItem{
{
TradeLimitModel: tiktok_api.TradeLimitModelMoney,
TradeLimitPattern: &trade_createTradeLimitTemplate_request.TradeLimitPattern{
Minimum: minimum,
},
TradeLimitSubjectList: []int32{
tiktok_api.TradeLimitSubjectEndUser,
tiktok_api.TradeLimitSubjectUserGroup,
tiktok_api.TradeLimitSubjectDevice,
tiktok_api.TradeLimitSubjectBuyMobile,
tiktok_api.TradeLimitSubjectReceivingMobile,
tiktok_api.TradeLimitSubjectIDCard,
tiktok_api.TradeLimitSubjectPayAccount,
},
},
},
}
resp, err := getAPI(vendorOrgCode, 0, "").CreateTradeLimitTemplate(param)
if err != nil || resp.TradeLimitId == 0 {
return errors.New(fmt.Sprintf("创建门店(%d)的起送价失败:%v", vendorStoreID, err))
} else { //绑定
if err := BindStoreSaleLimit(vendorOrgCode, vendorStoreID, resp.TradeLimitId); err != nil {
return errors.New(fmt.Sprintf("门店(%d)绑定 起送价限售模板失败:%v", vendorStoreID, err))
}
}
return nil
}
// /shop/bindStoreSaleLimit 门店绑定限售模板
func BindStoreSaleLimit(appOrgCode string, storeID, saleLimitTemplateID int64) error {
info := &shop_bindStoreSaleLimit_request.ShopBindStoreSaleLimitParam{
@@ -808,6 +842,14 @@ func (P *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorOrgCode, vendo
return retVal, nil
}
//设置门店打包费
func SetStorePackageFee(vendorOrgCode string, vendorStoreID, packageFee int64) error {
if err := getAPI(vendorOrgCode, 0, "").SetStorePackageFee(vendorStoreID, packageFee); err != nil {
return err
}
return nil
}
func (P *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, parentTask tasksch.ITask, isAsync bool) (hint string, err error) {
return "", errors.New("抖店暂不支持此操作")
}

View File

@@ -130,6 +130,8 @@ func CreateFenceByStore(appOrgCode string, storeID int64) (fenceID string, err e
}
param.FenceInfo.Circular = circular
param.FenceInfo.Shape = tiktok_api.ShapeCircular
globals.SugarLogger.Debug("圆lat,lng", circular.Center.Latitude, circular.Center.Longitude)
} else if localStore.DeliveryRangeType == LocalShapePolygon {
tempStr := strings.Split(localStore.DeliveryRange, ";")
for v := len(tempStr) - 1; v >= 0; v-- {
@@ -142,6 +144,7 @@ func CreateFenceByStore(appOrgCode string, storeID int64) (fenceID string, err e
}
param.FenceInfo.Polygon.Vertices = vertex
param.FenceInfo.Shape = tiktok_api.ShapePolygon
globals.SugarLogger.Debug("多边形vertex", param.FenceInfo.Polygon.Vertices)
}
param.FenceInfo.OutFenceId = utils.Int64ToStr(storeID) //绑定基于此id
resp, err := getAPI(appOrgCode, 0, "").CreateFence(param)
@@ -245,7 +248,7 @@ func GetFence(appOrgCode, outFenceID string) (warehouse_getFences_response.Fence
}
//单独处理运费模板
func FreightSpecialTreat(vendorOrgCode string, vendorStoreID, storeID int64) error {
func SpecialTreat(vendorOrgCode string, vendorStoreID, storeID, deliveryFeeDeductionFee, minPrice int64) error {
var (
errList = errlist.New()
FreightTemplate = &model.FreightTemplate{}
@@ -275,6 +278,14 @@ func FreightSpecialTreat(vendorOrgCode string, vendorStoreID, storeID int64) err
errList.AddErr(fmt.Errorf("更新运费模板失败:%v", err))
}
}
//设置门店打包费 默认为0
if err := SetStorePackageFee(vendorOrgCode, vendorStoreID, deliveryFeeDeductionFee); err != nil {
errList.AddErr(fmt.Errorf("设置门店打包费失败:%v", err))
}
//设置门店起送价 默认为0
if err := CreateAndBindMinPriceTemplate(vendorOrgCode, vendorStoreID, minPrice); err != nil {
errList.AddErr(fmt.Errorf("设置门店起送价失败:%v", err))
}
err1 := dao.CreateEntity(db, FreightTemplate)
if err1 != nil {
_, err2 := dao.UpdateEntity(db, FreightTemplate, "TemplateID")