package dao import ( "context" "oss/consts" "oss/model/dto" "oss/model/entity" "gitea.com/red-future/common/db/gfdb" "github.com/gogf/gf/v2/database/gdb" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/util/guid" ) var TenantOssTotal = &tenantOssTotal{} type tenantOssTotal struct{} // SaveOrUpdate 增加或更新 func (d *tenantOssTotal) SaveOrUpdate(ctx context.Context, updateData []*dto.UpdateUsedOssReq) (err error) { if !g.IsEmpty(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 } } } return } func (d *tenantOssTotal) GetOneByTenantId(ctx context.Context, req *dto.GetByTenantIdReq) (res *entity.TenantOssTotal, err error) { model := gfdb.DB(ctx).Model(ctx, consts.TenantOssTotalCollection).Where(entity.TenantOssCol.TenantId, req.TenantId) record, err := model.One() if err != nil { return } err = record.Struct(&res) return }