sys_role.go 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793
  1. package controllers
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/models"
  5. "eta/eta_api/models/system"
  6. "eta/eta_api/services"
  7. "eta/eta_api/services/eta_forum"
  8. "eta/eta_api/utils"
  9. "fmt"
  10. "strconv"
  11. "strings"
  12. "time"
  13. "github.com/rdlucklib/rdluck_tools/paging"
  14. )
  15. type SysRoleController struct {
  16. BaseAuthController
  17. }
  18. // @Title 新增角色
  19. // @Description 新增角色接口
  20. // @Param request body system.SysRoleAddReq true "type json string"
  21. // @Success 200 新增成功
  22. // @router /role/add [post]
  23. func (this *SysRoleController) Add() {
  24. br := new(models.BaseResponse).Init()
  25. defer func() {
  26. this.Data["json"] = br
  27. this.ServeJSON()
  28. }()
  29. var req system.SysRoleAddReq
  30. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  31. if err != nil {
  32. br.Msg = "参数解析异常!"
  33. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  34. return
  35. }
  36. if req.RoleName == "" {
  37. br.Msg = "角色名称不能为空"
  38. return
  39. }
  40. count, err := system.GetSysRoleCount(req.RoleName)
  41. if err != nil && !utils.IsErrNoRow(err) {
  42. br.Msg = "获取数据失败"
  43. br.ErrMsg = "获取数据失败,Err:" + err.Error()
  44. return
  45. }
  46. if count > 0 {
  47. br.Msg = "角色已存在,请重新输入"
  48. return
  49. }
  50. item := new(system.SysRole)
  51. item.RoleName = req.RoleName
  52. item.RoleType = req.RoleType
  53. item.RoleTypeCode = services.GetRoleTypeCode(req.RoleType)
  54. item.CreateTime = time.Now()
  55. item.ModifyTime = time.Now()
  56. roleId, err := system.AddSysRole(item)
  57. if err != nil {
  58. br.Msg = "新增失败"
  59. br.ErrMsg = "新增失败,Err:" + err.Error()
  60. return
  61. }
  62. // 同步角色缓存
  63. if utils.BusinessCode == utils.BusinessCodeRelease || utils.BusinessCode == utils.BusinessCodeDebug {
  64. var syncData system.SyncRoleData
  65. syncData.Source = utils.SOURCE_ETA_FLAG
  66. syncData.RoleId = int(roleId)
  67. _ = utils.Rc.LPush(utils.CACHE_SYNC_ROLE, syncData)
  68. }
  69. go eta_forum.RoleSave(int(roleId))
  70. br.Ret = 200
  71. br.Success = true
  72. br.IsAddLog = true
  73. br.Msg = "新增成功"
  74. }
  75. // @Title 修改角色
  76. // @Description 修改角色接口
  77. // @Param request body system.SysRoleEditReq true "type json string"
  78. // @Success 200 修改成功
  79. // @router /role/edit [post]
  80. func (this *SysRoleController) Edit() {
  81. br := new(models.BaseResponse).Init()
  82. defer func() {
  83. this.Data["json"] = br
  84. this.ServeJSON()
  85. }()
  86. var req system.SysRoleEditReq
  87. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  88. if err != nil {
  89. br.Msg = "参数解析异常!"
  90. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  91. return
  92. }
  93. if req.RoleId <= 0 {
  94. br.Msg = "参数错误"
  95. br.ErrMsg = "参数错误,GroupId 小于等于0 "
  96. return
  97. }
  98. if req.RoleName == "" {
  99. br.Msg = "分组名称不能为空"
  100. return
  101. }
  102. item, e := system.GetSysRoleById(req.RoleId)
  103. if e != nil {
  104. if !utils.IsErrNoRow(e) {
  105. br.Msg = "操作失败"
  106. br.ErrMsg = "获取角色失败, Err: " + e.Error()
  107. return
  108. }
  109. br.Msg = "角色不存在, 请刷新页面"
  110. return
  111. }
  112. // 不允许编辑admin用户
  113. if item.RoleName == "admin" {
  114. br.Msg = "admin用户不可编辑"
  115. return
  116. }
  117. oldRoleCodeType := item.RoleTypeCode
  118. oldRoleName := item.RoleName
  119. exists, e := system.GetSysRoleByName(req.RoleName)
  120. if e != nil && !utils.IsErrNoRow(e) {
  121. br.Msg = "操作失败"
  122. br.ErrMsg = "获取重名角色失败, Err: " + e.Error()
  123. return
  124. }
  125. if exists != nil && exists.RoleId != item.RoleId && exists.RoleId > 0 {
  126. br.Msg = "名称已存在,请重新输入"
  127. return
  128. }
  129. roleTypeCode := services.GetRoleTypeCode(req.RoleType)
  130. e = system.ModifySysRole(req.RoleName, req.RoleType, roleTypeCode, req.RoleId)
  131. if e != nil {
  132. br.Msg = "操作失败"
  133. br.ErrMsg = "更新角色信息失败, Err: " + e.Error()
  134. return
  135. }
  136. if oldRoleName != req.RoleName || oldRoleCodeType != roleTypeCode {
  137. // 查询所有和角色相关的管理员的信息,并更新成最新的角色
  138. err = system.UpdateAdminRoleInfoByRoleId(req.RoleId, req.RoleName, roleTypeCode)
  139. if err != nil {
  140. br.Msg = "操作失败"
  141. br.ErrMsg = "更新管理员角色信息失败, Err: " + err.Error()
  142. return
  143. }
  144. }
  145. // 同步角色缓存
  146. if utils.BusinessCode == utils.BusinessCodeRelease || utils.BusinessCode == utils.BusinessCodeDebug {
  147. var syncData system.SyncRoleData
  148. syncData.Source = utils.SOURCE_ETA_FLAG
  149. syncData.RoleId = item.RoleId
  150. _ = utils.Rc.LPush(utils.CACHE_SYNC_ROLE, syncData)
  151. }
  152. go eta_forum.RoleSave(item.RoleId)
  153. br.Ret = 200
  154. br.Success = true
  155. br.IsAddLog = true
  156. br.Msg = "修改成功"
  157. }
  158. // @Title 删除角色
  159. // @Description 删除角色接口
  160. // @Param request body system.SysRoleDeleteReq true "type json string"
  161. // @Success 200 删除成功
  162. // @router /role/delete [post]
  163. func (this *SysRoleController) Delete() {
  164. br := new(models.BaseResponse).Init()
  165. defer func() {
  166. this.Data["json"] = br
  167. this.ServeJSON()
  168. }()
  169. var req system.SysRoleDeleteReq
  170. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  171. if err != nil {
  172. br.Msg = "参数解析异常!"
  173. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  174. return
  175. }
  176. if req.RoleId <= 0 {
  177. br.Msg = "参数错误"
  178. br.ErrMsg = "参数错误,GroupId 小于等于0 "
  179. return
  180. }
  181. role, e := system.GetSysRoleById(req.RoleId)
  182. if e != nil {
  183. if utils.IsErrNoRow(err) {
  184. br.Msg = "角色不存在, 请刷新页面"
  185. return
  186. }
  187. br.Msg = "删除失败"
  188. br.ErrMsg = "获取角色信息失败, Err: " + e.Error()
  189. return
  190. }
  191. if role.RoleName == "admin" {
  192. br.Msg = "admin用户不可删除"
  193. return
  194. }
  195. err = system.DeleteSysRole(req.RoleId)
  196. if err != nil {
  197. br.Msg = "删除失败"
  198. br.ErrMsg = "删除失败,Err:" + err.Error()
  199. return
  200. }
  201. // 同步角色缓存
  202. if utils.BusinessCode == utils.BusinessCodeRelease || utils.BusinessCode == utils.BusinessCodeDebug {
  203. var syncData system.SyncRoleData
  204. syncData.Source = utils.SOURCE_ETA_FLAG
  205. syncData.RoleId = role.RoleId
  206. _ = utils.Rc.LPush(utils.CACHE_SYNC_ROLE, syncData)
  207. }
  208. go eta_forum.RoleDelete(role.RoleId)
  209. br.Ret = 200
  210. br.Success = true
  211. br.IsAddLog = true
  212. br.Msg = "删除成功"
  213. }
  214. // @Title 获取角色列表
  215. // @Description 获取角色列表接口
  216. // @Param PageSize query int true "每页数据条数"
  217. // @Param CurrentIndex query int true "当前页页码,从1开始"
  218. // @Param KeyWord query string true "搜索关键词"
  219. // @Success 200 {object} system.SysRoleListResp
  220. // @router /role/list [get]
  221. func (this *SysRoleController) ListSysRole() {
  222. br := new(models.BaseResponse).Init()
  223. defer func() {
  224. this.Data["json"] = br
  225. this.ServeJSON()
  226. }()
  227. sysUser := this.SysUser
  228. if sysUser == nil {
  229. br.Msg = "请登录"
  230. br.ErrMsg = "请登录,SysUser Is Empty"
  231. return
  232. }
  233. pageSize, _ := this.GetInt("PageSize")
  234. currentIndex, _ := this.GetInt("CurrentIndex")
  235. keyWord := this.GetString("KeyWord")
  236. var startSize int
  237. if pageSize <= 0 {
  238. pageSize = utils.PageSize20
  239. }
  240. if currentIndex <= 0 {
  241. currentIndex = 1
  242. }
  243. startSize = utils.StartIndex(currentIndex, pageSize)
  244. var condition string
  245. var pars []interface{}
  246. if keyWord != "" {
  247. condition += ` AND role_name LIKE '%` + keyWord + `%' `
  248. }
  249. total, err := system.GetSysRoleListCount(condition, pars)
  250. if err != nil {
  251. br.Msg = "获取失败"
  252. br.ErrMsg = "获取失败,Err:" + err.Error()
  253. return
  254. }
  255. list, err := system.GetSysRoleList(condition, pars, startSize, pageSize)
  256. if err != nil {
  257. br.Msg = "获取失败"
  258. br.ErrMsg = "获取失败,Err:" + err.Error()
  259. return
  260. }
  261. page := paging.GetPaging(currentIndex, pageSize, total)
  262. resp := new(system.SysRoleListResp)
  263. resp.List = list
  264. resp.Paging = page
  265. br.Ret = 200
  266. br.Success = true
  267. br.Msg = "获取成功"
  268. br.Data = resp
  269. }
  270. // SysRoleMenusList
  271. // @Title 角色设置权限-菜单列表-CRM14.1弃用
  272. // @Description 角色设置权限-菜单列表
  273. // @Param RoleId query int true "角色Id"
  274. // @Success 200 {object} system.SysRoleListResp
  275. // @router /role/menu/list [get]
  276. func (this *SysRoleController) SysRoleMenusList() {
  277. br := new(models.BaseResponse).Init()
  278. defer func() {
  279. this.Data["json"] = br
  280. this.ServeJSON()
  281. }()
  282. roleId, err := this.GetInt("RoleId")
  283. if err != nil {
  284. br.Msg = "获取角色失败"
  285. br.ErrMsg = "获取角色失败,Err:" + err.Error()
  286. return
  287. }
  288. fmt.Println("roleId", roleId)
  289. list := make([]*system.RoleMenuList, 0)
  290. sysUser := this.SysUser
  291. if sysUser == nil {
  292. br.Msg = "请登录"
  293. br.ErrMsg = "请登录,SysUser Is Empty"
  294. return
  295. }
  296. list, err = system.GetRoleMenuList()
  297. if err != nil {
  298. br.Msg = "获取失败"
  299. br.ErrMsg = "获取失败,Err:" + err.Error()
  300. return
  301. }
  302. lenList := len(list)
  303. for i := 0; i < lenList; i++ {
  304. item := list[i]
  305. child, err := system.GetRoleMenuByParentId(item.MenuId)
  306. if err != nil {
  307. br.Msg = "获取失败"
  308. br.ErrMsg = "获取子菜单数据失败,Err:" + err.Error()
  309. return
  310. }
  311. list[i].Child = child
  312. checkList := make([]int, 0)
  313. if roleId > 0 {
  314. checkItem, err := system.GetCheckListRoleMenu(roleId, item.MenuId)
  315. if err != nil {
  316. br.Msg = "获取失败"
  317. br.ErrMsg = "获取选择数据失败,Err:" + err.Error()
  318. return
  319. }
  320. for _, v := range checkItem {
  321. checkList = append(checkList, v.MenuId)
  322. }
  323. }
  324. list[i].CheckList = checkList
  325. }
  326. resp := new(system.RoleMenuListResp)
  327. resp.List = list
  328. br.Ret = 200
  329. br.Success = true
  330. br.Msg = "获取成功"
  331. br.Data = resp
  332. }
  333. // SysRoleMenusAdd
  334. // @Title 角色设置权限-CRM14.1弃用
  335. // @Description 角色设置权限
  336. // @Param request body system.RoleMenusAddReq true "type json string"
  337. // @Success 200 {object} system.SysRoleListResp
  338. // @router /role/menu/add [post]
  339. func (this *SysRoleController) SysRoleMenusAdd() {
  340. br := new(models.BaseResponse).Init()
  341. defer func() {
  342. this.Data["json"] = br
  343. this.ServeJSON()
  344. }()
  345. var req system.RoleMenusAddReq
  346. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  347. if err != nil {
  348. br.Msg = "参数解析异常!"
  349. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  350. return
  351. }
  352. roleId := req.RoleId
  353. if roleId <= 0 {
  354. br.Msg = "参数错误"
  355. br.ErrMsg = "参数错误,RoleId 小于等于0 "
  356. return
  357. }
  358. if req.MenuIdStr == "" {
  359. br.Msg = "请选择菜单"
  360. br.ErrMsg = "请选择菜单,MenuIdStr IS Empty "
  361. return
  362. }
  363. sysUser := this.SysUser
  364. if sysUser == nil {
  365. br.Msg = "请登录"
  366. br.ErrMsg = "请登录,SysUser Is Empty"
  367. return
  368. }
  369. err = system.DeleteRoleMenuByRoleId(roleId)
  370. if err != nil {
  371. br.Msg = "设置失败"
  372. br.ErrMsg = "清空原有设置失败,Err:" + err.Error()
  373. return
  374. }
  375. menuArr := strings.Split(req.MenuIdStr, ",")
  376. for _, v := range menuArr {
  377. menuId, err := strconv.Atoi(v)
  378. if err != nil {
  379. br.Msg = "设置失败"
  380. br.ErrMsg = "menuId 解析失败,Err:" + err.Error()
  381. return
  382. }
  383. item := new(system.SysRoleMenu)
  384. item.RoleId = roleId
  385. item.MenuId = menuId
  386. _, err = system.AddSysRoleMenu(item)
  387. if err != nil {
  388. br.Msg = "设置失败"
  389. br.ErrMsg = "新增设置失败,Err:" + err.Error()
  390. return
  391. }
  392. }
  393. if req.MenuButtonIdStr != "" {
  394. err = system.DeleteSysRoleButton(roleId)
  395. if err != nil {
  396. br.Msg = "设置失败"
  397. br.ErrMsg = "删除已设置数据失败,Err:" + err.Error()
  398. return
  399. }
  400. buttonMap := make(map[string]string)
  401. buttonArr := strings.Split(req.MenuButtonIdStr, ",")
  402. for _, v := range buttonArr {
  403. if _, ok := buttonMap[v]; !ok {
  404. buttonId, err := strconv.Atoi(v)
  405. count, err := system.GetSysRoleButtonCount(roleId, buttonId)
  406. if err != nil {
  407. br.Msg = "判断设置失败存在失败"
  408. br.ErrMsg = "判断设置失败存在失败,Err:" + err.Error()
  409. return
  410. }
  411. if count <= 0 {
  412. button := new(system.SysRoleButton)
  413. button.RoleId = roleId
  414. button.MenuButtonId = buttonId
  415. button.CreateTime = time.Now()
  416. _, err = system.AddSysRoleButton(button)
  417. if err != nil {
  418. br.Msg = "设置失败"
  419. br.ErrMsg = "按钮权限设置失败,Err:" + err.Error()
  420. return
  421. }
  422. }
  423. }
  424. buttonMap[v] = v
  425. }
  426. } else {
  427. err = system.DeleteSysRoleButton(roleId)
  428. if err != nil {
  429. br.Msg = "设置失败"
  430. br.ErrMsg = "删除已设置数据失败,Err:" + err.Error()
  431. return
  432. }
  433. }
  434. br.Ret = 200
  435. br.Success = true
  436. br.IsAddLog = true
  437. br.Msg = "设置成功"
  438. }
  439. // @Title 获取所有角色
  440. // @Description 获取所有角色
  441. // @Success 200 {object} system.SysRoleListResp
  442. // @router /role/all [get]
  443. func (this *SysRoleController) AllSysRole() {
  444. br := new(models.BaseResponse).Init()
  445. defer func() {
  446. this.Data["json"] = br
  447. this.ServeJSON()
  448. }()
  449. sysUser := this.SysUser
  450. if sysUser == nil {
  451. br.Msg = "请登录"
  452. br.ErrMsg = "请登录,SysUser Is Empty"
  453. return
  454. }
  455. levelFlag := false
  456. roleLevel := this.GetString("RoleLevel")
  457. if roleLevel != "" {
  458. levelFlag = true
  459. }
  460. list, err := system.GetSysRoleAll(levelFlag)
  461. if err != nil {
  462. br.Msg = "获取失败"
  463. br.ErrMsg = "获取失败,Err:" + err.Error()
  464. return
  465. }
  466. resp := new(system.SysRoleAllResp)
  467. resp.List = list
  468. br.Ret = 200
  469. br.Success = true
  470. br.Msg = "获取成功"
  471. br.Data = resp
  472. }
  473. // SysRoleMenuAuthList
  474. // @Title 角色设置权限-菜单列表
  475. // @Description 角色设置权限-菜单列表
  476. // @Param RoleId query int true "角色Id"
  477. // @Success 200 {object} system.SysRoleListResp
  478. // @router /role/menu/auth_list [get]
  479. func (this *SysRoleController) SysRoleMenuAuthList() {
  480. br := new(models.BaseResponse).Init()
  481. defer func() {
  482. if br.ErrMsg == "" {
  483. br.IsSendEmail = false
  484. }
  485. this.Data["json"] = br
  486. this.ServeJSON()
  487. }()
  488. sysUser := this.SysUser
  489. if sysUser == nil {
  490. br.Msg = "请登录"
  491. br.ErrMsg = "请登录,SysUser Is Empty"
  492. return
  493. }
  494. resp := new(system.SysMenuListResp)
  495. resp.ChoiceList = make([]int, 0)
  496. resp.HalfChoiceList = make([]int, 0)
  497. resp.List = make([]*system.SysMenuItem, 0)
  498. // 角色勾选的权限
  499. roleId, _ := this.GetInt("RoleId", 0)
  500. if roleId > 0 {
  501. relates, e := system.GetSysRoleMenuByRoleId(roleId)
  502. if e != nil {
  503. br.Msg = "获取失败"
  504. br.ErrMsg = "获取角色关联菜单失败, Err: " + e.Error()
  505. return
  506. }
  507. for _, r := range relates {
  508. if r.Type == 1 {
  509. resp.HalfChoiceList = append(resp.HalfChoiceList, r.MenuId)
  510. continue
  511. }
  512. resp.ChoiceList = append(resp.ChoiceList, r.MenuId)
  513. }
  514. }
  515. sysRole, err := system.GetSysRoleById(roleId)
  516. if err == nil {
  517. if sysRole.RoleName == "admin" {
  518. br.Ret = 200
  519. br.Success = true
  520. br.Msg = "获取成功"
  521. return
  522. }
  523. }
  524. order := `sort ASC, create_time DESC, menu_id DESC`
  525. list, e := system.GetSysMenuItemsByCondition(` AND hidden = 0`, make([]interface{}, 0), []string{}, order)
  526. if e != nil {
  527. br.Msg = "获取失败"
  528. br.ErrMsg = "获取菜单列表失败, Err: " + e.Error()
  529. return
  530. }
  531. items := make([]*system.SysMenuItem, 0)
  532. for _, v := range list {
  533. t := &system.SysMenuItem{
  534. MenuId: v.MenuId,
  535. ParentId: v.ParentId,
  536. Name: v.Name,
  537. Sort: v.Sort,
  538. Path: v.Path,
  539. IconPath: v.IconPath,
  540. Component: v.Component,
  541. Hidden: v.Hidden,
  542. MenuType: v.MenuType,
  543. ButtonCode: v.ButtonCode,
  544. Children: make([]*system.SysMenuItem, 0),
  545. }
  546. items = append(items, t)
  547. }
  548. // 递归返回树形结构
  549. items = services.GetMenuTreeRecursive(items, 0)
  550. resp.List = items
  551. br.Data = resp
  552. br.Ret = 200
  553. br.Success = true
  554. br.Msg = "获取成功"
  555. }
  556. // SysRoleMenuAuthSave
  557. // @Title 角色设置权限-保存
  558. // @Description 角色设置权限-保存
  559. // @Param request body RoleMenusSaveReq true "type json string"
  560. // @Success 200 {object} system.SysRoleListResp
  561. // @router /role/menu/auth_save [post]
  562. func (this *SysRoleController) SysRoleMenuAuthSave() {
  563. br := new(models.BaseResponse).Init()
  564. defer func() {
  565. if br.ErrMsg == "" {
  566. br.IsSendEmail = false
  567. }
  568. this.Data["json"] = br
  569. this.ServeJSON()
  570. }()
  571. sysUser := this.SysUser
  572. if sysUser == nil {
  573. br.Msg = "请登录"
  574. br.ErrMsg = "请登录,SysUser Is Empty"
  575. br.Ret = 408
  576. return
  577. }
  578. type RoleMenusSaveReq struct {
  579. RoleId int `description:"角色ID"`
  580. MenuIds []int `description:"菜单IDs"`
  581. HalfMenuIds []int `description:"半选菜单IDs-仅供前端回显用的"`
  582. }
  583. var req RoleMenusSaveReq
  584. err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
  585. if err != nil {
  586. br.Msg = "参数解析异常!"
  587. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  588. return
  589. }
  590. if req.RoleId <= 0 {
  591. br.Msg = "参数有误"
  592. return
  593. }
  594. if len(req.MenuIds) == 0 {
  595. br.Msg = "请选择菜单"
  596. return
  597. }
  598. items := make([]*system.SysRoleMenu, 0)
  599. for _, v := range req.MenuIds {
  600. t := new(system.SysRoleMenu)
  601. t.MenuId = v
  602. t.RoleId = req.RoleId
  603. items = append(items, t)
  604. }
  605. for _, v := range req.HalfMenuIds {
  606. t := new(system.SysRoleMenu)
  607. t.MenuId = v
  608. t.Type = 1
  609. t.RoleId = req.RoleId
  610. items = append(items, t)
  611. }
  612. if e := system.CreateMultiSysRoleMenu(req.RoleId, items); e != nil {
  613. br.Msg = "保存失败"
  614. br.ErrMsg = "保存角色菜单权限失败, Err: " + e.Error()
  615. return
  616. }
  617. br.IsAddLog = true
  618. br.Ret = 200
  619. br.Success = true
  620. br.Msg = "设置成功"
  621. }
  622. // ButtonList
  623. // @Title 角色-按钮权限列表
  624. // @Description 角色-按钮权限列表
  625. // @Param RoleId query int true "角色Id"
  626. // @Success 200 {object} system.SysRoleListResp
  627. // @router /role/menu/buttons [get]
  628. func (this *SysRoleController) ButtonList() {
  629. br := new(models.BaseResponse).Init()
  630. defer func() {
  631. if br.ErrMsg == "" {
  632. br.IsSendEmail = false
  633. }
  634. this.Data["json"] = br
  635. this.ServeJSON()
  636. }()
  637. sysUser := this.SysUser
  638. if sysUser == nil {
  639. br.Msg = "请登录"
  640. br.ErrMsg = "请登录,SysUser Is Empty"
  641. br.Ret = 408
  642. return
  643. }
  644. roleId := sysUser.RoleId
  645. list, e := system.GetMenuButtonsByRoleId(roleId)
  646. if e != nil {
  647. br.Msg = "获取失败"
  648. br.ErrMsg = "获取角色按钮权限失败, Err: " + e.Error()
  649. return
  650. }
  651. buttonList := make([]*system.SysMenuButtonResp, 0)
  652. for _, v := range list {
  653. tmp := new(system.SysMenuButtonResp)
  654. tmp.MenuId = v.MenuId
  655. tmp.ParentId = v.ParentId
  656. tmp.MenuType = v.MenuType
  657. tmp.Name = v.Name
  658. tmp.ButtonCode = v.ButtonCode
  659. buttonList = append(buttonList, tmp)
  660. }
  661. br.Data = buttonList
  662. br.Ret = 200
  663. br.Success = true
  664. br.Msg = "获取成功"
  665. }
  666. // SystemConfig
  667. // @Title 系统配置列表
  668. // @Description 系统配置列表
  669. // @Success 200 {object} []system.BusinessConf
  670. // @router /config [get]
  671. func (this *SysRoleController) SystemConfig() {
  672. br := new(models.BaseResponse).Init()
  673. defer func() {
  674. if br.ErrMsg == "" {
  675. br.IsSendEmail = false
  676. }
  677. this.Data["json"] = br
  678. this.ServeJSON()
  679. }()
  680. sysUser := this.SysUser
  681. if sysUser == nil {
  682. br.Msg = "请登录"
  683. br.ErrMsg = "请登录,SysUser Is Empty"
  684. br.Ret = 408
  685. return
  686. }
  687. list := make([]system.BusinessConf, 0)
  688. // 获取基础配置, 若未配置则直接返回
  689. conf, e := models.GetBusinessConf()
  690. if e != nil {
  691. br.Msg = "获取失败"
  692. br.ErrMsg = "获取基础配置失败, Err: " + e.Error()
  693. return
  694. }
  695. list = append(list, system.BusinessConf{
  696. ConfKey: "ReportViewUrl",
  697. ConfVal: conf["ReportViewUrl"],
  698. }, system.BusinessConf{
  699. ConfKey: "ChartViewUrl",
  700. ConfVal: conf["ChartViewUrl"],
  701. }, system.BusinessConf{
  702. ConfKey: "LoginUrl",
  703. ConfVal: conf["LoginUrl"],
  704. }, system.BusinessConf{
  705. ConfKey: "KnowledgeBaseName",
  706. ConfVal: conf["KnowledgeBaseName"],
  707. }, system.BusinessConf{
  708. ConfKey: "NotBackendGenerate",
  709. ConfVal: conf["NotBackendGenerate"],
  710. }, system.BusinessConf{
  711. ConfKey: models.KnowledgeBaseName,
  712. ConfVal: conf[models.KnowledgeBaseName],
  713. })
  714. osc := system.BusinessConf{
  715. ConfKey: "ObjectStorageClient",
  716. ConfVal: utils.ObjectStorageClient,
  717. }
  718. if osc.ConfVal == "" {
  719. osc.ConfVal = "oss"
  720. }
  721. // ppt上传走后端配置
  722. pptUpload := system.BusinessConf{
  723. ConfKey: "PptUpdateApi",
  724. ConfVal: utils.PptUpdateApi,
  725. }
  726. list = append(list, osc, pptUpload)
  727. // 获取审批流设置
  728. //confKey := "approval_flow"
  729. //confTmp, e := company.GetConfigDetailByCode(confKey)
  730. //if e != nil {
  731. // br.Msg = "获取审批流配置失败"
  732. // br.ErrMsg = "获取审批流配置失败, Err: " + e.Error()
  733. // return
  734. //}
  735. //list = append(list, system.BusinessConf{
  736. // ConfKey: "ApprovalFlow",
  737. // ConfVal: confTmp.ConfigValue,
  738. //})
  739. br.Data = list
  740. br.Ret = 200
  741. br.Success = true
  742. br.Msg = "获取成功"
  743. }