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
|
||||
}
|
||||
}
|
||||
//单独增加顺丰派送取消运单修改配送费逻辑
|
||||
if bill.WaybillVendorID == model.VendorIDSFPS && bill.Status == model.WaybillStatusCanceled {
|
||||
addParams["desired_fee"] = bill.DesiredFee
|
||||
addParams["actual_fee"] = bill.ActualFee
|
||||
}
|
||||
if bill.CourierMobile != "" {
|
||||
addParams["courier_name"] = bill.CourierName
|
||||
addParams["courier_mobile"] = bill.CourierMobile
|
||||
|
||||
@@ -132,19 +132,19 @@ type VendorStoreExcel struct {
|
||||
|
||||
//门店信息
|
||||
type StoreInfo struct {
|
||||
StoreID int `json:"storeID"` //门店ID
|
||||
StoreName string `json:"storeName"` //门店名字
|
||||
OpenTime1 int16 `json:"openTime1"` // 930就表示9点半,用两个的原因是为了支持中午休息,1与2的时间段不能交叉,为0表示没有
|
||||
CloseTime1 int16 `json:"closeTime1"` // 营业时间 1
|
||||
OpenTime2 int16 `json:"openTime2"` // 营业时间2
|
||||
CloseTime2 int16 `json:"closeTime2"`
|
||||
Status int `json:"status"` //门店是否营业
|
||||
Distance int `json:"distance"` //店铺与定位 直线距离
|
||||
Address string `json:"address"` //门店地址
|
||||
BrandID int `orm:"column(brand_id)" json:"brandID"` //品牌ID
|
||||
BrandName string `json:"brandName"` //品牌名字
|
||||
BrandLogo string `json:"brandLogo"` //品牌logo
|
||||
//WeeklyScore int `json:"weeklyScore"` //店铺每周评分
|
||||
StoreID int `json:"storeID"` //门店ID
|
||||
StoreName string `json:"storeName"` //门店名字
|
||||
OpenTime1 int16 `json:"openTime1"` // 930就表示9点半,用两个的原因是为了支持中午休息,1与2的时间段不能交叉,为0表示没有
|
||||
CloseTime1 int16 `json:"closeTime1"` // 营业时间 1
|
||||
OpenTime2 int16 `json:"openTime2"` // 营业时间2
|
||||
CloseTime2 int16 `json:"closeTime2"`
|
||||
Status int `json:"status"` //门店是否营业
|
||||
Distance int `json:"distance"` //店铺与定位 直线距离
|
||||
Address string `json:"address"` //门店地址
|
||||
BrandID int `orm:"column(brand_id)" json:"brandID"` //品牌ID
|
||||
BrandName string `json:"brandName"` //品牌名字
|
||||
BrandLogo string `json:"brandLogo"` //品牌logo
|
||||
StoreWeeklyScore int `json:"storeWeeklyScore"` //店铺每周评分
|
||||
}
|
||||
|
||||
//门店减免策略
|
||||
@@ -5900,6 +5900,7 @@ func GetHomePageByLocation(ctx *jxcontext.Context, lng, lat float64, needWalkDis
|
||||
//获取门店信息
|
||||
var (
|
||||
storeID []int
|
||||
storeScore = 0
|
||||
storeInfos []StoreInfo
|
||||
storeDeductionInfo StoreDeductionInfo
|
||||
storeDeductionInfos []StoreDeductionInfo
|
||||
@@ -5925,18 +5926,24 @@ func GetHomePageByLocation(ctx *jxcontext.Context, lng, lat float64, needWalkDis
|
||||
if err != nil {
|
||||
return nil, "获取门店品牌信息失败", err
|
||||
}
|
||||
//获取门店每周评分
|
||||
if scores, err := GetWeeklyStoreScore(v.ID, 0); err == nil && len(scores) > 0 {
|
||||
storeScore = scores[0].TotalScore
|
||||
}
|
||||
|
||||
storeInfo := StoreInfo{
|
||||
StoreID: v.ID,
|
||||
StoreName: v.Name,
|
||||
OpenTime1: v.OpenTime1,
|
||||
CloseTime1: v.CloseTime1,
|
||||
OpenTime2: v.OpenTime2,
|
||||
CloseTime2: v.CloseTime2,
|
||||
Status: v.Status,
|
||||
Distance: v.Distance,
|
||||
Address: v.Address,
|
||||
BrandName: brandInfos.Name,
|
||||
BrandLogo: brandInfos.Logo,
|
||||
StoreID: v.ID,
|
||||
StoreName: v.Name,
|
||||
OpenTime1: v.OpenTime1,
|
||||
CloseTime1: v.CloseTime1,
|
||||
OpenTime2: v.OpenTime2,
|
||||
CloseTime2: v.CloseTime2,
|
||||
Status: v.Status,
|
||||
Distance: v.Distance,
|
||||
Address: v.Address,
|
||||
BrandName: brandInfos.Name,
|
||||
BrandLogo: brandInfos.Logo,
|
||||
StoreWeeklyScore: storeScore,
|
||||
}
|
||||
storeInfos = append(storeInfos, storeInfo)
|
||||
//获取门店减免策略
|
||||
@@ -6451,3 +6458,125 @@ func GetVendorStoreBind(vendorStoreId string, vendorId int) (int, error) {
|
||||
func BindJxPrintToStore(storeId int64, printSn, printKey string) error {
|
||||
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)
|
||||
if deductionFee == 0 || err != nil {
|
||||
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 {
|
||||
return err
|
||||
}
|
||||
bill.Status = model.WaybillStatusCanceled
|
||||
bill.Remark = cancelReason
|
||||
bill.DesiredFee = money //取消成功才赋值违约金
|
||||
bill.ActualFee = money
|
||||
globals.SugarLogger.Debugf("CancelWaybill bill=%s", utils.Format4Output(bill, false))
|
||||
|
||||
partner.CurOrderManager.OnWaybillStatusChanged(bill)
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user