package model import ( "ArmedPolice/app/common/model" "ArmedPolice/serve/orm" "fmt" ) type SysRole struct { *model.SysRole } // SysRoleBasic 基本信息 type SysRoleBasic struct { ID uint64 `json:"id"` ParentID uint64 `json:"parent_id"` Name string `json:"name"` } // SysRoleUserInfo 用户角色信息 type SysRoleUserInfo struct { *SysRoleBasic UserRoleID uint64 `json:"user_role_id"` } // UserRole 用户角色信息 func (m *SysRole) UserRole(uid uint64) ([]*SysRoleUserInfo, error) { mSysUserRole := NewSysUserRole() db := orm.GetDB().Table(m.TableName()+" AS r"). Select("r.id", "r.parent_id", "r.name", "u_r.id AS user_role_id"). Joins(fmt.Sprintf("LEFT JOIN %s AS u_r ON r.id = u_r.role_id AND u_r.uid = %d AND u_r.is_deleted = %d", mSysUserRole.TableName(), uid, model.DeleteStatusForNot)). Where("r.is_deleted = ?", model.DeleteStatusForNot) out := make([]*SysRoleUserInfo, 0) if err := db.Order("r.sort " + model.OrderModeToDesc).Order("r.id " + model.OrderModeToDesc).Scan(&out).Error; err != nil { return nil, err } return out, nil } func NewSysRole() *SysRole { return &SysRole{SysRole: model.NewSysRole()} }