From 39fd18750270852e42a5a2defca98b308675a4ce Mon Sep 17 00:00:00 2001 From: qhd <1766646056@qq.com> Date: Thu, 19 Mar 2026 17:35:38 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E7=A7=BB=E9=99=A4=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1ID=E5=AD=97=E6=AE=B5=E5=B9=B6=E4=BC=98=E5=8C=96DAO?= =?UTF-8?q?=E5=B1=82=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.yml | 1 + dao/file_dao.go | 12 ++++++----- dao/tenant_oss_total.go | 31 ++++++++++------------------- model/dto/file_dto.go | 7 ------- model/dto/tenant_oss_total.go | 7 ++----- model/entity/file.go | 3 --- service/file_service.go | 3 ++- service/tenant_oss_total_service.go | 2 +- update.sql | 19 ++++-------------- 9 files changed, 27 insertions(+), 58 deletions(-) diff --git a/config.yml b/config.yml index f7188e0..3e50bef 100644 --- a/config.yml +++ b/config.yml @@ -1,6 +1,7 @@ server: address: ":3008" name: "oss" + workerId: 1 rate: limit: 200 burst: 300 diff --git a/dao/file_dao.go b/dao/file_dao.go index 5353fe1..65ab74e 100644 --- a/dao/file_dao.go +++ b/dao/file_dao.go @@ -8,7 +8,6 @@ import ( "gitea.com/red-future/common/db/gfdb" "github.com/gogf/gf/v2/util/gconv" - "github.com/gogf/gf/v2/util/guid" ) var File = &file{} @@ -16,11 +15,14 @@ var File = &file{} type file struct{} // Insert 插入 -func (d *file) Insert(ctx context.Context, req *dto.UploadFile) (res *entity.File, err error) { +func (d *file) Insert(ctx context.Context, req *dto.UploadFile) (id int64, err error) { + var res *entity.File if err = gconv.Struct(req, &res); err != nil { return } - res.Bid = guid.S() - _, err = gfdb.DB(ctx).Model(ctx, consts.FileCollection).Insert(&res) - return + r, err := gfdb.DB(ctx).Model(ctx, consts.FileCollection).Insert(&res) + if err != nil { + return + } + return r.LastInsertId() } diff --git a/dao/tenant_oss_total.go b/dao/tenant_oss_total.go index 14cfaa1..8815250 100644 --- a/dao/tenant_oss_total.go +++ b/dao/tenant_oss_total.go @@ -7,9 +7,7 @@ import ( "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" + "github.com/gogf/gf/v2/util/gconv" ) var TenantOssTotal = &tenantOssTotal{} @@ -17,25 +15,16 @@ var TenantOssTotal = &tenantOssTotal{} 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 { - 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 - } +func (d *tenantOssTotal) SaveOrUpdate(ctx context.Context, updateData []*dto.UpdateUsedOssReq) (rows int64, err error) { + var res []*entity.TenantOssTotal + if err = gconv.Structs(updateData, &res); err != nil { + return } - return + r, err := gfdb.DB(ctx).Model(ctx, consts.TenantOssTotalCollection).Data(res).OnConflict(entity.TenantOssCol.TenantId).Save() + if err != nil { + return + } + return r.RowsAffected() } func (d *tenantOssTotal) GetOneByTenantId(ctx context.Context, req *dto.GetByTenantIdReq) (res *entity.TenantOssTotal, err error) { diff --git a/model/dto/file_dto.go b/model/dto/file_dto.go index 831fb7d..8788136 100644 --- a/model/dto/file_dto.go +++ b/model/dto/file_dto.go @@ -22,10 +22,3 @@ type UploadFileRes struct { FileURL string `json:"fileURL" dc:"上传地址"` FileAddressPrefix string `json:"fileAddressPrefix"` } - -type TenantOssTotal struct { - TenantId uint64 `json:"tenantId"` - UsedOssSize int `json:"usedOssSize"` - TotalOssSize int `json:"totalOssSize"` - Updater string `json:"updater"` -} diff --git a/model/dto/tenant_oss_total.go b/model/dto/tenant_oss_total.go index 890d2b9..b147642 100644 --- a/model/dto/tenant_oss_total.go +++ b/model/dto/tenant_oss_total.go @@ -24,9 +24,6 @@ type UpdateUsedOssReq struct { TenantId uint64 `json:"tenantId" v:"required#租户id不能为空"` UsedOssSize int `json:"usedOssSize"` TotalOssSize int `json:"totalOssSize"` - Updater string `json:"updater" v:"required#更新人不能为空"` -} - -// UpdateUsedOssRes 更新使用存储总量响应 -type UpdateUsedOssRes struct { + Creator string `json:"creator"` + Updater string `json:"updater"` } diff --git a/model/entity/file.go b/model/entity/file.go index 4aaecac..596416f 100644 --- a/model/entity/file.go +++ b/model/entity/file.go @@ -8,7 +8,6 @@ import ( type File struct { beans.SQLBaseDO `orm:",inherit"` // 嵌入基础字段:Id, Bid, Creator, CreatedAt, Updater, UpdatedAt, Deleter, DeletedAt, IsDeleted // 业务字段 - Bid string `orm:"bid" json:"bid"` TenantId uint64 `orm:"tenant_id" json:"tenantId"` // 租户ID FileURL string `orm:"file_url" json:"fileURL"` // 文件URL FileSize int `orm:"file_size" json:"fileSize"` @@ -16,7 +15,6 @@ type File struct { type fileCol struct { beans.SQLBaseCol - Bid string TenantId string FileURL string FileSize string @@ -24,7 +22,6 @@ type fileCol struct { var FileCol = fileCol{ SQLBaseCol: beans.DefSQLBaseCol, - Bid: "bid", TenantId: "tenant_id", FileURL: "file_url", FileSize: "file_size", diff --git a/service/file_service.go b/service/file_service.go index 36aec6a..12ac8f3 100644 --- a/service/file_service.go +++ b/service/file_service.go @@ -76,10 +76,11 @@ func (f *file) UploadFile(ctx context.Context, req *dto.UploadFileReq) (res *dto fileSize = tenantOssTotalEntity.UsedOssSize + fileSize totalFileSize = tenantOssTotalEntity.TotalOssSize // 设置redis-租户存储容量总数 - tenantOssTotalKeyMap := dto.TenantOssTotal{ + tenantOssTotalKeyMap := dto.UpdateUsedOssReq{ TenantId: tenantId, UsedOssSize: fileSize, TotalOssSize: totalFileSize, + Creator: user.UserName, Updater: user.UserName, } // 修改redis-租户存储容量总数 超时时间10分钟 diff --git a/service/tenant_oss_total_service.go b/service/tenant_oss_total_service.go index 30c9ade..1079eac 100644 --- a/service/tenant_oss_total_service.go +++ b/service/tenant_oss_total_service.go @@ -41,7 +41,7 @@ func (s *tenantOssTotal) UpdateUsedOssSize(ctx context.Context) (err error) { } // 更新数据库 - err = dao.TenantOssTotal.SaveOrUpdate(ctx, updateData) + _, err = dao.TenantOssTotal.SaveOrUpdate(ctx, updateData) if err != nil { return err } diff --git a/update.sql b/update.sql index 3eec72e..9c9becf 100644 --- a/update.sql +++ b/update.sql @@ -5,22 +5,17 @@ -- 存储文件表 CREATE TABLE IF NOT EXISTS file ( -- 基础字段 - id BIGSERIAL PRIMARY KEY, - bid VARCHAR(64) NOT NULL, + id BIGINT PRIMARY KEY, creator VARCHAR(64) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updater VARCHAR(64) NOT NULL, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - deleter VARCHAR(64), deleted_at timestamp(6), -- 文件核心字段 tenant_id BIGINT NOT NULL, file_url VARCHAR(512) NOT NULL, - file_size INT NOT NULL DEFAULT 0, - - -- 唯一索引 & 普通索引 - CONSTRAINT uk_file_bid UNIQUE (bid) + file_size INT NOT NULL DEFAULT 0 ); -- 为文件表添加索引 CREATE INDEX idx_file_tenant_id ON file(tenant_id); @@ -29,12 +24,10 @@ CREATE INDEX idx_file_file_size ON file(file_size); -- 文件表字段注释 COMMENT ON TABLE file IS '存储文件表'; COMMENT ON COLUMN file.id IS '主键ID'; -COMMENT ON COLUMN file.bid IS '业务ID'; COMMENT ON COLUMN file.creator IS '创建人'; COMMENT ON COLUMN file.created_at IS '创建时间'; COMMENT ON COLUMN file.updater IS '更新人'; COMMENT ON COLUMN file.updated_at IS '更新时间'; -COMMENT ON COLUMN file.deleter IS '删除人(软删)'; COMMENT ON COLUMN file.deleted_at IS '删除时间(软删)'; COMMENT ON COLUMN file.tenant_id IS '租户ID'; COMMENT ON COLUMN file.file_url IS '文件URL'; @@ -47,13 +40,11 @@ COMMENT ON COLUMN file.file_size IS '文件大小(字节)'; -- 租户存储服务总计表 CREATE TABLE IF NOT EXISTS tenant_oss_total ( -- 基础字段 - id BIGSERIAL PRIMARY KEY, -- 保留id作为主键 - bid VARCHAR(64) NOT NULL, + id BIGINT PRIMARY KEY, -- 保留id作为主键 creator VARCHAR(64) NOT NULL, created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updater VARCHAR(64) NOT NULL, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - deleter VARCHAR(64), deleted_at timestamp(6), -- 租户存储字段 @@ -63,7 +54,7 @@ CREATE TABLE IF NOT EXISTS tenant_oss_total ( -- 唯一索引(仅约束tenant_id唯一性,不替代主键) CONSTRAINT uk_tenant_oss_total_tenant_id UNIQUE (tenant_id) - ); +); -- 为租户存储表添加索引 CREATE INDEX idx_tenant_oss_total_used_size ON tenant_oss_total(used_oss_size); @@ -72,12 +63,10 @@ CREATE INDEX idx_tenant_oss_total_total_size ON tenant_oss_total(total_oss_size) -- 租户存储表字段注释 COMMENT ON TABLE tenant_oss_total IS '租户存储服务总计表'; COMMENT ON COLUMN tenant_oss_total.id IS '主键ID'; -COMMENT ON COLUMN tenant_oss_total.bid IS '业务ID'; COMMENT ON COLUMN tenant_oss_total.creator IS '创建人'; COMMENT ON COLUMN tenant_oss_total.created_at IS '创建时间'; COMMENT ON COLUMN tenant_oss_total.updater IS '更新人'; COMMENT ON COLUMN tenant_oss_total.updated_at IS '更新时间'; -COMMENT ON COLUMN tenant_oss_total.deleter IS '删除人(软删)'; COMMENT ON COLUMN tenant_oss_total.deleted_at IS '删除时间(软删)'; COMMENT ON COLUMN tenant_oss_total.tenant_id IS '租户ID(唯一)'; COMMENT ON COLUMN tenant_oss_total.used_oss_size IS '已使用存储大小(字节)';