Merge branch 'mark' of e.coding.net:rosydev/jx-callback into mark
This commit is contained in:
@@ -290,3 +290,71 @@ func GetStoreAfsOrderSkuList(db *DaoDB, storeIDs []int, finishedAtBegin, finishe
|
||||
err = GetRows(db, &afsSkuList, sql, sqlParams...)
|
||||
return afsSkuList, err
|
||||
}
|
||||
|
||||
func GetDailyFinishOrderList(db *DaoDB, storeID int, dateTime time.Time) (orderList []*model.OrderPickupTime, err error) {
|
||||
sql := `
|
||||
SELECT t2.status_time, t1.pick_deadline
|
||||
FROM goods_order t1
|
||||
JOIN order_status t2 ON t1.vendor_order_id = t2.vendor_order_id AND t1.vendor_id = t2.vendor_id
|
||||
WHERE t1.jx_store_id = ? AND t2.order_type = ? AND t2.status = ? AND DATE(t1.order_finished_at) = DATE(?)
|
||||
`
|
||||
sqlParams := []interface{}{
|
||||
storeID,
|
||||
1,
|
||||
model.OrderStatusFinishedPickup,
|
||||
dateTime,
|
||||
}
|
||||
return orderList, GetRows(db, &orderList, sql, sqlParams...)
|
||||
}
|
||||
|
||||
func GetDailyBadCommentOrderCount(db *DaoDB, dateTime time.Time) (storeCountList []*model.StoreCount, err error) {
|
||||
sql := `
|
||||
SELECT jxstoreid store_id, COUNT(*) count
|
||||
FROM jx_bad_comments
|
||||
WHERE DATE(createtime) = DATE(?)
|
||||
GROUP BY jxstoreid
|
||||
`
|
||||
sqlParams := []interface{}{
|
||||
dateTime,
|
||||
}
|
||||
err = GetRows(db, &storeCountList, sql, sqlParams)
|
||||
|
||||
return storeCountList, err
|
||||
}
|
||||
|
||||
func GetDailyUnFinishOrderCount(db *DaoDB, dateTime time.Time) (storeCountList []*model.StoreCount, err error) {
|
||||
return GetDailyEndOrderCount(db, []int{model.OrderStatusCanceled}, false, dateTime)
|
||||
}
|
||||
|
||||
func GetDailyFinishOrderCount(db *DaoDB, dateTime time.Time) (storeCountList []*model.StoreCount, err error) {
|
||||
return GetDailyEndOrderCount(db, []int{model.OrderStatusFinished}, false, dateTime)
|
||||
}
|
||||
|
||||
func GetDailyAbsentGoodsOrderCount(db *DaoDB, dateTime time.Time) (storeCountList []*model.StoreCount, err error) {
|
||||
return GetDailyEndOrderCount(db, []int{model.OrderStatusFinished, model.OrderStatusCanceled}, true, dateTime)
|
||||
}
|
||||
|
||||
func GetDailyEndOrderCount(db *DaoDB, statusList []int, isAbsentOrder bool, dateTime time.Time) (storeCountList []*model.StoreCount, err error) {
|
||||
sql := `
|
||||
SELECT jx_store_id store_id, COUNT(*) count
|
||||
FROM goods_order
|
||||
WHERE DATE(order_finished_at) = DATE(?)
|
||||
`
|
||||
sqlParams := []interface{}{
|
||||
dateTime,
|
||||
}
|
||||
if len(statusList) > 0 {
|
||||
sql += ` AND status IN (` + GenQuestionMarks(len(statusList)) + `)`
|
||||
sqlParams = append(sqlParams, statusList)
|
||||
}
|
||||
if isAbsentOrder {
|
||||
sql += `
|
||||
AND adjust_count > 0
|
||||
`
|
||||
}
|
||||
sql += `
|
||||
GROUP BY jx_store_id`
|
||||
err = GetRow(db, &storeCountList, sql, sqlParams)
|
||||
|
||||
return storeCountList, err
|
||||
}
|
||||
|
||||
67
business/model/dao/store_score.go
Normal file
67
business/model/dao/store_score.go
Normal file
@@ -0,0 +1,67 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
)
|
||||
|
||||
func InsertStoreScore(storeScore *model.StoreScore) error {
|
||||
storeScore.CreatedAt = time.Now()
|
||||
return CreateEntity(nil, storeScore)
|
||||
}
|
||||
|
||||
func GetLatestWeeklyStoreScoreList(db *DaoDB, storeID, weekNum int) (storeScoreList []*model.StoreScoreEx, err error) {
|
||||
sql := `
|
||||
SELECT t2.name store_name, t1.* FROM store_score t1
|
||||
JOIN store t2 ON t1.store_id = t2.id
|
||||
WHERE t1.store_id = ?
|
||||
AND DATE(t1.score_date) >= DATE_SUB(
|
||||
DATE_SUB(
|
||||
CURDATE(),
|
||||
INTERVAL
|
||||
IF (
|
||||
DAYOFWEEK(CURDATE()) - 1 = 0,
|
||||
7,
|
||||
DAYOFWEEK(CURDATE()) - 1
|
||||
) DAY
|
||||
),
|
||||
INTERVAL ? DAY
|
||||
)
|
||||
AND DATE(t1.score_date) <= DATE_SUB(
|
||||
CURDATE(),
|
||||
INTERVAL
|
||||
IF (
|
||||
DAYOFWEEK(CURDATE()) - 1 = 0,
|
||||
7,
|
||||
DAYOFWEEK(CURDATE()) - 1
|
||||
) DAY
|
||||
)
|
||||
ORDER BY score_date DESC
|
||||
`
|
||||
if weekNum <= 0 {
|
||||
weekNum = 1
|
||||
}
|
||||
diffDays := weekNum*7 - 1
|
||||
sqlParams := []interface{}{
|
||||
storeID,
|
||||
diffDays,
|
||||
}
|
||||
err = GetRows(db, &storeScoreList, sql, sqlParams)
|
||||
return storeScoreList, err
|
||||
}
|
||||
|
||||
func CheckHasStoreScoreData(db *DaoDB, dateTime time.Time) (hasStoreScoreData bool, err error) {
|
||||
sql := `
|
||||
SELECT COUNT(*) count
|
||||
FROM store_score
|
||||
WHERE DATE(score_date) = DATE(?)
|
||||
`
|
||||
sqlParams := []interface{}{
|
||||
dateTime,
|
||||
}
|
||||
count := 0
|
||||
err = GetRow(db, &count, sql, sqlParams)
|
||||
hasStoreScoreData = count > 0
|
||||
return hasStoreScoreData, err
|
||||
}
|
||||
60
business/model/store_score.go
Normal file
60
business/model/store_score.go
Normal file
@@ -0,0 +1,60 @@
|
||||
package model
|
||||
|
||||
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 {
|
||||
ID int `orm:"column(id)" json:"id"`
|
||||
CreatedAt time.Time `orm:"auto_now_add;type(datetime)" json:"createdAt"`
|
||||
ScoreDate time.Time `orm:"auto_now_add;type(datetime)" json:"scoreDate"`
|
||||
StoreID int `orm:"column(store_id)" json:"storeID"`
|
||||
|
||||
StoreOpenTime int `orm:"column(store_open_time)" json:"storeOpenTime"`
|
||||
SaleSkuCount int `orm:"column(sale_sku_count)" json:"saleSkuCount"`
|
||||
AveragePickupTime int `orm:"column(average_pickup_time)" json:"averagePickupTime"`
|
||||
BadCommentOrder int `orm:"column(bad_comment_order)" json:"badCommentOrder"`
|
||||
UnfinishOrder int `orm:"column(unfinish_order)" json:"unfinishOrder"`
|
||||
AbsentGoodsOrder int `orm:"column(absent_Goods_order)" json:"absentGoodsOrder"`
|
||||
PromotionSku int `orm:"column(promotion_sku)" json:"promotionSku"`
|
||||
FullVendor int `orm:"column(full_vendor)" json:"fullVendor"`
|
||||
StoreRange int `orm:"column(store_range)" json:"storeRange"`
|
||||
SaleSkuPrice int `orm:"column(sale_sku_price)" json:"saleSkuPrice"`
|
||||
}
|
||||
|
||||
type StoreScoreEx struct {
|
||||
StoreScore
|
||||
StoreName string `json:"storeName"`
|
||||
}
|
||||
|
||||
type WeeklyStoreScore struct {
|
||||
StoreScoreEx
|
||||
BeginTime time.Time `json:"beginTime"`
|
||||
EndTime time.Time `json:"endTime"`
|
||||
TotalScore int `json:"totalScore"`
|
||||
ItemTotalScore int `json:"itemTotalScore"`
|
||||
Level int `json:"level"`
|
||||
}
|
||||
|
||||
type StoreCount struct {
|
||||
StoreID int `orm:"column(store_id)"`
|
||||
Count int
|
||||
}
|
||||
|
||||
type OrderPickupTime struct {
|
||||
StatusTime time.Time
|
||||
PickDeadline time.Time
|
||||
}
|
||||
Reference in New Issue
Block a user