sys_role_admin.go 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294
  1. package system
  2. import (
  3. "eta_gn/eta_api/global"
  4. "eta_gn/eta_api/utils"
  5. "time"
  6. )
  7. type SysRoleAdmin struct {
  8. Id int `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 = orm.NewOrm().Raw(sql, adminId).QueryRows(&items)
  38. err = global.DEFAULT_DmSQL.Raw(sql, adminId).Find(&items).Error
  39. return
  40. }
  41. // GetRoleIdsByAdminIdRoleId 根据管理员账号和角色查询
  42. func GetRoleIdsByAdminIdRoleId(adminId int, roleId int) (item *SysRoleAdmin, err error) {
  43. sql := `SELECT * from sys_role_admin where admin_id = ? and role_id=?`
  44. //err = orm.NewOrm().Raw(sql, adminId, roleId).QueryRow(&item)
  45. err = global.DEFAULT_DmSQL.Raw(sql, adminId, roleId).First(&item).Error
  46. return
  47. }
  48. // GetRoleAdminList 查询对应角色绑定的管理员列表
  49. func GetRoleAdminList(condition string, pars []interface{}, startSize, pageSize int) (list []*RoleAdminItem, err error) {
  50. sql := `SELECT
  51. s.id as sys_role_admin_id,
  52. a.admin_id,
  53. a.admin_name,
  54. a.real_name,
  55. a.mobile,
  56. a.department_id,
  57. a.department_name,
  58. a.enabled,
  59. a.role_id,
  60. a.role_type_code ,
  61. a.group_id,
  62. a.authority,
  63. a.group_name
  64. FROM
  65. sys_role_admin s
  66. INNER JOIN admin a ON s.admin_id = a.admin_id
  67. where 1=1`
  68. if condition != "" {
  69. sql += condition
  70. }
  71. sql += ` ORDER BY s.id DESC limit ?, ?`
  72. //_, err = orm.NewOrm().Raw(sql, pars...).QueryRows(&list)
  73. pars = append(pars, startSize)
  74. pars = append(pars, pageSize)
  75. err = global.DEFAULT_DmSQL.Raw(sql, pars...).Find(&list).Error
  76. return
  77. }
  78. // GetRoleAdminListTotal 查询对应角色绑定的管理员列表总数
  79. func GetRoleAdminListTotal(condition string, pars []interface{}) (total int64, err error) {
  80. sql := `SELECT
  81. count(*)
  82. FROM
  83. sys_role_admin s
  84. INNER JOIN admin a ON s.admin_id = a.admin_id
  85. where 1=1`
  86. if condition != "" {
  87. sql += condition
  88. }
  89. //err = orm.NewOrm().Raw(sql, pars).QueryRow(&total)
  90. err = global.DEFAULT_DmSQL.Raw(sql, pars...).Scan(&total).Error
  91. return
  92. }
  93. // CheckRoleAdminByAdminIds 判断是否已经绑定过该角色
  94. func CheckRoleAdminByAdminIds(adminIds string, roleId int) (list []*SysRoleAdmin, err error) {
  95. sql := `SELECT
  96. s.*
  97. FROM
  98. sys_role_admin s
  99. LEFT JOIN admin a ON s.admin_id = a.admin_id
  100. where s.role_id=? and s.admin_id in (` + adminIds + `)`
  101. //_, err = orm.NewOrm().Raw(sql, roleId).QueryRows(&list)
  102. err = global.DEFAULT_DmSQL.Raw(sql, roleId).Find(&list).Error
  103. return
  104. }
  105. // AddRoleAdminBatch 批量新增留言版管理员
  106. func AddRoleAdminBatch(admins []*SysRoleAdmin) (err error) {
  107. //o := orm.NewOrm()
  108. //_, err = o.InsertMulti(len(admins), admins)
  109. err = global.DEFAULT_DmSQL.CreateInBatches(admins, utils.MultiAddNum).Error
  110. return
  111. }
  112. // DeleteRoleAdmin 删除管理员和角色的绑定
  113. func DeleteRoleAdmin(SysRoleAdminId int) (err error) {
  114. sql := `DELETE FROM sys_role_admin WHERE id=? `
  115. //o := orm.NewOrm()
  116. //_, err = o.Raw(sql, SysRoleAdminId).Exec()
  117. err = global.DEFAULT_DmSQL.Exec(sql, SysRoleAdminId).Error
  118. return
  119. }
  120. // GetRoleAdminById 根据ID查询绑定记录
  121. //func GetRoleAdminById(SysRoleAdminId int) (item *SysRoleAdmin, err error) {
  122. // sql := `SELECT
  123. // *
  124. //FROM
  125. // sys_role_admin
  126. //where id=?`
  127. // err = orm.NewOrm().Raw(sql, SysRoleAdminId).QueryRow(&item)
  128. // return
  129. //}
  130. // GetEnglishAuthRoleAdminList 查询英文权限管理员列表
  131. func GetEnglishAuthRoleAdminList(condition string, pars []interface{}, startSize, pageSize int) (total int, list []*RoleAdminItem, err error) {
  132. //o := orm.NewOrm()
  133. sql := `SELECT
  134. s.id as sys_role_admin_id,
  135. a.admin_id,
  136. a.admin_name,
  137. a.real_name,
  138. a.mobile,
  139. a.department_id,
  140. a.department_name,
  141. a.enabled,
  142. a.role_id,
  143. a.role_type_code ,
  144. a.group_id,
  145. a.authority,
  146. a.group_name
  147. FROM
  148. sys_role_admin AS s
  149. JOIN sys_role AS r ON s.role_id = r.role_id
  150. JOIN admin AS a ON s.admin_id = a.admin_id
  151. WHERE
  152. 1 = 1 `
  153. sql += condition
  154. sql += ` GROUP BY s.admin_id `
  155. totalSQl := `SELECT COUNT(1) total FROM (` + sql + `) z`
  156. //if err = o.Raw(totalSQl, pars).QueryRow(&total); err != nil {
  157. // return
  158. //}
  159. err = global.DEFAULT_DmSQL.Raw(totalSQl, pars...).Scan(&total).Error
  160. if err != nil {
  161. return
  162. }
  163. sql += ` ORDER BY s.create_time DESC,s.admin_id ASC LIMIT ?,? `
  164. //_, err = o.Raw(sql, pars...).QueryRows(&list)
  165. err = global.DEFAULT_DmSQL.Raw(sql, pars...).Find(&list).Error
  166. return
  167. }
  168. // DeleteRoleAdminByAdminIdAndRoleIds 通过管理员ID及角色IDs删除绑定
  169. func DeleteRoleAdminByAdminIdAndRoleIds(adminId int, roleIds []int) (err error) {
  170. if len(roleIds) == 0 {
  171. return
  172. }
  173. //o := orm.NewOrm()
  174. sql := `DELETE FROM sys_role_admin WHERE admin_id = ? AND role_id IN (` + utils.GetOrmInReplace(len(roleIds)) + `) `
  175. //_, err = o.Raw(sql, adminId, roleIds).Exec()
  176. err = global.DEFAULT_DmSQL.Exec(sql, adminId, roleIds).Error
  177. return
  178. }
  179. // CheckEnglishAuthRoleAdminByAdminIds 通过管理员IDs判断是否已经绑定过英文权限角色
  180. func CheckEnglishAuthRoleAdminByAdminIds(adminIds []int, roleCodes []string) (list []*SysRoleAdmin, err error) {
  181. if len(adminIds) == 0 || len(roleCodes) == 0 {
  182. return
  183. }
  184. //o := orm.NewOrm()
  185. sql := `SELECT
  186. s.*
  187. FROM
  188. sys_role_admin AS s
  189. JOIN sys_role AS r ON s.role_id = r.role_id
  190. JOIN admin AS a ON s.admin_id = a.admin_id
  191. WHERE
  192. s.admin_id IN (` + utils.GetOrmInReplace(len(adminIds)) + `) AND r.role_type_code IN (` + utils.GetOrmInReplace(len(roleCodes)) + `)
  193. GROUP BY
  194. s.admin_id`
  195. //_, err = o.Raw(sql, adminIds, roleCodes).QueryRows(&list)
  196. err = global.DEFAULT_DmSQL.Raw(sql, adminIds, roleCodes).Find(&list).Error
  197. return
  198. }
  199. // EnglishAuthRoleDetail 英文权限角色详情
  200. type EnglishAuthRoleDetail struct {
  201. AdminId int `description:"用户ID"`
  202. RoleTypeCode string `description:"角色类型编码"`
  203. }
  204. // GetAdminEnglishAuthRoleDetail 获取用户英文权限详情
  205. func GetAdminEnglishAuthRoleDetail(adminId int, roleCodes []string) (list []*EnglishAuthRoleDetail, err error) {
  206. if len(roleCodes) == 0 {
  207. return
  208. }
  209. //o := orm.NewOrm()
  210. sql := `SELECT
  211. s.admin_id, r.role_type_code
  212. FROM
  213. sys_role_admin AS s
  214. JOIN sys_role AS r ON s.role_id = r.role_id
  215. JOIN admin AS a ON s.admin_id = a.admin_id
  216. WHERE
  217. s.admin_id = ? AND r.role_type_code IN (` + utils.GetOrmInReplace(len(roleCodes)) + `)`
  218. //_, err = o.Raw(sql, adminId, roleCodes).QueryRows(&list)
  219. err = global.DEFAULT_DmSQL.Raw(sql, adminId, roleCodes).Find(&list).Error
  220. return
  221. }
  222. // EditEnglishAuthRoleAdmin 编辑管理员英文权限
  223. func EditEnglishAuthRoleAdmin(adminId int, englishRoleIds []int, roleAdmins []*SysRoleAdmin) (err error) {
  224. //o := orm.NewOrm()
  225. //tx, e := o.Begin()
  226. //if e != nil {
  227. // return
  228. //}
  229. //defer func() {
  230. // if err != nil {
  231. // _ = tx.Rollback()
  232. // } else {
  233. // _ = tx.Commit()
  234. // }
  235. //}()
  236. //
  237. //// 删除原绑定关系
  238. //sql := `DELETE FROM sys_role_admin WHERE admin_id = ? AND role_id IN (` + utils.GetOrmInReplace(len(englishRoleIds)) + `)`
  239. //_, err = tx.Raw(sql, adminId, englishRoleIds).Exec()
  240. //if err != nil {
  241. // return
  242. //}
  243. //
  244. //// 新增绑定关系
  245. //_, err = tx.InsertMulti(len(roleAdmins), roleAdmins)
  246. tx := global.DEFAULT_DmSQL.Begin()
  247. defer func() {
  248. if err != nil {
  249. _ = tx.Rollback()
  250. return
  251. }
  252. _ = tx.Commit()
  253. }()
  254. // 删除原绑定关系
  255. sql := `DELETE FROM sys_role_admin WHERE admin_id = ? AND role_id IN (` + utils.GetOrmInReplace(len(englishRoleIds)) + `)`
  256. //_, err = tx.Raw(sql, adminId, englishRoleIds).Exec()
  257. err = tx.Exec(sql, adminId, englishRoleIds).Error
  258. if err != nil {
  259. return
  260. }
  261. // 新增绑定关系
  262. //_, err = tx.InsertMulti(len(roleAdmins), roleAdmins)
  263. err = tx.CreateInBatches(roleAdmins, utils.MultiAddNum).Error
  264. return
  265. }
  266. // SyncAdminEnRole 同步用户英文角色
  267. type SyncAdminEnRole struct {
  268. AdminName string `description:"用户名"`
  269. RoleCodes []string `description:"角色Codes"`
  270. }