优化表结构,重构模型,重新实现基于白银网关的提取节点流程

This commit is contained in:
2025-11-24 18:44:06 +08:00
parent 9a574f55cb
commit cb2a963a37
142 changed files with 6528 additions and 5808 deletions

View File

@@ -28,6 +28,9 @@ func newUser(db *gorm.DB, opts ...gen.DOOption) user {
tableName := _user.userDo.TableName()
_user.ALL = field.NewAsterisk(tableName)
_user.ID = field.NewInt32(tableName, "id")
_user.CreatedAt = field.NewTime(tableName, "created_at")
_user.UpdatedAt = field.NewTime(tableName, "updated_at")
_user.DeletedAt = field.NewField(tableName, "deleted_at")
_user.AdminID = field.NewInt32(tableName, "admin_id")
_user.Phone = field.NewString(tableName, "phone")
_user.Username = field.NewString(tableName, "username")
@@ -35,19 +38,21 @@ func newUser(db *gorm.DB, opts ...gen.DOOption) user {
_user.Password = field.NewString(tableName, "password")
_user.Name = field.NewString(tableName, "name")
_user.Avatar = field.NewString(tableName, "avatar")
_user.Status = field.NewInt32(tableName, "status")
_user.Status = field.NewInt(tableName, "status")
_user.Balance = field.NewField(tableName, "balance")
_user.IDType = field.NewInt32(tableName, "id_type")
_user.IDType = field.NewInt(tableName, "id_type")
_user.IDNo = field.NewString(tableName, "id_no")
_user.IDToken = field.NewString(tableName, "id_token")
_user.ContactQQ = field.NewString(tableName, "contact_qq")
_user.ContactWechat = field.NewString(tableName, "contact_wechat")
_user.LastLogin = field.NewField(tableName, "last_login")
_user.LastLoginHost = field.NewString(tableName, "last_login_host")
_user.LastLoginAgent = field.NewString(tableName, "last_login_agent")
_user.CreatedAt = field.NewField(tableName, "created_at")
_user.UpdatedAt = field.NewField(tableName, "updated_at")
_user.DeletedAt = field.NewField(tableName, "deleted_at")
_user.LastLogin = field.NewTime(tableName, "last_login")
_user.LastLoginIP = field.NewField(tableName, "last_login_ip")
_user.LastLoginUA = field.NewString(tableName, "last_login_ua")
_user.Admin = userBelongsToAdmin{
db: db.Session(&gorm.Session{}),
RelationField: field.NewRelation("Admin", "models.Admin"),
}
_user.fillFieldMap()
@@ -57,28 +62,29 @@ func newUser(db *gorm.DB, opts ...gen.DOOption) user {
type user struct {
userDo
ALL field.Asterisk
ID field.Int32 // 用户ID
AdminID field.Int32 // 管理员ID
Phone field.String // 手机号码
Username field.String // 用户名
Email field.String
Password field.String // 用户密码
Name field.String // 真实姓名
Avatar field.String // 头像URL
Status field.Int32 // 用户状态0-禁用1-正常
Balance field.Field // 账户余额
IDType field.Int32 // 认证类型0-未认证1-个人认证2-企业认证
IDNo field.String // 身份证号或营业执照号
IDToken field.String // 身份验证标识
ContactQQ field.String // QQ联系方式
ContactWechat field.String // 微信联系方式
LastLogin field.Field // 最后登录时间
LastLoginHost field.String // 最后登录地址
LastLoginAgent field.String // 最后登录代理
CreatedAt field.Field // 创建时间
UpdatedAt field.Field // 更新时间
DeletedAt field.Field // 删除时间
ALL field.Asterisk
ID field.Int32
CreatedAt field.Time
UpdatedAt field.Time
DeletedAt field.Field
AdminID field.Int32
Phone field.String
Username field.String
Email field.String
Password field.String
Name field.String
Avatar field.String
Status field.Int
Balance field.Field
IDType field.Int
IDNo field.String
IDToken field.String
ContactQQ field.String
ContactWechat field.String
LastLogin field.Time
LastLoginIP field.Field
LastLoginUA field.String
Admin userBelongsToAdmin
fieldMap map[string]field.Expr
}
@@ -96,6 +102,9 @@ func (u user) As(alias string) *user {
func (u *user) updateTableName(table string) *user {
u.ALL = field.NewAsterisk(table)
u.ID = field.NewInt32(table, "id")
u.CreatedAt = field.NewTime(table, "created_at")
u.UpdatedAt = field.NewTime(table, "updated_at")
u.DeletedAt = field.NewField(table, "deleted_at")
u.AdminID = field.NewInt32(table, "admin_id")
u.Phone = field.NewString(table, "phone")
u.Username = field.NewString(table, "username")
@@ -103,19 +112,16 @@ func (u *user) updateTableName(table string) *user {
u.Password = field.NewString(table, "password")
u.Name = field.NewString(table, "name")
u.Avatar = field.NewString(table, "avatar")
u.Status = field.NewInt32(table, "status")
u.Status = field.NewInt(table, "status")
u.Balance = field.NewField(table, "balance")
u.IDType = field.NewInt32(table, "id_type")
u.IDType = field.NewInt(table, "id_type")
u.IDNo = field.NewString(table, "id_no")
u.IDToken = field.NewString(table, "id_token")
u.ContactQQ = field.NewString(table, "contact_qq")
u.ContactWechat = field.NewString(table, "contact_wechat")
u.LastLogin = field.NewField(table, "last_login")
u.LastLoginHost = field.NewString(table, "last_login_host")
u.LastLoginAgent = field.NewString(table, "last_login_agent")
u.CreatedAt = field.NewField(table, "created_at")
u.UpdatedAt = field.NewField(table, "updated_at")
u.DeletedAt = field.NewField(table, "deleted_at")
u.LastLogin = field.NewTime(table, "last_login")
u.LastLoginIP = field.NewField(table, "last_login_ip")
u.LastLoginUA = field.NewString(table, "last_login_ua")
u.fillFieldMap()
@@ -132,8 +138,11 @@ func (u *user) GetFieldByName(fieldName string) (field.OrderExpr, bool) {
}
func (u *user) fillFieldMap() {
u.fieldMap = make(map[string]field.Expr, 21)
u.fieldMap = make(map[string]field.Expr, 22)
u.fieldMap["id"] = u.ID
u.fieldMap["created_at"] = u.CreatedAt
u.fieldMap["updated_at"] = u.UpdatedAt
u.fieldMap["deleted_at"] = u.DeletedAt
u.fieldMap["admin_id"] = u.AdminID
u.fieldMap["phone"] = u.Phone
u.fieldMap["username"] = u.Username
@@ -149,23 +158,105 @@ func (u *user) fillFieldMap() {
u.fieldMap["contact_qq"] = u.ContactQQ
u.fieldMap["contact_wechat"] = u.ContactWechat
u.fieldMap["last_login"] = u.LastLogin
u.fieldMap["last_login_host"] = u.LastLoginHost
u.fieldMap["last_login_agent"] = u.LastLoginAgent
u.fieldMap["created_at"] = u.CreatedAt
u.fieldMap["updated_at"] = u.UpdatedAt
u.fieldMap["deleted_at"] = u.DeletedAt
u.fieldMap["last_login_ip"] = u.LastLoginIP
u.fieldMap["last_login_ua"] = u.LastLoginUA
}
func (u user) clone(db *gorm.DB) user {
u.userDo.ReplaceConnPool(db.Statement.ConnPool)
u.Admin.db = db.Session(&gorm.Session{Initialized: true})
u.Admin.db.Statement.ConnPool = db.Statement.ConnPool
return u
}
func (u user) replaceDB(db *gorm.DB) user {
u.userDo.ReplaceDB(db)
u.Admin.db = db.Session(&gorm.Session{})
return u
}
type userBelongsToAdmin struct {
db *gorm.DB
field.RelationField
}
func (a userBelongsToAdmin) Where(conds ...field.Expr) *userBelongsToAdmin {
if len(conds) == 0 {
return &a
}
exprs := make([]clause.Expression, 0, len(conds))
for _, cond := range conds {
exprs = append(exprs, cond.BeCond().(clause.Expression))
}
a.db = a.db.Clauses(clause.Where{Exprs: exprs})
return &a
}
func (a userBelongsToAdmin) WithContext(ctx context.Context) *userBelongsToAdmin {
a.db = a.db.WithContext(ctx)
return &a
}
func (a userBelongsToAdmin) Session(session *gorm.Session) *userBelongsToAdmin {
a.db = a.db.Session(session)
return &a
}
func (a userBelongsToAdmin) Model(m *models.User) *userBelongsToAdminTx {
return &userBelongsToAdminTx{a.db.Model(m).Association(a.Name())}
}
func (a userBelongsToAdmin) Unscoped() *userBelongsToAdmin {
a.db = a.db.Unscoped()
return &a
}
type userBelongsToAdminTx struct{ tx *gorm.Association }
func (a userBelongsToAdminTx) Find() (result *models.Admin, err error) {
return result, a.tx.Find(&result)
}
func (a userBelongsToAdminTx) Append(values ...*models.Admin) (err error) {
targetValues := make([]interface{}, len(values))
for i, v := range values {
targetValues[i] = v
}
return a.tx.Append(targetValues...)
}
func (a userBelongsToAdminTx) Replace(values ...*models.Admin) (err error) {
targetValues := make([]interface{}, len(values))
for i, v := range values {
targetValues[i] = v
}
return a.tx.Replace(targetValues...)
}
func (a userBelongsToAdminTx) Delete(values ...*models.Admin) (err error) {
targetValues := make([]interface{}, len(values))
for i, v := range values {
targetValues[i] = v
}
return a.tx.Delete(targetValues...)
}
func (a userBelongsToAdminTx) Clear() error {
return a.tx.Clear()
}
func (a userBelongsToAdminTx) Count() int64 {
return a.tx.Count()
}
func (a userBelongsToAdminTx) Unscoped() *userBelongsToAdminTx {
a.tx = a.tx.Unscoped()
return &a
}
type userDo struct{ gen.DO }
func (u userDo) Debug() *userDo {