sys_role.go 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. package controller
  2. import (
  3. "gas-cylinder-api/app/admin/model"
  4. "gas-cylinder-api/app/admin/service"
  5. "gas-cylinder-api/app/admin/service/dto"
  6. "gas-cylinder-api/common/actions"
  7. "gas-cylinder-api/common/global"
  8. "github.com/gin-gonic/gin"
  9. "gogs.baozhida.cn/zoie/OAuth-core/api"
  10. "gogs.baozhida.cn/zoie/OAuth-core/pkg/jwtauth/user"
  11. _ "gogs.baozhida.cn/zoie/OAuth-core/pkg/response"
  12. "gogs.baozhida.cn/zoie/OAuth-core/sdk"
  13. "gogs.baozhida.cn/zoie/OAuth-core/sdk/config"
  14. "net/http"
  15. "github.com/gin-gonic/gin/binding"
  16. )
  17. type SysRoleController struct {
  18. api.Api
  19. }
  20. // GetPage 获取角色列表
  21. // @Summary 角色列表数据
  22. // @Description 获取角色列表
  23. // @Tags 角色
  24. // @Param roleName query string false "角色名称"
  25. // @Param pageSize query int false "页条数"
  26. // @Param page query int false "页码"
  27. // @Success 200 {object} response.Response{data=response.Page{list=[]model.SysRole}} "{"code": 200, "data": [...]}"
  28. // @Router /api/role [get]
  29. // @Security Bearer
  30. func (e SysRoleController) GetPage(c *gin.Context) {
  31. s := service.SysRole{}
  32. req := dto.SysRoleGetPageReq{}
  33. err := e.MakeContext(c).
  34. MakeOrm().
  35. Bind(&req, binding.Form).
  36. MakeService(&s.Service).
  37. Errors
  38. if err != nil {
  39. e.Logger.Error(err)
  40. e.Error(500, err, err.Error())
  41. return
  42. }
  43. list := make([]model.SysRole, 0)
  44. var count int64
  45. //数据权限检查
  46. p := actions.GetPermissionFromContext(c)
  47. err = s.GetPage(&req, &list, &count, p)
  48. if err != nil {
  49. e.Logger.Error(err)
  50. e.Error(500, err, err.Error())
  51. return
  52. }
  53. e.PageOK(list, int(count), req.GetPageIndex(), req.GetPageSize(), "查询成功")
  54. }
  55. // Get 通过id获取角色
  56. // @Summary 通过id获取角色
  57. // @Description 通过id获取角色
  58. // @Tags 角色
  59. // @Param id path string true "角色Id"
  60. // @Success 200 {object} response.Response{data=model.SysRole} "{"code": 200, "data": [...]}"
  61. // @Router /api/role/{id} [get]
  62. // @Security Bearer
  63. func (e SysRoleController) Get(c *gin.Context) {
  64. s := service.SysRole{}
  65. req := dto.SysRoleGetReq{}
  66. err := e.MakeContext(c).
  67. MakeOrm().
  68. Bind(&req, nil).
  69. MakeService(&s.Service).
  70. Errors
  71. if err != nil {
  72. e.Logger.Error(err)
  73. e.Error(500, err, err.Error())
  74. return
  75. }
  76. var object model.SysRole
  77. //数据权限检查
  78. p := actions.GetPermissionFromContext(c)
  79. err = s.Get(&req, &object, p)
  80. if err != nil {
  81. e.Logger.Error(err)
  82. e.Error(http.StatusUnprocessableEntity, err, err.Error())
  83. return
  84. }
  85. e.OK(object, "查询成功")
  86. }
  87. // Insert 创建角色
  88. // @Summary 创建角色
  89. // @Description 创建角色
  90. // @Tags 角色
  91. // @Accept application/json
  92. // @Product application/json
  93. // @Param data body dto.SysRoleInsertReq true "data"
  94. // @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
  95. // @Router /api/role [post]
  96. // @Security Bearer
  97. func (e SysRoleController) Insert(c *gin.Context) {
  98. s := service.SysRole{}
  99. req := dto.SysRoleInsertReq{}
  100. err := e.MakeContext(c).
  101. MakeOrm().
  102. Bind(&req, binding.JSON).
  103. MakeService(&s.Service).
  104. Errors
  105. if err != nil {
  106. e.Logger.Error(err)
  107. e.Error(500, err, err.Error())
  108. return
  109. }
  110. p := actions.GetPermissionFromContext(c)
  111. // 设置创建人
  112. req.SetCreateBy(user.GetUserId(c))
  113. req.SetDeptId(p.DeptId)
  114. err = s.Insert(&req)
  115. if err != nil {
  116. e.Error(500, err, err.Error())
  117. return
  118. }
  119. _, err = global.LoadPolicy(c)
  120. if err != nil {
  121. e.Logger.Error(err)
  122. e.Error(500, err, err.Error())
  123. return
  124. }
  125. e.OK(req.GetId(), "创建成功")
  126. }
  127. // Update 修改用户角色
  128. // @Summary 修改用户角色
  129. // @Description 修改用户角色
  130. // @Tags 角色
  131. // @Accept application/json
  132. // @Product application/json
  133. // @Param data body dto.SysRoleUpdateReq true "body"
  134. // @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
  135. // @Router /api/role/{id} [put]
  136. // @Security Bearer
  137. func (e SysRoleController) Update(c *gin.Context) {
  138. s := service.SysRole{}
  139. req := dto.SysRoleUpdateReq{}
  140. err := e.MakeContext(c).
  141. MakeOrm().
  142. Bind(&req, nil, binding.JSON).
  143. MakeService(&s.Service).
  144. Errors
  145. if err != nil {
  146. e.Logger.Error(err)
  147. e.Error(500, err, err.Error())
  148. return
  149. }
  150. req.SetUpdateBy(user.GetUserId(c))
  151. //数据权限检查
  152. p := actions.GetPermissionFromContext(c)
  153. err = s.Update(&req, p)
  154. if err != nil {
  155. e.Logger.Error(err)
  156. e.Error(500, err, err.Error())
  157. return
  158. }
  159. //_, err = global.LoadPolicy(c)
  160. //if err != nil {
  161. // e.Logger.Error(err)
  162. // e.Error(500, err, err.Error())
  163. // return
  164. //}
  165. e.OK(req.GetId(), "更新成功")
  166. }
  167. // Delete 删除用户角色
  168. // @Summary 删除用户角色
  169. // @Description 删除用户角色
  170. // @Tags 角色
  171. // @Accept application/json
  172. // @Product application/json
  173. // @Param data body dto.SysRoleDeleteReq true "body"
  174. // @Success 200 {object} response.Response "{"code": 200, "data": [...]}"
  175. // @Router /api/role [delete]
  176. // @Security Bearer
  177. func (e SysRoleController) Delete(c *gin.Context) {
  178. s := new(service.SysRole)
  179. req := dto.SysRoleDeleteReq{}
  180. userSvc := service.SysUser{}
  181. err := e.MakeContext(c).
  182. MakeOrm().
  183. Bind(&req, binding.JSON).
  184. MakeService(&s.Service).
  185. MakeService(&userSvc.Service).
  186. Errors
  187. if err != nil {
  188. e.Logger.Error(err)
  189. e.Error(500, err, err.Error())
  190. return
  191. }
  192. userReq := dto.SysUserGetCountReq{RoleIds: []int{req.Id}}
  193. var count int64
  194. err = userSvc.GetCount(&userReq, &count)
  195. if err != nil {
  196. e.Error(500, err, err.Error())
  197. return
  198. }
  199. if count > 0 {
  200. e.Error(500, err, "有用户关联,禁止删除!")
  201. return
  202. }
  203. //数据权限检查
  204. p := actions.GetPermissionFromContext(c)
  205. //cb := sdk.Runtime.GetCasbinKey(c.Request.Host)
  206. cb := sdk.Runtime.GetCasbinKey(config.ApplicationConfig.Host)
  207. // fixme 删除角色与路由,角色与菜单之间的关联
  208. err = s.Remove(&req, p, cb)
  209. if err != nil {
  210. e.Logger.Error(err)
  211. e.Error(500, err, err.Error())
  212. return
  213. }
  214. e.OK(req.GetId(), "删除成功")
  215. }