1
This commit is contained in:
@@ -2,6 +2,7 @@ package dao
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"time"
|
||||
@@ -2011,3 +2012,86 @@ func GetAddressRiderInfo(db *DaoDB, address string) ([]*CourierInfo, error) {
|
||||
|
||||
return courier, nil
|
||||
}
|
||||
|
||||
func StaticStoreOrderChange(db *DaoDB, storeId []int, start, end time.Time, rank string) ([]*StoreOrderRank, error) {
|
||||
dailyOrders := `
|
||||
SELECT
|
||||
g.jx_store_id,
|
||||
DATE(g.order_created_at) AS order_date,
|
||||
COUNT(g.vendor_order_id) AS order_count
|
||||
FROM goods_order g WHERE 1=1 `
|
||||
dailyParam := []interface{}{}
|
||||
if len(storeId) != 0 {
|
||||
dailyOrders += ` AND g.jx_store_id IN (` + GenQuestionMarks(len(storeId)) + `)`
|
||||
dailyParam = append(dailyParam, storeId)
|
||||
}
|
||||
if utils.IsTimeZero(start) {
|
||||
dailyOrders += ` AND g.order_created_at >= ?`
|
||||
dailyParam = append(dailyParam, start)
|
||||
}
|
||||
if utils.IsTimeZero(end) {
|
||||
dailyOrders += ` AND g.order_created_at <= ?`
|
||||
dailyParam = append(dailyParam, start)
|
||||
}
|
||||
dailyOrders += ` AND g.status <> 115 GROUP BY g.jx_store_id,DATE(g.order_created_at) AS daily_orders `
|
||||
|
||||
storeTotals := `
|
||||
SELECT
|
||||
jx_store_id,
|
||||
SUM(order_count) AS total_orders
|
||||
FROM (
|
||||
SELECT
|
||||
g.jx_store_id,
|
||||
COUNT(g.vendor_order_id) AS order_count
|
||||
FROM goods_order g
|
||||
WHERE 1=1 `
|
||||
if len(storeId) != 0 {
|
||||
storeTotals += ` AND g.jx_store_id IN (` + GenQuestionMarks(len(storeId)) + `)`
|
||||
dailyParam = append(dailyParam, storeId)
|
||||
}
|
||||
if utils.IsTimeZero(start) {
|
||||
storeTotals += ` AND g.order_created_at >= ?`
|
||||
dailyParam = append(dailyParam, start)
|
||||
}
|
||||
if utils.IsTimeZero(end) {
|
||||
storeTotals += ` AND g.order_created_at <= ?`
|
||||
dailyParam = append(dailyParam, start)
|
||||
}
|
||||
storeTotals += ` AND g.status <> 115 GROUP BY g.jx_store_id ) AS store_counts GROUP BY jx_store_id) AS store_totals `
|
||||
|
||||
lastSql := `
|
||||
SELECT
|
||||
daily_orders.jx_store_id,
|
||||
s.name,
|
||||
daily_orders.order_date,
|
||||
daily_orders.order_count,
|
||||
store_totals.total_orders
|
||||
FROM (
|
||||
`
|
||||
lastSql += dailyOrders
|
||||
lastSql += `JOIN ` + storeTotals
|
||||
lastSql += `ON daily_orders.jx_store_id = store_totals.jx_store_id
|
||||
JOIN store s ON s.id = daily_orders.jx_store_id
|
||||
ORDER BY store_totals.total_orders ?,daily_orders.jx_store_id,daily_orders.order_date`
|
||||
if rank != "" {
|
||||
dailyParam = append(dailyParam, rank)
|
||||
} else {
|
||||
dailyParam = append(dailyParam, "DESC")
|
||||
}
|
||||
globals.SugarLogger.Debugf("-----sql := %s", lastSql)
|
||||
globals.SugarLogger.Debugf("-----dailyParam := %s", utils.Format4Output(dailyParam, false))
|
||||
data := make([]*StoreOrderRank, 0, 0)
|
||||
if err := GetRows(db, &data, lastSql, dailyParam...); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return data, nil
|
||||
}
|
||||
|
||||
// StoreOrderRank 门店订单排名
|
||||
type StoreOrderRank struct {
|
||||
JxStoreId int `json:"jx_store_id"`
|
||||
Name string `json:"name"`
|
||||
OrderDate string `json:"order_date"`
|
||||
OrderCount int `json:"order_count"`
|
||||
TotalOrders int `json:"total_orders"`
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user