sys_role.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/rdlucklib/rdluck_tools/paging"
  6. "hongze/hz_crm_api/models"
  7. "hongze/hz_crm_api/models/system"
  8. "hongze/hz_crm_api/services"
  9. "hongze/hz_crm_api/utils"
  10. "strconv"
  11. "strings"
  12. "time"
  13. )
  14. type SysRoleController struct {
  15. BaseAuthController
  16. }
  17. // @Title 新增角色
  18. // @Description 新增角色接口
  19. // @Param request body system.SysRoleAddReq true "type json string"
  20. // @Success 200 新增成功
  21. // @router /role/add [post]
  22. func (this *SysRoleController) Add() {
  23. br := new(models.BaseResponse).Init()
  24. defer func() {
  25. this.Data["json"] = br
  26. this.ServeJSON()
  27. }()
  28. var req system.SysRoleAddReq
  29. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  30. if err != nil {
  31. br.Msg = "参数解析异常!"
  32. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  33. return
  34. }
  35. if req.RoleName == "" {
  36. br.Msg = "角色名称不能为空"
  37. return
  38. }
  39. count, err := system.GetSysRoleCount(req.RoleName)
  40. if err != nil && err.Error() != utils.ErrNoRow() {
  41. br.Msg = "获取数据失败"
  42. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  43. return
  44. }
  45. if count > 0 {
  46. br.Msg = "角色已存在,请重新输入"
  47. return
  48. }
  49. item := new(system.SysRole)
  50. item.RoleName = req.RoleName
  51. item.RoleType = req.RoleType
  52. item.RoleTypeCode = services.GetRoleTypeCode(req.RoleType)
  53. item.CreateTime = time.Now()
  54. item.ModifyTime = time.Now()
  55. _, err = system.AddSysRole(item)
  56. if err != nil {
  57. br.Msg = "新增失败"
  58. br.ErrMsg = "新增失败,Err:" + err.Error()
  59. return
  60. }
  61. br.Ret = 200
  62. br.Success = true
  63. br.Msg = "新增成功"
  64. }
  65. // @Title 修改角色
  66. // @Description 修改角色接口
  67. // @Param request body system.SysRoleEditReq true "type json string"
  68. // @Success 200 修改成功
  69. // @router /role/edit [post]
  70. func (this *SysRoleController) Edit() {
  71. br := new(models.BaseResponse).Init()
  72. defer func() {
  73. this.Data["json"] = br
  74. this.ServeJSON()
  75. }()
  76. var req system.SysRoleEditReq
  77. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  78. if err != nil {
  79. br.Msg = "参数解析异常!"
  80. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  81. return
  82. }
  83. if req.RoleId <= 0 {
  84. br.Msg = "参数错误"
  85. br.ErrMsg = "参数错误,GroupId 小于等于0 "
  86. return
  87. }
  88. if req.RoleName == "" {
  89. br.Msg = "分组名称不能为空"
  90. return
  91. }
  92. item, err := system.GetSysRoleByName(req.RoleName)
  93. if err != nil && err.Error() != utils.ErrNoRow() {
  94. br.Msg = "获取数据失败"
  95. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  96. return
  97. }
  98. if item != nil {
  99. if item.RoleId != req.RoleId {
  100. br.Msg = "名称已存在,请重新输入"
  101. return
  102. }
  103. }
  104. roleTypeCode := services.GetRoleTypeCode(req.RoleType)
  105. err = system.ModifySysRole(req.RoleName, req.RoleType, roleTypeCode, req.RoleId)
  106. if err != nil {
  107. br.Msg = "修改失败"
  108. br.ErrMsg = "修改失败,Err:" + err.Error()
  109. return
  110. }
  111. br.Ret = 200
  112. br.Success = true
  113. br.IsAddLog = true
  114. br.Msg = "修改成功"
  115. }
  116. // @Title 删除角色
  117. // @Description 删除角色接口
  118. // @Param request body system.SysRoleDeleteReq true "type json string"
  119. // @Success 200 删除成功
  120. // @router /role/delete [post]
  121. func (this *SysRoleController) Delete() {
  122. br := new(models.BaseResponse).Init()
  123. defer func() {
  124. this.Data["json"] = br
  125. this.ServeJSON()
  126. }()
  127. var req system.SysRoleDeleteReq
  128. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  129. if err != nil {
  130. br.Msg = "参数解析异常!"
  131. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  132. return
  133. }
  134. if req.RoleId <= 0 {
  135. br.Msg = "参数错误"
  136. br.ErrMsg = "参数错误,GroupId 小于等于0 "
  137. return
  138. }
  139. err = system.DeleteSysRole(req.RoleId)
  140. if err != nil {
  141. br.Msg = "删除失败"
  142. br.ErrMsg = "删除失败,Err:" + err.Error()
  143. return
  144. }
  145. br.Ret = 200
  146. br.Success = true
  147. br.IsAddLog = true
  148. br.Msg = "删除成功"
  149. }
  150. // @Title 获取角色列表
  151. // @Description 获取角色列表接口
  152. // @Param PageSize query int true "每页数据条数"
  153. // @Param CurrentIndex query int true "当前页页码,从1开始"
  154. // @Param KeyWord query string true "搜索关键词"
  155. // @Success 200 {object} system.SysRoleListResp
  156. // @router /role/list [get]
  157. func (this *SysRoleController) ListSysRole() {
  158. br := new(models.BaseResponse).Init()
  159. defer func() {
  160. this.Data["json"] = br
  161. this.ServeJSON()
  162. }()
  163. sysUser := this.SysUser
  164. if sysUser == nil {
  165. br.Msg = "请登录"
  166. br.ErrMsg = "请登录,SysUser Is Empty"
  167. return
  168. }
  169. pageSize, _ := this.GetInt("PageSize")
  170. currentIndex, _ := this.GetInt("CurrentIndex")
  171. keyWord := this.GetString("KeyWord")
  172. var startSize int
  173. if pageSize <= 0 {
  174. pageSize = utils.PageSize20
  175. }
  176. if currentIndex <= 0 {
  177. currentIndex = 1
  178. }
  179. startSize = utils.StartIndex(currentIndex, pageSize)
  180. var condition string
  181. var pars []interface{}
  182. if keyWord != "" {
  183. condition += ` AND role_name LIKE '%` + keyWord + `%' `
  184. }
  185. total, err := system.GetSysRoleListCount(condition, pars)
  186. if err != nil {
  187. br.Msg = "获取失败"
  188. br.ErrMsg = "获取失败,Err:" + err.Error()
  189. return
  190. }
  191. list, err := system.GetSysRoleList(condition, pars, startSize, pageSize)
  192. if err != nil {
  193. br.Msg = "获取失败"
  194. br.ErrMsg = "获取失败,Err:" + err.Error()
  195. return
  196. }
  197. page := paging.GetPaging(currentIndex, pageSize, total)
  198. resp := new(system.SysRoleListResp)
  199. resp.List = list
  200. resp.Paging = page
  201. br.Ret = 200
  202. br.Success = true
  203. br.Msg = "获取成功"
  204. br.Data = resp
  205. }
  206. // @Title 角色设置权限-菜单列表
  207. // @Description 角色设置权限-菜单列表
  208. // @Param RoleId query int true "角色Id"
  209. // @Success 200 {object} system.SysRoleListResp
  210. // @router /role/menu/list [get]
  211. func (this *SysRoleController) SysRoleMenusList() {
  212. br := new(models.BaseResponse).Init()
  213. defer func() {
  214. this.Data["json"] = br
  215. this.ServeJSON()
  216. }()
  217. roleId, err := this.GetInt("RoleId")
  218. if err != nil {
  219. br.Msg = "获取角色失败"
  220. br.ErrMsg = "获取角色失败,Err:" + err.Error()
  221. return
  222. }
  223. fmt.Println("roleId", roleId)
  224. list := make([]*system.RoleMenuList, 0)
  225. sysUser := this.SysUser
  226. if sysUser == nil {
  227. br.Msg = "请登录"
  228. br.ErrMsg = "请登录,SysUser Is Empty"
  229. return
  230. }
  231. list, err = system.GetRoleMenuList()
  232. if err != nil {
  233. br.Msg = "获取失败"
  234. br.ErrMsg = "获取失败,Err:" + err.Error()
  235. return
  236. }
  237. lenList := len(list)
  238. for i := 0; i < lenList; i++ {
  239. item := list[i]
  240. child, err := system.GetRoleMenuByParentId(item.MenuId)
  241. if err != nil {
  242. br.Msg = "获取失败"
  243. br.ErrMsg = "获取子菜单数据失败,Err:" + err.Error()
  244. return
  245. }
  246. list[i].Child = child
  247. checkList := make([]int, 0)
  248. if roleId > 0 {
  249. checkItem, err := system.GetCheckListRoleMenu(roleId, item.MenuId)
  250. if err != nil {
  251. br.Msg = "获取失败"
  252. br.ErrMsg = "获取选择数据失败,Err:" + err.Error()
  253. return
  254. }
  255. for _, v := range checkItem {
  256. checkList = append(checkList, v.MenuId)
  257. }
  258. }
  259. list[i].CheckList = checkList
  260. }
  261. resp := new(system.RoleMenuListResp)
  262. resp.List = list
  263. br.Ret = 200
  264. br.Success = true
  265. br.Msg = "获取成功"
  266. br.Data = resp
  267. }
  268. // @Title 角色设置权限
  269. // @Description 角色设置权限
  270. // @Param request body system.RoleMenusAddReq true "type json string"
  271. // @Success 200 {object} system.SysRoleListResp
  272. // @router /role/menu/add [post]
  273. func (this *SysRoleController) SysRoleMenusAdd() {
  274. br := new(models.BaseResponse).Init()
  275. defer func() {
  276. this.Data["json"] = br
  277. this.ServeJSON()
  278. }()
  279. var req system.RoleMenusAddReq
  280. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  281. if err != nil {
  282. br.Msg = "参数解析异常!"
  283. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  284. return
  285. }
  286. roleId := req.RoleId
  287. if roleId <= 0 {
  288. br.Msg = "参数错误"
  289. br.ErrMsg = "参数错误,RoleId 小于等于0 "
  290. return
  291. }
  292. if req.MenuIdStr == "" {
  293. br.Msg = "请选择菜单"
  294. br.ErrMsg = "请选择菜单,MenuIdStr IS Empty "
  295. return
  296. }
  297. sysUser := this.SysUser
  298. if sysUser == nil {
  299. br.Msg = "请登录"
  300. br.ErrMsg = "请登录,SysUser Is Empty"
  301. return
  302. }
  303. err = system.DeleteRoleMenuByRoleId(roleId)
  304. if err != nil {
  305. br.Msg = "设置失败"
  306. br.ErrMsg = "清空原有设置失败,Err:" + err.Error()
  307. return
  308. }
  309. menuArr := strings.Split(req.MenuIdStr, ",")
  310. for _, v := range menuArr {
  311. menuId, err := strconv.Atoi(v)
  312. if err != nil {
  313. br.Msg = "设置失败"
  314. br.ErrMsg = "menuId 解析失败,Err:" + err.Error()
  315. return
  316. }
  317. item := new(system.SysRoleMenu)
  318. item.RoleId = roleId
  319. item.MenuId = menuId
  320. _, err = system.AddSysRoleMenu(item)
  321. if err != nil {
  322. br.Msg = "设置失败"
  323. br.ErrMsg = "新增设置失败,Err:" + err.Error()
  324. return
  325. }
  326. }
  327. if req.MenuButtonIdStr != "" {
  328. err = system.DeleteSysRoleButton(roleId)
  329. if err != nil {
  330. br.Msg = "设置失败"
  331. br.ErrMsg = "删除已设置数据失败,Err:" + err.Error()
  332. return
  333. }
  334. buttonMap := make(map[string]string)
  335. buttonArr := strings.Split(req.MenuButtonIdStr, ",")
  336. for _, v := range buttonArr {
  337. if _, ok := buttonMap[v]; !ok {
  338. buttonId, err := strconv.Atoi(v)
  339. count, err := system.GetSysRoleButtonCount(roleId, buttonId)
  340. if err != nil {
  341. br.Msg = "判断设置失败存在失败"
  342. br.ErrMsg = "判断设置失败存在失败,Err:" + err.Error()
  343. return
  344. }
  345. if count <= 0 {
  346. button := new(system.SysRoleButton)
  347. button.RoleId = roleId
  348. button.MenuButtonId = buttonId
  349. button.CreateTime = time.Now()
  350. _, err = system.AddSysRoleButton(button)
  351. if err != nil {
  352. br.Msg = "设置失败"
  353. br.ErrMsg = "按钮权限设置失败,Err:" + err.Error()
  354. return
  355. }
  356. }
  357. }
  358. buttonMap[v] = v
  359. }
  360. } else {
  361. err = system.DeleteSysRoleButton(roleId)
  362. if err != nil {
  363. br.Msg = "设置失败"
  364. br.ErrMsg = "删除已设置数据失败,Err:" + err.Error()
  365. return
  366. }
  367. }
  368. br.Ret = 200
  369. br.Success = true
  370. br.IsAddLog = true
  371. br.Msg = "设置成功"
  372. }
  373. // @Title 获取所有角色
  374. // @Description 获取所有角色
  375. // @Success 200 {object} system.SysRoleListResp
  376. // @router /role/all [get]
  377. func (this *SysRoleController) AllSysRole() {
  378. br := new(models.BaseResponse).Init()
  379. defer func() {
  380. this.Data["json"] = br
  381. this.ServeJSON()
  382. }()
  383. sysUser := this.SysUser
  384. if sysUser == nil {
  385. br.Msg = "请登录"
  386. br.ErrMsg = "请登录,SysUser Is Empty"
  387. return
  388. }
  389. levelFlag := false
  390. roleLevel := this.GetString("RoleLevel")
  391. if roleLevel != "" {
  392. levelFlag = true
  393. }
  394. list, err := system.GetSysRoleAll(levelFlag)
  395. if err != nil {
  396. br.Msg = "获取失败"
  397. br.ErrMsg = "获取失败,Err:" + err.Error()
  398. return
  399. }
  400. resp := new(system.SysRoleAllResp)
  401. resp.List = list
  402. br.Ret = 200
  403. br.Success = true
  404. br.Msg = "获取成功"
  405. br.Data = resp
  406. }