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

This commit is contained in:
邹宗楠
2022-11-01 09:58:31 +08:00
3 changed files with 29 additions and 22 deletions

View File

@@ -1475,6 +1475,7 @@ func GetStoreVendorMaps(ctx *jxcontext.Context, db *dao.DaoDB, storeID int, vend
// todo 需要对字段做有效性检查 // todo 需要对字段做有效性检查
func AddStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, vendorID int, vendorOrgCode string, storeID int, storeMap *model.StoreMap) (outStoreMap *model.StoreMap, err error) { func AddStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, vendorID int, vendorOrgCode string, storeID int, storeMap *model.StoreMap) (outStoreMap *model.StoreMap, err error) {
errList := errlist.ErrList{}
if storeID == 0 { if storeID == 0 {
return nil, fmt.Errorf("storeID不能为0") return nil, fmt.Errorf("storeID不能为0")
} }
@@ -1522,9 +1523,8 @@ func AddStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, vendorID int, vend
} }
if vendorID == model.VendorIDDD { //抖店绑定店铺时 检查并补充创建 if vendorID == model.VendorIDDD { //抖店绑定店铺时 检查并补充创建
globals.SugarLogger.Debugf("vendorID ==============%d", vendorID) globals.SugarLogger.Debugf("vendorID ==============%d", vendorID)
err2 := tiktok_store.CreateOrUpdateAll(vendorOrgCode, int64(storeMap.StoreID), utils.Str2Int64(storeMap.VendorStoreID)) if str, err2 := tiktok_store.CreateOrUpdateAll(vendorOrgCode, int64(storeMap.StoreID), utils.Str2Int64(storeMap.VendorStoreID)); err2 != nil {
if err2 != nil { errList.AddErr(fmt.Errorf("wrongAns=%s,err=%v", str, err2))
return nil, err2
} }
} }
} else if vendorID == model.VendorIDJX { } else if vendorID == model.VendorIDJX {
@@ -1594,7 +1594,7 @@ func AddStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, vendorID int, vend
} }
_, err = CurVendorSync.SyncStore(ctx, db, storeMap.VendorID, storeID, false, userName) _, err = CurVendorSync.SyncStore(ctx, db, storeMap.VendorID, storeID, false, userName)
_, err = CurVendorSync.FullSyncStoresSkus(ctx, db, []int{vendorID}, []int{storeID}, true, nil, true, true) _, err = CurVendorSync.FullSyncStoresSkus(ctx, db, []int{vendorID}, []int{storeID}, true, nil, true, true)
return outStoreMap, err return outStoreMap, errors.New(fmt.Sprintf("errList=%s,err=%v", utils.Format4Output(errList, true), err))
} }
func DeleteStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, storeID, vendorID int, userName string) (num int64, err error) { func DeleteStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, storeID, vendorID int, userName string) (num int64, err error) {
@@ -5871,14 +5871,15 @@ func GetDDScope(ctx *jxcontext.Context, storeID int, vendorStoreID string) (ware
return data, errors.New("storeID,vendorStoreID 必填") return data, errors.New("storeID,vendorStoreID 必填")
} }
storeMap, err := GetVendorOrgCode(ctx, dao.GetDB(), storeID, model.VendorIDDD, vendorStoreID) storeMap, err := GetVendorOrgCode(ctx, dao.GetDB(), storeID, model.VendorIDDD, vendorStoreID)
if err != nil { if err != nil {
return data, errors.New(fmt.Sprintf("获取vendorOrgCode失败请检查数据或重试:%v", err)) return data, errors.New(fmt.Sprintf("获取vendorOrgCode失败请检查数据或重试:%v", err))
} }
bindWarehouse, err := tiktok_store.GetWarehouseByStore(storeMap.VendorOrgCode, int64(storeID)) bindWarehouse, err := tiktok_store.GetWarehouseByStore(storeMap[0].VendorOrgCode, int64(storeID))
if err != nil { if err != nil {
return data, errors.New(fmt.Sprintf("获取门店(%d) 绑定fenceID失败:%v", storeID, err)) return data, errors.New(fmt.Sprintf("获取门店(%d) 绑定fenceID失败:%v", storeID, err))
} }
resp, err := tiktok_store.GetFence(storeMap.VendorOrgCode, bindWarehouse[0][utils.Str2Int(vendorStoreID)].OutFenceIds[0]) resp, err := tiktok_store.GetFence(storeMap[0].VendorOrgCode, bindWarehouse[0][utils.Str2Int(vendorStoreID)].OutFenceIds[0])
if err != nil { if err != nil {
return data, err return data, err
} }
@@ -5886,7 +5887,7 @@ func GetDDScope(ctx *jxcontext.Context, storeID int, vendorStoreID string) (ware
} }
//获取 VendorOrgCode //获取 VendorOrgCode
func GetVendorOrgCode(ctx *jxcontext.Context, db *dao.DaoDB, storeID, vendorID int, vendorStoreID string) (storeMap *model.StoreMap, err error) { func GetVendorOrgCode(ctx *jxcontext.Context, db *dao.DaoDB, storeID, vendorID int, vendorStoreID string) (storeMap []*model.StoreMap, err error) {
cond := map[string]interface{}{ cond := map[string]interface{}{
model.FieldStoreID: storeID, model.FieldStoreID: storeID,
model.FieldVendorStoreID: vendorStoreID, model.FieldVendorStoreID: vendorStoreID,

View File

@@ -127,7 +127,7 @@ func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri
return "", err return "", err
} else { } else {
vendorStoreIDs = utils.Int64ToStr(resp.ResultList[0].Store.StoreId) 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) errList.AddErr(err)
} }
} }
@@ -135,7 +135,7 @@ func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri
} }
//电子围栏 仓库 运费模板 限售模板 更新与绑定 //电子围栏 仓库 运费模板 限售模板 更新与绑定
func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID int64) error { func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID int64) (string, error) {
var ( var (
errList = errlist.New() errList = errlist.New()
FreightTemplate = &model.FreightTemplate{} FreightTemplate = &model.FreightTemplate{}
@@ -171,7 +171,8 @@ func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID int64) error
if err != nil { if err != nil {
errList.AddErr(fmt.Errorf("获取门店(%d) 绑定仓库信息以及电子围栏出错:%v", vendorStoreID, err)) errList.AddErr(fmt.Errorf("获取门店(%d) 绑定仓库信息以及电子围栏出错:%v", vendorStoreID, err))
} }
if len(bindWarehouseAndFence) == 0 || utils.IsNil(bindWarehouseAndFence) { //1未绑定仓库以及电子围栏 if len(bindWarehouseAndFence) == 0 || utils.IsNil(bindWarehouseAndFence) { //未绑定仓库以及电子围栏
//(1)创建仓库
warehouseID, err := CreateWarehouse(vendorOrgCode, utils.Int64ToStr(storeID)) warehouseID, err := CreateWarehouse(vendorOrgCode, utils.Int64ToStr(storeID))
if err != nil || warehouseID == 0 || utils.IsNil(warehouseID) { if err != nil || warehouseID == 0 || utils.IsNil(warehouseID) {
errList.AddErr(fmt.Errorf("门店(%d) 创建仓库失败:%v", storeID, err)) errList.AddErr(fmt.Errorf("门店(%d) 创建仓库失败:%v", storeID, err))
@@ -184,11 +185,11 @@ func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID int64) error
errList.AddErr(fmt.Errorf("仓库ID(%d) 同步到数据库失败:%v", warehouseID, err)) errList.AddErr(fmt.Errorf("仓库ID(%d) 同步到数据库失败:%v", warehouseID, err))
} }
} }
//检查是否有电子围栏 }
fenceID, err := CreateFenceByStore(vendorOrgCode, storeID) //(2)创建电子围栏
if err != nil || utils.Str2Int(fenceID) == 0 || utils.IsNil(fenceID) { //创建 if fenceID, err := CreateFenceByStore(vendorOrgCode, storeID); err != nil || utils.Str2Int(fenceID) == 0 || utils.IsNil(fenceID) { //不管存在与否 直接创建
errList.AddErr(fmt.Errorf("门店(%d) 创建电子围栏失败:%v", storeID, err)) errList.AddErr(fmt.Errorf("门店(%d) 创建电子围栏失败:%v", storeID, err))
} //绑定 } else { //绑定
if err := BindFenceByStore(vendorOrgCode, vendorStoreID, []string{utils.Int64ToStr(storeID)}); err != nil { if err := BindFenceByStore(vendorOrgCode, vendorStoreID, []string{utils.Int64ToStr(storeID)}); err != nil {
errList.AddErr(fmt.Errorf("门店(%d) 绑定电子围栏:%s失败:%v", storeID, fenceID, err)) errList.AddErr(fmt.Errorf("门店(%d) 绑定电子围栏:%s失败:%v", storeID, fenceID, err))
} else { } else {
@@ -198,8 +199,9 @@ func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID int64) error
} }
} }
} }
} else { //同步信息到本地 } else {
if len(bindWarehouseAndFence[0][vendorStoreID].OutFenceIds) == 0 || utils.IsNil(bindWarehouseAndFence[0][vendorStoreID].OutFenceIds) { //未绑定电子围栏 if len(bindWarehouseAndFence[0][vendorStoreID].OutFenceIds) == 0 || utils.IsNil(bindWarehouseAndFence[0][vendorStoreID].OutFenceIds) { //未绑定电子围栏
globals.SugarLogger.Debugf("进入创建电子围栏=========")
if fenceID, err := CreateFenceByStore(vendorOrgCode, storeID); err != nil || utils.Str2Int(fenceID) == 0 || utils.IsNil(fenceID) { //创建 if fenceID, err := CreateFenceByStore(vendorOrgCode, storeID); err != nil || utils.Str2Int(fenceID) == 0 || utils.IsNil(fenceID) { //创建
errList.AddErr(fmt.Errorf("门店(%d) 创建电子围栏失败:%v", storeID, err)) errList.AddErr(fmt.Errorf("门店(%d) 创建电子围栏失败:%v", storeID, err))
} else { //绑定 } else { //绑定
@@ -213,6 +215,9 @@ func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID int64) error
} }
} }
} }
//同步到本地数据库
FreightTemplate.FenceID = bindWarehouseAndFence[0][vendorStoreID].OutFenceIds[0]
FreightTemplate.WarehouseID = bindWarehouseAndFence[0][vendorStoreID].WarehouseId
if _, err = dao.UpdateEntity(db, FreightTemplate, "FenceID"); err != nil { if _, err = dao.UpdateEntity(db, FreightTemplate, "FenceID"); err != nil {
errList.AddErr(fmt.Errorf("电子围栏 同步到本地出错:%v", err)) errList.AddErr(fmt.Errorf("电子围栏 同步到本地出错:%v", err))
} }
@@ -240,6 +245,7 @@ func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID int64) error
} }
} }
} else { //同步到本地 } else { //同步到本地
FreightTemplate.TradeLimitID = SaleLimitID
if _, err = dao.UpdateEntity(db, FreightTemplate, "TradeLimitID"); err != nil { if _, err = dao.UpdateEntity(db, FreightTemplate, "TradeLimitID"); err != nil {
errList.AddErr(fmt.Errorf("限售模板 同步到本地出错:%v", err)) errList.AddErr(fmt.Errorf("限售模板 同步到本地出错:%v", err))
} }
@@ -251,9 +257,9 @@ func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID int64) error
errList.AddErr(fmt.Errorf("db update storeID,vendorStoreID defeat on :%v", err)) errList.AddErr(fmt.Errorf("db update storeID,vendorStoreID defeat on :%v", err))
} }
if utils.IsNil(errList) { if utils.IsNil(errList) {
return errors.New(fmt.Sprintf("%s", utils.Format4Output(errList, true))) return "门店绑定成功,但需要根据提示进行处理", errors.New(fmt.Sprintf("%s", utils.Format4Output(errList, true)))
} else { } else {
return nil return "门店绑定成功", nil
} }
} }

View File

@@ -93,14 +93,14 @@ func CreateFenceByStore(appOrgCode string, storeID int64) (fenceID string, err e
var ( var (
db *dao.DaoDB db *dao.DaoDB
localStore *LocalStore localStore *LocalStore
verticeses []warehouse_createFence_request.VerticesItem vertex []warehouse_createFence_request.VerticesItem
) )
sqlParam := []interface{}{ sqlParam := []interface{}{
model.VendorIDDD, model.VendorIDDD,
} }
sqlStr := ` SELECT t.lng,t.lat,t.delivery_range_type,t.delivery_range,s.vendor_store_id FROM store t sqlStr := ` SELECT t.lng,t.lat,t.delivery_range_type,t.delivery_range,s.vendor_store_id FROM store t
LEFT JOIN store_map s ON t.id = s.store_id LEFT JOIN store_map s ON t.id = s.store_id
WHERE s.vendor_id= ? ` WHERE s.vendor_id = ? `
if storeID != 0 { if storeID != 0 {
sqlStr += " AND t.id = ? " sqlStr += " AND t.id = ? "
sqlParam = append(sqlParam, storeID) sqlParam = append(sqlParam, storeID)
@@ -131,9 +131,9 @@ func CreateFenceByStore(appOrgCode string, storeID int64) (fenceID string, err e
Longitude: utils.Str2Float64(s2[0]), Longitude: utils.Str2Float64(s2[0]),
Latitude: utils.Str2Float64(s2[1]), Latitude: utils.Str2Float64(s2[1]),
} }
verticeses = append(verticeses, vertices) vertex = append(vertex, vertices)
} }
param.FenceInfo.Polygon.Vertices = verticeses param.FenceInfo.Polygon.Vertices = vertex
} }
resp, err := getAPI(appOrgCode, 0, "").CreateFence(param) resp, err := getAPI(appOrgCode, 0, "").CreateFence(param)
if err != nil { if err != nil {