This commit is contained in:
邹宗楠
2025-12-22 17:40:50 +08:00
parent 1ad75133e5
commit 37d7e9edd8
8 changed files with 61610 additions and 61255 deletions

View File

@@ -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"`
}