aa
This commit is contained in:
@@ -342,16 +342,18 @@ func (c *OrderManager) SaveOrder(order *model.GoodsOrder, isAdjust bool, db *dao
|
|||||||
baseapi.SugarLogger.Infof("saveOrder duplicated orderid:%s msg received", order.VendorOrderID)
|
baseapi.SugarLogger.Infof("saveOrder duplicated orderid:%s msg received", order.VendorOrderID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//修改商品库存
|
|
||||||
if err == nil {
|
|
||||||
err = ModifyOrderSkusStock(db, order, false)
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
globals.SugarLogger.Warnf("saveOrder create order:%v, error:%v", order, err)
|
globals.SugarLogger.Warnf("saveOrder create order:%v, error:%v", order, err)
|
||||||
}
|
}
|
||||||
if err == nil {
|
if err == nil {
|
||||||
dao.Commit(db)
|
dao.Commit(db)
|
||||||
}
|
}
|
||||||
|
//修改商品库存
|
||||||
|
if err == nil {
|
||||||
|
utils.CallFuncAsync(func() {
|
||||||
|
err = ModifyOrderSkusStock(db, order, false)
|
||||||
|
})
|
||||||
|
}
|
||||||
return isDuplicated, err
|
return isDuplicated, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -332,6 +332,29 @@ func (c *OrderManager) ExportOrders(ctx *jxcontext.Context, fromDateStr, toDateS
|
|||||||
func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
func(task *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||||
switch step {
|
switch step {
|
||||||
case 0:
|
case 0:
|
||||||
|
//权限
|
||||||
|
if permission.IsRoled(ctx) {
|
||||||
|
if storeIDsMap, err := permission.GetUserStoresResultMap(ctx.GetUserID()); err == nil {
|
||||||
|
var storeIDs2 []int
|
||||||
|
if mapParams["storeIDs"] != nil {
|
||||||
|
var storeIDs []int
|
||||||
|
if err = utils.UnmarshalUseNumber([]byte(mapParams["storeIDs"].(string)), &storeIDs); err == nil {
|
||||||
|
for _, v := range storeIDs {
|
||||||
|
if storeIDsMap[v] != 0 {
|
||||||
|
storeIDs2 = append(storeIDs2, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for k, _ := range storeIDsMap {
|
||||||
|
storeIDs2 = append(storeIDs2, k)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if data, err := json.Marshal(storeIDs2); err == nil {
|
||||||
|
mapParams["storeIDs"] = string(data)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
orders, _, err = dao.GetOrders(dao.GetDB(), nil, true, true, fromDateStr, toDateStr, true, nil, false, "", mapParams, 0, model.UnlimitedPageSize)
|
orders, _, err = dao.GetOrders(dao.GetDB(), nil, true, true, fromDateStr, toDateStr, true, nil, false, "", mapParams, 0, model.UnlimitedPageSize)
|
||||||
globals.SugarLogger.Debugf("orders:%d, er:%v", len(orders), err)
|
globals.SugarLogger.Debugf("orders:%d, er:%v", len(orders), err)
|
||||||
case 1:
|
case 1:
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ func (c *BaseScheduler) CancelOrder(ctx *jxcontext.Context, order *model.GoodsOr
|
|||||||
if globals.IsAddEvent {
|
if globals.IsAddEvent {
|
||||||
err = cms.AddEventDetail(dao.GetDB(), ctx, model.OperateUpdate, order.StoreID, model.ThingTypeOrder, order.StoreID, order.VendorOrderID, order.StoreName)
|
err = cms.AddEventDetail(dao.GetDB(), ctx, model.OperateUpdate, order.StoreID, model.ThingTypeOrder, order.StoreID, order.VendorOrderID, order.StoreName)
|
||||||
}
|
}
|
||||||
err = partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).CancelOrder(ctx, order, reason)
|
err = partner.GetPurchaseOrderHandlerFromVendorID(order.VendorID).CancelOrder(ctx, order, reason+","+ctx.GetUserName())
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -853,7 +853,10 @@ func (s *DefScheduler) createWaybillOn3rdProviders(savedOrderInfo *WatchOrderInf
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//TODO 2021-02-19 增加品牌配送开关
|
||||||
|
if storeDetail.BrandIsOpen == model.YES {
|
||||||
|
err = fmt.Errorf("此品牌已关闭配送! [%v]", storeDetail.BrandName)
|
||||||
|
}
|
||||||
if err == nil {
|
if err == nil {
|
||||||
if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, excludeVendorIDs, false, maxDeliveryFee); err == nil {
|
if _, err = s.CreateWaybillOnProviders4SavedOrder(jxcontext.AdminCtx, savedOrderInfo, nil, excludeVendorIDs, false, maxDeliveryFee); err == nil {
|
||||||
savedOrderInfo.retryCount++
|
savedOrderInfo.retryCount++
|
||||||
|
|||||||
@@ -2696,6 +2696,7 @@ func UpdateSkuExinfoMap(ctx *jxcontext.Context, nameIDs []int, imgWaterMark stri
|
|||||||
VendorID: vendorID,
|
VendorID: vendorID,
|
||||||
BeginAt: fromTimeP,
|
BeginAt: fromTimeP,
|
||||||
EndAt: toTimeP,
|
EndAt: toTimeP,
|
||||||
|
BrandID: brandID,
|
||||||
}
|
}
|
||||||
dao.WrapAddIDCULDEntity(skuEx, ctx.GetUserName())
|
dao.WrapAddIDCULDEntity(skuEx, ctx.GetUserName())
|
||||||
if imgWaterMark != "" {
|
if imgWaterMark != "" {
|
||||||
@@ -2729,7 +2730,15 @@ func UpdateSkuExinfoMap(ctx *jxcontext.Context, nameIDs []int, imgWaterMark stri
|
|||||||
OnUpdateThing(ctx, db, nil, int64(v), model.ThingTypeSku)
|
OnUpdateThing(ctx, db, nil, int64(v), model.ThingTypeSku)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
SetStoreSkuSyncStatus2(db, nil, []int{vendorID}, skuIDs, model.SyncFlagModifiedMask)
|
var storeIDs []int
|
||||||
|
if brandID != 0 {
|
||||||
|
if stores, _ := dao.GetStoreList(db, nil, nil, nil, []int{brandID}, nil, ""); len(stores) > 0 {
|
||||||
|
for _, v := range stores {
|
||||||
|
storeIDs = append(storeIDs, v.ID)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SetStoreSkuSyncStatus2(db, storeIDs, []int{vendorID}, skuIDs, model.SyncFlagModifiedMask)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1101,6 +1101,13 @@ func CreateStore(ctx *jxcontext.Context, storeExt *StoreExt, userName string) (i
|
|||||||
}
|
}
|
||||||
storeExt.LinkStoreID = realLinkStoreID
|
storeExt.LinkStoreID = realLinkStoreID
|
||||||
|
|
||||||
|
if storeExt.MarketManName == "" {
|
||||||
|
storeExt.MarketManName = ctx.GetUserName()
|
||||||
|
}
|
||||||
|
if storeExt.MarketManPhone == "" {
|
||||||
|
storeExt.MarketManPhone, _ = ctx.GetMobileAndUserID()
|
||||||
|
}
|
||||||
|
|
||||||
existingID := store.ID
|
existingID := store.ID
|
||||||
store.Lng = jxutils.StandardCoordinate2Int(storeExt.FloatLng)
|
store.Lng = jxutils.StandardCoordinate2Int(storeExt.FloatLng)
|
||||||
store.Lat = jxutils.StandardCoordinate2Int(storeExt.FloatLat)
|
store.Lat = jxutils.StandardCoordinate2Int(storeExt.FloatLat)
|
||||||
@@ -3331,6 +3338,19 @@ func CopyStoreCategories(ctx *jxcontext.Context, fromStoreID int, toStoreIDs, ca
|
|||||||
var (
|
var (
|
||||||
db = dao.GetDB()
|
db = dao.GetDB()
|
||||||
)
|
)
|
||||||
|
//权限
|
||||||
|
if permission.IsRoled(ctx) {
|
||||||
|
if storeIDsMap, err := permission.GetUserStoresResultMap(ctx.GetUserID()); err == nil {
|
||||||
|
if storeIDsMap[fromStoreID] == 0 {
|
||||||
|
return "", fmt.Errorf("抱歉,您无权更改他人店铺分类 [%v]", fromStoreID)
|
||||||
|
}
|
||||||
|
for _, v := range toStoreIDs {
|
||||||
|
if storeIDsMap[v] == 0 {
|
||||||
|
return "", fmt.Errorf("抱歉,您无权更改他人店铺分类 [%v]", v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
storeCatList, err := dao.GetStoreCategoryMap(db, -1, 0, fromStoreID, 0)
|
storeCatList, err := dao.GetStoreCategoryMap(db, -1, 0, fromStoreID, 0)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
@@ -3733,6 +3753,8 @@ func StoreAudit(ctx *jxcontext.Context, storeAudits []*model.StoreAudit, status
|
|||||||
storeExt.FloatLng = jxutils.IntCoordinate2Standard(utils.Float64TwoInt(storeExt.FloatLng))
|
storeExt.FloatLng = jxutils.IntCoordinate2Standard(utils.Float64TwoInt(storeExt.FloatLng))
|
||||||
storeExt.FloatLat = jxutils.IntCoordinate2Standard(utils.Float64TwoInt(storeExt.FloatLat))
|
storeExt.FloatLat = jxutils.IntCoordinate2Standard(utils.Float64TwoInt(storeExt.FloatLat))
|
||||||
storeExt.Status = model.StoreStatusDisabled
|
storeExt.Status = model.StoreStatusDisabled
|
||||||
|
storeExt.MarketManName = ctx.GetUserName()
|
||||||
|
storeExt.MarketManPhone, _ = ctx.GetMobileAndUserID()
|
||||||
storeID, err := CreateStore(ctx, storeExt, ctx.GetUserName())
|
storeID, err := CreateStore(ctx, storeExt, ctx.GetUserName())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return retVal, fmt.Errorf(err.Error())
|
return retVal, fmt.Errorf(err.Error())
|
||||||
|
|||||||
@@ -487,23 +487,29 @@ func getGetStoresSkusBaseSQL(db *dao.DaoDB, storeIDs, skuIDs []int, isFocus bool
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetStoresSkus(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus, isHighPrice bool, priceType int, keyword string, isBySku, isAct bool, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *dao.StoreSkuNamesInfo, err error) {
|
func GetStoresSkus(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus, isHighPrice bool, priceType int, keyword string, isBySku, isAct bool, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *dao.StoreSkuNamesInfo, err error) {
|
||||||
return GetStoresSkusNew(ctx, storeIDs, skuIDs, isFocus, isHighPrice, priceType, keyword, isBySku, isAct, params, offset, pageSize)
|
|
||||||
}
|
|
||||||
|
|
||||||
func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus, isHighPrice bool, priceType int, keyword string, isBySku, isAct bool, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *dao.StoreSkuNamesInfo, err error) {
|
|
||||||
//权限
|
//权限
|
||||||
if permission.IsRoled(ctx) {
|
if permission.IsRoled(ctx) {
|
||||||
if storeIDsMap, err := permission.GetUserStoresResultMap(ctx.GetUserID()); err == nil {
|
if storeIDsMap, err := permission.GetUserStoresResultMap(ctx.GetUserID()); err == nil {
|
||||||
var storeIDs2 []int
|
var storeIDs2 []int
|
||||||
for _, v := range storeIDs {
|
if len(storeIDs) > 0 {
|
||||||
if storeIDsMap[v] != 0 {
|
for _, v := range storeIDs {
|
||||||
storeIDs2 = append(storeIDs2, v)
|
if storeIDsMap[v] != 0 {
|
||||||
|
storeIDs2 = append(storeIDs2, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for k, _ := range storeIDsMap {
|
||||||
|
storeIDs2 = append(storeIDs2, k)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
storeIDs = nil
|
storeIDs = nil
|
||||||
storeIDs = storeIDs2
|
storeIDs = storeIDs2
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return GetStoresSkusNew(ctx, storeIDs, skuIDs, isFocus, isHighPrice, priceType, keyword, isBySku, isAct, params, offset, pageSize)
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus, isHighPrice bool, priceType int, keyword string, isBySku, isAct bool, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *dao.StoreSkuNamesInfo, err error) {
|
||||||
if !isFocus && !isBySku && (len(storeIDs) > 1 || len(storeIDs) == 0) {
|
if !isFocus && !isBySku && (len(storeIDs) > 1 || len(storeIDs) == 0) {
|
||||||
return nil, fmt.Errorf("未关注按SkuName只能查询单店")
|
return nil, fmt.Errorf("未关注按SkuName只能查询单店")
|
||||||
}
|
}
|
||||||
@@ -1631,6 +1637,19 @@ func CopyStoreSkus(ctx *jxcontext.Context, fromStoreID int, toStoreIDs []int, co
|
|||||||
if copyMode != CopyStoreSkuModeFresh && copyMode != CopyStoreSkuModeUpdate && copyMode != CopyStoreSkuModeUpdatePrice {
|
if copyMode != CopyStoreSkuModeFresh && copyMode != CopyStoreSkuModeUpdate && copyMode != CopyStoreSkuModeUpdatePrice {
|
||||||
return 0, fmt.Errorf("不支持的拷贝模式:%s", copyMode)
|
return 0, fmt.Errorf("不支持的拷贝模式:%s", copyMode)
|
||||||
}
|
}
|
||||||
|
//权限
|
||||||
|
if permission.IsRoled(ctx) {
|
||||||
|
if storeIDsMap, err := permission.GetUserStoresResultMap(ctx.GetUserID()); err == nil {
|
||||||
|
if storeIDsMap[fromStoreID] == 0 {
|
||||||
|
return 0, fmt.Errorf("抱歉,您无权更改他人店铺商品 [%v]", fromStoreID)
|
||||||
|
}
|
||||||
|
for _, v := range toStoreIDs {
|
||||||
|
if storeIDsMap[v] == 0 {
|
||||||
|
return 0, fmt.Errorf("抱歉,您无权更改他人店铺商品 [%v]", v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
fromStore, err := checkStoreExisting(db, fromStoreID)
|
fromStore, err := checkStoreExisting(db, fromStoreID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -3715,24 +3734,32 @@ func UpdateStoreSkusSpecTagBin(ctx *jxcontext.Context, reader io.Reader, vendorI
|
|||||||
results[i] = results[len(results)-i-1]
|
results[i] = results[len(results)-i-1]
|
||||||
results[len(results)-i-1] = tmp
|
results[len(results)-i-1] = tmp
|
||||||
}
|
}
|
||||||
for _, v := range results {
|
//权限
|
||||||
store, err := dao.GetStoreDetail(db, v.StoreID, model.VendorIDMTWM, "")
|
if permission.IsRoled(ctx) {
|
||||||
if err != nil || store == nil {
|
if storeIDsMap, err := permission.GetUserStoresResultMap(ctx.GetUserID()); err == nil {
|
||||||
continue
|
for _, v := range results {
|
||||||
}
|
if storeIDsMap[v.StoreID] == 0 {
|
||||||
mtapi := apimanager.CurAPIManager.GetAPI(model.VendorIDMTWM, store.VendorOrgCode).(*mtwmapi.API)
|
continue
|
||||||
food, err := mtapi.RetailGet(store.VendorStoreID, utils.Int2Str(v.SkuID))
|
}
|
||||||
if err != nil || food == nil {
|
store, err := dao.GetStoreDetail(db, v.StoreID, model.VendorIDMTWM, "")
|
||||||
continue
|
if err != nil || store == nil {
|
||||||
}
|
continue
|
||||||
var foodData = make(map[string]interface{})
|
}
|
||||||
if v.IsSpec != 0 && v.IsSpec == -1 {
|
mtapi := apimanager.CurAPIManager.GetAPI(model.VendorIDMTWM, store.VendorOrgCode).(*mtwmapi.API)
|
||||||
v.IsSpec = 0
|
food, err := mtapi.RetailGet(store.VendorStoreID, utils.Int2Str(v.SkuID))
|
||||||
}
|
if err != nil || food == nil {
|
||||||
foodData["is_specialty"] = v.IsSpec
|
continue
|
||||||
foodData["price"] = food.Price
|
}
|
||||||
if globals.EnableMtwmStoreWrite {
|
var foodData = make(map[string]interface{})
|
||||||
err = mtapi.RetailInitData(ctx.GetTrackInfo(), store.VendorStoreID, utils.Int2Str(v.SkuID), foodData)
|
if v.IsSpec != 0 && v.IsSpec == -1 {
|
||||||
|
v.IsSpec = 0
|
||||||
|
}
|
||||||
|
foodData["is_specialty"] = v.IsSpec
|
||||||
|
foodData["price"] = food.Price
|
||||||
|
if globals.EnableMtwmStoreWrite {
|
||||||
|
err = mtapi.RetailInitData(ctx.GetTrackInfo(), store.VendorStoreID, utils.Int2Str(v.SkuID), foodData)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import (
|
|||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/mtpsapi"
|
"git.rosy.net.cn/baseapi/platformapi/mtpsapi"
|
||||||
|
|
||||||
|
"git.rosy.net.cn/jx-callback/business/jxstore/permission"
|
||||||
"git.rosy.net.cn/jx-callback/business/partner/putils"
|
"git.rosy.net.cn/jx-callback/business/partner/putils"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
|
|
||||||
@@ -521,6 +522,25 @@ func (v *VendorSync) SyncStoresSkus(ctx *jxcontext.Context, parentTask tasksch.I
|
|||||||
if isForce {
|
if isForce {
|
||||||
setSyncStatus = model.SyncFlagStoreSkuModifiedMask
|
setSyncStatus = model.SyncFlagStoreSkuModifiedMask
|
||||||
}
|
}
|
||||||
|
//权限
|
||||||
|
if permission.IsRoled(ctx) {
|
||||||
|
if storeIDsMap, err := permission.GetUserStoresResultMap(ctx.GetUserID()); err == nil {
|
||||||
|
var storeIDs2 []int
|
||||||
|
if len(storeIDs) > 0 {
|
||||||
|
for _, v := range storeIDs {
|
||||||
|
if storeIDsMap[v] != 0 {
|
||||||
|
storeIDs2 = append(storeIDs2, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for k, _ := range storeIDsMap {
|
||||||
|
storeIDs2 = append(storeIDs2, k)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
storeIDs = nil
|
||||||
|
storeIDs = storeIDs2
|
||||||
|
}
|
||||||
|
}
|
||||||
return v.SyncStoresSkus2(ctx, parentTask, causeFlag, db, vendorIDs, storeIDs, true, skuIDs, nil, setSyncStatus, isAsync, isContinueWhenError)
|
return v.SyncStoresSkus2(ctx, parentTask, causeFlag, db, vendorIDs, storeIDs, true, skuIDs, nil, setSyncStatus, isAsync, isContinueWhenError)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -158,7 +158,7 @@ func SyncSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, vendorIDs []int,
|
|||||||
if skuVendorInfo.SkuVendorMapCatID != "" {
|
if skuVendorInfo.SkuVendorMapCatID != "" {
|
||||||
skuVendorInfo.VendorVendorCatID = utils.Str2Int64(skuVendorInfo.SkuVendorMapCatID)
|
skuVendorInfo.VendorVendorCatID = utils.Str2Int64(skuVendorInfo.SkuVendorMapCatID)
|
||||||
}
|
}
|
||||||
skuVendorInfo.SkuName = jxutils.ComposeSkuNameSync(skuVendorInfo.Prefix, skuVendorInfo.Name, skuVendorInfo.Comment, skuVendorInfo.Unit, skuVendorInfo.SpecQuality, skuVendorInfo.SpecUnit, 0, skuVendorInfo.ExPrefix, skuVendorInfo.ExPrefixBegin, skuVendorInfo.ExPrefixEnd)
|
skuVendorInfo.SkuName = jxutils.ComposeSkuNameSync(skuVendorInfo.Prefix, skuVendorInfo.Name, skuVendorInfo.Comment, skuVendorInfo.Unit, skuVendorInfo.SpecQuality, skuVendorInfo.SpecUnit, 0, skuVendorInfo.ExPrefix, skuVendorInfo.ExPrefixBegin, skuVendorInfo.ExPrefixEnd, true)
|
||||||
skuVendorInfo.SkuNameOrigin = jxutils.ComposeSkuNameOriginal(skuVendorInfo.Prefix, skuVendorInfo.Name, skuVendorInfo.Comment, skuVendorInfo.Unit, skuVendorInfo.SpecQuality, skuVendorInfo.SpecUnit, 0)
|
skuVendorInfo.SkuNameOrigin = jxutils.ComposeSkuNameOriginal(skuVendorInfo.Prefix, skuVendorInfo.Name, skuVendorInfo.Comment, skuVendorInfo.Unit, skuVendorInfo.SpecQuality, skuVendorInfo.SpecUnit, 0)
|
||||||
if skuVendorInfo.ImgWatermark != "" {
|
if skuVendorInfo.ImgWatermark != "" {
|
||||||
downLoad, _ := uploadImgStandard(skuVendorInfo.ImgWatermark)
|
downLoad, _ := uploadImgStandard(skuVendorInfo.ImgWatermark)
|
||||||
|
|||||||
@@ -299,9 +299,9 @@ func formalizeStoreSkuList(inSkuList []*dao.StoreSkuSyncInfo) []*dao.StoreSkuSyn
|
|||||||
skuItem.MergedStatus = jxutils.MergeSkuStatus(jxutils.MergeSkuStatus(skuItem.NameStatus, skuItem.Status), skuItem.StoreSkuStatus)
|
skuItem.MergedStatus = jxutils.MergeSkuStatus(jxutils.MergeSkuStatus(skuItem.NameStatus, skuItem.Status), skuItem.StoreSkuStatus)
|
||||||
//美团的商品名字非标品中间不能有 ‘约’
|
//美团的商品名字非标品中间不能有 ‘约’
|
||||||
if skuItem.VendorID == model.VendorIDMTWM {
|
if skuItem.VendorID == model.VendorIDMTWM {
|
||||||
skuItem.SkuName = jxutils.ComposeSkuNameSync2(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 0, skuItem.ExPrefix, skuItem.ExPrefixBegin, skuItem.ExPrefixEnd)
|
skuItem.SkuName = jxutils.ComposeSkuNameSync2(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 0, skuItem.ExPrefix, skuItem.ExPrefixBegin, skuItem.ExPrefixEnd, skuItem.BrandID == skuItem.ExBrandID)
|
||||||
} else {
|
} else {
|
||||||
skuItem.SkuName = jxutils.ComposeSkuNameSync(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 0, skuItem.ExPrefix, skuItem.ExPrefixBegin, skuItem.ExPrefixEnd)
|
skuItem.SkuName = jxutils.ComposeSkuNameSync(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 0, skuItem.ExPrefix, skuItem.ExPrefixBegin, skuItem.ExPrefixEnd, skuItem.BrandID == skuItem.ExBrandID)
|
||||||
}
|
}
|
||||||
skuItem.SkuNameOrigin = jxutils.ComposeSkuNameOriginal(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 0)
|
skuItem.SkuNameOrigin = jxutils.ComposeSkuNameOriginal(skuItem.Prefix, skuItem.Name, skuItem.Comment, skuItem.Unit, skuItem.SpecQuality, skuItem.SpecUnit, 0)
|
||||||
// if skuItem.ImgWatermark != "" && model.IsSyncStatusUpdate(skuItem.SkuSyncStatus) && skuItem.VendorID != model.VendorIDJD {
|
// if skuItem.ImgWatermark != "" && model.IsSyncStatusUpdate(skuItem.SkuSyncStatus) && skuItem.VendorID != model.VendorIDJD {
|
||||||
|
|||||||
@@ -432,10 +432,12 @@ func ComposeSkuName(prefix, name, comment, unit string, spec_quality float32, sp
|
|||||||
return skuName
|
return skuName
|
||||||
}
|
}
|
||||||
|
|
||||||
func ComposeSkuNameSync(prefix, name, comment, unit string, spec_quality float32, spec_unit string, maxLen int, exPrefix string, exPrefixBegin, exPrefixEnd *time.Time) (skuName string) {
|
func ComposeSkuNameSync(prefix, name, comment, unit string, spec_quality float32, spec_unit string, maxLen int, exPrefix string, exPrefixBegin, exPrefixEnd *time.Time, isEx bool) (skuName string) {
|
||||||
if exPrefix != "" && exPrefixBegin != nil && exPrefixEnd != nil {
|
if exPrefix != "" && exPrefixBegin != nil && exPrefixEnd != nil {
|
||||||
if utils.Time2Date(time.Now().Add(6*time.Hour)).Sub(*exPrefixBegin) >= 0 && utils.Time2Date(time.Now()).Sub(*exPrefixEnd) <= 0 {
|
if utils.Time2Date(time.Now().Add(6*time.Hour)).Sub(*exPrefixBegin) >= 0 && utils.Time2Date(time.Now()).Sub(*exPrefixEnd) <= 0 {
|
||||||
skuName = exPrefix
|
if isEx {
|
||||||
|
skuName = exPrefix
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if utils.Time2Date(time.Now().Add(6*time.Hour)).Sub(*exPrefixEnd) > 0 {
|
if utils.Time2Date(time.Now().Add(6*time.Hour)).Sub(*exPrefixEnd) > 0 {
|
||||||
skuName = ""
|
skuName = ""
|
||||||
@@ -445,10 +447,12 @@ func ComposeSkuNameSync(prefix, name, comment, unit string, spec_quality float32
|
|||||||
return skuName
|
return skuName
|
||||||
}
|
}
|
||||||
|
|
||||||
func ComposeSkuNameSync2(prefix, name, comment, unit string, spec_quality float32, spec_unit string, maxLen int, exPrefix string, exPrefixBegin, exPrefixEnd *time.Time) (skuName string) {
|
func ComposeSkuNameSync2(prefix, name, comment, unit string, spec_quality float32, spec_unit string, maxLen int, exPrefix string, exPrefixBegin, exPrefixEnd *time.Time, isEx bool) (skuName string) {
|
||||||
if exPrefix != "" && exPrefixBegin != nil && exPrefixEnd != nil {
|
if exPrefix != "" && exPrefixBegin != nil && exPrefixEnd != nil {
|
||||||
if utils.Time2Date(time.Now().Add(6*time.Hour)).Sub(*exPrefixBegin) >= 0 && utils.Time2Date(time.Now()).Sub(*exPrefixEnd) <= 0 {
|
if utils.Time2Date(time.Now().Add(6*time.Hour)).Sub(*exPrefixBegin) >= 0 && utils.Time2Date(time.Now()).Sub(*exPrefixEnd) <= 0 {
|
||||||
skuName = exPrefix
|
if isEx {
|
||||||
|
skuName = exPrefix
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if utils.Time2Date(time.Now().Add(6*time.Hour)).Sub(*exPrefixEnd) > 0 {
|
if utils.Time2Date(time.Now().Add(6*time.Hour)).Sub(*exPrefixEnd) > 0 {
|
||||||
skuName = ""
|
skuName = ""
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import (
|
|||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin"
|
"git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin"
|
||||||
"git.rosy.net.cn/jx-callback/business/authz/autils"
|
"git.rosy.net.cn/jx-callback/business/authz/autils"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/jxstore/permission"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||||
"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/jxutils/tasksch"
|
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
||||||
@@ -764,6 +765,25 @@ func NotifyStoreAlertMessage(storeID int, storeName, title, content string) (err
|
|||||||
|
|
||||||
func SendStoreMessage(ctx *jxcontext.Context, title, content string, storeIDs []int, isAsync, isContinueWhenError bool) (hint string, err error) {
|
func SendStoreMessage(ctx *jxcontext.Context, title, content string, storeIDs []int, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
|
//权限
|
||||||
|
if permission.IsRoled(ctx) {
|
||||||
|
if storeIDsMap, err := permission.GetUserStoresResultMap(ctx.GetUserID()); err == nil {
|
||||||
|
var storeIDs2 []int
|
||||||
|
if len(storeIDs) > 0 {
|
||||||
|
for _, v := range storeIDs {
|
||||||
|
if storeIDsMap[v] != 0 {
|
||||||
|
storeIDs2 = append(storeIDs2, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for k, _ := range storeIDsMap {
|
||||||
|
storeIDs2 = append(storeIDs2, k)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
storeIDs = nil
|
||||||
|
storeIDs = storeIDs2
|
||||||
|
}
|
||||||
|
}
|
||||||
dao.Begin(db)
|
dao.Begin(db)
|
||||||
defer func() {
|
defer func() {
|
||||||
if r := recover(); r != nil {
|
if r := recover(); r != nil {
|
||||||
|
|||||||
@@ -61,6 +61,10 @@ type StoreDetail struct {
|
|||||||
|
|
||||||
MtwmToken string `json:"mtwmToken"`
|
MtwmToken string `json:"mtwmToken"`
|
||||||
EbaiSupplierID string `json:"ebaiSupplierID"`
|
EbaiSupplierID string `json:"ebaiSupplierID"`
|
||||||
|
|
||||||
|
BrandName string `json:"brandName"` //品牌信息
|
||||||
|
BrandLogo string `json:"brandLogo"`
|
||||||
|
BrandIsOpen int `json:"brandIsOpen"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// 带快递门店信息的
|
// 带快递门店信息的
|
||||||
@@ -117,7 +121,10 @@ func getStoreDetail(db *DaoDB, storeID, vendorID int, vendorStoreID, vendorOrgCo
|
|||||||
IF(mm.name <> '', mm.name, mm.user_id2) market_man_name,
|
IF(mm.name <> '', mm.name, mm.user_id2) market_man_name,
|
||||||
IF(om.name <> '', om.name, om.user_id2) operator_name,
|
IF(om.name <> '', om.name, om.user_id2) operator_name,
|
||||||
IF(om2.name <> '', om2.name, om2.user_id2) operator_name2,
|
IF(om2.name <> '', om2.name, om2.user_id2) operator_name2,
|
||||||
IF(om3.name <> '', om3.name, om3.user_id2) operator_name3
|
IF(om3.name <> '', om3.name, om3.user_id2) operator_name3,
|
||||||
|
b.name brand_name,
|
||||||
|
b.logo brand_logo,
|
||||||
|
b.is_open brand_is_open
|
||||||
FROM store t1
|
FROM store t1
|
||||||
LEFT JOIN store_map t2 ON t1.id = t2.store_id AND t2.vendor_id = ? AND t2.deleted_at = ?
|
LEFT JOIN store_map t2 ON t1.id = t2.store_id AND t2.vendor_id = ? AND t2.deleted_at = ?
|
||||||
LEFT JOIN place city ON city.code = t1.city_code
|
LEFT JOIN place city ON city.code = t1.city_code
|
||||||
@@ -129,6 +136,7 @@ func getStoreDetail(db *DaoDB, storeID, vendorID int, vendorStoreID, vendorOrgCo
|
|||||||
LEFT JOIN user om ON om.mobile <> '' AND om.mobile = t1.operator_phone
|
LEFT JOIN user om ON om.mobile <> '' AND om.mobile = t1.operator_phone
|
||||||
LEFT JOIN user om2 ON om2.mobile <> '' AND om2.mobile = t1.operator_phone2
|
LEFT JOIN user om2 ON om2.mobile <> '' AND om2.mobile = t1.operator_phone2
|
||||||
LEFT JOIN user om3 ON om3.mobile <> '' AND om3.mobile = t1.operator_phone3
|
LEFT JOIN user om3 ON om3.mobile <> '' AND om3.mobile = t1.operator_phone3
|
||||||
|
LEFT JOIN brand b ON b.id = t1.brand_id AND b.deleted_at = ?
|
||||||
WHERE t1.deleted_at = ?
|
WHERE t1.deleted_at = ?
|
||||||
`
|
`
|
||||||
sqlParams := []interface{}{
|
sqlParams := []interface{}{
|
||||||
@@ -139,6 +147,7 @@ func getStoreDetail(db *DaoDB, storeID, vendorID int, vendorStoreID, vendorOrgCo
|
|||||||
model.ConfigTypeFreightPack,
|
model.ConfigTypeFreightPack,
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
|
utils.DefaultTimeValue,
|
||||||
}
|
}
|
||||||
// if vendorID != model.VendorIDJX {
|
// if vendorID != model.VendorIDJX {
|
||||||
// sql += " AND t2.id IS NOT NULL"
|
// sql += " AND t2.id IS NOT NULL"
|
||||||
|
|||||||
@@ -81,6 +81,8 @@ type StoreSkuSyncInfo struct {
|
|||||||
model.Sku
|
model.Sku
|
||||||
ExdSkuID string `orm:"column(exd_sku_id)"`
|
ExdSkuID string `orm:"column(exd_sku_id)"`
|
||||||
ExdCategoryThirdID int `orm:"column(exd_category_third_id)"`
|
ExdCategoryThirdID int `orm:"column(exd_category_third_id)"`
|
||||||
|
BrandID int `orm:"column(brand_id)"`
|
||||||
|
ExBrandID int `orm:"column(ex_brand_id)"`
|
||||||
StoreName string
|
StoreName string
|
||||||
|
|
||||||
// sku_name
|
// sku_name
|
||||||
@@ -459,7 +461,8 @@ func GetStoreSkus2(db *DaoDB, vendorID, storeID int, skuIDs []int, mustDirty boo
|
|||||||
t4.%s_category_id vendor_vendor_cat_id,
|
t4.%s_category_id vendor_vendor_cat_id,
|
||||||
t4.name category_name,
|
t4.name category_name,
|
||||||
ts.name store_name,
|
ts.name store_name,
|
||||||
tsu.ex_prefix, tsu.begin_at ex_prefix_begin, tsu.end_at ex_prefix_end, tsu.img_watermark, tsu.img_watermark_mix img_mix,
|
ts.brand_id,
|
||||||
|
tsu.ex_prefix, tsu.begin_at ex_prefix_begin, tsu.end_at ex_prefix_end, tsu.img_watermark, tsu.img_watermark_mix img_mix, tsu.brand_id ex_brand_id,
|
||||||
tsu1.vendor_category_id sku_vendor_map_cat_id`
|
tsu1.vendor_category_id sku_vendor_map_cat_id`
|
||||||
fmtParams := []interface{}{
|
fmtParams := []interface{}{
|
||||||
skuVendorIDField, fieldPrefix, fieldPrefix, fieldPrefix,
|
skuVendorIDField, fieldPrefix, fieldPrefix, fieldPrefix,
|
||||||
|
|||||||
@@ -301,11 +301,12 @@ type SkuExinfoMap struct {
|
|||||||
|
|
||||||
NameID int `orm:"column(name_id)" json:"nameID"`
|
NameID int `orm:"column(name_id)" json:"nameID"`
|
||||||
VendorID int `orm:"column(vendor_id)" json:"vendorID"`
|
VendorID int `orm:"column(vendor_id)" json:"vendorID"`
|
||||||
BeginAt time.Time `orm:"type(datetime);index" json:"beginAt"` //设置起始时间
|
BeginAt time.Time `orm:"type(datetime);index" json:"beginAt"` //设置起始时间
|
||||||
EndAt time.Time `orm:"type(datetime);index" json:"endAt"` //设置结束时间
|
EndAt time.Time `orm:"type(datetime);index" json:"endAt"` //设置结束时间
|
||||||
ExPrefix string `orm:"size(255)" json:"exPrefix"` //额外前缀
|
ExPrefix string `orm:"size(255)" json:"exPrefix"` //额外前缀
|
||||||
ImgWatermark string `orm:"size(512)" json:"imgWatermark"` //图片水印
|
ImgWatermark string `orm:"size(512)" json:"imgWatermark"` //图片水印
|
||||||
ImgWatermarkMix string `orm:"size(512)" json:"imgWatermark"` //合成水印图
|
ImgWatermarkMix string `orm:"size(512)" json:"imgWatermark"` //合成水印图
|
||||||
|
BrandID int `orm:"column(brand_id);default(0)" json:"brandID"` //品牌ID
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*SkuExinfoMap) TableIndex() [][]string {
|
func (*SkuExinfoMap) TableIndex() [][]string {
|
||||||
|
|||||||
@@ -397,7 +397,7 @@ func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrg
|
|||||||
|
|
||||||
func genSkuParamsFromStoreSkuInfo2(storeSku *dao.StoreSkuSyncInfo, isCreate, isExd bool) (params map[string]interface{}) {
|
func genSkuParamsFromStoreSkuInfo2(storeSku *dao.StoreSkuSyncInfo, isCreate, isExd bool) (params map[string]interface{}) {
|
||||||
var img string
|
var img string
|
||||||
if storeSku.ImgMix != "" {
|
if storeSku.ImgMix != "" && storeSku.BrandID == storeSku.ExBrandID {
|
||||||
img = storeSku.ImgMix
|
img = storeSku.ImgMix
|
||||||
} else {
|
} else {
|
||||||
img = storeSku.Img
|
img = storeSku.Img
|
||||||
|
|||||||
@@ -289,7 +289,7 @@ func (p *PurchaseHandler) createOrUpdateStoreSkus(ctx *jxcontext.Context, storeI
|
|||||||
if img2 == "" {
|
if img2 == "" {
|
||||||
img2 = storeSku.Img
|
img2 = storeSku.Img
|
||||||
}
|
}
|
||||||
if storeSku.ImgMix != "" {
|
if storeSku.ImgMix != "" && storeSku.BrandID == storeSku.ExBrandID {
|
||||||
foodData["picture"] = strings.Join(jxutils.BatchString2Slice(storeSku.ImgMix, img2, storeSku.ImgMix, storeSku.ImgMix, storeSku.ImgMix), ",")
|
foodData["picture"] = strings.Join(jxutils.BatchString2Slice(storeSku.ImgMix, img2, storeSku.ImgMix, storeSku.ImgMix, storeSku.ImgMix), ",")
|
||||||
} else {
|
} else {
|
||||||
foodData["picture"] = strings.Join(jxutils.BatchString2Slice(storeSku.Img, img2, storeSku.Img, storeSku.Img, storeSku.Img), ",")
|
foodData["picture"] = strings.Join(jxutils.BatchString2Slice(storeSku.Img, img2, storeSku.Img, storeSku.Img, storeSku.Img), ",")
|
||||||
|
|||||||
Reference in New Issue
Block a user