role.go 11 KB

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