1、优化营收分析接口,"当前有效用户数"之前只计算了当月和上个月数据;目前已改成统计当月之前的所有数据。
This commit is contained in:
parent
e8fc850ca1
commit
962802d54f
|
@ -7,6 +7,7 @@ import (
|
||||||
"github.com/go-admin-team/go-admin-core/logger"
|
"github.com/go-admin-team/go-admin-core/logger"
|
||||||
"github.com/go-admin-team/go-admin-core/sdk/pkg/response"
|
"github.com/go-admin-team/go-admin-core/sdk/pkg/response"
|
||||||
"go-admin/app/admin/models"
|
"go-admin/app/admin/models"
|
||||||
|
"gorm.io/gorm"
|
||||||
"net/http"
|
"net/http"
|
||||||
"sort"
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
@ -2056,26 +2057,44 @@ func (e MiGuDeployService) CalculateRevenueAnalysis(c *gin.Context) {
|
||||||
|
|
||||||
// 查询每个月的上个月未退订用户数
|
// 查询每个月的上个月未退订用户数
|
||||||
for i := 0; i < len(result); i++ {
|
for i := 0; i < len(result); i++ {
|
||||||
// 获取当前记录的月份
|
|
||||||
currentMonth := result[i].Month
|
currentMonth := result[i].Month
|
||||||
|
|
||||||
// 计算上个月的月份字符串
|
// 查询当前月之前所有月份未退订的用户数
|
||||||
currentMonthDate, _ := time.Parse("2006-01", currentMonth)
|
totalValidUsers, err := GetTotalValidUsers(e.Orm, currentMonth)
|
||||||
lastMonth := currentMonthDate.AddDate(0, -1, 0).Format("2006-01")
|
|
||||||
|
|
||||||
// 查询上个月未退订的用户数
|
|
||||||
var lastMonthValidUsersCount int64
|
|
||||||
err = e.Orm.Model(&models.MgOrder{}).
|
|
||||||
Where("unsubscribe_time IS NULL").
|
|
||||||
Where("DATE_FORMAT(subscribe_time, '%Y-%m') = ?", lastMonth).
|
|
||||||
Count(&lastMonthValidUsersCount).Error
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
response.Error(c, http.StatusInternalServerError, err, "上个月数据查询失败")
|
response.Error(c, http.StatusInternalServerError, err, "未退订用户查询失败")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 将上个月的未退订用户数累加到当前月的有效用户数
|
// 查询当前月之前所有月份在本月2号之后退订的用户数
|
||||||
result[i].ValidUsersCount += int(lastMonthValidUsersCount)
|
totalUnsubscribedUsers, err := GetTotalUnsubscribedUsers(e.Orm, currentMonth)
|
||||||
|
if err != nil {
|
||||||
|
response.Error(c, http.StatusInternalServerError, err, "退订用户查询失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
result[i].ValidUsersCount += totalValidUsers + totalUnsubscribedUsers
|
||||||
|
|
||||||
|
//// 获取当前记录的月份
|
||||||
|
//currentMonth := result[i].Month
|
||||||
|
//
|
||||||
|
//// 计算上个月的月份字符串
|
||||||
|
//currentMonthDate, _ := time.Parse("2006-01", currentMonth)
|
||||||
|
//lastMonth := currentMonthDate.AddDate(0, -1, 0).Format("2006-01")
|
||||||
|
//
|
||||||
|
//// 查询上个月未退订的用户数
|
||||||
|
//var lastMonthValidUsersCount int64
|
||||||
|
//err = e.Orm.Model(&models.MgOrder{}).
|
||||||
|
// Where("unsubscribe_time IS NULL").
|
||||||
|
// Where("DATE_FORMAT(subscribe_time, '%Y-%m') = ?", lastMonth).
|
||||||
|
// Count(&lastMonthValidUsersCount).Error
|
||||||
|
//if err != nil {
|
||||||
|
// response.Error(c, http.StatusInternalServerError, err, "上个月数据查询失败")
|
||||||
|
// return
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//// 将上个月的未退订用户数累加到当前月的有效用户数
|
||||||
|
//result[i].ValidUsersCount += int(lastMonthValidUsersCount)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 计算总的新用户数和有效用户数
|
// 计算总的新用户数和有效用户数
|
||||||
|
@ -2095,6 +2114,46 @@ func (e MiGuDeployService) CalculateRevenueAnalysis(c *gin.Context) {
|
||||||
response.OK(c, resp, "查询成功")
|
response.OK(c, resp, "查询成功")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetTotalValidUsers 计算所有之前月份的未退订用户总数
|
||||||
|
func GetTotalValidUsers(db *gorm.DB, currentMonth string) (int, error) {
|
||||||
|
var totalValidUsers int
|
||||||
|
|
||||||
|
err := db.Raw(`
|
||||||
|
SELECT
|
||||||
|
COUNT(*)
|
||||||
|
FROM mg_order
|
||||||
|
WHERE unsubscribe_time IS NULL
|
||||||
|
AND DATE_FORMAT(subscribe_time, '%Y-%m') < ?`, currentMonth).Scan(&totalValidUsers).Error
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return totalValidUsers, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetTotalUnsubscribedUsers 计算所有之前月份在本月2号之后退订的用户总数
|
||||||
|
func GetTotalUnsubscribedUsers(db *gorm.DB, currentMonth string) (int, error) {
|
||||||
|
var totalUnsubscribedUsers int
|
||||||
|
|
||||||
|
// 计算当前月份的 2 号 00:00:00
|
||||||
|
currentMonthFirstDay := currentMonth + "-02 00:00:00"
|
||||||
|
|
||||||
|
err := db.Raw(`
|
||||||
|
SELECT
|
||||||
|
COUNT(*)
|
||||||
|
FROM mg_order
|
||||||
|
WHERE unsubscribe_time >= ?
|
||||||
|
AND DATE_FORMAT(subscribe_time, '%Y-%m') < ?`,
|
||||||
|
currentMonthFirstDay, currentMonth).Scan(&totalUnsubscribedUsers).Error
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return totalUnsubscribedUsers, nil
|
||||||
|
}
|
||||||
|
|
||||||
// AddChannel 新增渠道
|
// AddChannel 新增渠道
|
||||||
// @Summary 新增渠道
|
// @Summary 新增渠道
|
||||||
// @Tags 2024-咪咕-管理后台
|
// @Tags 2024-咪咕-管理后台
|
||||||
|
|
Loading…
Reference in New Issue
Block a user