123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256 |
- package system
- import (
- "eta/eta_forum_admin/utils"
- "github.com/beego/beego/v2/client/orm"
- "time"
- )
- type SysRoleAdmin struct {
- Id int `orm:"column(id);pk" description:"自增ID"`
- AdminId int `orm:"column(admin_id);" description:"系统用户id"`
- RoleId int `orm:"column(role_id);" description:"角色ID"`
- CreateTime time.Time `orm:"column(create_time);" description:"创建时间"`
- }
- type RoleAdminItem struct {
- SysRoleAdminId int `description:"管理员账号和角色映射表id"`
- AdminId int `description:"系统用户id"`
- AdminName string `description:"系统用户名称"`
- RealName string `description:"系统用户姓名"`
- Enabled int `description:"1:有效,0:禁用"`
- Mobile string `description:"手机号"`
- RoleId int `description:"角色Id"`
- RoleTypeCode string `description:"角色编码"`
- DepartmentId int `description:"部门id"`
- DepartmentName string `description:"部门名称"`
- DepartmentGroup string `description:"部门分组"`
- TeamId int `description:"小组id"`
- GroupId int `description:"分组id"`
- GroupName string `description:"分组名称"`
- Authority int `description:"管理权限,0:无,1:部门负责人,2:小组负责人,或者ficc销售主管,4:ficc销售组长"`
- LabelVal int `description:"标签:1:超级管理员,2:管理员,3:部门经理,4:组长,5:ficc销售主管"`
- }
- func (sa *SysRoleAdmin) TableName() string {
- return "sys_role_admin"
- }
- // GetRoleIdsByAdminId 根据管理员账号查询角色ID
- func GetRoleIdsByAdminId(adminId int) (items []*SysRoleAdmin, err error) {
- sql := `SELECT * from sys_role_admin where admin_id = ?`
- _, err = orm.NewOrm().Raw(sql, adminId).QueryRows(&items)
- return
- }
- // GetRoleIdsByAdminIdRoleId 根据管理员账号和角色查询
- func GetRoleIdsByAdminIdRoleId(adminId int, roleId int) (item *SysRoleAdmin, err error) {
- sql := `SELECT * from sys_role_admin where admin_id = ? and role_id=?`
- err = orm.NewOrm().Raw(sql, adminId, roleId).QueryRow(&item)
- return
- }
- // GetRoleAdminList 查询对应角色绑定的管理员列表
- func GetRoleAdminList(condition string, pars []interface{}, startSize, pageSize int) (list []*RoleAdminItem, err error) {
- sql := `SELECT
- s.id as sys_role_admin_id,
- a.admin_id,
- a.admin_name,
- a.real_name,
- a.mobile,
- a.department_id,
- a.department_name,
- a.enabled,
- a.role_id,
- a.role_type_code ,
- a.group_id,
- a.authority,
- a.group_name
- FROM
- sys_role_admin s
- INNER JOIN admin a ON s.admin_id = a.admin_id
- where 1=1`
- if condition != "" {
- sql += condition
- }
- sql += ` ORDER BY s.id DESC limit ?, ?`
- _, err = orm.NewOrm().Raw(sql, pars, startSize, pageSize).QueryRows(&list)
- return
- }
- // GetRoleAdminListTotal 查询对应角色绑定的管理员列表总数
- func GetRoleAdminListTotal(condition string, pars []interface{}) (total int64, err error) {
- sql := `SELECT
- count(*)
- FROM
- sys_role_admin s
- INNER JOIN admin a ON s.admin_id = a.admin_id
- where 1=1`
- if condition != "" {
- sql += condition
- }
- err = orm.NewOrm().Raw(sql, pars).QueryRow(&total)
- return
- }
- // CheckRoleAdminByAdminIds 判断是否已经绑定过该角色
- func CheckRoleAdminByAdminIds(adminIds string, roleId int) (list []*SysRoleAdmin, err error) {
- sql := `SELECT
- s.*
- FROM
- sys_role_admin s
- LEFT JOIN admin a ON s.admin_id = a.admin_id
- where s.role_id=? and s.admin_id in (` + adminIds + `)`
- _, err = orm.NewOrm().Raw(sql, roleId).QueryRows(&list)
- return
- }
- // AddRoleAdminBatch 批量新增留言版管理员
- func AddRoleAdminBatch(admins []*SysRoleAdmin) (err error) {
- o := orm.NewOrm()
- _, err = o.InsertMulti(len(admins), admins)
- return
- }
- // DeleteRoleAdmin 删除管理员和角色的绑定
- func DeleteRoleAdmin(SysRoleAdminId int) (err error) {
- sql := `DELETE FROM sys_role_admin WHERE id=? `
- o := orm.NewOrm()
- _, err = o.Raw(sql, SysRoleAdminId).Exec()
- return
- }
- // GetRoleAdminById 根据ID查询绑定记录
- func GetRoleAdminById(SysRoleAdminId int) (item *SysRoleAdmin, err error) {
- sql := `SELECT
- *
- FROM
- sys_role_admin
- where id=?`
- err = orm.NewOrm().Raw(sql, SysRoleAdminId).QueryRow(&item)
- return
- }
- // GetEnglishAuthRoleAdminList 查询英文权限管理员列表
- func GetEnglishAuthRoleAdminList(condition string, pars []interface{}, startSize, pageSize int) (total int, list []*RoleAdminItem, err error) {
- o := orm.NewOrm()
- sql := `SELECT
- s.id as sys_role_admin_id,
- a.admin_id,
- a.admin_name,
- a.real_name,
- a.mobile,
- a.department_id,
- a.department_name,
- a.enabled,
- a.role_id,
- a.role_type_code ,
- a.group_id,
- a.authority,
- a.group_name
- FROM
- sys_role_admin AS s
- JOIN sys_role AS r ON s.role_id = r.role_id
- JOIN admin AS a ON s.admin_id = a.admin_id
- WHERE
- 1 = 1 `
- sql += condition
- sql += ` GROUP BY s.admin_id `
- totalSQl := `SELECT COUNT(1) total FROM (` + sql + `) z`
- if err = o.Raw(totalSQl, pars).QueryRow(&total); err != nil {
- return
- }
- sql += ` ORDER BY s.create_time DESC,s.admin_id ASC LIMIT ?,? `
- _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
- return
- }
- // DeleteRoleAdminByAdminIdAndRoleIds 通过管理员ID及角色IDs删除绑定
- func DeleteRoleAdminByAdminIdAndRoleIds(adminId int, roleIds []int) (err error) {
- if len(roleIds) == 0 {
- return
- }
- o := orm.NewOrm()
- sql := `DELETE FROM sys_role_admin WHERE admin_id = ? AND role_id IN (` + utils.GetOrmInReplace(len(roleIds)) + `) `
- _, err = o.Raw(sql, adminId, roleIds).Exec()
- return
- }
- // CheckEnglishAuthRoleAdminByAdminIds 通过管理员IDs判断是否已经绑定过英文权限角色
- func CheckEnglishAuthRoleAdminByAdminIds(adminIds []int, roleCodes []string) (list []*SysRoleAdmin, err error) {
- if len(adminIds) == 0 || len(roleCodes) == 0 {
- return
- }
- o := orm.NewOrm()
- sql := `SELECT
- s.*
- FROM
- sys_role_admin AS s
- JOIN sys_role AS r ON s.role_id = r.role_id
- JOIN admin AS a ON s.admin_id = a.admin_id
- WHERE
- s.admin_id IN (` + utils.GetOrmInReplace(len(adminIds)) + `) AND r.role_type_code IN (` + utils.GetOrmInReplace(len(roleCodes)) + `)
- GROUP BY
- s.admin_id`
- _, err = o.Raw(sql, adminIds, roleCodes).QueryRows(&list)
- return
- }
- // EnglishAuthRoleDetail 英文权限角色详情
- type EnglishAuthRoleDetail struct {
- AdminId int `description:"用户ID"`
- RoleTypeCode string `description:"角色类型编码"`
- }
- // GetAdminEnglishAuthRoleDetail 获取用户英文权限详情
- func GetAdminEnglishAuthRoleDetail(adminId int, roleCodes []string) (list []*EnglishAuthRoleDetail, err error) {
- if len(roleCodes) == 0 {
- return
- }
- o := orm.NewOrm()
- sql := `SELECT
- s.admin_id, r.role_type_code
- FROM
- sys_role_admin AS s
- JOIN sys_role AS r ON s.role_id = r.role_id
- JOIN admin AS a ON s.admin_id = a.admin_id
- WHERE
- s.admin_id = ? AND r.role_type_code IN (` + utils.GetOrmInReplace(len(roleCodes)) + `)`
- _, err = o.Raw(sql, adminId, roleCodes).QueryRows(&list)
- return
- }
- // EditEnglishAuthRoleAdmin 编辑管理员英文权限
- func EditEnglishAuthRoleAdmin(adminId int, englishRoleIds []int, roleAdmins []*SysRoleAdmin) (err error) {
- o := orm.NewOrm()
- tx, e := o.Begin()
- if e != nil {
- return
- }
- defer func() {
- if err != nil {
- _ = tx.Rollback()
- } else {
- _ = tx.Commit()
- }
- }()
- // 删除原绑定关系
- sql := `DELETE FROM sys_role_admin WHERE admin_id = ? AND role_id IN (` + utils.GetOrmInReplace(len(englishRoleIds)) + `)`
- _, err = tx.Raw(sql, adminId, englishRoleIds).Exec()
- if err != nil {
- return
- }
- // 新增绑定关系
- _, err = tx.InsertMulti(len(roleAdmins), roleAdmins)
- return
- }
- // SyncAdminEnRole 同步用户英文角色
- type SyncAdminEnRole struct {
- AdminName string `description:"用户名"`
- RoleCodes []string `description:"角色Codes"`
- }
|