印度包网
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.

84 lines
3.0 KiB

1 year ago
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
}