package system import ( "eta_gn/eta_api/global" "eta_gn/eta_api/utils" "time" ) type SysRoleAdmin struct { Id int `gorm:"primaryKey" 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) err = global.DEFAULT_DmSQL.Raw(sql, adminId).Find(&items).Error 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) err = global.DEFAULT_DmSQL.Raw(sql, adminId, roleId).First(&item).Error 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...).QueryRows(&list) pars = append(pars, startSize) pars = append(pars, pageSize) err = global.DEFAULT_DmSQL.Raw(sql, pars...).Find(&list).Error 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) err = global.DEFAULT_DmSQL.Raw(sql, pars...).Scan(&total).Error 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) err = global.DEFAULT_DmSQL.Raw(sql, roleId).Find(&list).Error return } // AddRoleAdminBatch 批量新增留言版管理员 func AddRoleAdminBatch(admins []*SysRoleAdmin) (err error) { //o := orm.NewOrm() //_, err = o.InsertMulti(len(admins), admins) err = global.DEFAULT_DmSQL.CreateInBatches(admins, utils.MultiAddNum).Error 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() err = global.DEFAULT_DmSQL.Exec(sql, SysRoleAdminId).Error 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 //} err = global.DEFAULT_DmSQL.Raw(totalSQl, pars...).Scan(&total).Error if err != nil { return } sql += ` ORDER BY s.create_time DESC,s.admin_id ASC LIMIT ?,? ` //_, err = o.Raw(sql, pars...).QueryRows(&list) err = global.DEFAULT_DmSQL.Raw(sql, pars...).Find(&list).Error 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() err = global.DEFAULT_DmSQL.Exec(sql, adminId, roleIds).Error 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) err = global.DEFAULT_DmSQL.Raw(sql, adminIds, roleCodes).Find(&list).Error 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) err = global.DEFAULT_DmSQL.Raw(sql, adminId, roleCodes).Find(&list).Error 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) tx := global.DEFAULT_DmSQL.Begin() defer func() { if err != nil { _ = tx.Rollback() return } _ = 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() err = tx.Exec(sql, adminId, englishRoleIds).Error if err != nil { return } // 新增绑定关系 //_, err = tx.InsertMulti(len(roleAdmins), roleAdmins) err = tx.CreateInBatches(roleAdmins, utils.MultiAddNum).Error return } // SyncAdminEnRole 同步用户英文角色 type SyncAdminEnRole struct { AdminName string `description:"用户名"` RoleCodes []string `description:"角色Codes"` }