diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index f99bb390b..2d837ba43 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -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() + globals.SugarLogger.Debugf("进入AssistCreateFence") for k, v := range relInfo { - for i, j := range v { - if fenceID, err := tiktok_store.CreateFenceByStore(k, utils.Str2Int64(i)); err != nil { - errList.AddErr(fmt.Errorf("平台门店(%s),门店(%s) 创建电子围栏失败:%v", j, i, err)) + for _, i := range v { + if fenceID, err := tiktok_store.CreateFenceByStore(k, utils.Str2Int64(i.StoreID)); err != nil { + errList.AddErr(fmt.Errorf("平台门店(%s),门店(%s) 创建电子围栏失败:%v", i.VendorStoreID, i.StoreID, err)) } else { - if err := tiktok_store.BindFenceByStore(k, utils.Str2Int64(j), []string{fenceID}); err != nil { - errList.AddErr(fmt.Errorf("平台门店(%s),门店(%s)绑定电子围栏失败:%v", j, i, err)) + if err := tiktok_store.BindFenceByStore(k, utils.Str2Int64(i.VendorStoreID), []string{fenceID}); err != nil { + 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 { + globals.SugarLogger.Debugf("errList.GetErrListAsOne()===========%v", errList.GetErrListAsOne()) return fmt.Sprintf("批量创建电子围栏错误,请根据提示处理:%v", errList.GetErrListAsOne()), nil } return "", nil diff --git a/business/model/dao/dao_order.go b/business/model/dao/dao_order.go index 4cc17b57d..9dc8b1f94 100644 --- a/business/model/dao/dao_order.go +++ b/business/model/dao/dao_order.go @@ -2,7 +2,6 @@ package dao import ( "fmt" - "git.rosy.net.cn/jx-callback/globals" "regexp" "strconv" "time" @@ -940,7 +939,7 @@ func GetOrders(db *DaoDB, ids []int64, isIncludeSku, isIncludeFake bool, fromDat } else { sqlWhere += " AND IF(t1.jx_store_id != 0, t1.jx_store_id, t1.store_id) IN (" + GenQuestionMarks(len(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 { sqlWhere += " AND t1.status IN (" + GenQuestionMarks(len(statuss)) + ")" sqlParams = append(sqlParams, statuss) - globals.SugarLogger.Debugf("sqlParams statuss===========%d", statuss) + //globals.SugarLogger.Debugf("sqlParams statuss===========%d", statuss) } } if params["lockStatuss"] != nil { @@ -1024,7 +1023,7 @@ func GetOrders(db *DaoDB, ids []int64, isIncludeSku, isIncludeFake bool, fromDat if params["adjustCount"] != nil { sqlWhere += " AND t1.adjust_count >= ?" 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 { sqlWhere += " AND t1.invoice_taxer_id <> ''" @@ -1038,7 +1037,7 @@ func GetOrders(db *DaoDB, ids []int64, isIncludeSku, isIncludeFake bool, fromDat if len(vendorIDs) > 0 { sqlWhere += " AND t1.vendor_id IN (" + GenQuestionMarks(len(vendorIDs)) + ")" sqlParams = append(sqlParams, vendorIDs) - globals.SugarLogger.Debugf("sqlParams vendorIDs================%d", vendorIDs) + //globals.SugarLogger.Debugf("sqlParams vendorIDs================%d", vendorIDs) } } if userID != "" { @@ -1064,14 +1063,14 @@ func GetOrders(db *DaoDB, ids []int64, isIncludeSku, isIncludeFake bool, fromDat ) a WHERE 1 = 1` 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 { sql += " AND a.jx_income >= ?" sqlParams = append(sqlParams, utils.MustInterface2Int64(params["jxIncomeBegin"])) //} } 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 { sql += " AND a.jx_income <= ?" sqlParams = append(sqlParams, utils.MustInterface2Int64(params["jxIncomeEnd"])) diff --git a/business/partner/purchase/tiktok_store/store.go b/business/partner/purchase/tiktok_store/store.go index 104ac2e82..05c81016b 100644 --- a/business/partner/purchase/tiktok_store/store.go +++ b/business/partner/purchase/tiktok_store/store.go @@ -31,6 +31,7 @@ import ( "git.rosy.net.cn/jx-callback/business/partner" "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals/api" + "reflect" ) 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) { globals.SugarLogger.Debugf("门店(%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 globals.SugarLogger.Debugf("门店(%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) { globals.SugarLogger.Debugf("门店(%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 globals.SugarLogger.Debugf("门店(%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 } -// /freightTemplate/create 创建运费模板 暂时未使用 -func (P *PurchaseHandler) CreateFreightTemplateDirectly(templateInfo freightTemplate_create_request.FreightTemplateCreateParam, storeID, vendorStoreID int64) error { - var ( - db *dao.DaoDB - ) - if templateInfo.Template.RuleType > 0 { - templateInfo.Template.CalculateType = tiktok_api.CalculateTypeNum - } - info := &freightTemplate_create_request.FreightTemplateCreateParam{ - Template: templateInfo.Template, - Columns: templateInfo.Columns, - } - api := getAPI("", int(storeID), utils.Int64ToStr(vendorStoreID)) - resp, err := api.FreightTemplateCreate(info) - if err != nil { - return err - } - //创建成功后进行绑定 - 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 -} +// /freightTemplate/create 批量创建 满x包邮 运费模板 +//func (P *PurchaseHandler) BatchCreateFreightTemplate(relInfo map[string]map[string]string, shipFee int64) error { +// var ( +// errList = errlist.New() +// flag = make(map[string]bool) +// ) +// for i, j := range relInfo { +// for k, v := range j { +// if bindFreightID, err := getAPI(i, utils.Str2Int(k), v).GetStoreFreight(utils.Str2Int64(v)); err != nil || len(bindFreightID) == 0 { +// flag[v] = false +// } +// flag[v] = true +// } +// } +// storeDetail, err := dao.GetStoreDetail(dao.GetDB(), storeID, model.VendorIDDD, "") +// if err != nil { +// return errors.New("获取门店信息失败,请重试") +// } +// //预处理(1)更新 (2)创建 +// param := &freightTemplate_create_request.FreightTemplateCreateParam{ +// Template: &freightTemplate_create_request.Template{ +// TemplateName: storeDetail.VendorStoreName + "(" + utils.Int2Str(storeID) + ")_", +// ProductProvince: utils.Str2Int64(utils.Int2Str(storeDetail.ProvinceCode)[:2]), +// CalculateType: 2, //计价方式-1.按重量 2.按数量 +// TransferType: 1, +// RuleType: 1, //固定运费&卖家包邮 +// FixedAmount: 500, //固定运费 单位:分 +// }, +// } +// //直辖市特殊处理 +// flag := false +// if storeDetail.CityName == tiktok_api.MunicipalityBeiJin || storeDetail.CityName == tiktok_api.MunicipalityShangHai || storeDetail.CityName == tiktok_api.MunicipalityTianJin || storeDetail.CityName == tiktok_api.MunicipalityChongQing { +// flag = true +// param.Template.ProductCity = int64(storeDetail.ProvinceCode) +// } else { +// 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 门店绑定运费模版 //门店绑定运费模版,运费模版必须属于门店关联的抖店,且门店与运费模版是一对一关系 @@ -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) { 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 +} diff --git a/controllers/cms_store.go b/controllers/cms_store.go index 690e7be2e..a40b4bb85 100644 --- a/controllers/cms_store.go +++ b/controllers/cms_store.go @@ -9,6 +9,8 @@ import ( "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/netprinter" "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" "github.com/astaxie/beego/server/web" ) @@ -1517,10 +1519,39 @@ func (c *StoreController) GetDDScope() { // @router /CreateDDStoreFence [post] func (c *StoreController) CreateDDStoreFence() { c.callCreateDDStoreFence(func(params *tStoreCreateDDStoreFenceParams) (retVal interface{}, errCode string, err error) { - payload := make(map[string]map[string]string) - if err = utils.UnmarshalUseNumber([]byte(params.Payload), &payload); err == nil { + globals.SugarLogger.Debugf("进入callCreateDDStoreFence") + 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) + //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 }) } + +// @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]