Merge branch 'jdshop' of e.coding.net:rosydev/jx-callback into jdshop
This commit is contained in:
@@ -157,6 +157,11 @@ func (w *OrderManager) OnWaybillStatusChanged(bill *model.Waybill) (err error) {
|
|||||||
addParams["actual_fee"] = bill.ActualFee
|
addParams["actual_fee"] = bill.ActualFee
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//单独增加顺丰派送取消运单修改配送费逻辑
|
||||||
|
if bill.WaybillVendorID == model.VendorIDSFPS && bill.Status == model.WaybillStatusCanceled {
|
||||||
|
addParams["desired_fee"] = bill.DesiredFee
|
||||||
|
addParams["actual_fee"] = bill.ActualFee
|
||||||
|
}
|
||||||
if bill.CourierMobile != "" {
|
if bill.CourierMobile != "" {
|
||||||
addParams["courier_name"] = bill.CourierName
|
addParams["courier_name"] = bill.CourierName
|
||||||
addParams["courier_mobile"] = bill.CourierMobile
|
addParams["courier_mobile"] = bill.CourierMobile
|
||||||
|
|||||||
@@ -132,19 +132,19 @@ type VendorStoreExcel struct {
|
|||||||
|
|
||||||
//门店信息
|
//门店信息
|
||||||
type StoreInfo struct {
|
type StoreInfo struct {
|
||||||
StoreID int `json:"storeID"` //门店ID
|
StoreID int `json:"storeID"` //门店ID
|
||||||
StoreName string `json:"storeName"` //门店名字
|
StoreName string `json:"storeName"` //门店名字
|
||||||
OpenTime1 int16 `json:"openTime1"` // 930就表示9点半,用两个的原因是为了支持中午休息,1与2的时间段不能交叉,为0表示没有
|
OpenTime1 int16 `json:"openTime1"` // 930就表示9点半,用两个的原因是为了支持中午休息,1与2的时间段不能交叉,为0表示没有
|
||||||
CloseTime1 int16 `json:"closeTime1"` // 营业时间 1
|
CloseTime1 int16 `json:"closeTime1"` // 营业时间 1
|
||||||
OpenTime2 int16 `json:"openTime2"` // 营业时间2
|
OpenTime2 int16 `json:"openTime2"` // 营业时间2
|
||||||
CloseTime2 int16 `json:"closeTime2"`
|
CloseTime2 int16 `json:"closeTime2"`
|
||||||
Status int `json:"status"` //门店是否营业
|
Status int `json:"status"` //门店是否营业
|
||||||
Distance int `json:"distance"` //店铺与定位 直线距离
|
Distance int `json:"distance"` //店铺与定位 直线距离
|
||||||
Address string `json:"address"` //门店地址
|
Address string `json:"address"` //门店地址
|
||||||
BrandID int `orm:"column(brand_id)" json:"brandID"` //品牌ID
|
BrandID int `orm:"column(brand_id)" json:"brandID"` //品牌ID
|
||||||
BrandName string `json:"brandName"` //品牌名字
|
BrandName string `json:"brandName"` //品牌名字
|
||||||
BrandLogo string `json:"brandLogo"` //品牌logo
|
BrandLogo string `json:"brandLogo"` //品牌logo
|
||||||
//WeeklyScore int `json:"weeklyScore"` //店铺每周评分
|
StoreWeeklyScore int `json:"storeWeeklyScore"` //店铺每周评分
|
||||||
}
|
}
|
||||||
|
|
||||||
//门店减免策略
|
//门店减免策略
|
||||||
@@ -5900,6 +5900,7 @@ func GetHomePageByLocation(ctx *jxcontext.Context, lng, lat float64, needWalkDis
|
|||||||
//获取门店信息
|
//获取门店信息
|
||||||
var (
|
var (
|
||||||
storeID []int
|
storeID []int
|
||||||
|
storeScore = 0
|
||||||
storeInfos []StoreInfo
|
storeInfos []StoreInfo
|
||||||
storeDeductionInfo StoreDeductionInfo
|
storeDeductionInfo StoreDeductionInfo
|
||||||
storeDeductionInfos []StoreDeductionInfo
|
storeDeductionInfos []StoreDeductionInfo
|
||||||
@@ -5925,18 +5926,24 @@ func GetHomePageByLocation(ctx *jxcontext.Context, lng, lat float64, needWalkDis
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, "获取门店品牌信息失败", err
|
return nil, "获取门店品牌信息失败", err
|
||||||
}
|
}
|
||||||
|
//获取门店每周评分
|
||||||
|
if scores, err := GetWeeklyStoreScore(v.ID, 0); err == nil && len(scores) > 0 {
|
||||||
|
storeScore = scores[0].TotalScore
|
||||||
|
}
|
||||||
|
|
||||||
storeInfo := StoreInfo{
|
storeInfo := StoreInfo{
|
||||||
StoreID: v.ID,
|
StoreID: v.ID,
|
||||||
StoreName: v.Name,
|
StoreName: v.Name,
|
||||||
OpenTime1: v.OpenTime1,
|
OpenTime1: v.OpenTime1,
|
||||||
CloseTime1: v.CloseTime1,
|
CloseTime1: v.CloseTime1,
|
||||||
OpenTime2: v.OpenTime2,
|
OpenTime2: v.OpenTime2,
|
||||||
CloseTime2: v.CloseTime2,
|
CloseTime2: v.CloseTime2,
|
||||||
Status: v.Status,
|
Status: v.Status,
|
||||||
Distance: v.Distance,
|
Distance: v.Distance,
|
||||||
Address: v.Address,
|
Address: v.Address,
|
||||||
BrandName: brandInfos.Name,
|
BrandName: brandInfos.Name,
|
||||||
BrandLogo: brandInfos.Logo,
|
BrandLogo: brandInfos.Logo,
|
||||||
|
StoreWeeklyScore: storeScore,
|
||||||
}
|
}
|
||||||
storeInfos = append(storeInfos, storeInfo)
|
storeInfos = append(storeInfos, storeInfo)
|
||||||
//获取门店减免策略
|
//获取门店减免策略
|
||||||
@@ -6451,3 +6458,125 @@ func GetVendorStoreBind(vendorStoreId string, vendorId int) (int, error) {
|
|||||||
func BindJxPrintToStore(storeId int64, printSn, printKey string) error {
|
func BindJxPrintToStore(storeId int64, printSn, printKey string) error {
|
||||||
return dao.BindJXPrintToStore(storeId, printSn, printKey)
|
return dao.BindJXPrintToStore(storeId, printSn, printKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
storeScoreFieldName = []string{
|
||||||
|
model.FieldStoreOpenTime,
|
||||||
|
model.FieldSaleSkuCount,
|
||||||
|
model.FieldAveragePickupTime,
|
||||||
|
model.FieldBadCommentOrder,
|
||||||
|
model.FieldUnfinishOrder,
|
||||||
|
model.FieldAbsentGoodsOrder,
|
||||||
|
model.FieldPromotionSku,
|
||||||
|
model.FieldFullVendor,
|
||||||
|
model.FieldStoreRange,
|
||||||
|
model.FieldSaleSkuPrice,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetWeeklyStoreScore(storeID, weekIndexParam int) (outWeeklyStoreScoreDataList []*model.WeeklyStoreScore, err error) {
|
||||||
|
db := dao.GetDB()
|
||||||
|
storeScoreList, err := dao.GetWeeklyStoreScoreList(db, storeID, 1)
|
||||||
|
if err == nil && len(storeScoreList) > 0 {
|
||||||
|
weeklyStoreScoreDataList := []*model.WeeklyStoreScore{}
|
||||||
|
weekDataList := SplitToSingleWeekDataList(storeScoreList)
|
||||||
|
for weekIndex, weekData := range weekDataList {
|
||||||
|
weeklyData := &model.WeeklyStoreScore{}
|
||||||
|
weeklyData.ID = weekIndex
|
||||||
|
weeklyData.ItemTotalScore = 10
|
||||||
|
weeklyData.StoreID = storeID
|
||||||
|
weeklyStoreScoreDataList = append(weeklyStoreScoreDataList, weeklyData)
|
||||||
|
weekDataCount := len(weekData)
|
||||||
|
for dayIndex, dayData := range weekData {
|
||||||
|
for _, fieldName := range storeScoreFieldName {
|
||||||
|
srcFieldValue := refutil.GetObjFieldByName(dayData, fieldName).(int)
|
||||||
|
destFieldValue := refutil.GetObjFieldByName(weeklyData, fieldName).(int)
|
||||||
|
refutil.SetObjFieldByName(weeklyData, fieldName, destFieldValue+srcFieldValue)
|
||||||
|
}
|
||||||
|
if weekDataCount == 1 {
|
||||||
|
weeklyData.BeginTime = dayData.ScoreDate
|
||||||
|
weeklyData.EndTime = dayData.ScoreDate
|
||||||
|
} else {
|
||||||
|
if dayIndex == 0 {
|
||||||
|
weeklyData.EndTime = dayData.ScoreDate
|
||||||
|
} else if dayIndex == weekDataCount-1 {
|
||||||
|
weeklyData.BeginTime = dayData.ScoreDate
|
||||||
|
}
|
||||||
|
}
|
||||||
|
weeklyData.StoreName = dayData.StoreName
|
||||||
|
}
|
||||||
|
for _, fieldName := range storeScoreFieldName {
|
||||||
|
destFieldValue := refutil.GetObjFieldByName(weeklyData, fieldName).(int)
|
||||||
|
refutil.SetObjFieldByName(weeklyData, fieldName, int(math.Round(float64(destFieldValue)/float64(weekDataCount))))
|
||||||
|
}
|
||||||
|
for _, fieldName := range storeScoreFieldName {
|
||||||
|
srcFieldValue := refutil.GetObjFieldByName(weeklyData, fieldName).(int)
|
||||||
|
destFieldValue := refutil.GetObjFieldByName(weeklyData, model.FieldTotalScore).(int)
|
||||||
|
refutil.SetObjFieldByName(weeklyData, model.FieldTotalScore, destFieldValue+srcFieldValue)
|
||||||
|
}
|
||||||
|
weeklyData.Level = GetStoreScoreLevel(weeklyData.TotalScore)
|
||||||
|
}
|
||||||
|
if weekIndexParam == -1 {
|
||||||
|
outWeeklyStoreScoreDataList = weeklyStoreScoreDataList
|
||||||
|
} else {
|
||||||
|
//fmt.Println("testss", utils.Format4Output(weeklyStoreScoreDataList, false))
|
||||||
|
outWeeklyStoreScoreDataList = []*model.WeeklyStoreScore{weeklyStoreScoreDataList[weekIndexParam]}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return outWeeklyStoreScoreDataList, err
|
||||||
|
}
|
||||||
|
func SplitToSingleWeekDataList(storeScoreList []*model.StoreScoreEx) (weekDataList [][]*model.StoreScoreEx) {
|
||||||
|
singleWeekData := []*model.StoreScoreEx{}
|
||||||
|
weekIndex := 0
|
||||||
|
for _, value := range storeScoreList {
|
||||||
|
if weekIndex == 0 {
|
||||||
|
weekIndex = Time2Week(value.ScoreDate)
|
||||||
|
}
|
||||||
|
if weekIndex == Time2Week(value.ScoreDate) {
|
||||||
|
singleWeekData = append(singleWeekData, value)
|
||||||
|
} else {
|
||||||
|
weekDataList = append(weekDataList, singleWeekData)
|
||||||
|
singleWeekData = []*model.StoreScoreEx{}
|
||||||
|
weekIndex = 0
|
||||||
|
singleWeekData = append(singleWeekData, value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if len(singleWeekData) > 0 {
|
||||||
|
weekDataList = append(weekDataList, singleWeekData)
|
||||||
|
}
|
||||||
|
|
||||||
|
return weekDataList
|
||||||
|
}
|
||||||
|
func GetStoreScoreLevel(score int) int {
|
||||||
|
level := 0
|
||||||
|
if score >= 90 {
|
||||||
|
level = 1
|
||||||
|
} else if score >= 80 {
|
||||||
|
level = 2
|
||||||
|
} else if score >= 70 {
|
||||||
|
level = 3
|
||||||
|
}
|
||||||
|
|
||||||
|
return level
|
||||||
|
}
|
||||||
|
|
||||||
|
func Time2Week(t time.Time) int {
|
||||||
|
yearDay := t.YearDay()
|
||||||
|
yearFirstDay := t.AddDate(0, 0, -yearDay+1)
|
||||||
|
firstDayInWeek := int(yearFirstDay.Weekday())
|
||||||
|
|
||||||
|
firstWeekDays := 1
|
||||||
|
if firstDayInWeek != 0 {
|
||||||
|
firstWeekDays = 7 - firstDayInWeek + 1
|
||||||
|
}
|
||||||
|
var week int
|
||||||
|
if yearDay <= firstWeekDays {
|
||||||
|
week = 1
|
||||||
|
} else {
|
||||||
|
tempWeek := (float64(yearDay) - float64(firstWeekDays)) / float64(7)
|
||||||
|
week = int(math.Ceil(tempWeek)) + 1
|
||||||
|
}
|
||||||
|
|
||||||
|
return week
|
||||||
|
}
|
||||||
|
|||||||
@@ -208,14 +208,19 @@ func (d DeliveryHandler) CancelWaybill(bill *model.Waybill, cancelReasonID int,
|
|||||||
deductionFee, err := api.SfPsAPI.PreCancelOrder(bill.VendorWaybillID)
|
deductionFee, err := api.SfPsAPI.PreCancelOrder(bill.VendorWaybillID)
|
||||||
if deductionFee == 0 || err != nil {
|
if deductionFee == 0 || err != nil {
|
||||||
money = 0
|
money = 0
|
||||||
|
} else {
|
||||||
|
money = utils.Float64TwoInt64(deductionFee)
|
||||||
}
|
}
|
||||||
money = utils.Float64TwoInt64(deductionFee)
|
globals.SugarLogger.Debugf("CancelWaybill money=%d", money)
|
||||||
if err = api.SfPsAPI.CancelOrder(bill.VendorWaybillID); err != nil {
|
if err = api.SfPsAPI.CancelOrder(bill.VendorWaybillID); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
bill.Status = model.WaybillStatusCanceled
|
bill.Status = model.WaybillStatusCanceled
|
||||||
bill.Remark = cancelReason
|
bill.Remark = cancelReason
|
||||||
bill.DesiredFee = money //取消成功才赋值违约金
|
bill.DesiredFee = money //取消成功才赋值违约金
|
||||||
|
bill.ActualFee = money
|
||||||
|
globals.SugarLogger.Debugf("CancelWaybill bill=%s", utils.Format4Output(bill, false))
|
||||||
|
|
||||||
partner.CurOrderManager.OnWaybillStatusChanged(bill)
|
partner.CurOrderManager.OnWaybillStatusChanged(bill)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user