diff --git a/business/jxcallback/scheduler/defsch/defsch.go b/business/jxcallback/scheduler/defsch/defsch.go index 16ff34b09..9a479a555 100644 --- a/business/jxcallback/scheduler/defsch/defsch.go +++ b/business/jxcallback/scheduler/defsch/defsch.go @@ -356,7 +356,7 @@ func (s *DefScheduler) OnOrderStatusChanged(order *model.GoodsOrder, status *mod } if !isPending { if status.Status == model.OrderStatusAgreeFailedGetGoods || status.Status == model.OrderStatusDeliverFailed { - s.updateOrderByBill(order, nil, true) + s.updateOrderByBill(order, nil, status.Status != model.OrderStatusAgreeFailedGetGoods) s.removeWaybillFromMap(savedOrderInfo, order.VendorID) } } diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index cc2eadf7f..5088a5e8c 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -38,6 +38,10 @@ const ( type StoreExt struct { model.Store + + MarketManName string `orm:"size(8)" json:"marketManName"` // 市场负责人姓名 + OperatorName string `orm:"size(8)" json:"operatorName"` // 运营人姓名 + FloatLng float64 `json:"lng"` FloatLat float64 `json:"lat"` @@ -151,7 +155,7 @@ func GetStores(ctx *jxcontext.Context, keyword string, params map[string]interfa t1.licence2_code, t1.licence2_valid, t1.licence2_expire, - t1.market_man_name, + IF(mm.name <> '', mm.name, mm.user_id2) market_man_name, t1.market_man_phone, t1.jx_brand_fee_factor, t1.market_add_fee_factor, @@ -162,7 +166,7 @@ func GetStores(ctx *jxcontext.Context, keyword string, params map[string]interfa bank.value payee_bank_name, t1.pay_percentage, - t1.operator_name, + IF(om.name <> '', om.name, om.user_id2) operator_name, t1.operator_phone, t1.printer_disabled, @@ -188,12 +192,16 @@ func GetStores(ctx *jxcontext.Context, keyword string, params map[string]interfa LEFT JOIN place district ON t1.district_code = district.code AND district.level = 3 LEFT JOIN store_map m1 ON t1.id = m1.store_id AND m1.deleted_at = ? LEFT JOIN store_courier_map m2 ON t1.id = m2.store_id AND m2.deleted_at = ? + LEFT JOIN user mm ON mm.mobile <> '' AND mm.mobile = t1.market_man_phone AND mm.deleted_at = ? + LEFT JOIN user om ON om.mobile <> '' AND om.mobile = t1.operator_phone AND om.deleted_at = ? ` sqlParams := []interface{}{ utils.DefaultTimeValue, model.ConfigTypeBank, utils.DefaultTimeValue, utils.DefaultTimeValue, + utils.DefaultTimeValue, + utils.DefaultTimeValue, } sqlWhere := ` WHERE t1.deleted_at = ? @@ -1513,6 +1521,46 @@ func isVendorStoresStatusNotOk(storeMapList []*model.VendorStoreSnapshot) bool { return len(statusMap) > 1 && maxStatus == model.StoreStatusOpened } +func getAllUsers4Store(ctx *jxcontext.Context, db *dao.DaoDB, store *model.Store) (userList []*model.User) { + storeID := store.ID + var userIDs []string + userMap := make(map[string]int) + + // 门店老板 + if roleUserIDList, err := GetRoleUserList(ctx, autils.NewStoreBossRole(storeID)); err == nil && len(roleUserIDList) > 0 { + userIDs = append(userIDs, roleUserIDList...) + } + + // 全局相关角色(市场或运营) + for _, v := range []string{store.MarketManRole, store.OperatorRole, store.OperatorRole2} { + if v != "" { + if roleUserIDList, err := GetRoleUserList(ctx, autils.NewRole(v, 0)); err == nil && len(roleUserIDList) > 0 { + userIDs = append(userIDs, roleUserIDList...) + } + } + } + + if len(userIDs) > 0 { + userList, _, _ = dao.GetUsers(db, 0, "", userIDs, "", "", 0, -1) + for _, v := range userList { + userMap[v.GetID()] = 1 + } + } + + // 直接电话信息相关人员 + for _, mobile := range []string{store.Tel1, store.Tel2, store.MarketManPhone, store.OperatorPhone} { + if mobile != "" { + if user, err2 := dao.GetUserByID(db, "mobile", mobile); err2 == nil { + if userMap[user.GetID()] == 0 { + userMap[user.GetID()] = 1 + userList = append(userList, user) + } + } + } + } + return userList +} + func SendAlarmVendorSnapshot(ctx *jxcontext.Context, parentTask tasksch.ITask, prevSnapshotList, curSnapshotList []*model.VendorStoreSnapshot) (err error) { if len(prevSnapshotList) == 0 { return nil @@ -1578,31 +1626,16 @@ func SendAlarmVendorSnapshot(ctx *jxcontext.Context, parentTask tasksch.ITask, p storeDetail, _ := dao.GetStoreDetail(db, storeID, list[0].VendorID) if storeDetail != nil { storeDetailMap[storeID] = storeDetail - - var userList []*model.User - if roleUserIDList, err := GetRoleUserList(ctx, autils.NewStoreBossRole(storeID)); err == nil && len(roleUserIDList) > 0 { - userList, _, _ = dao.GetUsers(db, 0, "", roleUserIDList, "", "", 0, -1) - } - for _, mobile := range []string{storeDetail.Tel1, storeDetail.Tel2, storeDetail.MarketManPhone, storeDetail.OperatorPhone} { - if mobile != "" { - if user, err2 := dao.GetUserByID(db, "mobile", mobile); err2 == nil { - userList = append(userList, user) - } - } - } - processedUser := make(map[string]int) + userList := getAllUsers4Store(ctx, db, &storeDetail.Store) for _, user := range userList { userID := user.GetID() - if processedUser[userID] == 0 { - processedUser[userID] = 1 - if userMap[userID] == nil { - userMap[userID] = make(map[int]int) - userMap2[userID] = user - } - userMap[userID][storeID] = 1 - if txtAlarmSnapshotMap[storeID] != nil { - userMapTxt[userID] = append(userMapTxt[userID], txtAlarmSnapshotMap[storeID]...) - } + if userMap[userID] == nil { + userMap[userID] = make(map[int]int) + userMap2[userID] = user + } + userMap[userID][storeID] = 1 + if txtAlarmSnapshotMap[storeID] != nil { + userMapTxt[userID] = append(userMapTxt[userID], txtAlarmSnapshotMap[storeID]...) } } } diff --git a/business/model/dao/place.go b/business/model/dao/place.go index a912cc802..522acad41 100644 --- a/business/model/dao/place.go +++ b/business/model/dao/place.go @@ -31,9 +31,9 @@ func GetPlacesByCond(db *DaoDB, enableCond int) (placeList []*model.Place, err e FROM place WHERE level = 2 ` - if enableCond == 1 { + if enableCond == EnableCondEnalbed { sql += " AND enabled = 1" - } else if enableCond == 2 { + } else if enableCond == EnableCondDisabled { sql += " AND enabled = 0" } sql += " ORDER BY code" diff --git a/business/model/store.go b/business/model/store.go index da19eabd8..5e4b5af37 100644 --- a/business/model/store.go +++ b/business/model/store.go @@ -285,9 +285,9 @@ type Store struct { Licence2Valid string `orm:"size(32)" json:"licence2Valid"` // 有效期开始 Licence2Expire string `orm:"size(32)" json:"licence2Expire"` // 有效期结束 - MarketManName string `orm:"size(8)" json:"marketManName"` // 市场负责人姓名 + // MarketManName string `orm:"size(8)" json:"marketManName"` // 市场负责人姓名 MarketManPhone string `orm:"size(16)" json:"marketManPhone"` // 市场负责人电话 - MarketManRole string `orm:"size(32)" json:"marketManRole"` // 市场负责人组(角色) + MarketManRole string `orm:"size(32)" json:"marketManRole"` // 市场负责人组(角色,单人) JxBrandFeeFactor int `json:"jxBrandFeeFactor"` // 京西品牌费因子 MarketAddFeeFactor int `json:"marketAddFeeFactor"` // 市场附加费因子 @@ -298,7 +298,7 @@ type Store struct { PayeeBankCode string `orm:"size(8)" json:"payeeBankCode"` // 开户行代码 PayPercentage int `json:"payPercentage"` - OperatorName string `orm:"size(8)" json:"operatorName"` // 运营人姓名 + // OperatorName string `orm:"size(8)" json:"operatorName"` // 运营人姓名 OperatorPhone string `orm:"size(16)" json:"operatorPhone"` // 运营人电话 OperatorRole string `orm:"size(32)" json:"operatorRole"` // 京东运营人组(角色) OperatorRole2 string `orm:"size(32)" json:"operatorRole2"` // 非京东运营人组(角色)