feat: 移除“租户管理员为用户充值 / 每租户一套余额”能力:余额统一为全局用户余额
This commit is contained in:
@@ -278,20 +278,23 @@ func (t *tenant) TenantUserBalanceMapping(ctx context.Context, tenantIds []int64
|
||||
return result, nil
|
||||
}
|
||||
|
||||
tbl, query := models.TenantUserQuery.QueryContext(ctx)
|
||||
|
||||
var items []struct {
|
||||
TenantID int64
|
||||
Balance int64
|
||||
}
|
||||
err := query.
|
||||
Select(
|
||||
tbl.TenantID,
|
||||
tbl.Balance.Sum().As("balance"),
|
||||
).
|
||||
Where(tbl.TenantID.In(tenantIds...)).
|
||||
Group(tbl.TenantID).
|
||||
Scan(&items)
|
||||
|
||||
// 全局余额:按租户维度统计“该租户成员的 users.balance 之和”。
|
||||
// 注意:用户可能加入多个租户,因此不同租户的统计会出现重复计入(这符合“按租户视角”统计的直觉)。
|
||||
err := models.Q.TenantUser.
|
||||
WithContext(ctx).
|
||||
UnderlyingDB().
|
||||
Table(models.TableNameTenantUser+" tu").
|
||||
Select("tu.tenant_id, COALESCE(SUM(u.balance), 0) AS balance").
|
||||
Joins("JOIN "+models.TableNameUser+" u ON u.id = tu.user_id AND u.deleted_at IS NULL").
|
||||
Where("tu.tenant_id IN ?", tenantIds).
|
||||
Group("tu.tenant_id").
|
||||
Scan(&items).
|
||||
Error
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user