This commit is contained in:
苏尹岚
2021-01-04 09:18:27 +08:00
parent 24b2247a1f
commit e2b67fd1cb

View File

@@ -185,11 +185,13 @@ type GetPayStatisticsResult struct {
SubmitCash int `json:"submitCash"` //申请提现 SubmitCash int `json:"submitCash"` //申请提现
Cashed int `json:"cashed"` //已经体现 Cashed int `json:"cashed"` //已经体现
CashIncome int `json:"cashIncome"` //提现收益 CashIncome int `json:"cashIncome"` //提现收益
TotalIncome int `json:"totalIncome"` //收益总额
MemberIncome int `json:"memberIncome"` //会员收益
} }
func GetPayStatistics(db *DaoDB, userID string, pop int, cityCodes []int, mobile string, fromTime, toTime time.Time, orderTypes []int) (getPayStatisticsResult *GetPayStatisticsResult, err error) { func GetPayStatistics(db *DaoDB, userID string, pop int, cityCodes []int, mobile string, fromTime, toTime time.Time, orderTypes []int) (getPayStatisticsResult *GetPayStatisticsResult, err error) {
sqlParams := []interface{}{} sqlParams := []interface{}{}
getWhereSql := func(fromTime, toTime time.Time, orderTypes []int) (sql string) { getWhereSql := func() (sql string) {
if len(orderTypes) > 0 { if len(orderTypes) > 0 {
sql += ` AND order_type IN ` + GenQuestionMarks(len(orderTypes)) + `)` sql += ` AND order_type IN ` + GenQuestionMarks(len(orderTypes)) + `)`
sqlParams = append(sqlParams, orderTypes) sqlParams = append(sqlParams, orderTypes)
@@ -207,10 +209,10 @@ func GetPayStatistics(db *DaoDB, userID string, pop int, cityCodes []int, mobile
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 t1.total_pay, t2.submit_cash + t3.account_balance can_cash, t3.account_balance, t4.cashed, t4.cashed / 10 cash_income
FROM user a FROM user a
LEFT JOIN (SELECT SUM(pay_price) total_pay, user_id FROM order WHERE type = ? AND status = ? ` + getWhereSql(fromTime, toTime, orderTypes) + ` GROUP BY 2) t1 ON t1.user_id = a.user_id 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(fromTime, toTime, orderTypes) + ` GROUP BY 2) t2 ON t2.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 user_bill t3 ON t3.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(fromTime, toTime, orderTypes) + ` 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() + ` GROUP BY 2) t4 ON t4.user_id = a.user_id
` `
sqlParams = append(sqlParams, model.OrderTypePay, model.OrderStatusFinished) sqlParams = append(sqlParams, model.OrderTypePay, model.OrderStatusFinished)
sqlParams = append(sqlParams, model.OrderTypeCash, model.OrderStatusWait4Pay) sqlParams = append(sqlParams, model.OrderTypeCash, model.OrderStatusWait4Pay)
@@ -244,49 +246,69 @@ func GetPayStatistics(db *DaoDB, userID string, pop int, cityCodes []int, mobile
sqlParams = append(sqlParams, cityCodes) sqlParams = append(sqlParams, cityCodes)
} }
err = GetRow(db, &getPayStatisticsResult, sql, sqlParams) err = GetRow(db, &getPayStatisticsResult, sql, sqlParams)
return getPayStatisticsResult, err
}
type GetIncomeStatisticsResult struct { sqlParams2 := []interface{}{}
TotalIncome int `json:"totalIncome"` //收益总额 getWhereSql2 := func() (sql string) {
MemberIncome int `json:"memberIncome"` //会员收益 sql += ` AND order_type = ?`
sqlParams = append(sqlParams, model.OrderTpyeMember)
if fromTime != utils.ZeroTimeValue {
sql += ` AND created_at > ?`
sqlParams = append(sqlParams, fromTime)
} }
if toTime != utils.ZeroTimeValue {
func GetIncomeStatistics(db *DaoDB, userID string, pop int, cityCodes []int, mobile string, fromTime, toTime time.Time) (getIncomeStatisticsResult *GetIncomeStatisticsResult, err error) { sql += ` AND created_at < ?`
sqlParams := []interface{}{} sqlParams = append(sqlParams, toTime)
sql := ` }
SELECT return sql
FROM user a }
JOIN sql2 := `
` SELECT t2.member_income1 + t3.member_income2 member_income
FROM (SELECT DISTINCT a.user_id FROM user a`
if mobile != "" { if mobile != "" {
if pop == 1 { if pop == 1 {
sql += " JOIN user e ON e.moblie = ? AND a.pop_user = e.user_id" sql2 += " JOIN user e ON e.moblie = ? AND a.pop_user = e.user_id"
sqlParams = append(sqlParams, mobile) sqlParams = append(sqlParams, mobile)
}
}
sql += `
WHERE 1 = 1
`
if userID != "" {
if pop == 1 {
sql += " AND a.pop_user = ?"
sqlParams = append(sqlParams, userID)
} else { } else {
sql += " AND a.user_id = ?" sql2 += " AND a.mobile = ?"
sqlParams = append(sqlParams, userID)
}
}
if mobile != "" {
if pop == 0 {
sql += " AND a.mobile = ?"
sqlParams = append(sqlParams, mobile) sqlParams = append(sqlParams, mobile)
} }
} }
if len(cityCodes) > 0 { if len(cityCodes) > 0 {
sql += ` AND a.city_code IN ` + GenQuestionMarks(len(cityCodes)) + `)` sql2 += ` AND a.city_code IN ` + GenQuestionMarks(len(cityCodes)) + `)`
sqlParams = append(sqlParams, cityCodes) sqlParams = append(sqlParams, cityCodes)
} }
err = GetRow(db, &getIncomeStatisticsResult, sql, sqlParams) if userID != "" {
if pop == 1 {
sql2 += " AND a.pop_user = ?"
sqlParams = append(sqlParams, userID)
} else {
sql2 += " AND a.user_id = ?"
sqlParams = append(sqlParams, userID)
}
}
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(b.expend_price) member_income2
FROM user_bill b
LEFT JOIN bill_expend c ON c.bill_id = b.bill_id AND c.type = ?
`
sqlParams = append(sqlParams, model.OrderTypePay, model.OrderStatusFinished, model.BillTypeMember)
if fromTime != utils.ZeroTimeValue {
sql2 += ` AND c.created_at > ?`
sqlParams = append(sqlParams, fromTime)
}
if toTime != utils.ZeroTimeValue {
sql2 += ` AND c.created_at < ?`
sqlParams = append(sqlParams, toTime)
}
sql2 += `
WHERE b.user_id = t1.user_id) t3
`
err = GetRow(db, &getPayStatisticsResult, sql2, sqlParams2)
return getPayStatisticsResult, err
}
func GetIncomeStatistics(db *DaoDB, userID string, pop int, cityCodes []int, mobile string, fromTime, toTime time.Time) (getIncomeStatisticsResult *GetIncomeStatisticsResult, err error) {
return getIncomeStatisticsResult, err return getIncomeStatisticsResult, err
} }