任务三

This commit is contained in:
Yvan
2026-01-07 11:53:56 +08:00
parent 05e12a2e2a
commit a017d93dbf
10 changed files with 1082 additions and 119 deletions
+184 -1
View File
@@ -42,6 +42,17 @@ func newSysUser(db *gorm.DB, opts ...gen.DOOption) sysUser {
_sysUser.Email = field.NewString(tableName, "email")
_sysUser.Enable = field.NewInt64(tableName, "enable")
_sysUser.OriginSetting = field.NewString(tableName, "origin_setting")
_sysUser.Authority = sysUserHasOneAuthority{
db: db.Session(&gorm.Session{}),
RelationField: field.NewRelation("Authority", "model.SysAuthority"),
}
_sysUser.Authorities = sysUserManyToManyAuthorities{
db: db.Session(&gorm.Session{}),
RelationField: field.NewRelation("Authorities", "model.SysAuthority"),
}
_sysUser.fillFieldMap()
@@ -66,6 +77,9 @@ type sysUser struct {
Email field.String // 用户邮箱
Enable field.Int64 // 用户是否被冻结 1正常 2冻结
OriginSetting field.String // 配置
Authority sysUserHasOneAuthority
Authorities sysUserManyToManyAuthorities
fieldMap map[string]field.Expr
}
@@ -120,7 +134,7 @@ func (s *sysUser) GetFieldByName(fieldName string) (field.OrderExpr, bool) {
}
func (s *sysUser) fillFieldMap() {
s.fieldMap = make(map[string]field.Expr, 14)
s.fieldMap = make(map[string]field.Expr, 16)
s.fieldMap["id"] = s.ID
s.fieldMap["created_at"] = s.CreatedAt
s.fieldMap["updated_at"] = s.UpdatedAt
@@ -135,18 +149,187 @@ func (s *sysUser) fillFieldMap() {
s.fieldMap["email"] = s.Email
s.fieldMap["enable"] = s.Enable
s.fieldMap["origin_setting"] = s.OriginSetting
}
func (s sysUser) clone(db *gorm.DB) sysUser {
s.sysUserDo.ReplaceConnPool(db.Statement.ConnPool)
s.Authority.db = db.Session(&gorm.Session{Initialized: true})
s.Authority.db.Statement.ConnPool = db.Statement.ConnPool
s.Authorities.db = db.Session(&gorm.Session{Initialized: true})
s.Authorities.db.Statement.ConnPool = db.Statement.ConnPool
return s
}
func (s sysUser) replaceDB(db *gorm.DB) sysUser {
s.sysUserDo.ReplaceDB(db)
s.Authority.db = db.Session(&gorm.Session{})
s.Authorities.db = db.Session(&gorm.Session{})
return s
}
type sysUserHasOneAuthority struct {
db *gorm.DB
field.RelationField
}
func (a sysUserHasOneAuthority) Where(conds ...field.Expr) *sysUserHasOneAuthority {
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 sysUserHasOneAuthority) WithContext(ctx context.Context) *sysUserHasOneAuthority {
a.db = a.db.WithContext(ctx)
return &a
}
func (a sysUserHasOneAuthority) Session(session *gorm.Session) *sysUserHasOneAuthority {
a.db = a.db.Session(session)
return &a
}
func (a sysUserHasOneAuthority) Model(m *model.SysUser) *sysUserHasOneAuthorityTx {
return &sysUserHasOneAuthorityTx{a.db.Model(m).Association(a.Name())}
}
func (a sysUserHasOneAuthority) Unscoped() *sysUserHasOneAuthority {
a.db = a.db.Unscoped()
return &a
}
type sysUserHasOneAuthorityTx struct{ tx *gorm.Association }
func (a sysUserHasOneAuthorityTx) Find() (result *model.SysAuthority, err error) {
return result, a.tx.Find(&result)
}
func (a sysUserHasOneAuthorityTx) Append(values ...*model.SysAuthority) (err error) {
targetValues := make([]interface{}, len(values))
for i, v := range values {
targetValues[i] = v
}
return a.tx.Append(targetValues...)
}
func (a sysUserHasOneAuthorityTx) Replace(values ...*model.SysAuthority) (err error) {
targetValues := make([]interface{}, len(values))
for i, v := range values {
targetValues[i] = v
}
return a.tx.Replace(targetValues...)
}
func (a sysUserHasOneAuthorityTx) Delete(values ...*model.SysAuthority) (err error) {
targetValues := make([]interface{}, len(values))
for i, v := range values {
targetValues[i] = v
}
return a.tx.Delete(targetValues...)
}
func (a sysUserHasOneAuthorityTx) Clear() error {
return a.tx.Clear()
}
func (a sysUserHasOneAuthorityTx) Count() int64 {
return a.tx.Count()
}
func (a sysUserHasOneAuthorityTx) Unscoped() *sysUserHasOneAuthorityTx {
a.tx = a.tx.Unscoped()
return &a
}
type sysUserManyToManyAuthorities struct {
db *gorm.DB
field.RelationField
}
func (a sysUserManyToManyAuthorities) Where(conds ...field.Expr) *sysUserManyToManyAuthorities {
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 sysUserManyToManyAuthorities) WithContext(ctx context.Context) *sysUserManyToManyAuthorities {
a.db = a.db.WithContext(ctx)
return &a
}
func (a sysUserManyToManyAuthorities) Session(session *gorm.Session) *sysUserManyToManyAuthorities {
a.db = a.db.Session(session)
return &a
}
func (a sysUserManyToManyAuthorities) Model(m *model.SysUser) *sysUserManyToManyAuthoritiesTx {
return &sysUserManyToManyAuthoritiesTx{a.db.Model(m).Association(a.Name())}
}
func (a sysUserManyToManyAuthorities) Unscoped() *sysUserManyToManyAuthorities {
a.db = a.db.Unscoped()
return &a
}
type sysUserManyToManyAuthoritiesTx struct{ tx *gorm.Association }
func (a sysUserManyToManyAuthoritiesTx) Find() (result []*model.SysAuthority, err error) {
return result, a.tx.Find(&result)
}
func (a sysUserManyToManyAuthoritiesTx) Append(values ...*model.SysAuthority) (err error) {
targetValues := make([]interface{}, len(values))
for i, v := range values {
targetValues[i] = v
}
return a.tx.Append(targetValues...)
}
func (a sysUserManyToManyAuthoritiesTx) Replace(values ...*model.SysAuthority) (err error) {
targetValues := make([]interface{}, len(values))
for i, v := range values {
targetValues[i] = v
}
return a.tx.Replace(targetValues...)
}
func (a sysUserManyToManyAuthoritiesTx) Delete(values ...*model.SysAuthority) (err error) {
targetValues := make([]interface{}, len(values))
for i, v := range values {
targetValues[i] = v
}
return a.tx.Delete(targetValues...)
}
func (a sysUserManyToManyAuthoritiesTx) Clear() error {
return a.tx.Clear()
}
func (a sysUserManyToManyAuthoritiesTx) Count() int64 {
return a.tx.Count()
}
func (a sysUserManyToManyAuthoritiesTx) Unscoped() *sysUserManyToManyAuthoritiesTx {
a.tx = a.tx.Unscoped()
return &a
}
type sysUserDo struct{ gen.DO }
type ISysUserDo interface {