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/sdk/pkg/response"
|
||||
"go-admin/app/admin/models"
|
||||
"gorm.io/gorm"
|
||||
"net/http"
|
||||
"sort"
|
||||
"strconv"
|
||||
|
@ -2056,26 +2057,44 @@ func (e MiGuDeployService) CalculateRevenueAnalysis(c *gin.Context) {
|
|||
|
||||
// 查询每个月的上个月未退订用户数
|
||||
for i := 0; i < len(result); i++ {
|
||||
// 获取当前记录的月份
|
||||
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
|
||||
// 查询当前月之前所有月份未退订的用户数
|
||||
totalValidUsers, err := GetTotalValidUsers(e.Orm, currentMonth)
|
||||
if err != nil {
|
||||
response.Error(c, http.StatusInternalServerError, err, "上个月数据查询失败")
|
||||
response.Error(c, http.StatusInternalServerError, err, "未退订用户查询失败")
|
||||
return
|
||||
}
|
||||
|
||||
// 将上个月的未退订用户数累加到当前月的有效用户数
|
||||
result[i].ValidUsersCount += int(lastMonthValidUsersCount)
|
||||
// 查询当前月之前所有月份在本月2号之后退订的用户数
|
||||
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, "查询成功")
|
||||
}
|
||||
|
||||
// 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 新增渠道
|
||||
// @Summary 新增渠道
|
||||
// @Tags 2024-咪咕-管理后台
|
||||
|
|
Loading…
Reference in New Issue
Block a user