1
This commit is contained in:
@@ -232,9 +232,11 @@ func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID, deliveryFee
|
||||
FreightTemplate.VendorStoreID = utils.Int64ToStr(vendorStoreID)
|
||||
if err := dao.CreateEntity(db, FreightTemplate); err != nil {
|
||||
if _, err1 := dao.UpdateEntity(db, FreightTemplate, "TemplateID", "WarehouseID", "FenceID", "TradeLimitID", "StoreID", "VendorStoreID"); err1 != nil {
|
||||
errList.AddErr(fmt.Errorf("更新操作,同步进数据库错误信息:%v", err1))
|
||||
globals.SugarLogger.Debug("更新操作,同步进数据库错误信息:%v", err1)
|
||||
//errList.AddErr(fmt.Errorf("更新操作,同步进数据库错误信息:%v", err1))
|
||||
} else {
|
||||
errList.AddErr(fmt.Errorf("创建操作,同步进数据库错误信息:%v", err))
|
||||
globals.SugarLogger.Debug("创建操作,同步进数据库错误信息:%v", err)
|
||||
//errList.AddErr(fmt.Errorf("创建操作,同步进数据库错误信息:%v", err))
|
||||
}
|
||||
}
|
||||
endErr := errList.GetErrListAsOne()
|
||||
@@ -369,105 +371,110 @@ func (P *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin
|
||||
db = dao.GetDB()
|
||||
}
|
||||
storeInfo, err = dao.GetStoreDetail(db, storeID, model.VendorIDDD, "")
|
||||
if storeInfo.OpenTime1 != 0 && storeInfo.CloseTime1 != 0 {
|
||||
if storeInfo.OpenTime2 != 0 && storeInfo.CloseTime2 != 0 {
|
||||
timeStr = SplicingTimeToDoudian(storeInfo.OpenTime1, storeInfo.CloseTime1, storeInfo.OpenTime2, storeInfo.CloseTime2, true)
|
||||
} else {
|
||||
timeStr = SplicingTimeToDoudian(storeInfo.OpenTime1, storeInfo.CloseTime1, 0, 0, false)
|
||||
}
|
||||
for j := 1; j <= 7; j++ {
|
||||
m[int64(j)] = timeStr
|
||||
}
|
||||
} else {
|
||||
return fmt.Errorf("营业时间必填")
|
||||
}
|
||||
apiObj := getAPI(storeInfo.VendorOrgCode, storeID, storeInfo.VendorStoreID)
|
||||
if globals.EnableDdStoreWrite {
|
||||
remoteStoreInfo, err2 := apiObj.GetStoreDetail(&shop_getStoreDetail_request.ShopGetStoreDetailParam{
|
||||
StoreId: storeInfo.VendorStoreID,
|
||||
})
|
||||
if err2 != nil {
|
||||
return err2
|
||||
}
|
||||
if remoteStoreInfo.StoreDetail.Store.StoreId == 0 {
|
||||
return fmt.Errorf("ID(%d) 的门店不存在,请先创建", utils.Str2Int64(storeInfo.VendorStoreID))
|
||||
}
|
||||
mergedStoreStatus := jxutils.MergeStoreStatus(storeInfo.Status, storeInfo.VendorStatus)
|
||||
name = remoteStoreInfo.StoreDetail.Store.Name
|
||||
if storeInfo.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreName) != 0 {
|
||||
if storeInfo.VendorStoreName != "" {
|
||||
name = storeInfo.VendorStoreName
|
||||
}
|
||||
}
|
||||
store := fmt.Sprintf("门店id:%d,门店名称:%s,第三方门店状态:%d,本地修改前门店状态%d,本地门店修改后状态:%d,第三方平台Id(抖店):%s", storeID, remoteStoreInfo.StoreDetail.Store.Name, remoteStoreInfo.StoreDetail.Store.State, storeInfo.Status, mergedStoreStatus, storeInfo.VendorOrgCode)
|
||||
event.AddOperateEvent(jxcontext.AdminCtx, jxcontext.AdminCtx.GetTrackInfo(), store, "", "", 10, "UpdateStore")
|
||||
params := &shop_editStore_request.ShopEditStoreParam{
|
||||
StoreId: remoteStoreInfo.StoreDetail.Store.StoreId, //平台id不可修改
|
||||
Name: name,
|
||||
StoreCode: utils.Int2Str(storeInfo.ID), //自用编码即本地storeID
|
||||
Latitude: utils.Int2Str(storeInfo.Lat),
|
||||
Longitude: utils.Int2Str(storeInfo.Lng),
|
||||
Province: storeInfo.ProvinceName,
|
||||
City: storeInfo.CityName,
|
||||
District: storeInfo.DistrictName,
|
||||
Address: storeInfo.Address,
|
||||
Contact: storeInfo.Tel1,
|
||||
OpenTime: &shop_editStore_request.OpenTime{
|
||||
DayMap: m,
|
||||
},
|
||||
}
|
||||
//修改店铺状态
|
||||
if storeInfo.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreStatus) != 0 {
|
||||
errList.AddErr(UpdateStoreStatus(jxcontext.AdminCtx, storeInfo.VendorOrgCode, storeID, storeInfo.VendorStoreID, mergedStoreStatus))
|
||||
}
|
||||
if err3 := apiObj.EditStore(params); err3 != nil {
|
||||
errList.AddErr(fmt.Errorf("修改门店(%d) 信息失败:%v", utils.Str2Int64(storeInfo.VendorStoreID), err3))
|
||||
}
|
||||
//电子围栏
|
||||
bind, err := GetWarehouseByStore(storeInfo.VendorOrgCode, utils.Str2Int64(storeInfo.VendorStoreID))
|
||||
if err != nil {
|
||||
errList.AddErr(fmt.Errorf("获取门店(%d) 电子围栏失败:%v", utils.Str2Int64(storeInfo.VendorStoreID), err))
|
||||
} else if len(bind[storeInfo.VendorStoreID][0].OutFenceIds) == 0 {
|
||||
//检查是否以storeID创建过
|
||||
if bindFence, err := GetFence(storeInfo.VendorOrgCode, []string{utils.Int2Str(storeID)}); err == nil {
|
||||
tempFenceID = bindFence[0].OutFenceId
|
||||
//判断是否需要更新
|
||||
if !IsNeedStoreUpdate(storeInfo, utils.Int2Str(storeID)) {
|
||||
return nil
|
||||
} else {
|
||||
if storeInfo.OpenTime1 != 0 && storeInfo.CloseTime1 != 0 {
|
||||
if storeInfo.OpenTime2 != 0 && storeInfo.CloseTime2 != 0 {
|
||||
timeStr = SplicingTimeToDoudian(storeInfo.OpenTime1, storeInfo.CloseTime1, storeInfo.OpenTime2, storeInfo.CloseTime2, true)
|
||||
} else {
|
||||
if fenceID, err := CreateFenceByStore(storeInfo.VendorOrgCode, int64(storeID)); err != nil || len(fenceID) == 0 { //创建
|
||||
globals.SugarLogger.Debug("门店(%d) 创建电子围栏失败:%v", storeID, err)
|
||||
errList.AddErr(fmt.Errorf("门店(%d) 创建电子围栏失败:%v", storeID, err))
|
||||
} else {
|
||||
tempFenceID = fenceID
|
||||
timeStr = SplicingTimeToDoudian(storeInfo.OpenTime1, storeInfo.CloseTime1, 0, 0, false)
|
||||
}
|
||||
for j := 1; j <= 7; j++ {
|
||||
m[int64(j)] = timeStr
|
||||
}
|
||||
} else {
|
||||
return fmt.Errorf("营业时间必填")
|
||||
}
|
||||
if globals.EnableDdStoreWrite {
|
||||
remoteStoreInfo, err2 := apiObj.GetStoreDetail(&shop_getStoreDetail_request.ShopGetStoreDetailParam{
|
||||
StoreId: storeInfo.VendorStoreID,
|
||||
})
|
||||
if err2 != nil {
|
||||
return err2
|
||||
}
|
||||
if remoteStoreInfo.StoreDetail.Store.StoreId == 0 {
|
||||
return fmt.Errorf("ID(%d) 的门店不存在,请先创建", utils.Str2Int64(storeInfo.VendorStoreID))
|
||||
}
|
||||
mergedStoreStatus := jxutils.MergeStoreStatus(storeInfo.Status, storeInfo.VendorStatus)
|
||||
name = remoteStoreInfo.StoreDetail.Store.Name
|
||||
if storeInfo.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreName) != 0 {
|
||||
if storeInfo.VendorStoreName != "" {
|
||||
name = storeInfo.VendorStoreName
|
||||
}
|
||||
}
|
||||
if err := BindFenceByStore(storeInfo.VendorOrgCode, utils.Str2Int64(storeInfo.VendorStoreID), []string{tempFenceID}); err != nil {
|
||||
globals.SugarLogger.Debug("门店(%d) 绑定电子围栏:%s失败:%v", storeID, tempFenceID, err)
|
||||
errList.AddErr(fmt.Errorf("门店(%d) 绑定电子围栏:%s失败:%v", storeID, tempFenceID, err))
|
||||
store := fmt.Sprintf("门店id:%d,门店名称:%s,第三方门店状态:%d,本地修改前门店状态%d,本地门店修改后状态:%d,第三方平台Id(抖店):%s", storeID, remoteStoreInfo.StoreDetail.Store.Name, remoteStoreInfo.StoreDetail.Store.State, storeInfo.Status, mergedStoreStatus, storeInfo.VendorOrgCode)
|
||||
event.AddOperateEvent(jxcontext.AdminCtx, jxcontext.AdminCtx.GetTrackInfo(), store, "", "", 10, "UpdateStore")
|
||||
params := &shop_editStore_request.ShopEditStoreParam{
|
||||
StoreId: remoteStoreInfo.StoreDetail.Store.StoreId, //平台id不可修改
|
||||
Name: name,
|
||||
StoreCode: utils.Int2Str(storeInfo.ID), //自用编码即本地storeID
|
||||
Latitude: utils.Float64ToStr(jxutils.IntCoordinate2Standard(storeInfo.Lat)),
|
||||
Longitude: utils.Float64ToStr(jxutils.IntCoordinate2Standard(storeInfo.Lng)),
|
||||
Province: storeInfo.ProvinceName,
|
||||
City: storeInfo.CityName,
|
||||
District: storeInfo.DistrictName,
|
||||
Address: storeInfo.Address,
|
||||
Contact: storeInfo.Tel1,
|
||||
OpenTime: &shop_editStore_request.OpenTime{
|
||||
DayMap: m,
|
||||
},
|
||||
}
|
||||
} else if len(bind[storeInfo.VendorStoreID][0].OutFenceIds) > 0 {
|
||||
//默认更新第一个电子围栏
|
||||
outFenceID := bind[storeInfo.VendorStoreID][0].OutFenceIds[0]
|
||||
if err = UpdateFenceByStore(storeInfo.VendorOrgCode, outFenceID, storeID); err != nil {
|
||||
errList.AddErr(errors.New(fmt.Sprintf("更新电子围栏失败,原因:%v", err)))
|
||||
//修改店铺状态
|
||||
if storeInfo.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreStatus) != 0 {
|
||||
errList.AddErr(UpdateStoreStatus(jxcontext.AdminCtx, storeInfo.VendorOrgCode, storeID, storeInfo.VendorStoreID, mergedStoreStatus))
|
||||
}
|
||||
if err3 := apiObj.EditStore(params); err3 != nil {
|
||||
errList.AddErr(fmt.Errorf("修改门店(%d) 信息失败:%v", utils.Str2Int64(storeInfo.VendorStoreID), err3))
|
||||
}
|
||||
//电子围栏
|
||||
bind, err := GetWarehouseByStore(storeInfo.VendorOrgCode, utils.Str2Int64(storeInfo.VendorStoreID))
|
||||
if err != nil {
|
||||
errList.AddErr(fmt.Errorf("获取门店(%d) 电子围栏失败:%v", utils.Str2Int64(storeInfo.VendorStoreID), err))
|
||||
} else if len(bind[storeInfo.VendorStoreID][0].OutFenceIds) == 0 {
|
||||
//检查是否以storeID创建过
|
||||
if bindFence, err := GetFence(storeInfo.VendorOrgCode, []string{utils.Int2Str(storeID)}); err == nil {
|
||||
tempFenceID = bindFence[0].OutFenceId
|
||||
} else {
|
||||
if fenceID, err := CreateFenceByStore(storeInfo.VendorOrgCode, int64(storeID)); err != nil || len(fenceID) == 0 { //创建
|
||||
globals.SugarLogger.Debug("门店(%d) 创建电子围栏失败:%v", storeID, err)
|
||||
errList.AddErr(fmt.Errorf("门店(%d) 创建电子围栏失败:%v", storeID, err))
|
||||
} else {
|
||||
tempFenceID = fenceID
|
||||
}
|
||||
}
|
||||
if err := BindFenceByStore(storeInfo.VendorOrgCode, utils.Str2Int64(storeInfo.VendorStoreID), []string{tempFenceID}); err != nil {
|
||||
globals.SugarLogger.Debug("门店(%d) 绑定电子围栏:%s失败:%v", storeID, tempFenceID, err)
|
||||
errList.AddErr(fmt.Errorf("门店(%d) 绑定电子围栏:%s失败:%v", storeID, tempFenceID, err))
|
||||
}
|
||||
} else if len(bind[storeInfo.VendorStoreID][0].OutFenceIds) > 0 {
|
||||
//默认更新第一个电子围栏
|
||||
outFenceID := bind[storeInfo.VendorStoreID][0].OutFenceIds[0]
|
||||
if err = UpdateFenceByStore(storeInfo.VendorOrgCode, outFenceID, storeID); err != nil {
|
||||
errList.AddErr(errors.New(fmt.Sprintf("更新电子围栏失败,原因:%v", err)))
|
||||
}
|
||||
FreightTemplate.FenceID = outFenceID
|
||||
}
|
||||
FreightTemplate.FenceID = outFenceID
|
||||
}
|
||||
}
|
||||
//同步进数据库
|
||||
FreightTemplate.FenceID = tempFenceID
|
||||
FreightTemplate.StoreID = storeID
|
||||
FreightTemplate.VendorStoreID = storeInfo.VendorStoreID
|
||||
if err = dao.CreateEntity(db, FreightTemplate); err != nil {
|
||||
if _, err1 := dao.UpdateEntity(db, FreightTemplate, "FenceID", "StoreID", "VendorStoreID"); err1 != nil {
|
||||
globals.SugarLogger.Debugf("db update storeID,vendorStoreID defeat on :%v", err1)
|
||||
//errList.AddErr(fmt.Errorf("更新操作,同步进数据库错误信息:%v", err1))
|
||||
} else {
|
||||
globals.SugarLogger.Debugf("db create storeID,vendorStoreID defeat on :%v", err)
|
||||
//errList.AddErr(fmt.Errorf("创建操作,同步进数据库错误信息:%v", err))
|
||||
//同步进数据库
|
||||
FreightTemplate.FenceID = tempFenceID
|
||||
FreightTemplate.StoreID = storeID
|
||||
FreightTemplate.VendorStoreID = storeInfo.VendorStoreID
|
||||
if err = dao.CreateEntity(db, FreightTemplate); err != nil {
|
||||
if _, err1 := dao.UpdateEntity(db, FreightTemplate, "FenceID", "StoreID", "VendorStoreID"); err1 != nil {
|
||||
errList.AddErr(fmt.Errorf("更新操作,同步进数据库错误信息:%v", err1))
|
||||
} else {
|
||||
errList.AddErr(fmt.Errorf("创建操作,同步进数据库错误信息:%v", err))
|
||||
}
|
||||
}
|
||||
if endErr := errList.GetErrListAsOne(); endErr != nil {
|
||||
globals.SugarLogger.Debugf("DouDian UpdateStore wrong information:%v", endErr)
|
||||
}
|
||||
return nil
|
||||
//return errors.New(fmt.Sprintf("更新抖店平台店铺信息,相关处理错误:%v", endErr))
|
||||
}
|
||||
endErr := errList.GetErrListAsOne()
|
||||
globals.SugarLogger.Debugf("DouDian UpdateStore wrong information:%v", endErr)
|
||||
return errors.New(fmt.Sprintf("更新抖店平台店铺信息,相关处理错误:%v", endErr))
|
||||
}
|
||||
|
||||
// UpdateStoreStatus shop/unsuspendStore 门店恢复营业
|
||||
@@ -1014,6 +1021,7 @@ func (p *PurchaseHandler) GetSkus(ctx *jxcontext.Context, vendorOrgCode string,
|
||||
}
|
||||
|
||||
//以下为辅助函数
|
||||
|
||||
type RelInfo struct {
|
||||
StoreID string `json:"storeID"`
|
||||
VendorStoreID string `json:"vendorStoreID"`
|
||||
@@ -1042,13 +1050,45 @@ func HandleMunicipality(cityName string) bool {
|
||||
|
||||
//判断门店是否审核通过
|
||||
func IfAuditPass(vendorOrgCode string, vendorStoreID int64) bool {
|
||||
flag := false
|
||||
if remoteStore, err := getAPI(vendorOrgCode, 0, " ").GetStoreDetail(&shop_getStoreDetail_request.ShopGetStoreDetailParam{
|
||||
StoreId: utils.Int64ToStr(vendorStoreID),
|
||||
}); err == nil {
|
||||
if remoteStore.StoreDetail.Store.PoiAuditState != tiktok_api.PoiAuditStateSuccessBind || remoteStore.StoreDetail.Store.State != tiktok_api.StoreStateSuccessBind || remoteStore.StoreDetail.Store.QualState != tiktok_api.QualStateCheckingPassed || remoteStore.StoreDetail.Store.RemitState != tiktok_api.RemitStateCheckingPassed || remoteStore.StoreDetail.Store.OpenAccountState != tiktok_api.OpenAccountStateOpen {
|
||||
flag = true
|
||||
return true
|
||||
}
|
||||
}
|
||||
return flag
|
||||
return false
|
||||
}
|
||||
|
||||
//判断门店信息是否需要修改
|
||||
func IsNeedStoreUpdate(lStore *dao.StoreDetail, storeID string) bool {
|
||||
if remoteStore, err := getAPI(lStore.VendorOrgCode, 0, "").GetStoreDetail(&shop_getStoreDetail_request.ShopGetStoreDetailParam{
|
||||
StoreId: storeID,
|
||||
IsNeedPoiAuditInfo: false,
|
||||
IsNeedRelShopUser: false,
|
||||
IsNeedChargeInfo: false,
|
||||
}); err == nil {
|
||||
rStore := remoteStore.StoreDetail.Store
|
||||
if lStore.Tel1 != rStore.Contact || lStore.Name != rStore.Name || lStore.Address != rStore.Address {
|
||||
return true
|
||||
}
|
||||
if lStore.ProvinceName != rStore.Province || lStore.CityName != rStore.City || lStore.DistrictName != rStore.District {
|
||||
return true
|
||||
}
|
||||
if utils.Float64ToStr(jxutils.IntCoordinate2Standard(lStore.Lat)) != rStore.Latitude || utils.Float64ToStr(jxutils.IntCoordinate2Standard(lStore.Lng)) != rStore.Longitude {
|
||||
return true
|
||||
}
|
||||
timeStr := ""
|
||||
if lStore.OpenTime1 != 0 && lStore.CloseTime1 != 0 {
|
||||
if lStore.OpenTime2 != 0 && lStore.CloseTime2 != 0 {
|
||||
timeStr = SplicingTimeToDoudian(lStore.OpenTime1, lStore.CloseTime1, lStore.OpenTime2, lStore.CloseTime2, true)
|
||||
} else {
|
||||
timeStr = SplicingTimeToDoudian(lStore.OpenTime1, lStore.CloseTime1, 0, 0, false)
|
||||
}
|
||||
}
|
||||
if timeStr != rStore.OpenTime.DayMap[1] {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user