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

This commit is contained in:
邹宗楠
2022-11-22 16:17:43 +08:00
4 changed files with 196 additions and 54 deletions

View File

@@ -6016,20 +6016,34 @@ func GetVendorOrgCode(ctx *jxcontext.Context, db *dao.DaoDB, storeID, vendorID i
} }
//批量辅助创建电子围栏 //批量辅助创建电子围栏
func AssistCreateFence(relInfo map[string]map[string]string) (string, error) { func AssistCreateFence(relInfo map[string][]tiktok_store.RelInfo) (string, error) {
var (
db = dao.GetDB()
FreightTemplate = &model.FreightTemplate{}
)
errList := errlist.New() errList := errlist.New()
globals.SugarLogger.Debugf("进入AssistCreateFence")
for k, v := range relInfo { for k, v := range relInfo {
for i, j := range v { for _, i := range v {
if fenceID, err := tiktok_store.CreateFenceByStore(k, utils.Str2Int64(i)); err != nil { if fenceID, err := tiktok_store.CreateFenceByStore(k, utils.Str2Int64(i.StoreID)); err != nil {
errList.AddErr(fmt.Errorf("平台门店(%s),门店(%s) 创建电子围栏失败:%v", j, i, err)) errList.AddErr(fmt.Errorf("平台门店(%s),门店(%s) 创建电子围栏失败:%v", i.VendorStoreID, i.StoreID, err))
} else { } else {
if err := tiktok_store.BindFenceByStore(k, utils.Str2Int64(j), []string{fenceID}); err != nil { if err := tiktok_store.BindFenceByStore(k, utils.Str2Int64(i.VendorStoreID), []string{fenceID}); err != nil {
errList.AddErr(fmt.Errorf("平台门店(%s),门店(%s)绑定电子围栏失败:%v", j, i, err)) errList.AddErr(fmt.Errorf("平台门店(%s),门店(%s)绑定电子围栏失败:%v", i.VendorStoreID, i.StoreID, err))
} }
} }
} }
if err := dao.CreateEntity(db, FreightTemplate); err != nil {
if _, err1 := dao.UpdateEntity(db, FreightTemplate, "FenceID"); err1 != nil {
globals.SugarLogger.Debugf("db update storeID,vendorStoreID defeat on :%v", err1)
errList.AddErr(fmt.Errorf("更新操作,同步进数据库错误信息:%v", err1))
} else {
errList.AddErr(fmt.Errorf("创建操作,同步进数据库错误信息:%v", err))
}
}
} }
if errList.GetErrListAsOne() != nil { if errList.GetErrListAsOne() != nil {
globals.SugarLogger.Debugf("errList.GetErrListAsOne()===========%v", errList.GetErrListAsOne())
return fmt.Sprintf("批量创建电子围栏错误,请根据提示处理:%v", errList.GetErrListAsOne()), nil return fmt.Sprintf("批量创建电子围栏错误,请根据提示处理:%v", errList.GetErrListAsOne()), nil
} }
return "", nil return "", nil

View File

@@ -2,7 +2,6 @@ package dao
import ( import (
"fmt" "fmt"
"git.rosy.net.cn/jx-callback/globals"
"regexp" "regexp"
"strconv" "strconv"
"time" "time"
@@ -940,7 +939,7 @@ func GetOrders(db *DaoDB, ids []int64, isIncludeSku, isIncludeFake bool, fromDat
} else { } else {
sqlWhere += " AND IF(t1.jx_store_id != 0, t1.jx_store_id, t1.store_id) IN (" + GenQuestionMarks(len(storeIDs)) + ")" sqlWhere += " AND IF(t1.jx_store_id != 0, t1.jx_store_id, t1.store_id) IN (" + GenQuestionMarks(len(storeIDs)) + ")"
sqlParams = append(sqlParams, storeIDs) sqlParams = append(sqlParams, storeIDs)
globals.SugarLogger.Debugf("sqlParams storeIDs========%d", storeIDs) //globals.SugarLogger.Debugf("sqlParams storeIDs========%d", storeIDs)
} }
} }
} }
@@ -952,7 +951,7 @@ func GetOrders(db *DaoDB, ids []int64, isIncludeSku, isIncludeFake bool, fromDat
if len(statuss) > 0 { if len(statuss) > 0 {
sqlWhere += " AND t1.status IN (" + GenQuestionMarks(len(statuss)) + ")" sqlWhere += " AND t1.status IN (" + GenQuestionMarks(len(statuss)) + ")"
sqlParams = append(sqlParams, statuss) sqlParams = append(sqlParams, statuss)
globals.SugarLogger.Debugf("sqlParams statuss===========%d", statuss) //globals.SugarLogger.Debugf("sqlParams statuss===========%d", statuss)
} }
} }
if params["lockStatuss"] != nil { if params["lockStatuss"] != nil {
@@ -1024,7 +1023,7 @@ func GetOrders(db *DaoDB, ids []int64, isIncludeSku, isIncludeFake bool, fromDat
if params["adjustCount"] != nil { if params["adjustCount"] != nil {
sqlWhere += " AND t1.adjust_count >= ?" sqlWhere += " AND t1.adjust_count >= ?"
sqlParams = append(sqlParams, params["adjustCount"]) sqlParams = append(sqlParams, params["adjustCount"])
globals.SugarLogger.Debugf("sqlParams params[adjustCount]=========%d", params["adjustCount"]) //globals.SugarLogger.Debugf("sqlParams params[adjustCount]=========%d", params["adjustCount"])
} }
if mustInvoice, ok := params["mustInvoice"].(bool); ok && mustInvoice { if mustInvoice, ok := params["mustInvoice"].(bool); ok && mustInvoice {
sqlWhere += " AND t1.invoice_taxer_id <> ''" sqlWhere += " AND t1.invoice_taxer_id <> ''"
@@ -1038,7 +1037,7 @@ func GetOrders(db *DaoDB, ids []int64, isIncludeSku, isIncludeFake bool, fromDat
if len(vendorIDs) > 0 { if len(vendorIDs) > 0 {
sqlWhere += " AND t1.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")" sqlWhere += " AND t1.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")"
sqlParams = append(sqlParams, vendorIDs) sqlParams = append(sqlParams, vendorIDs)
globals.SugarLogger.Debugf("sqlParams vendorIDs================%d", vendorIDs) //globals.SugarLogger.Debugf("sqlParams vendorIDs================%d", vendorIDs)
} }
} }
if userID != "" { if userID != "" {
@@ -1064,14 +1063,14 @@ func GetOrders(db *DaoDB, ids []int64, isIncludeSku, isIncludeFake bool, fromDat
) a WHERE 1 = 1` ) a WHERE 1 = 1`
if params["jxIncomeBegin"] != nil { if params["jxIncomeBegin"] != nil {
globals.SugarLogger.Debugf("test begin====%d", utils.MustInterface2Int64(params["jxIncomeBegin"])) //globals.SugarLogger.Debugf("test begin====%d", utils.MustInterface2Int64(params["jxIncomeBegin"]))
//if utils.MustInterface2Int64(params["jxIncomeBegin"]) != 0 { //if utils.MustInterface2Int64(params["jxIncomeBegin"]) != 0 {
sql += " AND a.jx_income >= ?" sql += " AND a.jx_income >= ?"
sqlParams = append(sqlParams, utils.MustInterface2Int64(params["jxIncomeBegin"])) sqlParams = append(sqlParams, utils.MustInterface2Int64(params["jxIncomeBegin"]))
//} //}
} }
if params["jxIncomeEnd"] != nil { if params["jxIncomeEnd"] != nil {
globals.SugarLogger.Debugf("test end=====%d", utils.MustInterface2Int64(params["jxIncomeEnd"])) //globals.SugarLogger.Debugf("test end=====%d", utils.MustInterface2Int64(params["jxIncomeEnd"]))
//if utils.MustInterface2Int64(params["jxIncomeEnd"]) != 0 { //if utils.MustInterface2Int64(params["jxIncomeEnd"]) != 0 {
sql += " AND a.jx_income <= ?" sql += " AND a.jx_income <= ?"
sqlParams = append(sqlParams, utils.MustInterface2Int64(params["jxIncomeEnd"])) sqlParams = append(sqlParams, utils.MustInterface2Int64(params["jxIncomeEnd"]))

View File

@@ -31,6 +31,7 @@ import (
"git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/business/partner"
"git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api" "git.rosy.net.cn/jx-callback/globals/api"
"reflect"
) )
func SplicingTimeToDoudian(openTime1, closeTime1, openTime2, closeTime2 int16, flag bool) (timeList string) { func SplicingTimeToDoudian(openTime1, closeTime1, openTime2, closeTime2 int16, flag bool) (timeList string) {
@@ -193,7 +194,7 @@ func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID, deliveryFee
if err != nil || len(warehouseID) == 0 || utils.IsNil(warehouseID) { if err != nil || len(warehouseID) == 0 || utils.IsNil(warehouseID) {
globals.SugarLogger.Debugf("门店(%d) 创建仓库失败:%v", storeID, err) globals.SugarLogger.Debugf("门店(%d) 创建仓库失败:%v", storeID, err)
errList.AddErr(fmt.Errorf("门店(%d) 创建仓库失败:%v", storeID, err)) errList.AddErr(fmt.Errorf("门店(%d) 创建仓库失败:%v", storeID, err))
} else { //绑定 } else { //绑定
if err = BindStoreWarehouse(vendorOrgCode, utils.Int64ToStr(storeID), vendorStoreID); err != nil { //仓库绑定通过自定义外部ID if err = BindStoreWarehouse(vendorOrgCode, utils.Int64ToStr(storeID), vendorStoreID); err != nil { //仓库绑定通过自定义外部ID
globals.SugarLogger.Debugf("门店(%d) 绑定仓库:%s 失败:%v", storeID, warehouseID, err) globals.SugarLogger.Debugf("门店(%d) 绑定仓库:%s 失败:%v", storeID, warehouseID, err)
errList.AddErr(fmt.Errorf("门店(%d) 绑定仓库:%s 失败:%v", storeID, warehouseID, err)) errList.AddErr(fmt.Errorf("门店(%d) 绑定仓库:%s 失败:%v", storeID, warehouseID, err))
@@ -317,7 +318,7 @@ func CreateAndBindAllV2(vendorOrgCode string, storeID, vendorStoreID, deliveryFe
if err != nil || len(warehouseID) == 0 || utils.IsNil(warehouseID) { if err != nil || len(warehouseID) == 0 || utils.IsNil(warehouseID) {
globals.SugarLogger.Debugf("门店(%d) 创建仓库失败:%v", storeID, err) globals.SugarLogger.Debugf("门店(%d) 创建仓库失败:%v", storeID, err)
errList.AddErr(fmt.Errorf("门店(%d) 创建仓库失败:%v", storeID, err)) errList.AddErr(fmt.Errorf("门店(%d) 创建仓库失败:%v", storeID, err))
} else { //绑定 } else { //绑定
if err = BindStoreWarehouse(vendorOrgCode, utils.Int64ToStr(storeID), vendorStoreID); err != nil { //仓库绑定通过自定义外部ID if err = BindStoreWarehouse(vendorOrgCode, utils.Int64ToStr(storeID), vendorStoreID); err != nil { //仓库绑定通过自定义外部ID
globals.SugarLogger.Debugf("门店(%d) 绑定仓库:%s 失败:%v", storeID, warehouseID, err) globals.SugarLogger.Debugf("门店(%d) 绑定仓库:%s 失败:%v", storeID, warehouseID, err)
errList.AddErr(fmt.Errorf("门店(%d) 绑定仓库:%s 失败:%v", storeID, warehouseID, err)) errList.AddErr(fmt.Errorf("门店(%d) 绑定仓库:%s 失败:%v", storeID, warehouseID, err))
@@ -669,43 +670,119 @@ func UpdateFreightTemplate(storeCode int) error {
return nil return nil
} }
// /freightTemplate/create 创建运费模板 暂时未使用 // /freightTemplate/create 批量创建 满x包邮 运费模板
func (P *PurchaseHandler) CreateFreightTemplateDirectly(templateInfo freightTemplate_create_request.FreightTemplateCreateParam, storeID, vendorStoreID int64) error { //func (P *PurchaseHandler) BatchCreateFreightTemplate(relInfo map[string]map[string]string, shipFee int64) error {
var ( // var (
db *dao.DaoDB // errList = errlist.New()
) // flag = make(map[string]bool)
if templateInfo.Template.RuleType > 0 { // )
templateInfo.Template.CalculateType = tiktok_api.CalculateTypeNum // for i, j := range relInfo {
} // for k, v := range j {
info := &freightTemplate_create_request.FreightTemplateCreateParam{ // if bindFreightID, err := getAPI(i, utils.Str2Int(k), v).GetStoreFreight(utils.Str2Int64(v)); err != nil || len(bindFreightID) == 0 {
Template: templateInfo.Template, // flag[v] = false
Columns: templateInfo.Columns, // }
} // flag[v] = true
api := getAPI("", int(storeID), utils.Int64ToStr(vendorStoreID)) // }
resp, err := api.FreightTemplateCreate(info) // }
if err != nil { // storeDetail, err := dao.GetStoreDetail(dao.GetDB(), storeID, model.VendorIDDD, "")
return err // if err != nil {
} // return errors.New("获取门店信息失败,请重试")
//创建成功后进行绑定 // }
bindInfo := &shop_bindStoreFreight_request.ShopBindStoreFreightParam{ // //预处理(1)更新 (2)创建
StoreId: vendorStoreID, // param := &freightTemplate_create_request.FreightTemplateCreateParam{
FreightId: resp.TemplateId, // Template: &freightTemplate_create_request.Template{
} // TemplateName: storeDetail.VendorStoreName + "(" + utils.Int2Str(storeID) + ")_",
err = api.BindFreightTemplate(bindInfo) // ProductProvince: utils.Str2Int64(utils.Int2Str(storeDetail.ProvinceCode)[:2]),
if err != nil { // CalculateType: 2, //计价方式-1.按重量 2.按数量
return err // TransferType: 1,
} // RuleType: 1, //固定运费&卖家包邮
//并写入数据库 // FixedAmount: 500, //固定运费 单位:分
freightInfo := model.FreightTemplate{ // },
StoreID: int(storeID), // }
VendorStoreID: utils.Int64ToStr(vendorStoreID), // //直辖市特殊处理
TemplateID: resp.TemplateId, // flag := false
} // if storeDetail.CityName == tiktok_api.MunicipalityBeiJin || storeDetail.CityName == tiktok_api.MunicipalityShangHai || storeDetail.CityName == tiktok_api.MunicipalityTianJin || storeDetail.CityName == tiktok_api.MunicipalityChongQing {
if err = dao.CreateEntity(db, freightInfo); err != nil { // flag = true
return err // param.Template.ProductCity = int64(storeDetail.ProvinceCode)
} // } else {
return nil // param.Template.ProductCity = int64(storeDetail.CityCode)
} // }
// if int64(storeDetail.DeliveryFeeDeductionSill) != 0 {
// param.Template.TemplateName += "满减包邮模板"
// columns := []freightTemplate_create_request.ColumnsItem{
// {
// IsOverFree: true, //是否包邮
// IsLimited: false,
// OverAmount: int64(storeDetail.DeliveryFeeDeductionSill), //此字段在vendor_id=14时 存储满x包邮金额
// }}
// param.Columns = columns
// if flag {
// param.Columns[0].ProvinceInfos = []freightTemplate_create_request.ProvinceInfosItem{
// {
// Id: utils.Str2Int64(utils.Int2Str(storeDetail.ProvinceCode)[:2]),
// Children: []freightTemplate_create_request.ChildrenItem_4{
// {
// Id: int64(storeDetail.ProvinceCode),
// Children: []freightTemplate_create_request.ChildrenItem_5{
// {
// Id: int64(storeDetail.DistrictCode),
// Children: []freightTemplate_create_request.ChildrenItem{
// {Id: 0},
// },
// },
// },
// },
// }},
// }
// } else {
// param.Columns[0].ProvinceInfos = []freightTemplate_create_request.ProvinceInfosItem{
// {
// Id: utils.Str2Int64(utils.Int2Str(storeDetail.ProvinceCode)[:2]),
// Children: []freightTemplate_create_request.ChildrenItem_4{
// {
// Id: int64(storeDetail.CityCode),
// Children: []freightTemplate_create_request.ChildrenItem_5{
// {
// Id: int64(storeDetail.DistrictCode),
// Children: []freightTemplate_create_request.ChildrenItem{
// {Id: 0},
// },
// },
// },
// },
// }},
// }
// }
// } else {
// param.Columns = nil
// param.Template.TemplateName += "固定运费模板"
// }
// globals.SugarLogger.Debugf(" param.Template.ProductCity==%d,param.Template.ProductProvince==%d", param.Template.ProductCity, param.Template.ProductProvince)
// resp, err := getAPI(storeDetail.VendorOrgCode, storeCode, storeDetail.VendorStoreID).FreightTemplateCreate(param)
// if err != nil {
// return 0, err
// }
// return resp.TemplateId, nil
//
// bindInfo := &shop_bindStoreFreight_request.ShopBindStoreFreightParam{
// StoreId: vendorStoreID,
// FreightId: resp.TemplateId,
// }
// err = api.BindFreightTemplate(bindInfo)
// if err != nil {
// return err
// }
// //并写入数据库
// freightInfo := model.FreightTemplate{
// StoreID: int(storeID),
// VendorStoreID: utils.Int64ToStr(vendorStoreID),
// TemplateID: resp.TemplateId,
// }
// if err = dao.CreateEntity(db, freightInfo); err != nil {
// return err
// }
// return nil
//}
// /shop/bindStoreFreight 门店绑定运费模版 // /shop/bindStoreFreight 门店绑定运费模版
//门店绑定运费模版,运费模版必须属于门店关联的抖店,且门店与运费模版是一对一关系 //门店绑定运费模版,运费模版必须属于门店关联的抖店,且门店与运费模版是一对一关系
@@ -1020,3 +1097,24 @@ func (P *PurchaseHandler) GetOrderStatus(vendorOrgCode, vendorOrderID string) (s
func (p *PurchaseHandler) GetSkus(ctx *jxcontext.Context, vendorOrgCode string, skuID int, vendorSkuID string) (skuNameList []*partner.SkuNameInfo, err error) { func (p *PurchaseHandler) GetSkus(ctx *jxcontext.Context, vendorOrgCode string, skuID int, vendorSkuID string) (skuNameList []*partner.SkuNameInfo, err error) {
return nil, err return nil, err
} }
//以下为辅助函数
type RelInfo struct {
StoreID string
VendorStoreID string
}
func ToMap(actual interface{}) (map[string]string, error) {
var res []string
value := reflect.ValueOf(actual)
globals.SugarLogger.Debugf("value.Kind()=========%s", value.Kind())
if value.Kind() != reflect.Map {
return nil, errors.New("parse error")
}
temp := actual.(map[string]string)
globals.SugarLogger.Debugf("toMap temp===============%v", temp)
for i := 0; i < value.Len(); i++ {
res = append(res, value.Index(i).Interface().(string))
}
return temp, nil
}

View File

@@ -9,6 +9,8 @@ import (
"git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/jxutils/netprinter" "git.rosy.net.cn/jx-callback/business/jxutils/netprinter"
"git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/partner/purchase/tiktok_store"
"git.rosy.net.cn/jx-callback/globals"
"git.rosy.net.cn/jx-callback/globals/api" "git.rosy.net.cn/jx-callback/globals/api"
"github.com/astaxie/beego/server/web" "github.com/astaxie/beego/server/web"
) )
@@ -1517,10 +1519,39 @@ func (c *StoreController) GetDDScope() {
// @router /CreateDDStoreFence [post] // @router /CreateDDStoreFence [post]
func (c *StoreController) CreateDDStoreFence() { func (c *StoreController) CreateDDStoreFence() {
c.callCreateDDStoreFence(func(params *tStoreCreateDDStoreFenceParams) (retVal interface{}, errCode string, err error) { c.callCreateDDStoreFence(func(params *tStoreCreateDDStoreFenceParams) (retVal interface{}, errCode string, err error) {
payload := make(map[string]map[string]string) globals.SugarLogger.Debugf("进入callCreateDDStoreFence")
if err = utils.UnmarshalUseNumber([]byte(params.Payload), &payload); err == nil { payload := make(map[string][]tiktok_store.RelInfo)
//info := make(map[string]map[string]string)
if err := utils.UnmarshalUseNumber([]byte(params.Payload), &payload); err == nil {
retVal, err = cms.AssistCreateFence(payload) retVal, err = cms.AssistCreateFence(payload)
//for i, j := range payload {
// if temp, err := tiktok_store.ToMap(j); err != nil {
// globals.SugarLogger.Debugf("tomap err==============%v", err)
// return nil, "", err
// } else {
// for k, v := range temp {
// info[i] = map[string]string{k: v}
// }
// }
//}
//if len(info) > 0 {
// for _, i := range info {
// for k, v := range i {
// globals.SugarLogger.Debugf("preTest info k=%s,v=%s", k, v)
// }
// }
//}
//retVal, err = cms.AssistCreateFence(info)
} }
return retVal, "", err return retVal, "", err
}) })
} }
// @Title 批量创建抖店包邮运费模板
// @Description 批量创建抖店包邮运费模板
// @Param token header string true "认证token"
// @Param shipFee formData int true "包邮金额"
// @Param payload formData string true "json数据[]string对象"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /CreateFreeShipTemplates [post]