role.go 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505
  1. package controller
  2. import (
  3. "net/http"
  4. "github.com/gin-gonic/gin"
  5. "github.com/mhaya/game/game_cluster/nodes/webadmin/entity"
  6. "github.com/mhaya/game/game_cluster/nodes/webadmin/service"
  7. )
  8. type Role struct {
  9. }
  10. func NewRole() *Role {
  11. return &Role{}
  12. }
  13. // Add 新增角色
  14. // @Summary 新增角色
  15. // @Description 新增角色
  16. // @Tags 角色
  17. // @Accept application/json
  18. // @Produce application/json
  19. // @Param data body entity.RoleAddReq true "新增角色"
  20. // @Success 200 {object} entity.Response
  21. // @Router /v1/admin/role/add [post]
  22. func (r *Role) Add(ctx *gin.Context) {
  23. req := new(entity.RoleAddReq)
  24. if err := ctx.ShouldBindJSON(&req); err != nil {
  25. ctx.JSON(200, gin.H{
  26. "code": 400,
  27. "msg": err.Error(),
  28. })
  29. return
  30. }
  31. err := new(service.Role).Add(ctx, *req)
  32. if err != nil {
  33. ctx.JSON(200, gin.H{
  34. "code": 400,
  35. "msg": err.Error(),
  36. })
  37. return
  38. }
  39. ctx.JSON(http.StatusOK, gin.H{
  40. "code": 200,
  41. "msg": "success",
  42. })
  43. }
  44. // List 角色列表
  45. // @Summary 角色列表
  46. // @Description 角色列表
  47. // @Tags 角色
  48. // @Accept application/json
  49. // @Produce application/json
  50. // @Param data query entity.RoleListReq true "角色列表"
  51. // @Success 200 {object} entity.Response
  52. // @Router /v1/admin/role/list [get]
  53. func (r *Role) List(ctx *gin.Context) {
  54. req := new(entity.RoleListReq)
  55. if err := ctx.ShouldBindQuery(&req); err != nil {
  56. ctx.JSON(200, gin.H{
  57. "code": 400,
  58. "msg": err.Error(),
  59. })
  60. return
  61. }
  62. list, err := new(service.Role).List(ctx, req)
  63. if err != nil {
  64. ctx.JSON(200, gin.H{
  65. "code": 400,
  66. "msg": err.Error(),
  67. })
  68. return
  69. }
  70. ctx.JSON(http.StatusOK, gin.H{
  71. "code": 200,
  72. "msg": "success",
  73. "data": list,
  74. "count": req.Count,
  75. })
  76. }
  77. // Update 修改角色
  78. // @Summary 修改角色
  79. // @Description 修改角色
  80. // @Tags 角色
  81. // @Accept application/json
  82. // @Produce application/json
  83. // @Param data body entity.RoleUpdateReq true "修改角色"
  84. // @Success 200 {object} entity.Response
  85. // @Router /v1/admin/role/update [post]
  86. func (r *Role) Update(ctx *gin.Context) {
  87. req := new(entity.RoleUpdateReq)
  88. if err := ctx.ShouldBindJSON(&req); err != nil {
  89. ctx.JSON(200, gin.H{
  90. "code": 400,
  91. "msg": err.Error(),
  92. })
  93. return
  94. }
  95. err := new(service.Role).Update(ctx, *req)
  96. if err != nil {
  97. ctx.JSON(200, gin.H{
  98. "code": 400,
  99. "msg": err.Error(),
  100. })
  101. return
  102. }
  103. ctx.JSON(http.StatusOK, gin.H{
  104. "code": 200,
  105. "msg": "success",
  106. })
  107. }
  108. // Del 删除角色
  109. // @Summary 删除角色
  110. // @Description 删除角色
  111. // @Tags 角色
  112. // @Accept application/json
  113. // @Produce application/json
  114. // @Param data query entity.RoleDelReq true "删除角色"
  115. // @Success 200 {object} entity.Response
  116. // @Router /v1/admin/role/del [get]
  117. func (r *Role) Del(ctx *gin.Context) {
  118. req := new(entity.RoleDelReq)
  119. if err := ctx.ShouldBindQuery(&req); err != nil {
  120. ctx.JSON(200, gin.H{
  121. "code": 400,
  122. "msg": err.Error(),
  123. })
  124. return
  125. }
  126. err := new(service.Role).Del(ctx, *req)
  127. if err != nil {
  128. ctx.JSON(200, gin.H{
  129. "code": 400,
  130. "msg": err.Error(),
  131. })
  132. return
  133. }
  134. ctx.JSON(http.StatusOK, gin.H{
  135. "code": 200,
  136. "msg": "success",
  137. })
  138. }
  139. // AddRoleAccess 添加角色权限
  140. // @Summary 添加角色权限
  141. // @Description 添加角色权限
  142. // @Tags 角色
  143. // @Accept application/json
  144. // @Produce application/json
  145. // @Param data body entity.RoleAccessAddReq true "添加角色权限"
  146. // @Success 200 {object} entity.Response
  147. // @Router /v1/admin/role/role_access/add [post]
  148. func (r *Role) AddRoleAccess(ctx *gin.Context) {
  149. req := new(entity.RoleAccessAddReq)
  150. if err := ctx.ShouldBindJSON(&req); err != nil {
  151. ctx.JSON(200, gin.H{
  152. "code": 400,
  153. "msg": err.Error(),
  154. })
  155. return
  156. }
  157. err := new(service.Role).AddRoleAccess(ctx, *req)
  158. if err != nil {
  159. ctx.JSON(200, gin.H{
  160. "code": 400,
  161. "msg": err.Error(),
  162. })
  163. return
  164. }
  165. ctx.JSON(http.StatusOK, gin.H{
  166. "code": 200,
  167. "msg": "success",
  168. })
  169. }
  170. // UpdateRoleAccess 修改角色权限
  171. // @Summary 修改角色权限
  172. // @Description 修改角色权限
  173. // @Tags 角色
  174. // @Accept application/json
  175. // @Produce application/json
  176. // @Param data body entity.RoleAccessUpdateReq true "修改角色权限"
  177. // @Success 200 {object} entity.Response
  178. // @Router /v1/admin/role/role_access/update [post]
  179. func (r *Role) UpdateRoleAccess(ctx *gin.Context) {
  180. req := new(entity.RoleAccessUpdateReq)
  181. if err := ctx.ShouldBindJSON(&req); err != nil {
  182. ctx.JSON(200, gin.H{
  183. "code": 400,
  184. "msg": err.Error(),
  185. })
  186. return
  187. }
  188. err := new(service.Role).UpdateRoleAccess(ctx, *req)
  189. if err != nil {
  190. ctx.JSON(200, gin.H{
  191. "code": 400,
  192. "msg": err.Error(),
  193. })
  194. return
  195. }
  196. ctx.JSON(http.StatusOK, gin.H{
  197. "code": 200,
  198. "msg": "success",
  199. })
  200. }
  201. // DelRoleAccess 删除角色权限
  202. // @Summary 删除角色权限
  203. // @Description 删除角色权限
  204. // @Tags 角色
  205. // @Accept application/json
  206. // @Produce application/json
  207. // @Param data query entity.RoleAccessDelReq true "删除角色权限"
  208. // @Success 200 {object} entity.Response
  209. // @Router /v1/admin/role/role_access/del [get]
  210. func (r *Role) DelRoleAccess(ctx *gin.Context) {
  211. req := new(entity.RoleAccessDelReq)
  212. if err := ctx.ShouldBindQuery(&req); err != nil {
  213. ctx.JSON(200, gin.H{
  214. "code": 400,
  215. "msg": err.Error(),
  216. })
  217. return
  218. }
  219. err := new(service.Role).DelRoleAccess(ctx, *req)
  220. if err != nil {
  221. ctx.JSON(200, gin.H{
  222. "code": 400,
  223. "msg": err.Error(),
  224. })
  225. return
  226. }
  227. ctx.JSON(http.StatusOK, gin.H{
  228. "code": 200,
  229. "msg": "success",
  230. })
  231. }
  232. // GetRoleAccessList 获取角色权限列表根据角色ID
  233. // @Summary 获取角色权限列表根据角色ID
  234. // @Description 获取角色权限列表根据角色ID
  235. // @Tags 角色
  236. // @Accept application/json
  237. // @Produce application/json
  238. // @Param data query entity.RoleAccessListReq true "获取角色权限列表根据角色ID"
  239. // @Success 200 {object} []entity.AccessResp
  240. // @Router /v1/admin/role/role_access/list [get]
  241. func (r *Role) GetRoleAccessList(ctx *gin.Context) {
  242. req := new(entity.RoleAccessListReq)
  243. if err := ctx.ShouldBindQuery(&req); err != nil {
  244. ctx.JSON(200, gin.H{
  245. "code": 400,
  246. "msg": err.Error(),
  247. })
  248. return
  249. }
  250. list, err := new(service.Role).GetRoleAccessList(ctx, *req)
  251. if err != nil {
  252. ctx.JSON(200, gin.H{
  253. "code": 400,
  254. "msg": err.Error(),
  255. })
  256. return
  257. }
  258. ctx.JSON(http.StatusOK, gin.H{
  259. "code": 200,
  260. "msg": "success",
  261. "data": list,
  262. })
  263. }
  264. // AddAccess 添加权限路由
  265. // @Summary 添加权限路由
  266. // @Description 添加权限路由
  267. // @Tags 角色-路由
  268. // @Accept application/json
  269. // @Produce application/json
  270. // @Param data body entity.AccessAddReq true "添加权限路由"
  271. // @Success 200 {object} entity.Response
  272. // @Router /v1/admin/role/access/add [post]
  273. func (r *Role) AddAccess(ctx *gin.Context) {
  274. req := new(entity.AccessAddReq)
  275. if err := ctx.ShouldBindJSON(&req); err != nil {
  276. ctx.JSON(200, gin.H{
  277. "code": 400,
  278. "msg": err.Error(),
  279. })
  280. return
  281. }
  282. err := new(service.Role).AddAccess(ctx, *req)
  283. if err != nil {
  284. ctx.JSON(200, gin.H{
  285. "code": 400,
  286. "msg": err.Error(),
  287. })
  288. return
  289. }
  290. ctx.JSON(http.StatusOK, gin.H{
  291. "code": 200,
  292. "msg": "success",
  293. })
  294. }
  295. // DelAccess
  296. // @Summary 删除权限路由
  297. // @Description 删除权限路由
  298. // @Tags 角色-路由
  299. // @Accept application/json
  300. // @Produce application/json
  301. // @Param data query entity.AccessDelReq true "删除权限路由"
  302. // @Success 200 {object} entity.Response
  303. // @Router /v1/admin/role/access/del [Get]
  304. func (r *Role) DelAccess(ctx *gin.Context) {
  305. req := new(entity.AccessDelReq)
  306. if err := ctx.ShouldBindQuery(&req); err != nil {
  307. ctx.JSON(200, gin.H{
  308. "code": 400,
  309. "msg": err.Error(),
  310. })
  311. return
  312. }
  313. err := new(service.Role).DelAccess(ctx, *req)
  314. if err != nil {
  315. ctx.JSON(200, gin.H{
  316. "code": 400,
  317. "msg": err.Error(),
  318. })
  319. return
  320. }
  321. ctx.JSON(http.StatusOK, gin.H{
  322. "code": 200,
  323. "msg": "success",
  324. })
  325. }
  326. // UpdateAccess 修改权限路由
  327. // @Summary 修改权限路由
  328. // @Description 修改权限路由
  329. // @Tags 角色-路由
  330. // @Accept application/json
  331. // @Produce application/json
  332. // @Param data body entity.AccessUpdateReq true "修改权限路由"
  333. // @Success 200 {object} entity.Response
  334. // @Router /v1/admin/role/access/update [post]
  335. func (r *Role) UpdateAccess(ctx *gin.Context) {
  336. req := new(entity.AccessUpdateReq)
  337. if err := ctx.ShouldBindJSON(&req); err != nil {
  338. ctx.JSON(200, gin.H{
  339. "code": 400,
  340. "msg": err.Error(),
  341. })
  342. return
  343. }
  344. err := new(service.Role).UpdateAccess(ctx, *req)
  345. if err != nil {
  346. ctx.JSON(200, gin.H{
  347. "code": 400,
  348. "msg": err.Error(),
  349. })
  350. return
  351. }
  352. ctx.JSON(http.StatusOK, gin.H{
  353. "code": 200,
  354. "msg": "success",
  355. })
  356. }
  357. // ListAccess 获取权限路由列表
  358. // @Summary 获取权限路由列表
  359. // @Description 获取权限路由列表
  360. // @Tags 角色-路由
  361. // @Accept application/json
  362. // @Produce application/json
  363. // @Param data query entity.AccessListReq true "获取权限路由列表"
  364. // @Success 200 {object} []entity.AccessResp
  365. // @Router /v1/admin/role/access/list [get]
  366. func (r *Role) ListAccess(ctx *gin.Context) {
  367. req := new(entity.AccessListReq)
  368. if err := ctx.ShouldBindQuery(&req); err != nil {
  369. ctx.JSON(200, gin.H{
  370. "code": 400,
  371. "msg": err.Error(),
  372. })
  373. return
  374. }
  375. list, err := new(service.Role).ListAccess(ctx, req)
  376. if err != nil {
  377. ctx.JSON(200, gin.H{
  378. "code": 400,
  379. "msg": err.Error(),
  380. })
  381. return
  382. }
  383. ctx.JSON(http.StatusOK, gin.H{
  384. "code": 200,
  385. "msg": "success",
  386. "data": list,
  387. "total": req.Count,
  388. })
  389. }
  390. // GetAdminRole
  391. // @Summary 获取该管理员的权限详情
  392. // @Description 获取该管理员的权限详情
  393. // @Tags 角色
  394. // @Accept application/json
  395. // @Produce application/json
  396. // @Param data query entity.AdminBindRoleReq true "获取角色"
  397. // @Success 200 {object} entity.AdminBindRoleResp
  398. // @Router /v1/admin/role/admin_role_info [get]
  399. func (r *Role) GetAdminRole(ctx *gin.Context) {
  400. req := new(entity.AdminBindRoleReq)
  401. if err := ctx.ShouldBindQuery(&req); err != nil {
  402. ctx.JSON(200, gin.H{
  403. "code": 400,
  404. "msg": err.Error(),
  405. })
  406. return
  407. }
  408. list, err := new(service.Role).GetAdminRole(ctx, req)
  409. if err != nil {
  410. ctx.JSON(200, gin.H{
  411. "code": 400,
  412. "msg": err.Error(),
  413. })
  414. return
  415. }
  416. ctx.JSON(http.StatusOK, gin.H{
  417. "code": 200,
  418. "msg": "success",
  419. "data": list,
  420. })
  421. return
  422. }
  423. // AdminBindRole 绑定角色
  424. // @Summary 绑定角色
  425. // @Description 绑定角色
  426. // @Tags 角色
  427. // @Accept application/json
  428. // @Produce application/json
  429. // @Param data body entity.AdminBindRoleReq true "绑定角色"
  430. // @Success 200 {object} entity.Response
  431. // @Router /v1/admin/role/admin_bind_role [post]
  432. func (r *Role) AdminBindRole(ctx *gin.Context) {
  433. req := new(entity.AdminBindRoleReq)
  434. if err := ctx.ShouldBindJSON(&req); err != nil {
  435. ctx.JSON(200, gin.H{
  436. "code": 400,
  437. "msg": err.Error(),
  438. })
  439. return
  440. }
  441. err := new(service.Role).AdminBindRole(ctx, req)
  442. if err != nil {
  443. ctx.JSON(200, gin.H{
  444. "code": 400,
  445. "msg": err.Error(),
  446. })
  447. return
  448. }
  449. ctx.JSON(http.StatusOK, gin.H{
  450. "code": 200,
  451. "msg": "success",
  452. })
  453. }
  454. // AdminUnBindRole 取消绑定角色
  455. // @Summary 取消绑定角色
  456. // @Description 取消绑定角色
  457. // @Tags 角色
  458. // @Accept application/json
  459. // @Produce application/json
  460. // @Param data body entity.AdminBindRoleReq true "取消绑定角色"
  461. // @Success 200 {object} entity.Response
  462. // @Router /v1/admin/role/admin_unbind_role [post]
  463. func (r *Role) AdminUnBindRole(ctx *gin.Context) {
  464. req := new(entity.AdminBindRoleReq)
  465. if err := ctx.ShouldBindJSON(&req); err != nil {
  466. ctx.JSON(200, gin.H{
  467. "code": 400,
  468. "msg": err.Error(),
  469. })
  470. return
  471. }
  472. err := new(service.Role).AdminUnBindRole(ctx, req)
  473. if err != nil {
  474. ctx.JSON(200, gin.H{
  475. "code": 400,
  476. "msg": err.Error(),
  477. })
  478. return
  479. }
  480. ctx.JSON(http.StatusOK, gin.H{
  481. "code": 200,
  482. "msg": "success",
  483. })
  484. }