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
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
|
||
|
|
}
|