diff --git a/business/model/dao/dao_order.go b/business/model/dao/dao_order.go index b95b7ccf6..50150d87e 100644 --- a/business/model/dao/dao_order.go +++ b/business/model/dao/dao_order.go @@ -1,7 +1,6 @@ package dao import ( - "fmt" "time" "git.rosy.net.cn/baseapi/utils" @@ -194,63 +193,64 @@ func GetPayStatistics(db *DaoDB, userID string, pop int, cityCodes []int, mobile sqlParams := []interface{}{} getWhereSql := func(sqlP []interface{}) (sql string) { if len(orderTypes) > 0 { - sql += ` AND order_type IN ` + GenQuestionMarks(len(orderTypes)) + `)` + sql += ` AND b.order_type IN ` + GenQuestionMarks(len(orderTypes)) + `)` sqlP = append(sqlP, orderTypes) } if fromTime != utils.ZeroTimeValue { - sql += ` AND created_at > ?` + sql += ` AND b.created_at > ?` sqlP = append(sqlP, fromTime) } if toTime != utils.ZeroTimeValue { - sql += ` AND created_at < ?` + sql += ` AND b.created_at < ?` sqlP = append(sqlP, toTime) } return sql } - sql := ` - SELECT SUM(IFNULL(t1.pay_price,0)) total_pay, SUM(IFNULL(t2.pay_price,0)) submit_cash + SUM(IFNULL(t3.account_balance,0)) can_cash, t3.account_balance, t4.cashed, t4.cashed / 10 cash_income - FROM user a - LEFT JOIN ` + "`order` t1" + ` WHERE type = ? AND status = ? ` + getWhereSql(sqlParams) + ` ON t1.user_id = a.user_id - LEFT JOIN ` + "`order` t2" + ` WHERE type = ? AND status = ?` + getWhereSql(sqlParams) + `ON t2.user_id = a.user_id - LEFT JOIN user_bill t3 ON t3.user_id = a.user_id - LEFT JOIN ` + "`order` t4" + ` WHERE type = ? AND status = ?` + getWhereSql(sqlParams) + `ON t4.user_id = a.user_id - ` - sqlParams = append(sqlParams, model.OrderTypePay, model.OrderStatusFinished) - sqlParams = append(sqlParams, model.OrderTypeCash, model.OrderStatusWait4Pay) - sqlParams = append(sqlParams, model.OrderTypeCash, model.OrderStatusFinished) - if mobile != "" { - if pop == 1 { - sql += " JOIN user e ON e.moblie = ? AND a.pop_user = e.user_id" - sqlParams = append(sqlParams, mobile) + getFromSql := func(sqlP []interface{}, orderType, status int, alies string) (sql string) { + sql += ` + (SELECT SUM(IFNULL(b.pay_price,0)) total_pay + FROM user a + JOIN ` + "`order` b" + `ON b.user_id = a.user_id AND b.type = ? AND b.status = ? ` + getWhereSql(sqlP) + ` + ` + sqlP = append(sqlP, orderType, status) + if mobile != "" { + if pop == 1 { + sql += " JOIN user e ON e.moblie = ? AND a.pop_user = e.user_id" + sqlP = append(sqlP, mobile) + } } - } - sql += ` - WHERE 1 = 1 - ` - if userID != "" { - if pop == 1 { - sql += " AND a.pop_user = ?" - sqlParams = append(sqlParams, userID) - } else { - sql += " AND a.user_id = ?" - sqlParams = append(sqlParams, userID) + sql += ` + WHERE 1 = 1 + ` + if userID != "" { + if pop == 1 { + sql += " AND a.pop_user = ?" + sqlP = append(sqlP, userID) + } else { + sql += " AND a.user_id = ?" + sqlP = append(sqlP, userID) + } } - } - if mobile != "" { - if pop == 0 { - sql += " AND a.mobile = ?" - sqlParams = append(sqlParams, mobile) + if mobile != "" { + if pop == 0 { + sql += " AND a.mobile = ?" + sqlP = append(sqlP, mobile) + } } + if len(cityCodes) > 0 { + sql += ` AND a.city_code IN ` + GenQuestionMarks(len(cityCodes)) + `)` + sqlP = append(sqlP, cityCodes) + } + sql += `) ` + alies + return sql } - if len(cityCodes) > 0 { - sql += ` AND a.city_code IN ` + GenQuestionMarks(len(cityCodes)) + `)` - sqlParams = append(sqlParams, cityCodes) - } - fmt.Println(sql) - fmt.Println(sqlParams) + sql := `SELECT t1.total_pay, t2.total_pay submit_cash, t3.total_pay cashed + FROM ` + sql += getFromSql(sqlParams, model.OrderTypePay, model.OrderStatusFinished, "t1") + "," + sql += getFromSql(sqlParams, model.OrderTypeCash, model.OrderStatusWait4Pay, "t2") + "," + sql += getFromSql(sqlParams, model.OrderTypeCash, model.OrderStatusFinished, "t3") + "," + sql += " user_bill " err = GetRow(db, &getPayStatisticsResult, sql, sqlParams) - - fmt.Println(utils.Format4Output(getPayStatisticsResult, false)) sqlParams2 := []interface{}{} getPayStatisticsResult1 := &GetPayStatisticsResult{} sql2 := `