1、用户留存记录优化,查询sql新增产品和渠道ID;

2、用户留存记录(按天)优化,查询该天的留存用户数时新增产品和渠道ID。
This commit is contained in:
chenlin 2025-05-07 12:07:06 +08:00
parent e8e51ffed8
commit 69748b530b

View File

@ -1399,7 +1399,7 @@ func (e MiGuDeployService) UserRetentionList(c *gin.Context) {
// 查询对应月份的最近2个月1号留存数据
// 现在遍历 retentionList查询每个月份对应的最近1个月和最近2个月的留存数据
for i := range retentionList {
for i, item := range retentionList {
// 获取当前记录的 RetentionMonth
year, month, _ := models.ParseYearMonth(retentionList[i].RetentionMonth)
@ -1420,8 +1420,12 @@ func (e MiGuDeployService) UserRetentionList(c *gin.Context) {
lastMonthRetentionCount = 0
} else {
err = e.Orm.Model(&models.MgOrder{}).
Where("state = 1 AND created_at between ? and ?", currentMonthFirstDay, currentMonthNextFirstDay).
Or("state = 2 AND unsubscribe_time > ? AND created_at between ? and ?", lastMonthSecondDay, currentMonthFirstDay, currentMonthNextFirstDay).
Where(
e.Orm.
Where("state = 1 AND created_at BETWEEN ? AND ?", currentMonthFirstDay, currentMonthNextFirstDay).
Or("state = 2 AND unsubscribe_time > ? AND created_at BETWEEN ? AND ?", lastMonthSecondDay, currentMonthFirstDay, currentMonthNextFirstDay),
).
Where("product_id = ? AND channel_code = ?", item.ProductID, item.ChannelCode).
Count(&lastMonthRetentionCount).Error
}
@ -1433,8 +1437,12 @@ func (e MiGuDeployService) UserRetentionList(c *gin.Context) {
lastTwoMonthRetentionCount = 0
} else {
err = e.Orm.Model(&models.MgOrder{}).
Where("state = 1 AND created_at between ? and ?", currentMonthFirstDay, currentMonthNextFirstDay).
Or("state = 2 AND unsubscribe_time > ? AND created_at between ? and ?", lastTwoMonthSecondDay, currentMonthFirstDay, currentMonthNextFirstDay).
Where(
e.Orm.
Where("state = 1 AND created_at BETWEEN ? AND ?", currentMonthFirstDay, currentMonthNextFirstDay).
Or("state = 2 AND unsubscribe_time > ? AND created_at BETWEEN ? AND ?", lastTwoMonthSecondDay, currentMonthFirstDay, currentMonthNextFirstDay),
).
Where("product_id = ? AND channel_code = ?", item.ProductID, item.ChannelCode).
Count(&lastTwoMonthRetentionCount).Error
}
@ -1619,7 +1627,9 @@ func (e MiGuDeployService) UserDayRetentionList(c *gin.Context) {
Where("state = 1 AND created_at between ? and ?", currentMonthFirstDay, currentMonthNextFirstDay).
Where("product_id = ?", req.SkuCode). // 添加SkuCode条件
Where("channel_code = ?", req.Channel). // 添加Channel条件
Or("state = 2 AND unsubscribe_time > ? AND created_at between ? and ?", date+" 23:59:59", currentMonthFirstDay, currentMonthNextFirstDay).
Or("state = 2 AND unsubscribe_time > ? AND created_at between ? and ? AND product_id = ? "+
"and channel_code = ?", date+" 23:59:59",
currentMonthFirstDay, currentMonthNextFirstDay, req.SkuCode, req.Channel).
Count(&retainedUserCount).Error
// 查询该天的退订用户数
@ -1683,7 +1693,9 @@ func (e MiGuDeployService) UserDayRetentionList(c *gin.Context) {
Where("state = 1 AND created_at between ? and ?", currentMonthFirstDay, currentMonthNextFirstDay).
Where("product_id = ?", req.SkuCode). // 添加SkuCode条件
Where("channel_code = ?", req.Channel). // 添加Channel条件
Or("state = 2 AND unsubscribe_time > ? AND created_at between ? and ?", date+" 23:59:59", currentMonthFirstDay, currentMonthNextFirstDay).
Or("state = 2 AND unsubscribe_time > ? AND created_at between ? and ? AND product_id = ? "+
"and channel_code = ?", date+" 23:59:59",
currentMonthFirstDay, currentMonthNextFirstDay, req.SkuCode, req.Channel).
Count(&retainedUserCount).Error
//retainedUserCount, localErr = getRetentionForDay(date, e.Orm, currentMonthFirstDay, currentMonthNextFirstDay)