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 }