sys_role_admin.go 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. package system
  2. import (
  3. "eta/eta_api/global"
  4. "eta/eta_api/utils"
  5. "time"
  6. )
  7. type SysRoleAdmin struct {
  8. Id int `orm:"column(id);pk" gorm:"primaryKey" description:"自增ID"`
  9. AdminId int `orm:"column(admin_id);" description:"系统用户id"`
  10. RoleId int `orm:"column(role_id);" description:"角色ID"`
  11. CreateTime time.Time `orm:"column(create_time);" description:"创建时间"`
  12. }
  13. type RoleAdminItem struct {
  14. SysRoleAdminId int `description:"管理员账号和角色映射表id"`
  15. AdminId int `description:"系统用户id"`
  16. AdminName string `description:"系统用户名称"`
  17. RealName string `description:"系统用户姓名"`
  18. Enabled int `description:"1:有效,0:禁用"`
  19. Mobile string `description:"手机号"`
  20. RoleId int `description:"角色Id"`
  21. RoleTypeCode string `description:"角色编码"`
  22. DepartmentId int `description:"部门id"`
  23. DepartmentName string `description:"部门名称"`
  24. DepartmentGroup string `description:"部门分组"`
  25. TeamId int `description:"小组id"`
  26. GroupId int `description:"分组id"`
  27. GroupName string `description:"分组名称"`
  28. Authority int `description:"管理权限,0:无,1:部门负责人,2:小组负责人,或者ficc销售主管,4:ficc销售组长"`
  29. LabelVal int `description:"标签:1:超级管理员,2:管理员,3:部门经理,4:组长,5:ficc销售主管"`
  30. }
  31. func (sa *SysRoleAdmin) TableName() string {
  32. return "sys_role_admin"
  33. }
  34. // GetRoleIdsByAdminId 根据管理员账号查询角色ID
  35. func GetRoleIdsByAdminId(adminId int) (items []*SysRoleAdmin, err error) {
  36. sql := `SELECT * from sys_role_admin where admin_id = ?`
  37. err = global.DbMap[utils.DbNameMaster].Raw(sql, adminId).Find(&items).Error
  38. return
  39. }
  40. // GetRoleIdsByAdminIdRoleId 根据管理员账号和角色查询
  41. func GetRoleIdsByAdminIdRoleId(adminId int, roleId int) (item *SysRoleAdmin, err error) {
  42. sql := `SELECT * from sys_role_admin where admin_id = ? and role_id=?`
  43. err = global.DbMap[utils.DbNameMaster].Raw(sql, adminId, roleId).First(&item).Error
  44. return
  45. }
  46. // GetRoleAdminList 查询对应角色绑定的管理员列表
  47. func GetRoleAdminList(condition string, pars []interface{}, startSize, pageSize int) (list []*RoleAdminItem, err error) {
  48. sql := `SELECT
  49. s.id as sys_role_admin_id,
  50. a.admin_id,
  51. a.admin_name,
  52. a.real_name,
  53. a.mobile,
  54. a.department_id,
  55. a.department_name,
  56. a.enabled,
  57. a.role_id,
  58. a.role_type_code ,
  59. a.group_id,
  60. a.authority,
  61. a.group_name
  62. FROM
  63. sys_role_admin s
  64. INNER JOIN admin a ON s.admin_id = a.admin_id
  65. where 1=1`
  66. if condition != "" {
  67. sql += condition
  68. }
  69. sql += ` ORDER BY s.id DESC limit ?, ?`
  70. sql = utils.ReplaceDriverKeywords("", sql)
  71. pars = append(pars, startSize, pageSize)
  72. err = global.DbMap[utils.DbNameMaster].Raw(sql, pars...).Find(&list).Error
  73. return
  74. }
  75. // GetRoleAdminListTotal 查询对应角色绑定的管理员列表总数
  76. func GetRoleAdminListTotal(condition string, pars []interface{}) (total int64, err error) {
  77. sql := `SELECT
  78. count(*)
  79. FROM
  80. sys_role_admin s
  81. INNER JOIN admin a ON s.admin_id = a.admin_id
  82. where 1=1`
  83. if condition != "" {
  84. sql += condition
  85. }
  86. sql = utils.ReplaceDriverKeywords("", sql)
  87. err = global.DbMap[utils.DbNameMaster].Raw(sql, pars...).Scan(&total).Error
  88. return
  89. }
  90. // CheckRoleAdminByAdminIds 判断是否已经绑定过该角色
  91. func CheckRoleAdminByAdminIds(adminIds string, roleId int) (list []*SysRoleAdmin, err error) {
  92. sql := `SELECT
  93. s.*
  94. FROM
  95. sys_role_admin s
  96. LEFT JOIN admin a ON s.admin_id = a.admin_id
  97. where s.role_id=? and s.admin_id in (` + adminIds + `)`
  98. sql = utils.ReplaceDriverKeywords("", sql)
  99. err = global.DbMap[utils.DbNameMaster].Raw(sql, roleId).Find(&list).Error
  100. return
  101. }
  102. // AddRoleAdminBatch 批量新增留言版管理员
  103. func AddRoleAdminBatch(admins []*SysRoleAdmin) (err error) {
  104. o := global.DbMap[utils.DbNameMaster]
  105. err = o.CreateInBatches(admins, utils.MultiAddNum).Error
  106. return
  107. }
  108. // DeleteRoleAdmin 删除管理员和角色的绑定
  109. func DeleteRoleAdmin(SysRoleAdminId int) (err error) {
  110. sql := `DELETE FROM sys_role_admin WHERE id=? `
  111. o := global.DbMap[utils.DbNameMaster]
  112. err = o.Exec(sql, SysRoleAdminId).Error
  113. return
  114. }
  115. // GetRoleAdminById 根据ID查询绑定记录
  116. func GetRoleAdminById(SysRoleAdminId int) (item *SysRoleAdmin, err error) {
  117. sql := `SELECT
  118. *
  119. FROM
  120. sys_role_admin
  121. where id=?`
  122. err = global.DbMap[utils.DbNameMaster].Raw(sql, SysRoleAdminId).First(&item).Error
  123. return
  124. }
  125. // GetEnglishAuthRoleAdminList 查询英文权限管理员列表
  126. func GetEnglishAuthRoleAdminList(condition string, pars []interface{}, startSize, pageSize int) (total int, list []*RoleAdminItem, err error) {
  127. o := global.DbMap[utils.DbNameMaster]
  128. sql := `SELECT
  129. s.id as sys_role_admin_id,
  130. a.admin_id,
  131. a.admin_name,
  132. a.real_name,
  133. a.mobile,
  134. a.department_id,
  135. a.department_name,
  136. a.enabled,
  137. a.role_id,
  138. a.role_type_code ,
  139. a.group_id,
  140. a.authority,
  141. a.group_name
  142. FROM
  143. sys_role_admin AS s
  144. JOIN sys_role AS r ON s.role_id = r.role_id
  145. JOIN admin AS a ON s.admin_id = a.admin_id
  146. WHERE
  147. 1 = 1 `
  148. sql = utils.ReplaceDriverKeywords("", sql)
  149. sql += condition
  150. sql += ` GROUP BY s.admin_id `
  151. totalSQl := `SELECT COUNT(1) total FROM (` + sql + `) z`
  152. if err = o.Raw(totalSQl, pars...).Scan(&total).Error; err != nil {
  153. return
  154. }
  155. sql += ` ORDER BY s.create_time DESC,s.admin_id ASC LIMIT ?,? `
  156. pars = append(pars, startSize, pageSize)
  157. err = o.Raw(sql, pars...).Find(&list).Error
  158. return
  159. }
  160. // DeleteRoleAdminByAdminIdAndRoleIds 通过管理员ID及角色IDs删除绑定
  161. func DeleteRoleAdminByAdminIdAndRoleIds(adminId int, roleIds []int) (err error) {
  162. if len(roleIds) == 0 {
  163. return
  164. }
  165. o := global.DbMap[utils.DbNameMaster]
  166. sql := `DELETE FROM sys_role_admin WHERE admin_id = ? AND role_id IN (` + utils.GetOrmInReplace(len(roleIds)) + `) `
  167. err = o.Exec(sql, adminId, roleIds).Error
  168. return
  169. }
  170. // CheckEnglishAuthRoleAdminByAdminIds 通过管理员IDs判断是否已经绑定过英文权限角色
  171. func CheckEnglishAuthRoleAdminByAdminIds(adminIds []int, roleCodes []string) (list []*SysRoleAdmin, err error) {
  172. if len(adminIds) == 0 || len(roleCodes) == 0 {
  173. return
  174. }
  175. o := global.DbMap[utils.DbNameMaster]
  176. sql := `SELECT
  177. s.*
  178. FROM
  179. sys_role_admin AS s
  180. JOIN sys_role AS r ON s.role_id = r.role_id
  181. JOIN admin AS a ON s.admin_id = a.admin_id
  182. WHERE
  183. s.admin_id IN (` + utils.GetOrmInReplace(len(adminIds)) + `) AND r.role_type_code IN (` + utils.GetOrmInReplace(len(roleCodes)) + `)
  184. GROUP BY
  185. s.admin_id`
  186. sql = utils.ReplaceDriverKeywords("", sql)
  187. err = o.Raw(sql, adminIds, roleCodes).Find(&list).Error
  188. return
  189. }
  190. // EnglishAuthRoleDetail 英文权限角色详情
  191. type EnglishAuthRoleDetail struct {
  192. AdminId int `description:"用户ID"`
  193. RoleTypeCode string `description:"角色类型编码"`
  194. }
  195. // GetAdminEnglishAuthRoleDetail 获取用户英文权限详情
  196. func GetAdminEnglishAuthRoleDetail(adminId int, roleCodes []string) (list []*EnglishAuthRoleDetail, err error) {
  197. if len(roleCodes) == 0 {
  198. return
  199. }
  200. o := global.DbMap[utils.DbNameMaster]
  201. sql := `SELECT
  202. s.admin_id, r.role_type_code
  203. FROM
  204. sys_role_admin AS s
  205. JOIN sys_role AS r ON s.role_id = r.role_id
  206. JOIN admin AS a ON s.admin_id = a.admin_id
  207. WHERE
  208. s.admin_id = ? AND r.role_type_code IN (` + utils.GetOrmInReplace(len(roleCodes)) + `)`
  209. sql = utils.ReplaceDriverKeywords("", sql)
  210. err = o.Raw(sql, adminId, roleCodes).Find(&list).Error
  211. return
  212. }
  213. // EditEnglishAuthRoleAdmin 编辑管理员英文权限
  214. func EditEnglishAuthRoleAdmin(adminId int, englishRoleIds []int, roleAdmins []*SysRoleAdmin) (err error) {
  215. o := global.DbMap[utils.DbNameMaster]
  216. tx := o.Begin()
  217. defer func() {
  218. if err != nil {
  219. _ = tx.Rollback()
  220. } else {
  221. _ = tx.Commit()
  222. }
  223. }()
  224. // 删除原绑定关系
  225. sql := `DELETE FROM sys_role_admin WHERE admin_id = ? AND role_id IN (` + utils.GetOrmInReplace(len(englishRoleIds)) + `)`
  226. err = tx.Exec(sql, adminId, englishRoleIds).Error
  227. if err != nil {
  228. return
  229. }
  230. // 新增绑定关系
  231. err = tx.CreateInBatches(roleAdmins, utils.MultiAddNum).Error
  232. return
  233. }
  234. // SyncAdminEnRole 同步用户英文角色
  235. type SyncAdminEnRole struct {
  236. AdminName string `description:"用户名"`
  237. RoleCodes []string `description:"角色Codes"`
  238. }