refactor: 移除业务ID字段并优化DAO层实现
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
server:
|
server:
|
||||||
address: ":3008"
|
address: ":3008"
|
||||||
name: "oss"
|
name: "oss"
|
||||||
|
workerId: 1
|
||||||
rate:
|
rate:
|
||||||
limit: 200
|
limit: 200
|
||||||
burst: 300
|
burst: 300
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import (
|
|||||||
|
|
||||||
"gitea.com/red-future/common/db/gfdb"
|
"gitea.com/red-future/common/db/gfdb"
|
||||||
"github.com/gogf/gf/v2/util/gconv"
|
"github.com/gogf/gf/v2/util/gconv"
|
||||||
"github.com/gogf/gf/v2/util/guid"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var File = &file{}
|
var File = &file{}
|
||||||
@@ -16,11 +15,14 @@ var File = &file{}
|
|||||||
type file struct{}
|
type file struct{}
|
||||||
|
|
||||||
// Insert 插入
|
// 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 {
|
if err = gconv.Struct(req, &res); err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
res.Bid = guid.S()
|
r, err := gfdb.DB(ctx).Model(ctx, consts.FileCollection).Insert(&res)
|
||||||
_, err = gfdb.DB(ctx).Model(ctx, consts.FileCollection).Insert(&res)
|
if err != nil {
|
||||||
return
|
return
|
||||||
|
}
|
||||||
|
return r.LastInsertId()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,9 +7,7 @@ import (
|
|||||||
"oss/model/entity"
|
"oss/model/entity"
|
||||||
|
|
||||||
"gitea.com/red-future/common/db/gfdb"
|
"gitea.com/red-future/common/db/gfdb"
|
||||||
"github.com/gogf/gf/v2/database/gdb"
|
"github.com/gogf/gf/v2/util/gconv"
|
||||||
"github.com/gogf/gf/v2/frame/g"
|
|
||||||
"github.com/gogf/gf/v2/util/guid"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var TenantOssTotal = &tenantOssTotal{}
|
var TenantOssTotal = &tenantOssTotal{}
|
||||||
@@ -17,25 +15,16 @@ var TenantOssTotal = &tenantOssTotal{}
|
|||||||
type tenantOssTotal struct{}
|
type tenantOssTotal struct{}
|
||||||
|
|
||||||
// SaveOrUpdate 增加或更新
|
// SaveOrUpdate 增加或更新
|
||||||
func (d *tenantOssTotal) SaveOrUpdate(ctx context.Context, updateData []*dto.UpdateUsedOssReq) (err error) {
|
func (d *tenantOssTotal) SaveOrUpdate(ctx context.Context, updateData []*dto.UpdateUsedOssReq) (rows int64, err error) {
|
||||||
if !g.IsEmpty(updateData) {
|
var res []*entity.TenantOssTotal
|
||||||
data := make([]gdb.Map, 0, len(updateData))
|
if err = gconv.Structs(updateData, &res); err != nil {
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
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) {
|
func (d *tenantOssTotal) GetOneByTenantId(ctx context.Context, req *dto.GetByTenantIdReq) (res *entity.TenantOssTotal, err error) {
|
||||||
|
|||||||
@@ -22,10 +22,3 @@ type UploadFileRes struct {
|
|||||||
FileURL string `json:"fileURL" dc:"上传地址"`
|
FileURL string `json:"fileURL" dc:"上传地址"`
|
||||||
FileAddressPrefix string `json:"fileAddressPrefix"`
|
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不能为空"`
|
TenantId uint64 `json:"tenantId" v:"required#租户id不能为空"`
|
||||||
UsedOssSize int `json:"usedOssSize"`
|
UsedOssSize int `json:"usedOssSize"`
|
||||||
TotalOssSize int `json:"totalOssSize"`
|
TotalOssSize int `json:"totalOssSize"`
|
||||||
Updater string `json:"updater" v:"required#更新人不能为空"`
|
Creator string `json:"creator"`
|
||||||
}
|
Updater string `json:"updater"`
|
||||||
|
|
||||||
// UpdateUsedOssRes 更新使用存储总量响应
|
|
||||||
type UpdateUsedOssRes struct {
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import (
|
|||||||
type File struct {
|
type File struct {
|
||||||
beans.SQLBaseDO `orm:",inherit"` // 嵌入基础字段:Id, Bid, Creator, CreatedAt, Updater, UpdatedAt, Deleter, DeletedAt, IsDeleted
|
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
|
TenantId uint64 `orm:"tenant_id" json:"tenantId"` // 租户ID
|
||||||
FileURL string `orm:"file_url" json:"fileURL"` // 文件URL
|
FileURL string `orm:"file_url" json:"fileURL"` // 文件URL
|
||||||
FileSize int `orm:"file_size" json:"fileSize"`
|
FileSize int `orm:"file_size" json:"fileSize"`
|
||||||
@@ -16,7 +15,6 @@ type File struct {
|
|||||||
|
|
||||||
type fileCol struct {
|
type fileCol struct {
|
||||||
beans.SQLBaseCol
|
beans.SQLBaseCol
|
||||||
Bid string
|
|
||||||
TenantId string
|
TenantId string
|
||||||
FileURL string
|
FileURL string
|
||||||
FileSize string
|
FileSize string
|
||||||
@@ -24,7 +22,6 @@ type fileCol struct {
|
|||||||
|
|
||||||
var FileCol = fileCol{
|
var FileCol = fileCol{
|
||||||
SQLBaseCol: beans.DefSQLBaseCol,
|
SQLBaseCol: beans.DefSQLBaseCol,
|
||||||
Bid: "bid",
|
|
||||||
TenantId: "tenant_id",
|
TenantId: "tenant_id",
|
||||||
FileURL: "file_url",
|
FileURL: "file_url",
|
||||||
FileSize: "file_size",
|
FileSize: "file_size",
|
||||||
|
|||||||
@@ -76,10 +76,11 @@ func (f *file) UploadFile(ctx context.Context, req *dto.UploadFileReq) (res *dto
|
|||||||
fileSize = tenantOssTotalEntity.UsedOssSize + fileSize
|
fileSize = tenantOssTotalEntity.UsedOssSize + fileSize
|
||||||
totalFileSize = tenantOssTotalEntity.TotalOssSize
|
totalFileSize = tenantOssTotalEntity.TotalOssSize
|
||||||
// 设置redis-租户存储容量总数
|
// 设置redis-租户存储容量总数
|
||||||
tenantOssTotalKeyMap := dto.TenantOssTotal{
|
tenantOssTotalKeyMap := dto.UpdateUsedOssReq{
|
||||||
TenantId: tenantId,
|
TenantId: tenantId,
|
||||||
UsedOssSize: fileSize,
|
UsedOssSize: fileSize,
|
||||||
TotalOssSize: totalFileSize,
|
TotalOssSize: totalFileSize,
|
||||||
|
Creator: user.UserName,
|
||||||
Updater: user.UserName,
|
Updater: user.UserName,
|
||||||
}
|
}
|
||||||
// 修改redis-租户存储容量总数 超时时间10分钟
|
// 修改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 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
19
update.sql
19
update.sql
@@ -5,22 +5,17 @@
|
|||||||
-- 存储文件表
|
-- 存储文件表
|
||||||
CREATE TABLE IF NOT EXISTS file (
|
CREATE TABLE IF NOT EXISTS file (
|
||||||
-- 基础字段
|
-- 基础字段
|
||||||
id BIGSERIAL PRIMARY KEY,
|
id BIGINT PRIMARY KEY,
|
||||||
bid VARCHAR(64) NOT NULL,
|
|
||||||
creator VARCHAR(64) NOT NULL,
|
creator VARCHAR(64) NOT NULL,
|
||||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
updater VARCHAR(64) NOT NULL,
|
updater VARCHAR(64) NOT NULL,
|
||||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
deleter VARCHAR(64),
|
|
||||||
deleted_at timestamp(6),
|
deleted_at timestamp(6),
|
||||||
|
|
||||||
-- 文件核心字段
|
-- 文件核心字段
|
||||||
tenant_id BIGINT NOT NULL,
|
tenant_id BIGINT NOT NULL,
|
||||||
file_url VARCHAR(512) NOT NULL,
|
file_url VARCHAR(512) NOT NULL,
|
||||||
file_size INT NOT NULL DEFAULT 0,
|
file_size INT NOT NULL DEFAULT 0
|
||||||
|
|
||||||
-- 唯一索引 & 普通索引
|
|
||||||
CONSTRAINT uk_file_bid UNIQUE (bid)
|
|
||||||
);
|
);
|
||||||
-- 为文件表添加索引
|
-- 为文件表添加索引
|
||||||
CREATE INDEX idx_file_tenant_id ON file(tenant_id);
|
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 TABLE file IS '存储文件表';
|
||||||
COMMENT ON COLUMN file.id IS '主键ID';
|
COMMENT ON COLUMN file.id IS '主键ID';
|
||||||
COMMENT ON COLUMN file.bid IS '业务ID';
|
|
||||||
COMMENT ON COLUMN file.creator IS '创建人';
|
COMMENT ON COLUMN file.creator IS '创建人';
|
||||||
COMMENT ON COLUMN file.created_at IS '创建时间';
|
COMMENT ON COLUMN file.created_at IS '创建时间';
|
||||||
COMMENT ON COLUMN file.updater IS '更新人';
|
COMMENT ON COLUMN file.updater IS '更新人';
|
||||||
COMMENT ON COLUMN file.updated_at 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.deleted_at IS '删除时间(软删)';
|
||||||
COMMENT ON COLUMN file.tenant_id IS '租户ID';
|
COMMENT ON COLUMN file.tenant_id IS '租户ID';
|
||||||
COMMENT ON COLUMN file.file_url IS '文件URL';
|
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 (
|
CREATE TABLE IF NOT EXISTS tenant_oss_total (
|
||||||
-- 基础字段
|
-- 基础字段
|
||||||
id BIGSERIAL PRIMARY KEY, -- 保留id作为主键
|
id BIGINT PRIMARY KEY, -- 保留id作为主键
|
||||||
bid VARCHAR(64) NOT NULL,
|
|
||||||
creator VARCHAR(64) NOT NULL,
|
creator VARCHAR(64) NOT NULL,
|
||||||
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
updater VARCHAR(64) NOT NULL,
|
updater VARCHAR(64) NOT NULL,
|
||||||
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||||
deleter VARCHAR(64),
|
|
||||||
deleted_at timestamp(6),
|
deleted_at timestamp(6),
|
||||||
|
|
||||||
-- 租户存储字段
|
-- 租户存储字段
|
||||||
@@ -63,7 +54,7 @@ CREATE TABLE IF NOT EXISTS tenant_oss_total (
|
|||||||
|
|
||||||
-- 唯一索引(仅约束tenant_id唯一性,不替代主键)
|
-- 唯一索引(仅约束tenant_id唯一性,不替代主键)
|
||||||
CONSTRAINT uk_tenant_oss_total_tenant_id UNIQUE (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);
|
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 TABLE tenant_oss_total IS '租户存储服务总计表';
|
||||||
COMMENT ON COLUMN tenant_oss_total.id IS '主键ID';
|
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.creator IS '创建人';
|
||||||
COMMENT ON COLUMN tenant_oss_total.created_at IS '创建时间';
|
COMMENT ON COLUMN tenant_oss_total.created_at IS '创建时间';
|
||||||
COMMENT ON COLUMN tenant_oss_total.updater IS '更新人';
|
COMMENT ON COLUMN tenant_oss_total.updater IS '更新人';
|
||||||
COMMENT ON COLUMN tenant_oss_total.updated_at 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.deleted_at IS '删除时间(软删)';
|
||||||
COMMENT ON COLUMN tenant_oss_total.tenant_id IS '租户ID(唯一)';
|
COMMENT ON COLUMN tenant_oss_total.tenant_id IS '租户ID(唯一)';
|
||||||
COMMENT ON COLUMN tenant_oss_total.used_oss_size IS '已使用存储大小(字节)';
|
COMMENT ON COLUMN tenant_oss_total.used_oss_size IS '已使用存储大小(字节)';
|
||||||
|
|||||||
Reference in New Issue
Block a user