auth.go 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731
  1. package admin
  2. import (
  3. "fmt"
  4. "gfast/app/model/admin/auth_rule"
  5. "gfast/app/model/admin/role"
  6. "gfast/app/model/admin/sys_dept"
  7. "gfast/app/model/admin/user"
  8. "gfast/app/model/admin/user_post"
  9. "gfast/app/service/admin/auth_service"
  10. "gfast/app/service/admin/dept_service"
  11. "gfast/app/service/admin/dict_service"
  12. "gfast/app/service/admin/post_service"
  13. "gfast/app/service/admin/user_service"
  14. "gfast/app/service/cache_service"
  15. "gfast/app/service/casbin_adapter_service"
  16. "gfast/library/response"
  17. "gfast/library/utils"
  18. "github.com/gogf/gf/frame/g"
  19. "github.com/gogf/gf/net/ghttp"
  20. "github.com/gogf/gf/text/gstr"
  21. "github.com/gogf/gf/util/gconv"
  22. "github.com/gogf/gf/util/gvalid"
  23. )
  24. //菜单用户组用户管理
  25. type Auth struct{}
  26. // @Summary 分页列表
  27. // @Description 获取菜单列表
  28. // @Tags 菜单管理
  29. // @Param data body auth_rule.ReqSearch true "data"
  30. // @Success 0 {object} response.Response "{"code": 200, "data": [...]}"
  31. // @Router /system/auth/menuList [get]
  32. // @Security
  33. func (c *Auth) MenuList(r *ghttp.Request) {
  34. var req *auth_rule.ReqSearch
  35. //获取参数
  36. if err := r.Parse(&req); err != nil {
  37. response.FailJson(true, r, err.(*gvalid.Error).FirstString())
  38. }
  39. var listEntities []*auth_rule.Entity
  40. var err error
  41. if req != nil {
  42. listEntities, err = auth_service.GetMenuListSearch(req)
  43. } else {
  44. //获取菜单信息
  45. listEntities, err = auth_service.GetMenuList()
  46. }
  47. if err != nil {
  48. g.Log().Error(err)
  49. response.FailJson(true, r, "获取数据失败")
  50. }
  51. list := gconv.SliceMap(listEntities)
  52. if req != nil {
  53. for k := range list {
  54. list[k]["children"] = nil
  55. }
  56. } else {
  57. list = utils.PushSonToParent(list, 0, "pid", "id", "children", "", nil, true)
  58. }
  59. //菜单显示状态
  60. visibleOptions, err := dict_service.GetDictWithDataByType("sys_show_hide", "", "")
  61. if err != nil {
  62. response.FailJson(true, r, err.Error())
  63. }
  64. //菜单正常or停用状态
  65. statusOptions, err := dict_service.GetDictWithDataByType("sys_normal_disable", "", "")
  66. if err != nil {
  67. response.FailJson(true, r, err.Error())
  68. }
  69. response.SusJson(true, r, "成功", g.Map{
  70. "list": list,
  71. "visibleOptions": visibleOptions,
  72. "statusOptions": statusOptions,
  73. })
  74. }
  75. //菜单排序
  76. func (c *Auth) MenuSort(r *ghttp.Request) {
  77. sorts := r.Get("sorts")
  78. s := gconv.Map(sorts)
  79. if s == nil {
  80. response.FailJson(true, r, "排序失败")
  81. }
  82. for k, v := range s {
  83. auth_rule.Model.Where("id=?", k).Data("weigh", v).Update()
  84. }
  85. cache_service.New().RemoveByTag(cache_service.AdminAuthTag)
  86. response.SusJson(true, r, "排序成功")
  87. }
  88. // @Summary 添加菜单
  89. // @Description 添加菜单
  90. // @Tags 菜单管理
  91. // @Accept application/json
  92. // @Product application/json
  93. // @Param data body auth_rule.MenuReq true "data"
  94. // @Success 200 {object} response.Response "{"code": 0, "message": "添加成功"}"
  95. // @Router /system/auth/addMenu [post]
  96. // @Security Bearer
  97. func (c *Auth) AddMenu(r *ghttp.Request) {
  98. if r.Method == "POST" {
  99. menu := new(auth_rule.MenuReq)
  100. if err := r.Parse(menu); err != nil {
  101. response.FailJson(true, r, err.(*gvalid.Error).FirstString())
  102. }
  103. //判断菜单规则是否存在
  104. if !auth_service.CheckMenuNameUnique(menu.Name, 0) {
  105. response.FailJson(true, r, "菜单规则名称已经存在")
  106. }
  107. //判断路由是否已经存在
  108. if !auth_service.CheckMenuPathUnique(menu.Path, 0) {
  109. response.FailJson(true, r, "路由地址已经存在")
  110. }
  111. //保存到数据库
  112. err, _ := auth_service.AddMenu(menu)
  113. if err != nil {
  114. g.Log().Error(err)
  115. response.FailJson(true, r, "添加菜单失败")
  116. }
  117. //清除TAG缓存
  118. cache_service.New().RemoveByTag(cache_service.AdminAuthTag)
  119. response.SusJson(true, r, "添加菜单成功")
  120. }
  121. //获取父级菜单信息
  122. listEntities, err := auth_service.GetIsMenuList()
  123. if err != nil {
  124. response.FailJson(true, r, "获取数据失败")
  125. }
  126. response.SusJson(true, r, "成功", g.Map{"parentList": listEntities})
  127. }
  128. // @Summary 修改菜单
  129. // @Description 修改菜单
  130. // @Tags 菜单管理
  131. // @Accept application/json
  132. // @Product application/json
  133. // @Param data body auth_rule.MenuReq true "data"
  134. // @Success 200 {object} response.Response "{"code": 0, "message": "修改成功"}"
  135. // @Router /system/auth/editMenu [post]
  136. // @Security Bearer
  137. func (c *Auth) EditMenu(r *ghttp.Request) {
  138. id := r.GetInt("menuId")
  139. if r.Method == "POST" {
  140. menu := new(auth_rule.MenuReq)
  141. if err := r.Parse(menu); err != nil {
  142. response.FailJson(true, r, err.(*gvalid.Error).FirstString())
  143. }
  144. //判断菜单规则是否存在
  145. if !auth_service.CheckMenuNameUnique(menu.Name, id) {
  146. response.FailJson(true, r, "菜单规则名称已经存在")
  147. }
  148. //判断路由是否已经存在
  149. if !auth_service.CheckMenuPathUnique(menu.Path, id) {
  150. response.FailJson(true, r, "路由地址已经存在")
  151. }
  152. //保存到数据库
  153. err, _ := auth_service.EditMenu(menu, id)
  154. if err != nil {
  155. g.Log().Error(err)
  156. response.FailJson(true, r, "修改菜单失败")
  157. }
  158. //清除TAG缓存
  159. cache_service.New().RemoveByTag(cache_service.AdminAuthTag)
  160. response.SusJson(true, r, "修改菜单成功")
  161. }
  162. menuEntity, err := auth_rule.Model.Where("id=?", id).One()
  163. if err != nil {
  164. g.Log().Error(err)
  165. response.FailJson(true, r, "获取数据失败")
  166. }
  167. //获取父级菜单信息
  168. listEntities, err := auth_service.GetIsMenuList()
  169. if err != nil {
  170. response.FailJson(true, r, "获取数据失败")
  171. }
  172. list := gconv.SliceMap(listEntities)
  173. list = utils.ParentSonSort(list)
  174. response.SusJson(true, r, "成功", g.Map{
  175. "parentList": list,
  176. "menu": menuEntity,
  177. })
  178. }
  179. // @Summary 删除菜单
  180. // @Description 删除菜单
  181. // @Tags 菜单管理
  182. // @Accept application/json
  183. // @Product application/json
  184. // @Param ids body integer true "ids[1,2,3]"
  185. // @Success 200 {object} response.Response "{"code": 0, "message": "修改成功"}"
  186. // @Router /system/auth/deleteMenu [delete]
  187. // @Security Bearer
  188. func (c *Auth) DeleteMenu(r *ghttp.Request) {
  189. ids := r.GetInts("ids")
  190. if len(ids) == 0 {
  191. response.FailJson(true, r, "删除失败,参数错误")
  192. }
  193. err := auth_service.DeleteMenuByIds(ids)
  194. if err != nil {
  195. g.Log().Error(err)
  196. response.FailJson(true, r, "删除失败")
  197. }
  198. //清除TAG缓存
  199. cache_service.New().RemoveByTag(cache_service.AdminAuthTag)
  200. response.SusJson(true, r, "删除成功")
  201. }
  202. // @Summary 角色列表
  203. // @Description 分页列表
  204. // @Tags 角色管理
  205. // @Param data body role.SelectPageReq true "data"
  206. // @Success 0 {object} response.Response "{"code": 200, "data": [...]}"
  207. // @Router /system/auth/roleList [get]
  208. // @Security
  209. func (c *Auth) RoleList(r *ghttp.Request) {
  210. var req *role.SelectPageReq
  211. //获取参数
  212. if err := r.Parse(&req); err != nil {
  213. response.FailJson(true, r, err.(*gvalid.Error).FirstString())
  214. }
  215. //获取角色列表
  216. total, page, list, err := auth_service.GetRoleListSearch(req)
  217. if err != nil {
  218. g.Log().Error(err)
  219. response.FailJson(true, r, "获取数据失败")
  220. }
  221. //菜单正常or停用状态
  222. statusOptions, err := dict_service.GetDictWithDataByType("sys_normal_disable", "", "")
  223. if err != nil {
  224. response.FailJson(true, r, err.Error())
  225. }
  226. response.SusJson(true, r, "成功", g.Map{
  227. "currentPage": page,
  228. "total": total,
  229. "list": list,
  230. "searchTypes": statusOptions,
  231. })
  232. }
  233. // @Summary 添加角色
  234. // @Description 添加角色
  235. // @Tags 角色管理
  236. // @Accept application/json
  237. // @Product application/json
  238. // @Param data body string true "data"
  239. // @Success 200 {object} response.Response "{"code": 0, "message": "添加成功"}"
  240. // @Router /system/auth/addRole [post]
  241. // @Security Bearer
  242. func (c *Auth) AddRole(r *ghttp.Request) {
  243. //添加操作
  244. if r.Method == "POST" {
  245. //获取表单提交的数据
  246. res := r.GetFormMap()
  247. tx, err := g.DB("default").Begin() //开启事务
  248. if err != nil {
  249. g.Log().Error(err)
  250. response.FailJson(true, r, "事务处理失败")
  251. }
  252. //插入角色
  253. //添加角色获取添加的id
  254. insertId, err := auth_service.AddRole(tx, res)
  255. if err != nil {
  256. tx.Rollback() //回滚
  257. response.FailJson(true, r, err.Error())
  258. }
  259. //添加角色权限
  260. err = auth_service.AddRoleRule(res["menuIds"], insertId)
  261. if err != nil {
  262. tx.Rollback() //回滚
  263. g.Log().Error(err.Error())
  264. response.FailJson(true, r, "添加角色失败")
  265. }
  266. tx.Commit()
  267. //清除TAG缓存
  268. cache_service.New().RemoveByTag(cache_service.AdminAuthTag)
  269. response.SusJson(true, r, "添加角色成功")
  270. }
  271. //获取菜单信息
  272. mListEntities, err := auth_service.GetMenuList()
  273. if err != nil {
  274. g.Log().Error(err)
  275. response.FailJson(true, r, "获取菜单数据失败")
  276. }
  277. var mList g.ListStrAny
  278. for _, entity := range mListEntities {
  279. m := g.Map{
  280. "id": entity.Id,
  281. "pid": entity.Pid,
  282. "label": entity.Title,
  283. }
  284. mList = append(mList, m)
  285. }
  286. mList = utils.PushSonToParent(mList)
  287. res := g.Map{
  288. "menuList": mList,
  289. }
  290. response.SusJson(true, r, "成功", res)
  291. }
  292. // @Summary 修改角色
  293. // @Description 修改角色
  294. // @Tags 角色管理
  295. // @Accept application/json
  296. // @Product application/json
  297. // @Param data body string true "data"
  298. // @Success 200 {object} response.Response "{"code": 0, "message": "添加成功"}"
  299. // @Router /system/auth/editRole [post]
  300. // @Security Bearer
  301. func (c *Auth) EditRole(r *ghttp.Request) {
  302. id := r.GetRequestInt64("roleId")
  303. if r.Method == "POST" {
  304. //获取表单提交的数据
  305. res := r.GetFormMap()
  306. tx, err := g.DB("default").Begin() //开启事务
  307. if err != nil {
  308. g.Log().Error(err)
  309. response.FailJson(true, r, "事务处理失败")
  310. }
  311. //修改角色信息
  312. err = auth_service.EditRole(tx, res)
  313. if err != nil {
  314. tx.Rollback() //回滚
  315. response.FailJson(true, r, err.Error())
  316. }
  317. //添加角色权限
  318. err = auth_service.EditRoleRule(res["menuIds"], id)
  319. if err != nil {
  320. tx.Rollback() //回滚
  321. g.Log().Error(err.Error())
  322. response.FailJson(true, r, "添加用户组失败")
  323. }
  324. tx.Commit()
  325. //清除TAG缓存
  326. cache_service.New().RemoveByTag(cache_service.AdminAuthTag)
  327. response.SusJson(true, r, "修改用户组成功")
  328. }
  329. //获取角色信息
  330. role, err := role.Model.Where("id=?", id).One()
  331. if err != nil {
  332. response.FailJson(true, r, "获取角色数据失败")
  333. }
  334. //获取菜单信息
  335. mListEntities, err := auth_service.GetMenuList()
  336. if err != nil {
  337. g.Log().Error(err)
  338. response.FailJson(true, r, "获取菜单数据失败")
  339. }
  340. //获取角色关联的菜单规则
  341. enforcer, err := casbin_adapter_service.GetEnforcer()
  342. if err != nil {
  343. g.Log().Error(err)
  344. response.FailJson(true, r, "获取权限处理器失败")
  345. }
  346. gp := enforcer.GetFilteredNamedPolicy("p", 0, fmt.Sprintf("g_%d", id))
  347. gpSlice := make([]int, len(gp))
  348. for k, v := range gp {
  349. gpSlice[k] = gconv.Int(gstr.SubStr(v[1], 2))
  350. }
  351. var mList g.ListStrAny
  352. for _, entity := range mListEntities {
  353. m := g.Map{
  354. "id": entity.Id,
  355. "pid": entity.Pid,
  356. "label": entity.Title,
  357. }
  358. mList = append(mList, m)
  359. }
  360. mList = utils.PushSonToParent(mList)
  361. res := g.Map{
  362. "menuList": mList,
  363. "role": role,
  364. "checkedRules": gpSlice,
  365. }
  366. response.SusJson(true, r, "成功", res)
  367. }
  368. // @Summary 删除角色
  369. // @Description 删除角色
  370. // @Tags 角色管理
  371. // @Accept application/json
  372. // @Product application/json
  373. // @Param ids body integer true "ids[1,2,3]"
  374. // @Success 200 {object} response.Response "{"code": 0, "message": "添加成功"}"
  375. // @Router /system/auth/deleteRole [delete]
  376. // @Security Bearer
  377. func (c *Auth) DeleteRole(r *ghttp.Request) {
  378. ids := r.GetInts("ids")
  379. if len(ids) == 0 {
  380. response.FailJson(true, r, "删除失败,参数错误")
  381. }
  382. err := auth_service.DeleteRoleByIds(ids)
  383. if err != nil {
  384. response.FailJson(true, r, "删除失败,"+err.Error())
  385. }
  386. //清除TAG缓存
  387. cache_service.New().RemoveByTag(cache_service.AdminAuthTag)
  388. response.SusJson(true, r, "删除成功")
  389. }
  390. // @Summary 添加用户
  391. // @Description 添加用户
  392. // @Tags 用户管理
  393. // @Accept application/json
  394. // @Product application/json
  395. // @Param data body user.AddUserReq true "data"
  396. // @Success 200 {object} response.Response "{"code": 0, "message": "添加成功"}"
  397. // @Router /system/auth/addUser [post]
  398. // @Security Bearer
  399. func (c *Auth) AddUser(r *ghttp.Request) {
  400. if r.Method == "POST" {
  401. var req *user.AddUserReq
  402. if err := r.Parse(&req); err != nil {
  403. response.FailJson(true, r, err.(*gvalid.Error).FirstString())
  404. }
  405. InsertId, err := auth_service.AddUser(req)
  406. if err != nil {
  407. response.FailJson(true, r, err.Error())
  408. }
  409. //设置用户所属角色信息
  410. err = auth_service.AddUserRole(req.PostIds, InsertId)
  411. if err != nil {
  412. g.Log().Error(err)
  413. response.FailJson(true, r, "设置用户权限失败")
  414. }
  415. //设置用户岗位
  416. err = auth_service.AddUserPost(req.PostIds, InsertId)
  417. if err != nil {
  418. g.Log().Error(err)
  419. response.FailJson(true, r, "设置用户岗位信息失败")
  420. }
  421. response.SusJson(true, r, "添加管理员成功")
  422. }
  423. //获取角色信息
  424. roleListEntities, err := auth_service.GetRoleList()
  425. if err != nil {
  426. g.Log().Error(err)
  427. response.FailJson(true, r, "获取角色数据失败")
  428. }
  429. //获取岗位信息
  430. posts, err := post_service.GetUsedPost()
  431. if err != nil {
  432. response.FailJson(true, r, err.Error())
  433. }
  434. res := g.Map{
  435. "roleList": roleListEntities,
  436. "posts": posts,
  437. }
  438. response.SusJson(true, r, "成功", res)
  439. }
  440. // @Summary 编辑用户
  441. // @Description 编辑用户
  442. // @Tags 用户管理
  443. // @Accept application/json
  444. // @Product application/json
  445. // @Param data body user.EditUserReq true "data"
  446. // @Success 200 {object} response.Response "{"code": 0, "message": "添加成功"}"
  447. // @Router /system/auth/editUser [post]
  448. // @Security Bearer
  449. func (c *Auth) EditUser(r *ghttp.Request) {
  450. if r.Method == "POST" {
  451. var req *user.EditUserReq
  452. if err := r.Parse(&req); err != nil {
  453. response.FailJson(true, r, err.(*gvalid.Error).FirstString())
  454. }
  455. err := auth_service.EditUser(req)
  456. if err != nil {
  457. response.FailJson(true, r, err.Error())
  458. }
  459. //设置用户所属角色信息
  460. err = auth_service.EditUserRole(req.RoleIds, req.UserId)
  461. if err != nil {
  462. g.Log().Error(err)
  463. response.FailJson(true, r, "设置用户权限失败")
  464. }
  465. //设置用户岗位数据
  466. err = auth_service.AddUserPost(req.PostIds, gconv.Int64(req.UserId))
  467. if err != nil {
  468. g.Log().Error(err)
  469. response.FailJson(true, r, "设置用户岗位信息失败")
  470. }
  471. response.SusJson(true, r, "修改管理员成功")
  472. }
  473. id := r.GetRequestInt("id")
  474. //用户用户信息
  475. userEntity, err := user.Model.Where("id=?", id).One()
  476. if err != nil {
  477. g.Log().Error(err)
  478. response.FailJson(true, r, "获取用户数据失败")
  479. }
  480. //获取角色信息
  481. roleListEntities, err := auth_service.GetRoleList()
  482. if err != nil {
  483. g.Log().Error(err)
  484. response.FailJson(true, r, "获取角色数据失败")
  485. }
  486. //获取已选择的角色信息
  487. checkedRoleIds, err := user_service.GetAdminRoleIds(id)
  488. if err != nil {
  489. g.Log().Error(err)
  490. response.FailJson(true, r, "获取用户角色数据失败")
  491. }
  492. if checkedRoleIds == nil {
  493. checkedRoleIds = g.SliceInt{}
  494. }
  495. //获取岗位信息
  496. posts, err := post_service.GetUsedPost()
  497. if err != nil {
  498. response.FailJson(true, r, err.Error())
  499. }
  500. checkedPosts, err := user_service.GetAdminPosts(id)
  501. if err != nil {
  502. response.FailJson(true, r, err.Error())
  503. }
  504. if checkedPosts == nil {
  505. checkedPosts = []int64{}
  506. }
  507. res := g.Map{
  508. "roleList": roleListEntities,
  509. "userInfo": userEntity,
  510. "checkedRoleIds": checkedRoleIds,
  511. "posts": posts,
  512. "checkedPosts": checkedPosts,
  513. }
  514. response.SusJson(true, r, "成功", res)
  515. }
  516. // @Summary 用户列表
  517. // @Description 分页列表
  518. // @Tags 用户管理
  519. // @Param data body user.SearchReq true "data"
  520. // @Success 0 {object} response.Response "{"code": 200, "data": [...]}"
  521. // @Router /system/Auth/userList [get]
  522. // @Security
  523. func (c *Auth) UserList(r *ghttp.Request) {
  524. var req *user.SearchReq
  525. //获取参数
  526. if err := r.Parse(&req); err != nil {
  527. response.FailJson(true, r, err.(*gvalid.Error).FirstString())
  528. }
  529. total, page, userList, err := user_service.GetAdminList(req)
  530. if err != nil {
  531. g.Log().Error(err)
  532. response.FailJson(true, r, "获取用户列表数据失败")
  533. }
  534. users := make([]g.Map, len(userList))
  535. //获取所有角色信息
  536. allRoles, err := auth_service.GetRoleList()
  537. if err != nil {
  538. g.Log().Error(err)
  539. response.FailJson(true, r, "获取用户角色数据失败")
  540. }
  541. //获取所有部门信息
  542. depts, err := dept_service.GetList(&sys_dept.SearchParams{})
  543. if err != nil {
  544. g.Log().Error(err)
  545. response.FailJson(true, r, "获取部门数据失败")
  546. }
  547. for k, u := range userList {
  548. var dept *sys_dept.Dept
  549. users[k] = gconv.Map(u)
  550. for _, d := range depts {
  551. if u.DeptId == d.DeptID {
  552. dept = d
  553. }
  554. }
  555. users[k]["dept"] = dept
  556. roles, err := user_service.GetAdminRole(u.Id, allRoles)
  557. if err != nil {
  558. g.Log().Error(err)
  559. response.FailJson(true, r, "获取用户角色数据失败")
  560. }
  561. roleInfo := make([]g.Map, 0, len(roles))
  562. for _, r := range roles {
  563. roleInfo = append(roleInfo, g.Map{"roleId": r.Id, "name": r.Name})
  564. }
  565. users[k]["user_status"] = gconv.String(u.UserStatus)
  566. users[k]["roleInfo"] = roleInfo
  567. }
  568. //用户状态
  569. statusOptions, err := dict_service.GetDictWithDataByType("sys_normal_disable", "", "")
  570. if err != nil {
  571. response.FailJson(true, r, err.Error())
  572. }
  573. //用户性别
  574. userGender, err := dict_service.GetDictWithDataByType("sys_user_sex", "", "")
  575. if err != nil {
  576. response.FailJson(true, r, err.Error())
  577. }
  578. res := g.Map{
  579. "total": total,
  580. "currentPage": page,
  581. "userList": users,
  582. "statusOptions": statusOptions,
  583. "userGender": userGender,
  584. }
  585. response.SusJson(true, r, "成功", res)
  586. }
  587. // @Summary 删除管理员
  588. // @Description 删除管理员
  589. // @Tags 用户管理
  590. // @Accept application/json
  591. // @Product application/json
  592. // @Param ids path integer true "ids[1,2,3...]"
  593. // @Success 200 {object} response.Response "{"code": 0, "message": "添加成功"}"
  594. // @Router /system/auth/deleteAdmin [delete]
  595. // @Security Bearer
  596. func (c *Auth) DeleteAdmin(r *ghttp.Request) {
  597. ids := r.GetInts("ids")
  598. if len(ids) > 0 {
  599. _, err := user.Model.Where("id in(?)", ids).Delete()
  600. if err != nil {
  601. g.Log().Error(err)
  602. response.FailJson(true, r, "删除失败")
  603. }
  604. } else {
  605. response.FailJson(true, r, "删除失败,参数错误")
  606. }
  607. //删除对应权限
  608. enforcer, err := casbin_adapter_service.GetEnforcer()
  609. if err == nil {
  610. for _, v := range ids {
  611. enforcer.RemoveFilteredGroupingPolicy(0, fmt.Sprintf("u_%d", v))
  612. }
  613. }
  614. //删除用户对应的岗位
  615. _, err = user_post.Delete(user_post.Columns.UserId+" in (?)", ids)
  616. if err != nil {
  617. g.Log().Error(err)
  618. }
  619. response.SusJson(true, r, "删除成功")
  620. }
  621. // @Summary 设置角色状态
  622. // @Description 设置角色状态
  623. // @Tags 用户管理
  624. // @Accept application/json
  625. // @Product application/json
  626. // @Param data body role.StatusSetReq true "data"
  627. // @Success 200 {object} response.Response "{"code": 0, "message": "添加成功"}"
  628. // @Router /system/auth/statusSetRole [post]
  629. // @Security Bearer
  630. func (c *Auth) StatusSetRole(r *ghttp.Request) {
  631. var req *role.StatusSetReq
  632. //获取参数
  633. if err := r.Parse(&req); err != nil {
  634. response.FailJson(true, r, err.(*gvalid.Error).FirstString())
  635. }
  636. err := auth_service.StatusSetRole(req)
  637. if err != nil {
  638. response.FailJson(true, r, err.Error())
  639. }
  640. response.SusJson(true, r, "状态设置成功")
  641. }
  642. // @Summary 角色数据权限分配
  643. // @Description 角色数据权限分配
  644. // @Tags 用户管理
  645. // @Accept application/json
  646. // @Product application/json
  647. // @Param data body role.DataScopeReq true "data"
  648. // @Success 200 {object} response.Response "{"code": 0, "message": "添加成功"}"
  649. // @Router /system/auth/roleDataScope [post]
  650. // @Security Bearer
  651. func (c *Auth) RoleDataScope(r *ghttp.Request) {
  652. var req *role.DataScopeReq
  653. //获取参数
  654. if err := r.Parse(&req); err != nil {
  655. response.FailJson(true, r, err.(*gvalid.Error).FirstString())
  656. }
  657. err := auth_service.RoleDataScope(req)
  658. if err != nil {
  659. response.FailJson(true, r, err.Error())
  660. }
  661. response.SusJson(true, r, "数据权限设置成功", req)
  662. }
  663. // @Summary 修改用户状态
  664. // @Description 修改用户状态
  665. // @Tags 用户管理
  666. // @Accept application/json
  667. // @Product application/json
  668. // @Param data body user.StatusReq true "data"
  669. // @Success 200 {object} response.Response "{"code": 0, "message": "添加成功"}"
  670. // @Router /system/auth/changeUserStatus [post]
  671. // @Security Bearer
  672. func (c *Auth) ChangeUserStatus(r *ghttp.Request) {
  673. var req *user.StatusReq
  674. //获取参数
  675. if err := r.Parse(&req); err != nil {
  676. response.FailJson(true, r, err.(*gvalid.Error).FirstString())
  677. }
  678. if err := user_service.ChangeUserStatus(req); err != nil {
  679. response.FailJson(true, r, err.Error())
  680. } else {
  681. response.SusJson(true, r, "用户状态设置成功")
  682. }
  683. }
  684. // @Summary 重置用户密码
  685. // @Description 重置用户密码
  686. // @Tags 用户管理
  687. // @Accept application/json
  688. // @Product application/json
  689. // @Param data body user.ResetPwdReq true "data"
  690. // @Success 200 {object} response.Response "{"code": 0, "message": "添加成功"}"
  691. // @Router /system/auth/resetUserPwd [post]
  692. // @Security Bearer
  693. func (c *Auth) ResetUserPwd(r *ghttp.Request) {
  694. var req *user.ResetPwdReq
  695. //获取参数
  696. if err := r.Parse(&req); err != nil {
  697. response.FailJson(true, r, err.(*gvalid.Error).FirstString())
  698. }
  699. if err := user_service.ResetUserPwd(req); err != nil {
  700. response.FailJson(true, r, err.Error())
  701. } else {
  702. response.SusJson(true, r, "用户密码重置成功")
  703. }
  704. }