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.
83 lines
3.0 KiB
83 lines
3.0 KiB
package statistics |
|
|
|
import ( |
|
"server/modules/backend/app" |
|
"server/modules/backend/models" |
|
utils "server/modules/backend/util" |
|
"server/modules/backend/values" |
|
|
|
"github.com/gin-gonic/gin" |
|
) |
|
|
|
func RechargeTrend(c *gin.Context) { |
|
a := app.NewApp(c) |
|
defer func() { |
|
a.Response() |
|
}() |
|
req := new(values.RechargeTrendReq) |
|
if !a.S(req) { |
|
return |
|
} |
|
|
|
var resp values.RechargeTrendResp |
|
|
|
var oneDay int64 = 24 * 60 * 60 |
|
su, eu := utils.GetQueryUnix(req.Start, req.End) |
|
|
|
for i := su; i < eu; i += oneDay { |
|
s := i |
|
e := i + oneDay |
|
resp.List = append(resp.List, getRechargeTrendInfo(&s, &e, req.Channel)) |
|
} |
|
|
|
a.Data = resp |
|
} |
|
|
|
func getRechargeTrendInfo(s, e *int64, channel *int) values.RechargeTrendInfo { |
|
var rechargeTrendInfo values.RechargeTrendInfo |
|
|
|
// 日期 |
|
rechargeTrendInfo.Date = *s |
|
|
|
// 总充值订单数:当天所有用户创建充值订单数 |
|
rechargeTrendInfo.RechargeOrderCount = models.GetCreateOrderCountBySql(channel, *s, *e) |
|
|
|
// 成功充值订单数(全):成功支付(√) 按回调统计 |
|
rechargeTrendInfo.RechargeOrderSuccessCount = models.GetSuccessRechargeOrderCountBySql(channel, *s, *e) |
|
|
|
// 新用户充值总订单数 |
|
rechargeTrendInfo.NewRechargeOrderCount = models.GetNewRechargeOrderCountBySql(channel, *s, *e) |
|
|
|
// 新用户充值订单数:当天新用户成功充值的订单(按回调统计) |
|
rechargeTrendInfo.NewRechargeSuccessOrderCount = models.GetNewRechargeSuccessOrderCountBySql(channel, *s, *e) |
|
|
|
// 新用户充值成功率 |
|
rechargeTrendInfo.NewRechargeSuccessPer = utils.GetPer(rechargeTrendInfo.NewRechargeSuccessOrderCount, rechargeTrendInfo.NewRechargeOrderCount) |
|
|
|
// 充值订单人数(全):创建订单总人数 |
|
rechargeTrendInfo.CreateRechargeOrderPlayerCount = models.GetCreateOrderPlayerCountBySql(channel, *s, *e) |
|
|
|
// 充值成功人数(全):充值成功的总人数 |
|
rechargeTrendInfo.RechargeSuccessPlayerCount = models.GetOrderSuccessPlayerCountBySql(channel, *s, *e) |
|
|
|
// 新用户人数:充值成功的新用户人数 |
|
rechargeTrendInfo.NewRechargeSuccessPlayerCount = models.GetOrderSuccessNewPlayerCountBySql(channel, *s, *e) |
|
|
|
// 充值总金额 |
|
rechargeTrendInfo.RechargeAmount = models.GetAmountTotalBySQL(*s, *e, channel) |
|
// 充值成功率 |
|
rechargeTrendInfo.RechargeSuccessPer = utils.GetPer(rechargeTrendInfo.RechargeOrderSuccessCount, rechargeTrendInfo.RechargeOrderCount) |
|
|
|
// var channelStr *string |
|
// if channel != nil { |
|
// str := strconv.Itoa(*channel) |
|
// channelStr = &str |
|
// } |
|
// var status = 1 |
|
// rechargeTrendInfo.PayOrderTrigger = models.GetKeyCountByStatus(s, e, channelStr, nil, "PayOrderTrigger", nil) |
|
// rechargeTrendInfo.PayOrderSuccess = models.GetKeyCountByStatus(s, e, channelStr, nil, "PayOrderSuccess", nil) |
|
// rechargeTrendInfo.NewPayOrderTrigger = models.GetKeyCountByStatus(s, e, channelStr, nil, "PayOrderTrigger", &status) |
|
// rechargeTrendInfo.NewPayOrderSuccess = models.GetKeyCountByStatus(s, e, channelStr, nil, "PayOrderSuccess", &status) |
|
|
|
return rechargeTrendInfo |
|
}
|
|
|