fix(api) fill renewal_order_users in user statistics (#40)

This commit is contained in:
sky-line-1 2025-07-06 15:39:42 +08:00 committed by GitHub
parent 4f49dea769
commit 626c3ef05c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 24 additions and 0 deletions

View File

@ -72,6 +72,15 @@ func (l *QueryUserStatisticsLogic) QueryUserStatistics() (resp *types.UserStatis
} else {
resp.All.Register = allUserCount
}
// query all user order counts
allNewOrderUsers, allRenewalOrderUsers, err := l.svcCtx.OrderModel.QueryTotalUserCounts(l.ctx)
if err != nil {
l.Errorw("[QueryUserStatisticsLogic] QueryTotalUserCounts error", logger.Field("error", err.Error()))
} else {
resp.All.NewOrderUsers = allNewOrderUsers
resp.All.RenewalOrderUsers = allRenewalOrderUsers
}
return
}

View File

@ -50,6 +50,7 @@ type customOrderLogicModel interface {
QueryTotalOrders(ctx context.Context) (OrdersTotal, error)
QueryMonthlyUserCounts(ctx context.Context, date time.Time) (int64, int64, error)
QueryDateUserCounts(ctx context.Context, date time.Time) (int64, int64, error)
QueryTotalUserCounts(ctx context.Context) (int64, int64, error)
IsUserEligibleForNewOrder(ctx context.Context, userID int64) (bool, error)
}
@ -202,6 +203,20 @@ func (m *customOrderModel) QueryDateUserCounts(ctx context.Context, date time.Ti
return newUsers, renewalUsers, err
}
func (m *customOrderModel) QueryTotalUserCounts(ctx context.Context) (int64, int64, error) {
var newUsers int64
var renewalUsers int64
err := m.QueryNoCacheCtx(ctx, nil, func(conn *gorm.DB, _ interface{}) error {
return conn.Model(&Order{}).
Where("status IN ? AND method != ?", []int64{2, 5}, "balance").
Select(
"COUNT(DISTINCT CASE WHEN is_new = 1 THEN user_id END) as new_users, "+
"COUNT(DISTINCT CASE WHEN is_new = 0 THEN user_id END) as renewal_users").
Row().Scan(&newUsers, &renewalUsers)
})
return newUsers, renewalUsers, err
}
func (m *customOrderModel) IsUserEligibleForNewOrder(ctx context.Context, userID int64) (bool, error) {
var count int64
err := m.QueryNoCacheCtx(ctx, nil, func(conn *gorm.DB, _ interface{}) error {