未营业门店,授权,改营业范围
This commit is contained in:
@@ -137,6 +137,9 @@ type VendorStoreExcel struct {
|
|||||||
Tel2 string `json:"电话2"`
|
Tel2 string `json:"电话2"`
|
||||||
CityName string `json:"城市名"`
|
CityName string `json:"城市名"`
|
||||||
Address string `json:"地址"`
|
Address string `json:"地址"`
|
||||||
|
MarketManName string `json:"市场负责人"`
|
||||||
|
OperatorName string `json:"运营负责人"`
|
||||||
|
OperatorName2 string `json:"运营负责人2"`
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -178,6 +181,24 @@ var (
|
|||||||
"电话2",
|
"电话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 {
|
if valid["status"] != nil {
|
||||||
syncStatus |= model.SyncFlagStoreStatus
|
syncStatus |= model.SyncFlagStoreStatus
|
||||||
status = int(utils.Interface2Int64WithDefault(valid["status"], 0))
|
status = int(utils.Interface2Int64WithDefault(valid["status"], 0))
|
||||||
|
if status == model.StoreStatusDisabled {
|
||||||
|
valid["deliveryRangeType"] = model.DeliveryRangeTypeRadius
|
||||||
|
valid["deliveryRange"] = 1
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
status = store.Status
|
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
|
// districtCode := 0
|
||||||
// if valid["districtCode"] != nil {
|
// if valid["districtCode"] != nil {
|
||||||
// districtCode = int(utils.MustInterface2Int64(valid["districtCode"]))
|
// districtCode = int(utils.MustInterface2Int64(valid["districtCode"]))
|
||||||
@@ -833,6 +868,7 @@ func UpdateStore(ctx *jxcontext.Context, storeID int, payload map[string]interfa
|
|||||||
dao.Commit(db)
|
dao.Commit(db)
|
||||||
}
|
}
|
||||||
notifyStoreOperatorChanged(store, valid["operatorPhone"])
|
notifyStoreOperatorChanged(store, valid["operatorPhone"])
|
||||||
|
notifyStoreMarketChanged(store, valid["marketManPhone"])
|
||||||
if err == nil {
|
if err == nil {
|
||||||
if valid["openTime1"] != 0 || valid["closeTime1"] != 0 || valid["openTime2"] != 0 || valid["closeTime2"] != 0 {
|
if valid["openTime1"] != 0 || valid["closeTime1"] != 0 || valid["openTime2"] != 0 || valid["closeTime2"] != 0 {
|
||||||
err = CurVendorSync.ChangeStoreSkuSaleStatus(ctx, storeID, true, true)
|
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) {
|
func SetStoreStatus(ctx *jxcontext.Context, storeID, status int) (err error) {
|
||||||
payload := map[string]interface{}{
|
payload := map[string]interface{}{
|
||||||
"status": status,
|
"status": status,
|
||||||
@@ -2325,6 +2376,8 @@ func GetVendorStoreInfo(ctx *jxcontext.Context, vendorIDList []int, isAsync, isC
|
|||||||
return retVal, err
|
return retVal, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
db := dao.GetDB()
|
||||||
|
storeDetail2, err := dao.GetStoreDetailByVendorStoreID(db, storeDetail.VendorStoreID, vendorID)
|
||||||
if storeDetail.Status != model.StoreStatusOpened {
|
if storeDetail.Status != model.StoreStatusOpened {
|
||||||
var storeExcel = VendorStoreExcel{
|
var storeExcel = VendorStoreExcel{
|
||||||
StoreID: storeDetail.ID,
|
StoreID: storeDetail.ID,
|
||||||
@@ -2334,6 +2387,9 @@ func GetVendorStoreInfo(ctx *jxcontext.Context, vendorIDList []int, isAsync, isC
|
|||||||
Address: storeDetail.Address,
|
Address: storeDetail.Address,
|
||||||
Status: StoreStatus2Chinese(storeDetail.Status),
|
Status: StoreStatus2Chinese(storeDetail.Status),
|
||||||
CityName: storeDetail.CityName,
|
CityName: storeDetail.CityName,
|
||||||
|
MarketManName: storeDetail2.MarketManName,
|
||||||
|
OperatorName: storeDetail2.OperatorName,
|
||||||
|
OperatorName2: storeDetail2.OperatorName2,
|
||||||
}
|
}
|
||||||
retVal = []VendorStoreExcel{storeExcel}
|
retVal = []VendorStoreExcel{storeExcel}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -33,6 +34,12 @@ type StatisticsReportForOrdersList struct {
|
|||||||
OperatorName2 string `json:"operatorName2"`
|
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) {
|
func GetStatisticsReportForOrders(db *DaoDB, storeIDs []int, fromDate time.Time, toDate time.Time) (statisticsReportForOrdersList []*StatisticsReportForOrdersList, err error) {
|
||||||
sql := `
|
sql := `
|
||||||
@@ -234,26 +241,27 @@ func GetStatisticsReportForStoreSkusPrice(db *DaoDB, cityCodes, skuIDs []int) (p
|
|||||||
return nil, err
|
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 := `
|
sql := `
|
||||||
SELECT SQL_CALC_FOUND_ROWS *
|
SELECT SQL_CALC_FOUND_ROWS a.*,b.name city_name
|
||||||
FROM price_refer_snapshot
|
FROM price_refer_snapshot a
|
||||||
|
JOIN place b ON a.city_code = b.code
|
||||||
WHERE 1=1
|
WHERE 1=1
|
||||||
AND deleted_at = ?
|
AND a.deleted_at = ?
|
||||||
`
|
`
|
||||||
sqlParams := []interface{}{
|
sqlParams := []interface{}{
|
||||||
utils.DefaultTimeValue,
|
utils.DefaultTimeValue,
|
||||||
}
|
}
|
||||||
if len(skuIDs) > 0 {
|
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)
|
sqlParams = append(sqlParams, skuIDs)
|
||||||
}
|
}
|
||||||
if len(cityCodes) > 0 {
|
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)
|
sqlParams = append(sqlParams, cityCodes)
|
||||||
}
|
}
|
||||||
if !utils.IsTimeZero(snapDate) {
|
if !utils.IsTimeZero(snapDate) {
|
||||||
sql += " AND snapshot_at = ?"
|
sql += " AND a.snapshot_at = ?"
|
||||||
sqlParams = append(sqlParams, snapDate)
|
sqlParams = append(sqlParams, snapDate)
|
||||||
}
|
}
|
||||||
sql += " LIMIT ? OFFSET ?"
|
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 {
|
if err = GetRows(db, &priceReferSnapshot, sql, sqlParams...); err == nil {
|
||||||
totalCount = GetLastTotalRowCount(db)
|
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
|
return priceReferSnapshot, totalCount, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,10 @@ type StoreDetail struct {
|
|||||||
DistrictName string `json:"districtName"`
|
DistrictName string `json:"districtName"`
|
||||||
CityName string `json:"cityName"`
|
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,
|
t3.value price_percentage_pack_str,
|
||||||
t4.value freight_deduction_pack_str,
|
t4.value freight_deduction_pack_str,
|
||||||
district.name district_name,
|
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
|
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
|
||||||
LEFT JOIN place district ON district.code = t1.district_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 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 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 = ?
|
WHERE t1.deleted_at = ?
|
||||||
`
|
`
|
||||||
sqlParams := []interface{}{
|
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.ID = int(utils.Str2Int64WithDefault(utils.Interface2String(result["shop_id"]), 0))
|
||||||
retVal.DeliveryRangeType = model.DeliveryRangeTypePolygon
|
retVal.DeliveryRangeType = model.DeliveryRangeTypePolygon
|
||||||
retVal.DeliveryRange = EbaiDeliveryRegion2Jx(result["delivery_region"])
|
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))
|
retVal.ID = int(utils.Str2Int64WithDefault(result.OutSystemID, 0))
|
||||||
deliveryRange, err2 := a.GetDeliveryRangeByStationNo2(vendorStoreID)
|
deliveryRange, err2 := a.GetDeliveryRangeByStationNo2(vendorStoreID)
|
||||||
if err = err2; err == nil {
|
if err = err2; err == nil {
|
||||||
|
|||||||
@@ -73,6 +73,7 @@ func (p *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorOrgCode, vendo
|
|||||||
retVal.CityCode = result.CityID
|
retVal.CityCode = result.CityID
|
||||||
|
|
||||||
poiCode := result.AppPoiCode
|
poiCode := result.AppPoiCode
|
||||||
|
retVal.VendorStoreID = vendorStoreID
|
||||||
retVal.ID = int(utils.Str2Int64WithDefault(poiCode, 0))
|
retVal.ID = int(utils.Str2Int64WithDefault(poiCode, 0))
|
||||||
retVal.DeliveryRangeType = model.DeliveryRangeTypePolygon
|
retVal.DeliveryRangeType = model.DeliveryRangeTypePolygon
|
||||||
var deliveryRangeInfo []map[string]interface{}
|
var deliveryRangeInfo []map[string]interface{}
|
||||||
|
|||||||
Reference in New Issue
Block a user