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

This commit is contained in:
邹宗楠
2022-10-10 10:49:12 +08:00
6 changed files with 146 additions and 61 deletions

View File

@@ -1019,12 +1019,11 @@ func (*BrandCategoryMap) TableUnique() [][]string {
// 抖店 运费模板、仓库以及电子围栏绑定
type FreightTemplate struct {
ModelIDCULD
StoreID int64 `orm:"column(store_id)" json:"storeID"` //京西本地门店ID即抖店门店编码
VendorStoreID int64 `orm:"column(vendor_store_id)" json:"vendorStoreID"` //抖店平台门店ID
TemplateID int64 `orm:"column(template_id)" json:"templateID"` //运费模板ID 1对1
TemplateDetail string `orm:"column(template_detail)" json:"templateDetail"` //json转化的模板信息
WarehouseID string `orm:"column(warehouse_id)" json:"warehouseID"` //创建门店时绑定的仓库id 1对1
FenceID string `orm:"column(fence_id)" json:"fenceID"` //电子围栏id 1对1
StoreID int `orm:"column(store_id)" json:"storeID"` //京西本地门店ID即抖店门店编码
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
FenceID string `orm:"column(fence_id)" json:"fenceID"` //电子围栏id 1对1
}
func (*FreightTemplate) TableUnique() [][]string {

View File

@@ -143,7 +143,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msgId string, msg interface{}) (
if k, ok := ReasonCodeMap[refundOrder.ReasonCode]; ok {
orderMsg.Remark = k
} else {
orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + string(refundOrder.ReasonCode)
orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + utils.Int2Str(refundOrder.ReasonCode)
}
if refundOrder.AftersaleId > 0 {
@@ -166,7 +166,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msgId string, msg interface{}) (
if k, ok := ReasonCodeMap[refundOrder.ReasonCode]; ok {
orderMsg.Remark = k
} else {
orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + string(refundOrder.ReasonCode)
orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + utils.Int2Str(refundOrder.ReasonCode)
}
if refundOrder.AftersaleId > 0 {
@@ -190,7 +190,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msgId string, msg interface{}) (
if k, ok := ReasonCodeMap[refundOrder.ReasonCode]; ok {
orderMsg.Remark = k
} else {
orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + string(refundOrder.ReasonCode)
orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + utils.Int2Str(refundOrder.ReasonCode)
}
if refundOrder.AftersaleId > 0 {
orderMsg.VendorOrderID = utils.Int64ToStr(refundOrder.AftersaleId)
@@ -213,7 +213,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msgId string, msg interface{}) (
if k, ok := ReasonCodeMap[refundOrder.ReasonCode]; ok {
orderMsg.Remark = k
} else {
orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + string(refundOrder.ReasonCode)
orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + utils.Int2Str(refundOrder.ReasonCode)
}
if refundOrder.AftersaleId > 0 {
orderMsg.VendorOrderID = utils.Int64ToStr(refundOrder.AftersaleId)
@@ -236,7 +236,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msgId string, msg interface{}) (
if k, ok := ReasonCodeMap[refundOrder.ReasonCode]; ok {
orderMsg.Remark = k
} else {
orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + string(refundOrder.ReasonCode)
orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + utils.Int2Str(refundOrder.ReasonCode)
}
if refundOrder.AftersaleId > 0 {
orderMsg.VendorOrderID = utils.Int64ToStr(refundOrder.AftersaleId)
@@ -259,7 +259,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msgId string, msg interface{}) (
if k, ok := ReasonCodeMap[refundOrder.ReasonCode]; ok {
orderMsg.Remark = k
} else {
orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + string(refundOrder.ReasonCode)
orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + utils.Int2Str(refundOrder.ReasonCode)
}
if refundOrder.AftersaleId > 0 {
orderMsg.VendorOrderID = utils.Int64ToStr(refundOrder.AftersaleId)
@@ -282,7 +282,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msgId string, msg interface{}) (
if k, ok := ReasonCodeMap[refundOrder.ReasonCode]; ok {
orderMsg.Remark = k
} else {
orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + string(refundOrder.ReasonCode)
orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + utils.Int2Str(refundOrder.ReasonCode)
}
if refundOrder.AftersaleId > 0 {
orderMsg.VendorOrderID = utils.Int64ToStr(refundOrder.AftersaleId)

View File

@@ -80,9 +80,13 @@ func SplicingTimeToDoudian(openTime1, closeTime1, openTime2, closeTime2 int16) (
func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName string, params map[string]interface{}, storeDetail *dao.StoreDetail) (vendorStoreID string, err error) {
var (
storeIDs string
tempStoreID []int64
fences []string
lists []shop_batchCreateStore_request.StoreListItem
ShopBatchCreateStoreParam *shop_batchCreateStore_request.ShopBatchCreateStoreParam
FreightTemplate *model.FreightTemplate
)
errList := errlist.New()
//a:=getAPI(storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID)
timeStr := ""
if storeDetail.OpenTime1 == 0 || storeDetail.CloseTime1 == 0 {
@@ -118,7 +122,7 @@ func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri
return "", err
} else {
if len(resp.ResultList) == 0 {
return "", errors.New("创建店铺失败,请检查店铺基本信息")
return "", err
}
for k, v := range resp.ResultList {
if k != len(resp.ResultList) {
@@ -127,29 +131,65 @@ func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri
storeIDs += utils.Int64ToStr(v.Store.StoreId)
}
if utils.Str2Int(storeIDs) == 0 {
return "", errors.New("创建店铺失败,请检查店铺基本信息")
return "", errors.New(fmt.Sprintf("创建店铺失败原因storeIDs = 0:%v,%v", err, resp.ResultList[0].Msg))
}
//创建并绑定运费模板
freightTemplateID, err := CreateFreightTemplate(storeDetail.Store.ID)
if err != nil {
errList.AddErr(fmt.Errorf("创建运费模板失败原因:%v", err))
} else {
err = P.ShopBindStoreFreight(int64(storeDetail.Store.ID), freightTemplateID)
if err != nil {
errList.AddErr(fmt.Errorf("门店:%d 绑定运费模板:%d 失败原因:%v", int64(storeDetail.Store.ID), freightTemplateID, err))
} else {
FreightTemplate.TemplateID = freightTemplateID
_, err := dao.UpdateEntity(db, FreightTemplate, "TemplateID")
if err != nil {
errList.AddErr(fmt.Errorf("运费模板ID存入数据库失败原因%v", err))
}
}
}
//创建并绑定仓库
warehouse, err := P.CreateWarehouse(utils.Int2Str(storeDetail.Store.ID), storeDetail.VendorOrgCode)
if err != nil {
errList.AddErr(fmt.Errorf("创建仓库失败原因:%v", err))
} else {
tempStoreID = append(tempStoreID, int64(storeDetail.Store.ID))
err = P.BindStoreWarehouse(tempStoreID, utils.Int2Str(storeDetail.Store.ID), utils.Int64ToStr(warehouse))
if err != nil {
errList.AddErr(fmt.Errorf("门店:%d 绑定仓库:%d 失败原因:%v", int64(storeDetail.Store.ID), warehouse, err))
} else {
FreightTemplate.WarehouseID = warehouse
_, err := dao.UpdateEntity(db, FreightTemplate, "WarehouseID")
if err != nil {
errList.AddErr(fmt.Errorf("仓库ID存入数据库失败原因%v", err))
}
}
}
//创建满减模板
//创建仓库
//warehouse, err := P.CreateWarehouse(utils.Int2Str(storeDetail.Store.ID))
//if err != nil {
// return "", err
//}
//创建成功的id存入
//创建并绑定电子围栏
fences := []string{}
if fenceID, err := CreateFenceByStore(int(resp.ResultList[0].Store.StoreId)); err != nil {
return "", err
errList.AddErr(fmt.Errorf("创建电子围栏失败原因:%v", err))
} else {
fences = append(fences, fenceID)
if err := BindFenceByStore(resp.ResultList[0].Store.StoreId, fences); err != nil {
return "", err
errList.AddErr(fmt.Errorf("门店:%d 绑定电子围栏:%d 失败原因:%v", int64(storeDetail.Store.ID), warehouse, err))
} else {
FreightTemplate.FenceID = fenceID
_, err := dao.UpdateEntity(db, FreightTemplate, "FenceID")
if err != nil {
errList.AddErr(fmt.Errorf("电子围栏ID存入数据库失败原因%v", err))
}
}
}
globals.SugarLogger.Debug("CreateStore2 return storeIDs==========", storeIDs)
return storeIDs, nil
FreightTemplate.StoreID = storeDetail.Store.ID
FreightTemplate.VendorStoreID = storeIDs
_, err = dao.UpdateEntity(db, FreightTemplate, "StoreID", "VendorStoreID")
if err != nil {
errList.AddErr(fmt.Errorf("db update storeID,vendorStoreID defeat on :%v", err))
}
globals.SugarLogger.Debug("CreateStore last step success..................")
return storeIDs, errors.New(fmt.Sprintf("%v", errList))
}
}
@@ -215,8 +255,9 @@ func (P *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin
globals.SugarLogger.Debug("================mergedStoreStatus", mergedStoreStatus)
errList.AddErr(P.UpdateStoreStatus(jxcontext.AdminCtx, storeInfo.VendorOrgCode, storeID, storeInfo.VendorStoreID, mergedStoreStatus))
}
//TODO 需增加 更新运费模板、电子围栏
//更新电子围栏
//TODO 需增加 更新运费模板、电子围栏
_, err3 := api.EditStore(params)
if err3 != nil {
errList.AddErr(err3)
@@ -259,35 +300,65 @@ func (p *PurchaseHandler) UpdateStoreStatus(ctx *jxcontext.Context, vendorOrgCod
return err
}
//默认只创建固定运费模板
func (P *PurchaseHandler) CreateFreightTemplate(storeCode, full, subtraction int) (int64, error) {
//var (
// columns []freightTemplate_create_request.ColumnsItem
//)
////获取本地门店信息
//storeDetail, err := dao.GetStoreDetail(dao.GetDB(), storeCode, model.VendorIDDD, "")
//if err != nil {
// return 0, err
//}
//column := &freightTemplate_create_request.ColumnsItem{
// FirstNum: 1,
// FirstNumPrice: 0.01,
// AddNum: 1,
// AddNumPrice: 0.01,
//}
//param := &freightTemplate_create_request.FreightTemplateCreateParam{
// Template: &freightTemplate_create_request.Template{
// TemplateName: "门店编码:" + utils.Int2Str(storeCode) + "的运费模板",
// ProductProvince: int64(storeDetail.ProvinceCode),
// ProductCity: int64(storeDetail.CityCode),
// CalculateType: 2, //模板类型为1-固定运费、2-卖家包邮、3-货到付款 时,计价类型传 2-按数量
// TransferType: 1,
// RuleType: 2, //卖家包邮
//
// },
// Columns: columns,
//}
return 0, nil
//默认 运费模板只创建 固定运费模板
func CreateFreightTemplate(storeCode int) (int64, error) {
var (
columns []freightTemplate_create_request.ColumnsItem
childrenItems []freightTemplate_create_request.ChildrenItem
children5s []freightTemplate_create_request.ChildrenItem_5
provinceInfos []freightTemplate_create_request.ProvinceInfosItem
children4s []freightTemplate_create_request.ChildrenItem_4
)
//获取本地门店信息
storeDetail, err := dao.GetStoreDetail(dao.GetDB(), storeCode, model.VendorIDDD, "")
if err != nil {
return 0, err
}
childrenItem := freightTemplate_create_request.ChildrenItem{
Id: 0, //获取不到街道id
}
childrenItems = append(childrenItems, childrenItem)
children5 := freightTemplate_create_request.ChildrenItem_5{
Id: int64(storeDetail.DistrictCode),
Children: childrenItems,
}
children5s = append(children5s, children5)
children4 := freightTemplate_create_request.ChildrenItem_4{
Id: int64(storeDetail.CityCode),
Children: children5s,
}
children4s = append(children4s, children4)
provinceInfo := freightTemplate_create_request.ProvinceInfosItem{
Id: int64(storeDetail.ProvinceCode),
Children: children4s,
}
provinceInfos = append(provinceInfos, provinceInfo)
column := freightTemplate_create_request.ColumnsItem{
FirstNum: 1,
FirstNumPrice: 0.01,
AddNum: 1,
AddNumPrice: 0.01,
IsOverFree: true, //是否包邮
OverAmount: int64(storeDetail.DeliveryFeeDeductionSill), //此字段在vendor_id=14时 存储满x包邮金额
ProvinceInfos: provinceInfos,
}
columns = append(columns, column)
param := &freightTemplate_create_request.FreightTemplateCreateParam{
Template: &freightTemplate_create_request.Template{
TemplateName: "门店编码:" + utils.Int2Str(storeCode) + "的运费模板",
ProductProvince: int64(storeDetail.ProvinceCode),
ProductCity: int64(storeDetail.CityCode),
CalculateType: 2, //模板类型为1-固定运费、2-卖家包邮、3-货到付款 时,计价类型传 2-按数量
TransferType: 1,
RuleType: 2, //卖家包邮
},
Columns: columns,
}
resp, err := getAPI(storeDetail.VendorOrgCode, storeCode, storeDetail.VendorStoreID).FreightTemplateCreate(param)
if err != nil {
return 0, err
}
return resp.TemplateId, nil
}
// /freightTemplate/create 创建运费模板
@@ -318,8 +389,8 @@ func (P *PurchaseHandler) CreateFreightTemplateDirectly(templateInfo freightTemp
}
//并写入数据库
freightInfo := model.FreightTemplate{
StoreID: storeID,
VendorStoreID: vendorStoreID,
StoreID: int(storeID),
VendorStoreID: utils.Int64ToStr(vendorStoreID),
TemplateID: resp.TemplateId,
}
if err = dao.CreateEntity(db, freightInfo); err != nil {

View File

@@ -0,0 +1,13 @@
package tiktok_store
import (
"fmt"
"testing"
)
//创建运费模板
func TestCreateFreight(t *testing.T) {
data, err := CreateFreightTemplate(668504)
fmt.Println(data)
fmt.Println(err)
}

View File

@@ -60,9 +60,10 @@ func (P *PurchaseHandler) BatchCreateWarehouse(param warehouse_createBatch_reque
// /warehouse/bindStore 仓库绑定门店
func (P *PurchaseHandler) BindStoreWarehouse(storeIDs []int64, outWarehouseID, appOrgCode string) error {
tempWarehouseID := "门店编码:" + outWarehouseID + "的仓库"
param := &warehouse_bindStore_request.WarehouseBindStoreParam{
StoreIds: storeIDs,
OutWarehouseId: outWarehouseID,
OutWarehouseId: tempWarehouseID,
}
if _, err := getAPI(appOrgCode, 0, "").StoreBindWarehouse(param); err != nil {
return err

View File

@@ -79,6 +79,7 @@ func Init() {
orm.RegisterModel(&model.SecretNumber{})
orm.RegisterModel(&model.BiddingInfo{})
orm.RegisterModel(&model.FreightTemplate{}) //抖店存储门店与 仓库、运费模板、电子围栏的映射关系
// orm.RegisterModel(&model.ActivityForSku{})
// orm.RegisterModel(&legacymodel.JxBadComments2{})