diff --git a/business/model/dao/dao_order.go b/business/model/dao/dao_order.go index 47ac825e5..b95b7ccf6 100644 --- a/business/model/dao/dao_order.go +++ b/business/model/dao/dao_order.go @@ -208,12 +208,12 @@ func GetPayStatistics(db *DaoDB, userID string, pop int, cityCodes []int, mobile 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 + 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 (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 ` + "`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 (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 + 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) @@ -252,6 +252,7 @@ func GetPayStatistics(db *DaoDB, userID string, pop int, cityCodes []int, mobile fmt.Println(utils.Format4Output(getPayStatisticsResult, false)) sqlParams2 := []interface{}{} + getPayStatisticsResult1 := &GetPayStatisticsResult{} sql2 := ` SELECT SUM(IFNULL(d.expend_price,0)) member_income FROM user a` @@ -264,6 +265,22 @@ func GetPayStatistics(db *DaoDB, userID string, pop int, cityCodes []int, mobile sqlParams2 = append(sqlParams2, mobile) } } + sql2 += ` + LEFT JOIN user_bill c ON c.user_id = a.user_id + LEFT JOIN bill_expend d ON d.bill_id = c.bill_id AND d.type = ? + ` + if fromTime != utils.ZeroTimeValue { + sql2 += ` AND d.created_at > ?` + sqlParams2 = append(sqlParams2, fromTime) + } + if toTime != utils.ZeroTimeValue { + sql2 += ` AND d.created_at < ?` + sqlParams2 = append(sqlParams2, toTime) + } + sql2 += ` + WHERE a.status = ? AND a.deleted_at = ? + ` + sqlParams2 = append(sqlParams2, model.BillTypeMember, model.UserStatusNormal, utils.DefaultTimeValue) if len(cityCodes) > 0 { sql2 += ` AND a.city_code IN ` + GenQuestionMarks(len(cityCodes)) + `)` sqlParams2 = append(sqlParams2, cityCodes) @@ -277,23 +294,8 @@ func GetPayStatistics(db *DaoDB, userID string, pop int, cityCodes []int, mobile sqlParams2 = append(sqlParams2, userID) } } - sql2 += ` - LEFT JOIN user_bill c ON c.user_id = a.user_id - LEFT JOIN bill_expend d ON d.bill_id = c.bill_id AND d.type = ? - WHERE a.status = ? AND a.deleted_at = ? - ` - sqlParams2 = append(sqlParams2, model.BillTypeMember, model.UserStatusNormal, utils.DefaultTimeValue) - if fromTime != utils.ZeroTimeValue { - sql2 += ` AND d.created_at > ?` - sqlParams2 = append(sqlParams2, fromTime) - } - if toTime != utils.ZeroTimeValue { - sql2 += ` AND d.created_at < ?` - sqlParams2 = append(sqlParams2, toTime) - } - fmt.Println(sql2) - fmt.Println(sqlParams2) - err = GetRow(db, &getPayStatisticsResult, sql2, sqlParams2) - fmt.Println(utils.Format4Output(getPayStatisticsResult, false)) + err = GetRow(db, &getPayStatisticsResult1, sql2, sqlParams2) + getPayStatisticsResult.MemberIncome = getPayStatisticsResult1.MemberIncome + getPayStatisticsResult.TotalIncome = getPayStatisticsResult.MemberIncome + getPayStatisticsResult.CashIncome return getPayStatisticsResult, err }