refactor: 重构SQL基础实体并集成雪花ID生成器
将主键ID类型从uint64改为int64,移除Bid和Deleter字段;在insertHook中集成Snowflake算法自动生成ID;更新ModuleAssetId为int64类型。
This commit is contained in:
@@ -40,37 +40,31 @@ type MongoBaseDO struct {
|
|||||||
|
|
||||||
// SQLBaseDO SQL数据库基础实体
|
// SQLBaseDO SQL数据库基础实体
|
||||||
type SQLBaseDO struct {
|
type SQLBaseDO struct {
|
||||||
Id *uint64 `orm:"id" json:"id"` // 主键ID
|
Id int64 `orm:"id" json:"id"` // 主键ID
|
||||||
Bid string `orm:"bid" json:"bid"` // 业务ID
|
|
||||||
Creator string `orm:"creator" json:"creator"` // 创建人
|
Creator string `orm:"creator" json:"creator"` // 创建人
|
||||||
CreatedAt *gtime.Time `orm:"created_at" json:"createdAt"` // 创建时间
|
CreatedAt *gtime.Time `orm:"created_at" json:"createdAt"` // 创建时间
|
||||||
Updater string `orm:"updater" json:"updater"` // 更新人
|
Updater string `orm:"updater" json:"updater"` // 更新人
|
||||||
UpdatedAt *gtime.Time `orm:"updated_at" json:"updatedAt"` // 更新时间
|
UpdatedAt *gtime.Time `orm:"updated_at" json:"updatedAt"` // 更新时间
|
||||||
Deleter string `orm:"deleter" json:"deleter"` // 软删除人
|
|
||||||
DeletedAt *gtime.Time `orm:"deleted_at" json:"deletedAt"` // 软删除时间
|
DeletedAt *gtime.Time `orm:"deleted_at" json:"deletedAt"` // 软删除时间
|
||||||
IsDeleted bool `orm:"is_deleted" json:"isDeleted"` // 是否删除
|
IsDeleted bool `orm:"is_deleted" json:"isDeleted"` // 是否删除
|
||||||
}
|
}
|
||||||
|
|
||||||
type SQLBaseCol struct {
|
type SQLBaseCol struct {
|
||||||
Id string
|
Id string
|
||||||
Bid string
|
|
||||||
Creator string
|
Creator string
|
||||||
CreatedAt string
|
CreatedAt string
|
||||||
Updater string
|
Updater string
|
||||||
UpdatedAt string
|
UpdatedAt string
|
||||||
Deleter string
|
|
||||||
DeletedAt string
|
DeletedAt string
|
||||||
IsDeleted string
|
IsDeleted string
|
||||||
}
|
}
|
||||||
|
|
||||||
var DefSQLBaseCol = SQLBaseCol{
|
var DefSQLBaseCol = SQLBaseCol{
|
||||||
Id: "id",
|
Id: "id",
|
||||||
Bid: "bid",
|
|
||||||
Creator: "creator",
|
Creator: "creator",
|
||||||
CreatedAt: "created_at",
|
CreatedAt: "created_at",
|
||||||
Updater: "updater",
|
Updater: "updater",
|
||||||
UpdatedAt: "updated_at",
|
UpdatedAt: "updated_at",
|
||||||
Deleter: "deleter",
|
|
||||||
DeletedAt: "deleted_at",
|
DeletedAt: "deleted_at",
|
||||||
IsDeleted: "is_deleted",
|
IsDeleted: "is_deleted",
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ import (
|
|||||||
|
|
||||||
// ModuleAssetId 模块资产ID映射(key-value结构)
|
// ModuleAssetId 模块资产ID映射(key-value结构)
|
||||||
// Key: 服务名,Value: 资产ID
|
// Key: 服务名,Value: 资产ID
|
||||||
var ModuleAssetId = map[string]string{
|
var ModuleAssetId = map[string]int64{
|
||||||
"assets": "696b4acd1be1c8b76c4b4c15", // 资产模块
|
"assets": 1, // 资产模块
|
||||||
"cid": "696f423705e496ba4ccbe665", // 广告模块
|
"cid": 2, // 广告模块
|
||||||
"customerService": "696f421205e496ba4ccbe662", // AI客服模块
|
"customerService": 3, // AI客服模块
|
||||||
}
|
}
|
||||||
|
|
||||||
// 模块类型(值从ModuleAssetId map获取)
|
// 模块类型(值从ModuleAssetId map获取)
|
||||||
@@ -48,7 +48,7 @@ var TenantModuleTypesAd []TenantModuleTypeKV
|
|||||||
var TenantModuleTypesAICs []TenantModuleTypeKV
|
var TenantModuleTypesAICs []TenantModuleTypeKV
|
||||||
|
|
||||||
// GetTenantModuleTypes 获取模块的租户类型列表
|
// GetTenantModuleTypes 获取模块的租户类型列表
|
||||||
func GetTenantModuleTypes(module string) []TenantModuleTypeKV {
|
func GetTenantModuleTypes(module int64) []TenantModuleTypeKV {
|
||||||
switch module {
|
switch module {
|
||||||
case TenantModuleAssets:
|
case TenantModuleAssets:
|
||||||
return TenantModuleTypesAssets
|
return TenantModuleTypesAssets
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gitea.com/red-future/common/utils"
|
"gitea.com/red-future/common/utils"
|
||||||
|
"github.com/bwmarrin/snowflake"
|
||||||
"github.com/gogf/gf/v2/crypto/gmd5"
|
"github.com/gogf/gf/v2/crypto/gmd5"
|
||||||
"github.com/gogf/gf/v2/database/gdb"
|
"github.com/gogf/gf/v2/database/gdb"
|
||||||
"github.com/gogf/gf/v2/database/gredis"
|
"github.com/gogf/gf/v2/database/gredis"
|
||||||
@@ -158,14 +159,20 @@ func catchSQLHook() gdb.HookHandler {
|
|||||||
// ==================== Insert钩子 ====================
|
// ==================== Insert钩子 ====================
|
||||||
|
|
||||||
func insertHook(ctx context.Context, in *gdb.HookInsertInput) (result sql.Result, err error) {
|
func insertHook(ctx context.Context, in *gdb.HookInsertInput) (result sql.Result, err error) {
|
||||||
// 1. 自动赋值租户字段
|
|
||||||
userInfo, _ := utils.GetUserInfo(ctx)
|
|
||||||
|
|
||||||
//if !g.IsEmpty(userInfo.UserName) {
|
userInfo, err := utils.GetUserInfo(ctx)
|
||||||
// in.Model.Data("creator", userInfo.UserName)
|
if err != nil {
|
||||||
// in.Model.Data("updater", userInfo.UserName)
|
return nil, err
|
||||||
//}
|
}
|
||||||
|
|
||||||
|
node, err := snowflake.NewNode(g.Cfg().MustGet(ctx, "server.workerId").Int64())
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
for i := range in.Data {
|
for i := range in.Data {
|
||||||
|
if _, ok := in.Data[i]["id"]; ok {
|
||||||
|
in.Data[i]["id"] = node.Generate().Int64()
|
||||||
|
}
|
||||||
if !g.IsEmpty(userInfo.UserName) {
|
if !g.IsEmpty(userInfo.UserName) {
|
||||||
if _, ok := in.Data[i]["creator"]; ok {
|
if _, ok := in.Data[i]["creator"]; ok {
|
||||||
in.Data[i]["creator"] = userInfo.UserName
|
in.Data[i]["creator"] = userInfo.UserName
|
||||||
@@ -198,11 +205,6 @@ func updateHook(ctx context.Context, in *gdb.HookUpdateInput) (result sql.Result
|
|||||||
// 1. 自动赋值修改人
|
// 1. 自动赋值修改人
|
||||||
userInfo, _ := utils.GetUserInfo(ctx)
|
userInfo, _ := utils.GetUserInfo(ctx)
|
||||||
|
|
||||||
//if !g.IsEmpty(userInfo.UserName) {
|
|
||||||
// in.Model.Data("creator", userInfo.UserName)
|
|
||||||
// in.Model.Data("updater", userInfo.UserName)
|
|
||||||
//}
|
|
||||||
|
|
||||||
switch data := in.Data.(type) {
|
switch data := in.Data.(type) {
|
||||||
case gdb.Map:
|
case gdb.Map:
|
||||||
if !g.IsEmpty(userInfo.UserName) {
|
if !g.IsEmpty(userInfo.UserName) {
|
||||||
|
|||||||
1
go.mod
1
go.mod
@@ -4,6 +4,7 @@ go 1.25.5
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/alibaba/sentinel-golang v1.0.4
|
github.com/alibaba/sentinel-golang v1.0.4
|
||||||
|
github.com/bwmarrin/snowflake v0.3.0
|
||||||
github.com/cloudwego/eino v0.7.26
|
github.com/cloudwego/eino v0.7.26
|
||||||
github.com/gogf/gf/contrib/registry/consul/v2 v2.9.5
|
github.com/gogf/gf/contrib/registry/consul/v2 v2.9.5
|
||||||
github.com/gogf/gf/contrib/trace/otlphttp/v2 v2.9.5
|
github.com/gogf/gf/contrib/trace/otlphttp/v2 v2.9.5
|
||||||
|
|||||||
2
go.sum
2
go.sum
@@ -56,6 +56,8 @@ github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMU
|
|||||||
github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
|
github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
|
||||||
github.com/bugsnag/bugsnag-go v1.4.0/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8=
|
github.com/bugsnag/bugsnag-go v1.4.0/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8=
|
||||||
github.com/bugsnag/panicwrap v1.2.0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE=
|
github.com/bugsnag/panicwrap v1.2.0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE=
|
||||||
|
github.com/bwmarrin/snowflake v0.3.0 h1:xm67bEhkKh6ij1790JB83OujPR5CzNe8QuQqAgISZN0=
|
||||||
|
github.com/bwmarrin/snowflake v0.3.0/go.mod h1:NdZxfVWX+oR6y2K0o6qAYv6gIOP9rjG0/E9WsDpxqwE=
|
||||||
github.com/bytedance/gopkg v0.1.3 h1:TPBSwH8RsouGCBcMBktLt1AymVo2TVsBVCY4b6TnZ/M=
|
github.com/bytedance/gopkg v0.1.3 h1:TPBSwH8RsouGCBcMBktLt1AymVo2TVsBVCY4b6TnZ/M=
|
||||||
github.com/bytedance/gopkg v0.1.3/go.mod h1:576VvJ+eJgyCzdjS+c4+77QF3p7ubbtiKARP3TxducM=
|
github.com/bytedance/gopkg v0.1.3/go.mod h1:576VvJ+eJgyCzdjS+c4+77QF3p7ubbtiKARP3TxducM=
|
||||||
github.com/bytedance/sonic v1.14.1 h1:FBMC0zVz5XUmE4z9wF4Jey0An5FueFvOsTKKKtwIl7w=
|
github.com/bytedance/sonic v1.14.1 h1:FBMC0zVz5XUmE4z9wF4Jey0An5FueFvOsTKKKtwIl7w=
|
||||||
|
|||||||
Reference in New Issue
Block a user