This commit is contained in:
richboo111
2022-10-27 18:27:49 +08:00
parent 1aa73035c7
commit d1b0d6dd51
5 changed files with 237 additions and 105 deletions

View File

@@ -83,17 +83,14 @@ func SplicingTimeToDoudian(openTime1, closeTime1, openTime2, closeTime2 int16, f
// shop/batchCreateStore 批量创建门店
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
vendorStoreIDs string
lists []shop_batchCreateStore_request.StoreListItem
ShopBatchCreateStoreParam *shop_batchCreateStore_request.ShopBatchCreateStoreParam
FreightTemplate = &model.FreightTemplate{}
errList = errlist.New()
timeStr = ""
m = make(map[int64]string)
)
//增加绑定门店操作
a := getAPI(storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID)
if storeDetail.OpenTime1 == 0 || storeDetail.CloseTime1 == 0 {
return "", fmt.Errorf("营业时间必填")
@@ -110,7 +107,7 @@ func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri
}
list := shop_batchCreateStore_request.StoreListItem{
RowId: 1,
Name: storeDetail.Name,
Name: "京西菜市(" + storeDetail.Name + ")",
StoreCode: utils.Int2Str(storeDetail.Store.ID),
Longitude: utils.Float64ToStr(jxutils.IntCoordinate2Standard(storeDetail.Lng)),
Latitude: utils.Float64ToStr(jxutils.IntCoordinate2Standard(storeDetail.Lat)),
@@ -130,78 +127,117 @@ func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri
if resp, err := a.BatchCreateStore(ShopBatchCreateStoreParam); err != nil {
return "", err
} else {
storeIDs = utils.Int64ToStr(resp.ResultList[0].Store.StoreId)
if utils.Str2Int(storeIDs) == 0 || len(resp.ResultList) == 0 {
return "", errors.New(fmt.Sprintf("创建店铺失败,storeIDs = 0:%v,%v", err, resp.ResultList[0].Msg))
vendorStoreIDs = utils.Int64ToStr(resp.ResultList[0].Store.StoreId)
if err := CreateOrUpdateAll(storeDetail.VendorOrgCode, int64(storeDetail.Store.ID), resp.ResultList[0].Store.StoreId); err != nil {
errList.AddErr(err)
}
//创建并绑定运费模板
//先获取是否已绑定
//if bindFenceIDs,err:=GetStoreFreight(storeDetail.VendorOrgCode,storeDetail.Store.ID)
if freightTemplateID, err := CreateFreightTemplate(storeDetail.Store.ID); err != nil {
}
return vendorStoreIDs, errors.New(fmt.Sprintf("%s", utils.Format4Output(errList, true)))
}
//电子围栏 仓库 运费模板 限售模板 更新与绑定
func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID int64) error {
var (
errList = errlist.New()
FreightTemplate = &model.FreightTemplate{}
db *dao.DaoDB
)
//1.平台获取门店运费模板
bindFreightIDs, err := GetStoreFreight(vendorOrgCode, vendorStoreID)
if err != nil {
errList.AddErr(fmt.Errorf("获取门店(%d) 绑定运费模板出错:%v", vendorStoreID, err))
}
if bindFreightIDs == 0 { //1未查询到绑定信息不算错误
//创建
if freightTemplateID, err := CreateFreightTemplate(int(storeID)); err != nil || freightTemplateID == 0 || utils.IsNil(freightTemplateID) {
errList.AddErr(fmt.Errorf("创建运费模板失败:%v", err))
} else {
if freightTemplateID == 0 {
errList.AddErr(fmt.Errorf("创建运费模板失败%v", err))
} else { //绑定
if err = ShopBindStoreFreight(vendorOrgCode, vendorStoreID, freightTemplateID); err != nil {
errList.AddErr(fmt.Errorf("京西菜市门店:%d 平台门店:%d 绑定运费模板:%d 失败:%v", storeID, vendorStoreID, freightTemplateID, err))
} else {
if err = ShopBindStoreFreight(storeDetail.VendorOrgCode, int64(storeDetail.Store.ID), freightTemplateID); err != nil {
errList.AddErr(fmt.Errorf("本地门店:%d 绑定运费模板:%d 失败:%v", int64(storeDetail.Store.ID), freightTemplateID, err))
FreightTemplate.TemplateID = freightTemplateID
if err = dao.CreateEntity(db, FreightTemplate); err != nil {
errList.AddErr(fmt.Errorf("运费模板:%d 同步数据库失败:%v", freightTemplateID, err))
}
}
}
} else { //同步信息到本地
if _, err = dao.UpdateEntity(db, FreightTemplate, "TemplateID"); err != nil {
errList.AddErr(fmt.Errorf("平台运费模板 同步到本地出错:%v", err))
}
}
//2.平台获取仓库信息以及电子围栏id
bindWarehouseAndFence, err := GetWarehouseByStore(vendorOrgCode, vendorStoreID)
if err != nil {
errList.AddErr(fmt.Errorf("获取门店(%d) 绑定仓库信息以及电子围栏出错:%v", vendorStoreID, err))
}
if len(bindWarehouseAndFence) == 0 || utils.IsNil(bindWarehouseAndFence) { //未绑定仓库
if warehouseID, err := CreateWarehouse(vendorOrgCode, utils.Int64ToStr(storeID)); err != nil || warehouseID == 0 || utils.IsNil(warehouseID) {
errList.AddErr(fmt.Errorf("门店(%d) 创建仓库失败:%v", storeID, err))
} else { //绑定
if err = BindStoreWarehouse(vendorOrgCode, utils.Int64ToStr(storeID), vendorStoreID); err != nil { //仓库绑定通过自定义外部ID
errList.AddErr(fmt.Errorf("门店(%d) 绑定仓库:%d 失败:%v", storeID, warehouseID, err))
} else {
FreightTemplate.WarehouseID = warehouseID
if err = dao.CreateEntity(db, FreightTemplate); err != nil {
errList.AddErr(fmt.Errorf("仓库ID(%d) 同步到数据库失败:%v", warehouseID, err))
}
}
}
if len(bindWarehouseAndFence[0][vendorStoreID].OutFenceIds) == 0 || utils.IsNil(bindWarehouseAndFence[0][vendorStoreID].OutFenceIds) { //未绑定电子围栏
if fenceID, err := CreateFenceByStore(vendorOrgCode, storeID); err != nil || utils.Str2Int(fenceID) == 0 || utils.IsNil(fenceID) { //创建
errList.AddErr(fmt.Errorf("门店(%d) 创建电子围栏失败:%v", storeID, err))
} else { //绑定
if err := BindFenceByStore(vendorOrgCode, vendorStoreID, []string{utils.Int64ToStr(storeID)}); err != nil {
errList.AddErr(fmt.Errorf("门店(%d) 绑定电子围栏:%s失败:%v", storeID, fenceID, err))
} else {
FreightTemplate.TemplateID = freightTemplateID
if err = dao.CreateEntity(db, FreightTemplate); err != nil {
errList.AddErr(fmt.Errorf("运费模板ID存入数据库失败%v", err))
FreightTemplate.FenceID = utils.Int64ToStr(storeID)
if err := dao.CreateEntity(db, FreightTemplate); err != nil {
errList.AddErr(fmt.Errorf("电子围栏ID(%s) 同步到数据库失败:%v", fenceID, err))
}
}
}
}
//创建并绑定仓库
if warehouse, err := CreateWarehouse(storeDetail.VendorOrgCode, utils.Int2Str(storeDetail.Store.ID)); err != nil {
errList.AddErr(fmt.Errorf("创建仓库失败:%v", err))
} else {
tempStoreID = append(tempStoreID, int64(storeDetail.Store.ID))
if err = BindStoreWarehouse(storeDetail.VendorOrgCode, utils.Int64ToStr(warehouse), tempStoreID); err != nil {
errList.AddErr(fmt.Errorf("门店:%d 绑定仓库:%d 失败:%v", int64(storeDetail.Store.ID), warehouse, err))
} else {
FreightTemplate.WarehouseID = warehouse
if err = dao.CreateEntity(db, FreightTemplate); err != nil {
errList.AddErr(fmt.Errorf("仓库ID存入数据库失败%v", err))
}
}
} else { //同步信息到本地
if _, err = dao.UpdateEntity(db, FreightTemplate, "FenceID"); err != nil {
errList.AddErr(fmt.Errorf("电子围栏 同步到本地出错:%v", err))
}
//创建并绑定电子围栏
if fenceID, err := CreateFenceByStore(storeDetail.VendorOrgCode, int(resp.ResultList[0].Store.StoreId)); err != nil {
errList.AddErr(fmt.Errorf("创建电子围栏失败:%v", err))
} else {
fences := []string{utils.Int2Str(storeDetail.Store.ID)}
if err := BindFenceByStore(storeDetail.VendorOrgCode, resp.ResultList[0].Store.StoreId, fences); err != nil {
errList.AddErr(fmt.Errorf("门店:%d 绑定电子围栏:%s 失败:%v", resp.ResultList[0].Store.StoreId, fenceID, err))
} else {
FreightTemplate.FenceID = fenceID
if err := dao.CreateEntity(db, FreightTemplate); err != nil {
errList.AddErr(fmt.Errorf("电子围栏ID存入数据库失败%v", err))
}
}
if _, err = dao.UpdateEntity(db, FreightTemplate, "WarehouseID"); err != nil {
errList.AddErr(fmt.Errorf("仓库 同步到本地出错:%v", err))
}
//创建限售模板
if tradeLimitID, err := CreateTradeLimitTemplate(storeDetail.VendorOrgCode, int64(storeDetail.Store.ID)); err != nil {
errList.AddErr(fmt.Errorf("创建限售模板失败:%v", err))
}
//3.平台获取限售模板
SaleLimitID, err := GetStoreSaleLimit(vendorOrgCode, vendorStoreID)
if err != nil {
errList.AddErr(fmt.Errorf("获取门店(%d) 限售模板出错:%v", vendorStoreID, err))
}
if SaleLimitID == 0 || utils.IsNil(SaleLimitID) { //未绑定限售模板
if tradeLimitID, err := CreateTradeLimitTemplate(vendorOrgCode, storeID); err != nil || tradeLimitID == 0 || utils.IsNil(tradeLimitID) {
errList.AddErr(fmt.Errorf("门店(%d) 创建限售模板失败:%v", storeID, err))
} else {
if err := BindStoreSaleLimit(storeDetail.VendorOrgCode, resp.ResultList[0].Store.StoreId, tradeLimitID); err != nil {
errList.AddErr(fmt.Errorf("绑定限售模板失败%v", err))
if err := BindStoreSaleLimit(vendorOrgCode, vendorStoreID, tradeLimitID); err != nil {
errList.AddErr(fmt.Errorf("门店(%d) 绑定限售模板失败:%v", storeID, err))
} else {
FreightTemplate.TradeLimitID = tradeLimitID
if err := dao.CreateEntity(db, FreightTemplate); err != nil {
errList.AddErr(fmt.Errorf("限售模板ID存入数据库失败%v", err))
errList.AddErr(fmt.Errorf("限售模板(%d) 存入数据库失败:%v", tradeLimitID, err))
}
}
}
FreightTemplate.StoreID = storeDetail.Store.ID
FreightTemplate.VendorStoreID = storeIDs
FreightTemplate.DeletedAt = utils.DefaultTimeValue
if err = dao.CreateEntity(db, FreightTemplate); err != nil {
errList.AddErr(fmt.Errorf("db update storeID,vendorStoreID defeat on :%v", err))
} else { //同步到本地
if _, err = dao.UpdateEntity(db, FreightTemplate, "TradeLimitID"); err != nil {
errList.AddErr(fmt.Errorf("限售模板 同步到本地出错:%v", err))
}
return storeIDs, errors.New(fmt.Sprintf("%s", utils.Format4Output(errList, true)))
}
FreightTemplate.StoreID = int(storeID)
FreightTemplate.VendorStoreID = utils.Int64ToStr(vendorStoreID)
FreightTemplate.DeletedAt = utils.DefaultTimeValue
if err = dao.CreateEntity(db, FreightTemplate); err != nil {
errList.AddErr(fmt.Errorf("db update storeID,vendorStoreID defeat on :%v", err))
}
return errors.New(fmt.Sprintf("%s", utils.Format4Output(errList, true)))
}
// shop/editStore 编辑门店信息 正向推送平台
@@ -267,7 +303,7 @@ func (P *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin
}
//修改店铺状态
if storeInfo.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreStatus) != 0 {
errList.AddErr(P.UpdateStoreStatus(jxcontext.AdminCtx, storeInfo.VendorOrgCode, storeID, storeInfo.VendorStoreID, mergedStoreStatus))
errList.AddErr(UpdateStoreStatus(jxcontext.AdminCtx, storeInfo.VendorOrgCode, storeID, storeInfo.VendorStoreID, mergedStoreStatus))
}
err3 := api.EditStore(params)
if err3 != nil {
@@ -289,33 +325,33 @@ func (P *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin
}
// UpdateStoreStatus shop/unsuspendStore 门店恢复营业
func (p *PurchaseHandler) UpdateStoreStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, status int) (err error) {
func UpdateStoreStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, status int) (err error) {
isOnline := bizStatusJX2DouDian(status)
api := getAPI(vendorOrgCode, storeID, vendorStoreID)
a := getAPI(vendorOrgCode, storeID, vendorStoreID)
if globals.EnableDdStoreWrite {
if isOnline != tiktok_api.StoreStatusOnline { //暂停营业状态
unsuspendStoreID := &shop_unsuspendStore_request.ShopUnsuspendStoreParam{
suspendStoreID := &shop_storeSuspend_request.ShopStoreSuspendParam{
StoreId: utils.Str2Int64(vendorStoreID),
}
if _, err = api.UnsuspendStore(unsuspendStoreID); err != nil {
if _, err = a.StoreSuspend(suspendStoreID); err != nil {
return err
}
} else { //恢复营业
suspendStoreID := &shop_storeSuspend_request.ShopStoreSuspendParam{
unsuspendStoreID := &shop_unsuspendStore_request.ShopUnsuspendStoreParam{
StoreId: utils.Str2Int64(vendorStoreID),
}
getStoreID := &shop_getStoreDetail_request.ShopGetStoreDetailParam{
StoreId: utils.Str2Int64(vendorStoreID),
}
//平台上店铺状态
remoteStoreInfo, err2 := api.GetStoreDetail(getStoreID)
remoteStoreInfo, err2 := a.GetStoreDetail(getStoreID)
if err2 != nil {
return err2
}
if remoteStoreInfo.StoreDetail.Store.SuspendType == tiktok_api.SuspendTypePlatformPenalty {
err = errors.New("门店因平台处罚暂停营业,不可主动修改营业状态")
} else {
if _, err = api.StoreSuspend(suspendStoreID); err != nil {
if _, err = a.UnsuspendStore(unsuspendStoreID); err != nil {
return err
}
}
@@ -502,32 +538,6 @@ func (P *PurchaseHandler) CreateAddress(addressInfo address_create_request.Addre
if err != nil {
return 0, err
}
//添加进数据库page_shop
//获取门店信息
//storeID := &shop_getStoreDetail_request.ShopGetStoreDetailParam{
// StoreId: addressInfo.StoreId,
//}
//storeInfo, err1 := api.DouDianApi.GetStoreDetail(storeID)
//if err1 != nil {
// return 0, err1
//}
//createAddress := &model.PageShop{ //此表暂存门店售后地址库
// Name: storeInfo.StoreDetail.Store.Name,
// VendorID: model.VendorIDDouDian,
// VendorStoreID: utils.Int64ToStr(storeInfo.StoreDetail.Store.StoreId), //抖店平台ID
// OrgCode: storeInfo.StoreDetail.Store.StoreCode, //暂时用来存放京西平台门店ID
// VendorStatus: utils.Int64ToStr(storeInfo.StoreDetail.Store.State),
// Status: 0,
// CityCode: utils.Str2Int(storeInfo.StoreDetail.Store.CityCode),
// DistrictCode: utils.Str2Int(storeInfo.StoreDetail.Store.DistrictCode),
// Address: storeInfo.StoreDetail.Store.Address,
// Lng: utils.Str2Float64(storeInfo.StoreDetail.Store.Longitude),
// Lat: utils.Str2Float64(storeInfo.StoreDetail.Store.Latitude),
// Tel1: storeInfo.StoreDetail.Store.Contact,
//}
//if err = dao.CreateEntity(dao.GetDB(), createAddress); err != nil {
// return 0, err
//}
return resp.AddressId, nil
}
@@ -590,6 +600,15 @@ func BindStoreSaleLimit(appOrgCode string, storeID, saleLimitTemplateID int64) e
return nil
}
// 获取门店绑定限售模板
func GetStoreSaleLimit(appOrgCode string, storeID int64) (int64, error) {
saleLimitTemplateID, err := getAPI(appOrgCode, 0, "").StoreQuerySaleLimitTemp(storeID)
if err != nil {
return 0, err
}
return saleLimitTemplateID, nil
}
func (P *PurchaseHandler) UpdateStoreOpTime(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, opTimeList []int16) (err error) {
t1 := opTimeList[0]
t2 := opTimeList[1]