门店评分-优化

This commit is contained in:
Rosy-zhudan
2019-09-11 17:37:27 +08:00
parent bfaea1b998
commit 8a955013d9

View File

@@ -19,7 +19,7 @@ import (
const ( const (
EnableScheduleScoreStore = !true EnableScheduleScoreStore = !true
ParallelCount = 5 ParallelCount = 10
GoldMedalScore = 90 GoldMedalScore = 90
SilverMedalScore = 80 SilverMedalScore = 80
@@ -232,11 +232,15 @@ func ScoreAveragePickupTime(storeInfo *cms.StoreExt) {
} }
//差评订单和完成订单比例小于0.2%,得满分10分每增加0.1%减1分 //差评订单和完成订单比例小于0.2%,得满分10分每增加0.1%减1分
func ScoreBadCommentOrder(storeInfo *cms.StoreExt) { func ScoreBadCommentOrder(storeInfo *cms.StoreExt, paramFinishOrderCount int64) (finishOrderCount int64) {
storeID := storeInfo.ID storeID := storeInfo.ID
db := dao.GetDB() db := dao.GetDB()
badCommentOrderCount, _ := dao.GetDailyBadCommentOrderCount(db, storeID) badCommentOrderCount, _ := dao.GetDailyBadCommentOrderCount(db, storeID)
finishOrderCount, _ := dao.GetDailyFinishOrderCount(db, storeID) if paramFinishOrderCount == -1 {
finishOrderCount, _ = dao.GetDailyFinishOrderCount(db, storeID)
} else {
finishOrderCount = paramFinishOrderCount
}
if finishOrderCount > 0 { if finishOrderCount > 0 {
finalScore := 0 finalScore := 0
badCommentOrderRatio := float64(badCommentOrderCount) * 100 / float64(finishOrderCount) badCommentOrderRatio := float64(badCommentOrderCount) * 100 / float64(finishOrderCount)
@@ -251,14 +255,20 @@ func ScoreBadCommentOrder(storeInfo *cms.StoreExt) {
} }
storeScoreDataWrapper.SetData(storeID, model.FieldBadCommentOrder, finalScore) storeScoreDataWrapper.SetData(storeID, model.FieldBadCommentOrder, finalScore)
} }
return finishOrderCount
} }
//未完成订单和完成订单比小于1%得满分10分比例每增加5%分数减1 //未完成订单和完成订单比小于1%得满分10分比例每增加5%分数减1
func ScoreUnfinishOrder(storeInfo *cms.StoreExt) { func ScoreUnfinishOrder(storeInfo *cms.StoreExt, paramFinishOrderCount int64) (finishOrderCount int64) {
storeID := storeInfo.ID storeID := storeInfo.ID
db := dao.GetDB() db := dao.GetDB()
unFinishOrderCount, _ := dao.GetDailyUnFinishOrderCount(db, storeID) unFinishOrderCount, _ := dao.GetDailyUnFinishOrderCount(db, storeID)
finishOrderCount, _ := dao.GetDailyFinishOrderCount(db, storeID) if paramFinishOrderCount == -1 {
finishOrderCount, _ = dao.GetDailyFinishOrderCount(db, storeID)
} else {
finishOrderCount = paramFinishOrderCount
}
if finishOrderCount > 0 { if finishOrderCount > 0 {
finalScore := 0 finalScore := 0
unfinishOrderRatio := float64(unFinishOrderCount) * 100 / float64(finishOrderCount) unfinishOrderRatio := float64(unFinishOrderCount) * 100 / float64(finishOrderCount)
@@ -273,14 +283,20 @@ func ScoreUnfinishOrder(storeInfo *cms.StoreExt) {
} }
storeScoreDataWrapper.SetData(storeID, model.FieldUnfinishOrder, finalScore) storeScoreDataWrapper.SetData(storeID, model.FieldUnfinishOrder, finalScore)
} }
return finishOrderCount
} }
//缺货订单和完成订单比小于1%得10分比例每增加0.1%减1分 //缺货订单和完成订单比小于1%得10分比例每增加0.1%减1分
func ScoreAbsentGoodsOrder(storeInfo *cms.StoreExt) { func ScoreAbsentGoodsOrder(storeInfo *cms.StoreExt, paramFinishOrderCount int64) (finishOrderCount int64) {
storeID := storeInfo.ID storeID := storeInfo.ID
db := dao.GetDB() db := dao.GetDB()
absentGoodsOrderCount, _ := dao.GetDailyAbsentGoodsOrderCount(db, storeID) absentGoodsOrderCount, _ := dao.GetDailyAbsentGoodsOrderCount(db, storeID)
finishOrderCount, _ := dao.GetDailyFinishOrderCount(db, storeID) if paramFinishOrderCount == -1 {
finishOrderCount, _ = dao.GetDailyFinishOrderCount(db, storeID)
} else {
finishOrderCount = paramFinishOrderCount
}
if finishOrderCount > 0 { if finishOrderCount > 0 {
finalScore := 0 finalScore := 0
absentGoodsOrderRatio := float64(absentGoodsOrderCount) * 100 / float64(finishOrderCount) absentGoodsOrderRatio := float64(absentGoodsOrderCount) * 100 / float64(finishOrderCount)
@@ -295,6 +311,8 @@ func ScoreAbsentGoodsOrder(storeInfo *cms.StoreExt) {
} }
storeScoreDataWrapper.SetData(storeID, model.FieldAbsentGoodsOrder, finalScore) storeScoreDataWrapper.SetData(storeID, model.FieldAbsentGoodsOrder, finalScore)
} }
return finishOrderCount
} }
//促销品数量20个以上为满分10分每少2个扣1分 //促销品数量20个以上为满分10分每少2个扣1分
@@ -507,16 +525,19 @@ func ScoreStore(ctx *jxcontext.Context, storeIDList []int) (retVal interface{},
baseapi.SugarLogger.Debugf("ScoreStore step2 begin") baseapi.SugarLogger.Debugf("ScoreStore step2 begin")
taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
storeInfo := batchItemList[0].(*cms.StoreExt) storeInfo := batchItemList[0].(*cms.StoreExt)
storeID := storeInfo.ID
baseapi.SugarLogger.Debugf("Begin store id:%d", storeID)
ScoreStoreOpenTime(storeInfo) ScoreStoreOpenTime(storeInfo)
ScoreSaleSkuCount(storeInfo) ScoreSaleSkuCount(storeInfo)
ScoreAveragePickupTime(storeInfo) ScoreAveragePickupTime(storeInfo)
ScoreBadCommentOrder(storeInfo) finishOrderCount := ScoreBadCommentOrder(storeInfo, -1)
ScoreUnfinishOrder(storeInfo) ScoreUnfinishOrder(storeInfo, finishOrderCount)
ScoreAbsentGoodsOrder(storeInfo) ScoreAbsentGoodsOrder(storeInfo, finishOrderCount)
ScorePromotionSku(storeInfo) ScorePromotionSku(storeInfo)
ScoreFullVendor(storeInfo) ScoreFullVendor(storeInfo)
ScoreStoreRange(storeInfo) ScoreStoreRange(storeInfo)
ScoreSaleSkuPrice(storeInfo, storeList) ScoreSaleSkuPrice(storeInfo, storeList)
baseapi.SugarLogger.Debugf("End store id:%d", storeID)
return retVal, err return retVal, err
} }
taskParallel := tasksch.NewParallelTask("计算门店得分", tasksch.NewParallelConfig().SetParallelCount(ParallelCount), ctx, taskFunc, storeList) taskParallel := tasksch.NewParallelTask("计算门店得分", tasksch.NewParallelConfig().SetParallelCount(ParallelCount), ctx, taskFunc, storeList)