未营业门店,授权,改营业范围
This commit is contained in:
@@ -137,6 +137,9 @@ type VendorStoreExcel struct {
|
||||
Tel2 string `json:"电话2"`
|
||||
CityName string `json:"城市名"`
|
||||
Address string `json:"地址"`
|
||||
MarketManName string `json:"市场负责人"`
|
||||
OperatorName string `json:"运营负责人"`
|
||||
OperatorName2 string `json:"运营负责人2"`
|
||||
}
|
||||
|
||||
var (
|
||||
@@ -178,6 +181,24 @@ var (
|
||||
"电话2",
|
||||
"城市名",
|
||||
"地址",
|
||||
"市场负责人",
|
||||
"运营负责人",
|
||||
"运营负责人2",
|
||||
}
|
||||
roleMap = map[string]string{
|
||||
"marketManPhone": "市场负责人电话",
|
||||
"marketManRole": "市场负责人组(角色,单人)",
|
||||
"jxBrandFeeFactor": "京西品牌费因子",
|
||||
"marketAddFeeFactor": "市场附加费因子",
|
||||
"payeeName": "收款人姓名",
|
||||
"payeeAccountNo": "收款账号",
|
||||
"payeeBankBranchName": "开户支行",
|
||||
"payeeBankCode": "开户行代码",
|
||||
"payPercentage": "支付比例",
|
||||
}
|
||||
roleMoblieMap = map[string]string{
|
||||
"17380734342": "17380734342", //漆云的手机 ,用于判断updatestore的权限
|
||||
"18328080405": "18328080405", //肖娜娜的手机
|
||||
}
|
||||
)
|
||||
|
||||
@@ -741,6 +762,10 @@ func UpdateStore(ctx *jxcontext.Context, storeID int, payload map[string]interfa
|
||||
if valid["status"] != nil {
|
||||
syncStatus |= model.SyncFlagStoreStatus
|
||||
status = int(utils.Interface2Int64WithDefault(valid["status"], 0))
|
||||
if status == model.StoreStatusDisabled {
|
||||
valid["deliveryRangeType"] = model.DeliveryRangeTypeRadius
|
||||
valid["deliveryRange"] = 1
|
||||
}
|
||||
} else {
|
||||
status = store.Status
|
||||
}
|
||||
@@ -789,6 +814,16 @@ func UpdateStore(ctx *jxcontext.Context, storeID int, payload map[string]interfa
|
||||
}
|
||||
}
|
||||
|
||||
for k, _ := range valid {
|
||||
if roleMap[k] != "" {
|
||||
if authInfo, err := ctx.GetV2AuthInfo(); err == nil {
|
||||
if roleMoblieMap[authInfo.Mobile] == "" {
|
||||
return 0, errors.New(fmt.Sprintf("当前用户 [%v] 无权限修改 [%] 字段!", authInfo.Name, roleMap[k]))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// districtCode := 0
|
||||
// if valid["districtCode"] != nil {
|
||||
// districtCode = int(utils.MustInterface2Int64(valid["districtCode"]))
|
||||
@@ -833,6 +868,7 @@ func UpdateStore(ctx *jxcontext.Context, storeID int, payload map[string]interfa
|
||||
dao.Commit(db)
|
||||
}
|
||||
notifyStoreOperatorChanged(store, valid["operatorPhone"])
|
||||
notifyStoreMarketChanged(store, valid["marketManPhone"])
|
||||
if err == nil {
|
||||
if valid["openTime1"] != 0 || valid["closeTime1"] != 0 || valid["openTime2"] != 0 || valid["closeTime2"] != 0 {
|
||||
err = CurVendorSync.ChangeStoreSkuSaleStatus(ctx, storeID, true, true)
|
||||
@@ -860,6 +896,21 @@ func notifyStoreOperatorChanged(store *model.Store, newOperator2 interface{}) {
|
||||
}
|
||||
}
|
||||
|
||||
func notifyStoreMarketChanged(store *model.Store, newMarketManPhone2 interface{}) {
|
||||
if store.MarketManPhone != "" && newMarketManPhone2 != nil {
|
||||
db := dao.GetDB()
|
||||
if user, err := dao.GetUserByID(db, "mobile", store.MarketManPhone); err == nil {
|
||||
curUserName := ""
|
||||
if newOperator := utils.Interface2String(newMarketManPhone2); newOperator != "" {
|
||||
if curUser, err := dao.GetUserByID(db, "mobile", newOperator); err == nil {
|
||||
curUserName = curUser.GetName()
|
||||
}
|
||||
}
|
||||
ddmsg.SendUserMessage(dingdingapi.MsgTyeText, user.GetID(), "门店市场变更", fmt.Sprintf("门店:%d-%s,原市场:%s,变更为:%s", store.ID, store.Name, user.GetName(), curUserName))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func SetStoreStatus(ctx *jxcontext.Context, storeID, status int) (err error) {
|
||||
payload := map[string]interface{}{
|
||||
"status": status,
|
||||
@@ -2325,6 +2376,8 @@ func GetVendorStoreInfo(ctx *jxcontext.Context, vendorIDList []int, isAsync, isC
|
||||
return retVal, err
|
||||
}
|
||||
}
|
||||
db := dao.GetDB()
|
||||
storeDetail2, err := dao.GetStoreDetailByVendorStoreID(db, storeDetail.VendorStoreID, vendorID)
|
||||
if storeDetail.Status != model.StoreStatusOpened {
|
||||
var storeExcel = VendorStoreExcel{
|
||||
StoreID: storeDetail.ID,
|
||||
@@ -2334,6 +2387,9 @@ func GetVendorStoreInfo(ctx *jxcontext.Context, vendorIDList []int, isAsync, isC
|
||||
Address: storeDetail.Address,
|
||||
Status: StoreStatus2Chinese(storeDetail.Status),
|
||||
CityName: storeDetail.CityName,
|
||||
MarketManName: storeDetail2.MarketManName,
|
||||
OperatorName: storeDetail2.OperatorName,
|
||||
OperatorName2: storeDetail2.OperatorName2,
|
||||
}
|
||||
retVal = []VendorStoreExcel{storeExcel}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"time"
|
||||
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
)
|
||||
|
||||
@@ -33,6 +34,12 @@ type StatisticsReportForOrdersList struct {
|
||||
OperatorName2 string `json:"operatorName2"`
|
||||
}
|
||||
|
||||
type PriceReferSnapshotExt struct {
|
||||
model.PriceReferSnapshot
|
||||
CityName string `json:"cityName"`
|
||||
SkuName string `json:"skuName"`
|
||||
}
|
||||
|
||||
//查询统计订单信息
|
||||
func GetStatisticsReportForOrders(db *DaoDB, storeIDs []int, fromDate time.Time, toDate time.Time) (statisticsReportForOrdersList []*StatisticsReportForOrdersList, err error) {
|
||||
sql := `
|
||||
@@ -234,26 +241,27 @@ func GetStatisticsReportForStoreSkusPrice(db *DaoDB, cityCodes, skuIDs []int) (p
|
||||
return nil, err
|
||||
}
|
||||
|
||||
func GetPriceReferSnapshot(db *DaoDB, cityCodes, skuIDs []int, snapDate time.Time, offset, pageSize int) (priceReferSnapshot []*model.PriceReferSnapshot, totalCount int, err error) {
|
||||
func GetPriceReferSnapshot(db *DaoDB, cityCodes, skuIDs []int, snapDate time.Time, offset, pageSize int) (priceReferSnapshot []*PriceReferSnapshotExt, totalCount int, err error) {
|
||||
sql := `
|
||||
SELECT SQL_CALC_FOUND_ROWS *
|
||||
FROM price_refer_snapshot
|
||||
SELECT SQL_CALC_FOUND_ROWS a.*,b.name city_name
|
||||
FROM price_refer_snapshot a
|
||||
JOIN place b ON a.city_code = b.code
|
||||
WHERE 1=1
|
||||
AND deleted_at = ?
|
||||
AND a.deleted_at = ?
|
||||
`
|
||||
sqlParams := []interface{}{
|
||||
utils.DefaultTimeValue,
|
||||
}
|
||||
if len(skuIDs) > 0 {
|
||||
sql += " AND sku_id IN (" + GenQuestionMarks(len(skuIDs)) + ")"
|
||||
sql += " AND a.sku_id IN (" + GenQuestionMarks(len(skuIDs)) + ")"
|
||||
sqlParams = append(sqlParams, skuIDs)
|
||||
}
|
||||
if len(cityCodes) > 0 {
|
||||
sql += " AND city_code IN (" + GenQuestionMarks(len(cityCodes)) + ")"
|
||||
sql += " AND a.city_code IN (" + GenQuestionMarks(len(cityCodes)) + ")"
|
||||
sqlParams = append(sqlParams, cityCodes)
|
||||
}
|
||||
if !utils.IsTimeZero(snapDate) {
|
||||
sql += " AND snapshot_at = ?"
|
||||
sql += " AND a.snapshot_at = ?"
|
||||
sqlParams = append(sqlParams, snapDate)
|
||||
}
|
||||
sql += " LIMIT ? OFFSET ?"
|
||||
@@ -263,5 +271,14 @@ func GetPriceReferSnapshot(db *DaoDB, cityCodes, skuIDs []int, snapDate time.Tim
|
||||
if err = GetRows(db, &priceReferSnapshot, sql, sqlParams...); err == nil {
|
||||
totalCount = GetLastTotalRowCount(db)
|
||||
}
|
||||
for _, v := range priceReferSnapshot {
|
||||
skuList, err2 := GetSkus(db, []int{v.SkuID}, nil, nil, nil)
|
||||
err = err2
|
||||
if len(skuList) > 0 {
|
||||
skuAndName := skuList[0]
|
||||
jxSkuDetailName := jxutils.ComposeSkuName(skuAndName.Prefix, skuAndName.Name, skuAndName.Comment, skuAndName.Unit, skuAndName.SpecQuality, skuAndName.SpecUnit, 0)
|
||||
v.SkuName = jxSkuDetailName
|
||||
}
|
||||
}
|
||||
return priceReferSnapshot, totalCount, err
|
||||
}
|
||||
|
||||
@@ -34,7 +34,10 @@ type StoreDetail struct {
|
||||
DistrictName string `json:"districtName"`
|
||||
CityName string `json:"cityName"`
|
||||
|
||||
IsAutoOrder int8 `json:"isAutoOrder"` // 平台是否自动接单,-1:否,0:未知,1:是
|
||||
IsAutoOrder int8 `json:"isAutoOrder"` // 平台是否自动接单,-1:否,0:未知,1:是
|
||||
MarketManName string `json:"marketManName"` //市场负责人
|
||||
OperatorName string `json:"operatorName"` //运营负责人
|
||||
OperatorName2 string `json:"operatorName2"`
|
||||
}
|
||||
|
||||
// 带快递门店信息的
|
||||
@@ -80,13 +83,19 @@ func getStoreDetail(db *DaoDB, storeID, vendorID int, vendorStoreID string) (sto
|
||||
t3.value price_percentage_pack_str,
|
||||
t4.value freight_deduction_pack_str,
|
||||
district.name district_name,
|
||||
city.name city_name
|
||||
city.name city_name,
|
||||
IF(mm.name <> '', mm.name, mm.user_id2) market_man_name,
|
||||
IF(om.name <> '', om.name, om.user_id2) operator_name,
|
||||
IF(om2.name <> '', om2.name, om2.user_id2) operator_name2
|
||||
FROM store t1
|
||||
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 district ON district.code = t1.district_code
|
||||
LEFT JOIN new_config t3 ON t3.key = t2.price_percentage_pack AND t3.type = ? AND t3.deleted_at = ?
|
||||
LEFT JOIN new_config t4 ON t4.key = t2.freight_deduction_pack AND t4.type = ? AND t4.deleted_at = ?
|
||||
LEFT JOIN user mm ON mm.mobile <> '' AND mm.mobile = t1.market_man_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
|
||||
WHERE t1.deleted_at = ?
|
||||
`
|
||||
sqlParams := []interface{}{
|
||||
|
||||
@@ -138,6 +138,7 @@ func (p *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorOrgCode, vendo
|
||||
}
|
||||
}
|
||||
}
|
||||
retVal.VendorStoreID = vendorStoreID
|
||||
retVal.ID = int(utils.Str2Int64WithDefault(utils.Interface2String(result["shop_id"]), 0))
|
||||
retVal.DeliveryRangeType = model.DeliveryRangeTypePolygon
|
||||
retVal.DeliveryRange = EbaiDeliveryRegion2Jx(result["delivery_region"])
|
||||
|
||||
@@ -93,7 +93,7 @@ func (p *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorOrgCode, vendo
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
retVal.VendorStoreID = vendorStoreID
|
||||
retVal.ID = int(utils.Str2Int64WithDefault(result.OutSystemID, 0))
|
||||
deliveryRange, err2 := a.GetDeliveryRangeByStationNo2(vendorStoreID)
|
||||
if err = err2; err == nil {
|
||||
|
||||
@@ -73,6 +73,7 @@ func (p *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorOrgCode, vendo
|
||||
retVal.CityCode = result.CityID
|
||||
|
||||
poiCode := result.AppPoiCode
|
||||
retVal.VendorStoreID = vendorStoreID
|
||||
retVal.ID = int(utils.Str2Int64WithDefault(poiCode, 0))
|
||||
retVal.DeliveryRangeType = model.DeliveryRangeTypePolygon
|
||||
var deliveryRangeInfo []map[string]interface{}
|
||||
|
||||
Reference in New Issue
Block a user