You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
3.0 KiB
93 lines
3.0 KiB
package statistics |
|
|
|
import ( |
|
"fmt" |
|
"server/common" |
|
"server/db" |
|
"server/modules/backend/app" |
|
"server/modules/backend/models" |
|
utils "server/modules/backend/util" |
|
"server/modules/backend/values" |
|
"time" |
|
|
|
"github.com/gin-gonic/gin" |
|
"github.com/liangdas/mqant/log" |
|
) |
|
|
|
// WithdrawListData 获取退出统计数据 |
|
func WithdrawListData(c *gin.Context) { |
|
a := app.NewApp(c) |
|
defer func() { |
|
a.Response() |
|
}() |
|
req := new(values.WithdrawDataReq) |
|
if !a.S(req) { |
|
return |
|
} |
|
start := req.Start |
|
end := req.End |
|
if start > end { |
|
a.Code = values.CodeParam |
|
a.Msg = "查询时间不合法" |
|
return |
|
} |
|
resp := values.WithdrawDataResp{} |
|
var ret []values.OneWithdrawData |
|
var oneDay int64 = 24 * 60 * 60 |
|
s, e := utils.GetQueryUnix(req.Start, req.End) |
|
skipStart := s + int64((req.Page-1)*req.Num)*oneDay |
|
skipEnd := s + int64(req.Page*req.Num)*oneDay |
|
if skipEnd > e { |
|
skipEnd = e |
|
} |
|
|
|
for i := skipEnd; i > skipStart; i -= oneDay { |
|
j := i - oneDay |
|
t := time.Unix(j, 0).Format("2006/01/02") |
|
// t1 := time.Unix(i, 0).Format("2006/01/02") |
|
// log.Debug("i:%v,j:%v,t:%v,t1:%v", i, j, t, t1) |
|
m := &common.RechargeOrder{} |
|
one := values.OneWithdrawData{} |
|
one.Date = t |
|
// one.Active = models.GetActive(&j, &i, false, false) |
|
con := fmt.Sprintf(`create_time > %d and create_time < %d and event = %v`, j, i, common.CurrencyEventWithDraw) |
|
one.WithdrawNum = db.Mysql().DistinctCount(m, con, "uid") |
|
one.WithdrawTotal = db.Mysql().Count(m, con) |
|
con1 := con + fmt.Sprintf(" and status = %v", common.StatusROrderFinish) |
|
one.SuccessCount = db.Mysql().Count(m, con1) |
|
// con2 := con + fmt.Sprintf(" and status = %v", common.StatusROrderRefuse) |
|
// one.RefuseCount = db.Mysql().Count(m, con2) |
|
con3 := con + fmt.Sprintf(" and status = %v", common.StatusROrderPay) |
|
one.PayingCount = db.Mysql().Count(m, con3) |
|
con4 := con + fmt.Sprintf(" and status = %v", common.StatusROrderFail) |
|
one.FailCount = db.Mysql().Count(m, con4) |
|
one.WithdrawPer = utils.GetPer(one.WithdrawTotal, one.Active) |
|
one.SuccessPer = utils.GetPer(one.SuccessCount, one.WithdrawTotal) |
|
one.WithdrawAmount = db.Mysql().Sum(m, con1, "amount") |
|
one.WithdrawCost = db.Mysql().Sum(m, con1, "withdraw_cash") |
|
one.DayRecharge = models.GetRechargeTotal(&j, &i, false) |
|
|
|
// 退出成功的金额 |
|
one.WithdrawSuccessAmount = getWithDrawAmountBySql(j, i, common.StatusROrderFinish) |
|
// 打款中的金额 |
|
one.PayingAmount = getWithDrawAmountBySql(j, i, common.StatusROrderCreate) |
|
//re := &common.RechargeInfo{UID: req.UID} |
|
//db.Mysql().Get(re) |
|
|
|
ret = append(ret, one) |
|
} |
|
|
|
resp.List = ret |
|
a.Data = resp |
|
} |
|
|
|
// 退出成功金额 |
|
func getWithDrawAmountBySql(s, e int64, event int) int64 { |
|
var Amount int64 |
|
amountTotal := `SELECT SUM(amount) as RechargeAmount FROM recharge_order WHERE event = %v AND status = %v AND u.create_time >= %d AND u.create_time < %d` |
|
err := db.Mysql().QueryBySql(fmt.Sprintf(amountTotal, common.CurrencyEventWithDraw, event, s, e), &Amount) |
|
if err != nil { |
|
log.Error("查询用户总退出失败, error : [%s]", err.Error()) |
|
} |
|
return Amount |
|
}
|
|
|