1
This commit is contained in:
@@ -14,8 +14,6 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/business/jxstore/misc"
|
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable"
|
"git.rosy.net.cn/baseapi/platformapi/tao_vegetable"
|
||||||
|
|
||||||
"git.rosy.net.cn/jx-callback/business/partner/purchase/mtwm"
|
"git.rosy.net.cn/jx-callback/business/partner/purchase/mtwm"
|
||||||
@@ -5929,7 +5927,7 @@ func GetHomePageByLocation(ctx *jxcontext.Context, lng, lat float64, needWalkDis
|
|||||||
return nil, "获取门店品牌信息失败", err
|
return nil, "获取门店品牌信息失败", err
|
||||||
}
|
}
|
||||||
//获取门店每周评分
|
//获取门店每周评分
|
||||||
if scores, err := misc.GetWeeklyStoreScore(v.ID, 0); err == nil && len(scores) > 0 {
|
if scores, err := GetWeeklyStoreScore(v.ID, 0); err == nil && len(scores) > 0 {
|
||||||
storeScore = scores[0].TotalScore
|
storeScore = scores[0].TotalScore
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -6460,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
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user