auth.go 21 KB

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