refactor: 移除业务ID字段并优化DAO层实现
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
server:
|
||||
address: ":3008"
|
||||
name: "oss"
|
||||
workerId: 1
|
||||
rate:
|
||||
limit: 200
|
||||
burst: 300
|
||||
|
||||
@@ -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)
|
||||
r, err := gfdb.DB(ctx).Model(ctx, consts.FileCollection).Insert(&res)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return r.LastInsertId()
|
||||
}
|
||||
|
||||
@@ -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,26 +15,17 @@ 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
|
||||
}
|
||||
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) {
|
||||
model := gfdb.DB(ctx).Model(ctx, consts.TenantOssTotalCollection).Where(entity.TenantOssCol.TenantId, req.TenantId)
|
||||
|
||||
@@ -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"`
|
||||
}
|
||||
|
||||
@@ -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"`
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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分钟
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
17
update.sql
17
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),
|
||||
|
||||
-- 租户存储字段
|
||||
@@ -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 '已使用存储大小(字节)';
|
||||
|
||||
Reference in New Issue
Block a user