From 8a4bf159f83e7f9118ae9f7e39ba356a27fdc2c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Mon, 4 Jan 2021 10:55:07 +0800 Subject: [PATCH] aa --- business/model/dao/dao_order.go | 40 ++++++++++++++++----------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/business/model/dao/dao_order.go b/business/model/dao/dao_order.go index c9d64799e..ff97979d1 100644 --- a/business/model/dao/dao_order.go +++ b/business/model/dao/dao_order.go @@ -192,28 +192,28 @@ type GetPayStatisticsResult struct { func GetPayStatistics(db *DaoDB, userID string, pop int, cityCodes []int, mobile string, fromTime, toTime time.Time, orderTypes []int) (getPayStatisticsResult *GetPayStatisticsResult, err error) { sqlParams := []interface{}{} - getWhereSql := func() (sql string) { + getWhereSql := func(sqlP []interface{}) (sql string) { if len(orderTypes) > 0 { sql += ` AND order_type IN ` + GenQuestionMarks(len(orderTypes)) + `)` - sqlParams = append(sqlParams, orderTypes) + sqlP = append(sqlP, orderTypes) } if fromTime != utils.ZeroTimeValue { sql += ` AND created_at > ?` - sqlParams = append(sqlParams, fromTime) + sqlP = append(sqlP, fromTime) } if toTime != utils.ZeroTimeValue { sql += ` AND created_at < ?` - sqlParams = append(sqlParams, toTime) + sqlP = append(sqlP, toTime) } return sql } sql := ` SELECT t1.total_pay, t2.submit_cash + t3.account_balance can_cash, t3.account_balance, t4.cashed, t4.cashed / 10 cash_income FROM user a - LEFT JOIN (SELECT SUM(pay_price) total_pay, user_id FROM ` + "`order`" + ` WHERE type = ? AND status = ? ` + getWhereSql() + ` GROUP BY 2) t1 ON t1.user_id = a.user_id - LEFT JOIN (SELECT SUM(pay_price) submit_cash, user_id FROM ` + "`order`" + ` WHERE type = ? AND status = ?` + getWhereSql() + ` GROUP BY 2) t2 ON t2.user_id = a.user_id + LEFT JOIN (SELECT SUM(pay_price) total_pay, user_id FROM ` + "`order`" + ` WHERE type = ? AND status = ? ` + getWhereSql(sqlParams) + ` GROUP BY 2) t1 ON t1.user_id = a.user_id + LEFT JOIN (SELECT SUM(pay_price) submit_cash, user_id FROM ` + "`order`" + ` WHERE type = ? AND status = ?` + getWhereSql(sqlParams) + ` GROUP BY 2) t2 ON t2.user_id = a.user_id LEFT JOIN user_bill t3 ON t3.user_id = a.user_id - LEFT JOIN (SELECT SUM(pay_price) cashed, user_id FROM ` + "`order`" + ` WHERE type = ? AND status = ?` + getWhereSql() + ` GROUP BY 2) t4 ON t4.user_id = a.user_id + LEFT JOIN (SELECT SUM(pay_price) cashed, user_id FROM ` + "`order`" + ` WHERE type = ? AND status = ?` + getWhereSql(sqlParams) + ` GROUP BY 2) t4 ON t4.user_id = a.user_id ` sqlParams = append(sqlParams, model.OrderTypePay, model.OrderStatusFinished) sqlParams = append(sqlParams, model.OrderTypeCash, model.OrderStatusWait4Pay) @@ -252,19 +252,6 @@ func GetPayStatistics(db *DaoDB, userID string, pop int, cityCodes []int, mobile fmt.Println(utils.Format4Output(getPayStatisticsResult, false)) sqlParams2 := []interface{}{} - getWhereSql2 := func() (sql string) { - sql += ` AND order_type = ?` - sqlParams2 = append(sqlParams2, model.OrderTpyeMember) - if fromTime != utils.ZeroTimeValue { - sql += ` AND created_at > ?` - sqlParams2 = append(sqlParams2, fromTime) - } - if toTime != utils.ZeroTimeValue { - sql += ` AND created_at < ?` - sqlParams2 = append(sqlParams2, toTime) - } - return sql - } sql2 := ` SELECT t2.member_income1 + t3.member_income2 member_income FROM (SELECT DISTINCT a.user_id FROM user a` @@ -291,7 +278,18 @@ func GetPayStatistics(db *DaoDB, userID string, pop int, cityCodes []int, mobile } } sql2 += `) t1 - LEFT JOIN (SELECT SUM(pay_price) member_income1, user_id FROM ` + "`order`" + ` WHERE type = ? AND status = ? ` + getWhereSql2() + ` AND user_id = t1.user_id GROUP BY 2) t2 + LEFT JOIN (SELECT SUM(pay_price) member_income1, user_id FROM ` + "`order`" + ` WHERE type = ? AND status = ? ` + sql2 += ` AND order_type = ?` + sqlParams2 = append(sqlParams2, model.OrderTpyeMember) + if fromTime != utils.ZeroTimeValue { + sql += ` AND created_at > ?` + sqlParams2 = append(sqlParams2, fromTime) + } + if toTime != utils.ZeroTimeValue { + sql += ` AND created_at < ?` + sqlParams2 = append(sqlParams2, toTime) + } + sql2 += ` AND user_id = t1.user_id GROUP BY 2) t2 LEFT JOIN (SELECT SUM(b.expend_price) member_income2 FROM user_bill b LEFT JOIN bill_expend c ON c.bill_id = b.bill_id AND c.type = ?