refactor: 移除业务ID字段并优化DAO层实现

This commit is contained in:
2026-03-19 17:35:38 +08:00
parent 8e2ea0bde1
commit 39fd187502
9 changed files with 27 additions and 58 deletions

View File

@@ -1,6 +1,7 @@
server:
address: ":3008"
name: "oss"
workerId: 1
rate:
limit: 200
burst: 300

View File

@@ -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()
}

View File

@@ -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) {

View File

@@ -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"`
}

View File

@@ -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"`
}

View File

@@ -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",

View File

@@ -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分钟

View File

@@ -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
}

View File

@@ -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 '已使用存储大小(字节)';