修改门店评分BUG
This commit is contained in:
@@ -17,8 +17,14 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
GoldMedalScore = 90
|
||||||
|
SilverMedalScore = 80
|
||||||
|
BronzeMedalScore = 70
|
||||||
|
GoldMedalLevel = 1
|
||||||
|
SilverMedalLevel = 2
|
||||||
|
BronzeMedalLevel = 3
|
||||||
|
|
||||||
ItemTotalScore = 10
|
ItemTotalScore = 10
|
||||||
ItemCount = 10
|
|
||||||
|
|
||||||
StoreOpenTimeNormalTime = 12.0 //小时
|
StoreOpenTimeNormalTime = 12.0 //小时
|
||||||
SaleSkuNormalCount = 1000
|
SaleSkuNormalCount = 1000
|
||||||
@@ -30,8 +36,6 @@ const (
|
|||||||
StoreRangeGoodRadius = 2.0 //千米
|
StoreRangeGoodRadius = 2.0 //千米
|
||||||
StoreRangeBadRadius = 1.0 //千米
|
StoreRangeBadRadius = 1.0 //千米
|
||||||
SaleSkuPriceRatio = 90 //百分比
|
SaleSkuPriceRatio = 90 //百分比
|
||||||
|
|
||||||
WeekDayCount = 7
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@@ -44,16 +48,16 @@ var (
|
|||||||
model.VendorIDEBAI: true,
|
model.VendorIDEBAI: true,
|
||||||
}
|
}
|
||||||
storeScoreFieldName = []string{
|
storeScoreFieldName = []string{
|
||||||
"StoreOpenTime",
|
model.FieldStoreOpenTime,
|
||||||
"SaleSkuCount",
|
model.FieldSaleSkuCount,
|
||||||
"AveragePickupTime",
|
model.FieldAveragePickupTime,
|
||||||
"BadCommentOrder",
|
model.FieldBadCommentOrder,
|
||||||
"UnfinishOrder",
|
model.FieldUnfinishOrder,
|
||||||
"AbsentGoodsOrder",
|
model.FieldAbsentGoodsOrder,
|
||||||
"PromotionSku",
|
model.FieldPromotionSku,
|
||||||
"FullVendor",
|
model.FieldFullVendor,
|
||||||
"StoreRange",
|
model.FieldStoreRange,
|
||||||
"SaleSkuPrice",
|
model.FieldSaleSkuPrice,
|
||||||
}
|
}
|
||||||
|
|
||||||
storeScoreDataWrapper StoreScoreDataWrapper
|
storeScoreDataWrapper StoreScoreDataWrapper
|
||||||
@@ -510,63 +514,90 @@ func Time2Week(t time.Time) int {
|
|||||||
if yearDay <= firstWeekDays {
|
if yearDay <= firstWeekDays {
|
||||||
week = 1
|
week = 1
|
||||||
} else {
|
} else {
|
||||||
week = (yearDay-firstWeekDays)/7 + 2
|
tempWeek := (float64(yearDay) - float64(firstWeekDays)) / float64(7)
|
||||||
|
week = int(math.Ceil(tempWeek)) + 1
|
||||||
}
|
}
|
||||||
|
|
||||||
return week
|
return week
|
||||||
}
|
}
|
||||||
|
|
||||||
func SplitToSingelWeekDataList(storeScoreList []*model.StoreScore) (weekDataList [][]*model.StoreScore) {
|
func SplitToSingleWeekDataList(storeScoreList []*model.StoreScore) (weekDataList [][]*model.StoreScore) {
|
||||||
singelWeekData := []*model.StoreScore{}
|
singelWeekData := []*model.StoreScore{}
|
||||||
count := 0
|
weekIndex := 0
|
||||||
for _, value := range storeScoreList {
|
for _, value := range storeScoreList {
|
||||||
|
if weekIndex == 0 {
|
||||||
|
weekIndex = Time2Week(value.CreatedAt)
|
||||||
|
}
|
||||||
|
if weekIndex == Time2Week(value.CreatedAt) {
|
||||||
singelWeekData = append(singelWeekData, value)
|
singelWeekData = append(singelWeekData, value)
|
||||||
count++
|
} else {
|
||||||
if count == WeekDayCount {
|
|
||||||
weekDataList = append(weekDataList, singelWeekData)
|
weekDataList = append(weekDataList, singelWeekData)
|
||||||
singelWeekData = []*model.StoreScore{}
|
singelWeekData = []*model.StoreScore{}
|
||||||
count = 0
|
weekIndex = 0
|
||||||
|
singelWeekData = append(singelWeekData, value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if len(singelWeekData) > 0 {
|
||||||
|
weekDataList = append(weekDataList, singelWeekData)
|
||||||
|
}
|
||||||
|
|
||||||
return weekDataList
|
return weekDataList
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetStoreScoreLevel(score int) int {
|
||||||
|
level := 0
|
||||||
|
if score >= GoldMedalScore {
|
||||||
|
level = GoldMedalLevel
|
||||||
|
} else if score >= SilverMedalScore {
|
||||||
|
level = SilverMedalLevel
|
||||||
|
} else if score >= BronzeMedalScore {
|
||||||
|
level = BronzeMedalLevel
|
||||||
|
}
|
||||||
|
|
||||||
|
return level
|
||||||
|
}
|
||||||
|
|
||||||
func GetWeeklyStoreScore(storeID, weekIndex int) (outWeeklyStoreScoreDataList []*model.WeeklyStoreScore, err error) {
|
func GetWeeklyStoreScore(storeID, weekIndex int) (outWeeklyStoreScoreDataList []*model.WeeklyStoreScore, err error) {
|
||||||
db := dao.GetDB()
|
db := dao.GetDB()
|
||||||
storeScoreList, err := dao.GetLatestWeeklyStoreScoreList(db, storeID, 5)
|
storeScoreList, err := dao.GetLatestWeeklyStoreScoreList(db, storeID, 5)
|
||||||
if err == nil && len(storeScoreList) > 0 {
|
if err == nil && len(storeScoreList) > 0 {
|
||||||
weeklyStoreScoreDataList := []*model.WeeklyStoreScore{}
|
weeklyStoreScoreDataList := []*model.WeeklyStoreScore{}
|
||||||
weekDataList := SplitToSingelWeekDataList(storeScoreList)
|
weekDataList := SplitToSingleWeekDataList(storeScoreList)
|
||||||
for weekIndex, weekDataList := range weekDataList {
|
for weekIndex, weekData := range weekDataList {
|
||||||
weeklyData := &model.WeeklyStoreScore{}
|
weeklyData := &model.WeeklyStoreScore{}
|
||||||
weeklyData.ID = weekIndex
|
weeklyData.ID = weekIndex
|
||||||
weeklyData.ItemTotalScore = ItemTotalScore
|
weeklyData.ItemTotalScore = ItemTotalScore
|
||||||
weeklyData.StoreID = storeID
|
weeklyData.StoreID = storeID
|
||||||
weeklyStoreScoreDataList = append(weeklyStoreScoreDataList, weeklyData)
|
weeklyStoreScoreDataList = append(weeklyStoreScoreDataList, weeklyData)
|
||||||
weekDataListCount := len(weekDataList)
|
weekDataCount := len(weekData)
|
||||||
for dayIndex, dayData := range weekDataList {
|
for dayIndex, dayData := range weekData {
|
||||||
for _, fieldName := range storeScoreFieldName {
|
for _, fieldName := range storeScoreFieldName {
|
||||||
srcFieldValue := refutil.GetObjFieldByName(dayData, fieldName).(int)
|
srcFieldValue := refutil.GetObjFieldByName(dayData, fieldName).(int)
|
||||||
destFieldValueR := refutil.GetObjFieldByName(weeklyData, fieldName).(int)
|
destFieldValue := refutil.GetObjFieldByName(weeklyData, fieldName).(int)
|
||||||
refutil.SetObjFieldByName(weeklyData, fieldName, destFieldValueR+srcFieldValue)
|
refutil.SetObjFieldByName(weeklyData, fieldName, destFieldValue+srcFieldValue)
|
||||||
}
|
}
|
||||||
|
if weekDataCount == 1 {
|
||||||
|
weeklyData.BeginTime = dayData.CreatedAt
|
||||||
|
weeklyData.EndTime = dayData.CreatedAt
|
||||||
|
} else {
|
||||||
if dayIndex == 0 {
|
if dayIndex == 0 {
|
||||||
weeklyData.EndTime = dayData.CreatedAt
|
weeklyData.EndTime = dayData.CreatedAt
|
||||||
} else if dayIndex == weekDataListCount-1 {
|
} else if dayIndex == weekDataCount-1 {
|
||||||
weeklyData.BeginTime = dayData.CreatedAt
|
weeklyData.BeginTime = dayData.CreatedAt
|
||||||
}
|
}
|
||||||
|
}
|
||||||
weeklyData.StoreName = dayData.StoreName
|
weeklyData.StoreName = dayData.StoreName
|
||||||
}
|
}
|
||||||
for _, fieldName := range storeScoreFieldName {
|
for _, fieldName := range storeScoreFieldName {
|
||||||
destFieldValueR := refutil.GetObjFieldByName(weeklyData, fieldName).(int)
|
destFieldValue := refutil.GetObjFieldByName(weeklyData, fieldName).(int)
|
||||||
refutil.SetObjFieldByName(weeklyData, fieldName, int(math.Round(float64(destFieldValueR)/float64(weekDataListCount))))
|
refutil.SetObjFieldByName(weeklyData, fieldName, int(math.Round(float64(destFieldValue)/float64(weekDataCount))))
|
||||||
}
|
}
|
||||||
for _, fieldName := range storeScoreFieldName {
|
for _, fieldName := range storeScoreFieldName {
|
||||||
srcFieldValue := refutil.GetObjFieldByName(weeklyData, fieldName).(int)
|
srcFieldValue := refutil.GetObjFieldByName(weeklyData, fieldName).(int)
|
||||||
destFieldValueR := refutil.GetObjFieldByName(weeklyData, "TotalScore").(int)
|
destFieldValue := refutil.GetObjFieldByName(weeklyData, model.FieldTotalScore).(int)
|
||||||
refutil.SetObjFieldByName(weeklyData, "TotalScore", destFieldValueR+srcFieldValue)
|
refutil.SetObjFieldByName(weeklyData, model.FieldTotalScore, destFieldValue+srcFieldValue)
|
||||||
}
|
}
|
||||||
weeklyData.Level = 0
|
weeklyData.Level = GetStoreScoreLevel(weeklyData.TotalScore)
|
||||||
}
|
}
|
||||||
if weekIndex == -1 {
|
if weekIndex == -1 {
|
||||||
outWeeklyStoreScoreDataList = weeklyStoreScoreDataList
|
outWeeklyStoreScoreDataList = weeklyStoreScoreDataList
|
||||||
|
|||||||
@@ -2,6 +2,21 @@ package model
|
|||||||
|
|
||||||
import "time"
|
import "time"
|
||||||
|
|
||||||
|
const (
|
||||||
|
FieldStoreOpenTime = "StoreOpenTime"
|
||||||
|
FieldSaleSkuCount = "SaleSkuCount"
|
||||||
|
FieldAveragePickupTime = "AveragePickupTime"
|
||||||
|
FieldBadCommentOrder = "BadCommentOrder"
|
||||||
|
FieldUnfinishOrder = "UnfinishOrder"
|
||||||
|
FieldAbsentGoodsOrder = "AbsentGoodsOrder"
|
||||||
|
FieldPromotionSku = "PromotionSku"
|
||||||
|
FieldFullVendor = "FullVendor"
|
||||||
|
FieldStoreRange = "StoreRange"
|
||||||
|
FieldSaleSkuPrice = "SaleSkuPrice"
|
||||||
|
|
||||||
|
FieldTotalScore = "TotalScore"
|
||||||
|
)
|
||||||
|
|
||||||
type StoreScore struct {
|
type StoreScore struct {
|
||||||
ID int `orm:"column(id)" json:"id"`
|
ID int `orm:"column(id)" json:"id"`
|
||||||
CreatedAt time.Time `orm:"auto_now_add;type(datetime)" json:"createdAt"`
|
CreatedAt time.Time `orm:"auto_now_add;type(datetime)" json:"createdAt"`
|
||||||
|
|||||||
Reference in New Issue
Block a user