perf: 优化租户OSS总计存储逻辑

This commit is contained in:
2026-03-18 14:26:15 +08:00
parent 63681c3a91
commit 8e2ea0bde1
2 changed files with 18 additions and 32 deletions

View File

@@ -19,34 +19,20 @@ type tenantOssTotal struct{}
// SaveOrUpdate 增加或更新
func (d *tenantOssTotal) SaveOrUpdate(ctx context.Context, updateData []*dto.UpdateUsedOssReq) (err error) {
if !g.IsEmpty(updateData) {
data := make([]gdb.Map, 0, len(updateData))
for _, v := range updateData {
model := gfdb.DB(ctx).Model(ctx, consts.TenantOssTotalCollection).Where(gdb.Map{"tenant_id": v.TenantId})
// 检查是否存在
count, err := model.Count()
if err != nil {
return err
}
if count > 0 {
// 更新
_, err = model.Data(gdb.Map{
"used_oss_size": v.UsedOssSize,
"total_oss_size": v.TotalOssSize,
"updater": v.Updater,
}).Update()
} else {
// 插入
_, err = gfdb.DB(ctx).Model(ctx, consts.TenantOssTotalCollection).Data(gdb.Map{
"bid": guid.S(),
"tenant_id": v.TenantId,
"used_oss_size": v.UsedOssSize,
"total_oss_size": v.TotalOssSize,
"creator": v.Updater,
"updater": v.Updater,
}).Insert()
}
if err != nil {
return err
}
data = append(data, gdb.Map{
entity.TenantOssCol.Bid: guid.S(),
entity.TenantOssCol.TenantId: v.TenantId,
entity.TenantOssCol.UsedOssSize: v.UsedOssSize,
entity.TenantOssCol.TotalOssSize: v.TotalOssSize,
entity.TenantOssCol.Creator: v.Updater,
entity.TenantOssCol.Updater: v.Updater,
})
}
_, err = gfdb.DB(ctx).Model(ctx, consts.TenantOssTotalCollection).Data(data).OnConflict(entity.TenantOssCol.TenantId).Save()
if err != nil {
return err
}
}
return