sys_role_api.go 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289
  1. package admin
  2. import (
  3. "github.com/druidcaesa/gotool"
  4. "strconv"
  5. "time"
  6. "ulink-admin/frame"
  7. "ulink-admin/modules/system/models/model"
  8. "ulink-admin/modules/system/models/req"
  9. service "ulink-admin/modules/system/service"
  10. "ulink-admin/pkg/excels"
  11. "ulink-admin/pkg/jwt/admin"
  12. "ulink-admin/pkg/page"
  13. )
  14. type RoleApi struct {
  15. UserService *service.UserService `inject:""`
  16. MenuService *service.MenuService `inject:""`
  17. RoleService *service.RoleService `inject:""`
  18. }
  19. // Find 分页查询角色数据
  20. // @Summary 分页查询角色数据接口
  21. // @Description 分页查询角色数据接口
  22. // @Tags 角色相关接口
  23. // @Accept application/json
  24. // @Produce application/json
  25. // @Param Authorization header string false "Bearer 令牌"
  26. // @Param object query req.RoleQuery false "查询参数"
  27. // @Security ApiKeyAuth
  28. // @Success 200 {object} resp.Response{data=page.Page{list=model.SysRole},msg=string} "分页获取角色列表,返回包括列表,总数,页码,每页数量"
  29. // @Router /role/findList [get]
  30. func (a RoleApi) Find(c *frame.Context) {
  31. query := &req.RoleQuery{}
  32. c.ValidteError(c.ShouldBind(query), query)
  33. list := make([]model.SysRole, 0)
  34. i := a.RoleService.Page(query, &list)
  35. c.Ok(page.Page{
  36. List: list,
  37. Total: i,
  38. Size: query.PageSize,
  39. })
  40. }
  41. // ListAll 查询操作日志记录所有数据
  42. // @Summary 分页查询角色数据接口
  43. // @Description 分页查询角色数据接口
  44. // @Tags 角色相关接口
  45. // @Accept application/json
  46. // @Produce application/json
  47. // @Param Authorization header string false "Bearer 令牌"
  48. // @Security ApiKeyAuth
  49. // @Success 200 {object} resp.Response{data=model.SysRole,msg=string} "分页获取角色列表,返回包括列表,总数,页码,每页数量"
  50. // @Router /role/findAll [get]
  51. func (a RoleApi) ListAll(c *frame.Context) {
  52. list := make([]model.SysRole, 0)
  53. a.RoleService.List(&req.RoleQuery{}, &list)
  54. c.Ok(list)
  55. }
  56. // GetRoleId 根据人roleId查询角色数据
  57. // @Summary 角色详情查询接口
  58. // @Description 角色详情查询接口
  59. // @Tags 角色相关接口
  60. // @Accept application/json
  61. // @Produce application/json
  62. // @Param Authorization header string false "Bearer 令牌"
  63. // @Param id path int true "id" id
  64. // @Security ApiKeyAuth
  65. // @Success 200 {object} resp.Response{data=model.SysRole,msg=string} "返回角色详情查询"
  66. // @Router /role [get]
  67. func (a RoleApi) GetRoleId(c *frame.Context) {
  68. param := c.Param("id")
  69. id, err := strconv.ParseInt(param, 10, 64)
  70. if err == nil {
  71. role := new(model.SysRole)
  72. a.RoleService.GetById(id, role)
  73. if role == nil {
  74. c.Error("角色查询异常'")
  75. return
  76. }
  77. menuList := *a.MenuService.SelectMenuListByRoleId(role.Id)
  78. if menuList == nil {
  79. c.Error("菜单查询异常")
  80. return
  81. }
  82. //根据角色查询菜单
  83. role.MenuIds = menuList
  84. c.Ok(role)
  85. } else {
  86. c.Error("参数绑定异常")
  87. }
  88. }
  89. // Add 添加角色业务操作
  90. // @Summary 新增角色接口
  91. // @Description 新增角色接口
  92. // @Tags 角色相关接口
  93. // @Accept application/json
  94. // @Produce application/json
  95. // @Param Authorization header string false "Bearer 令牌"
  96. // @Param data body model.SysRole true "角色实体对象"
  97. // @Success 200 {object} resp.Response{msg=string} "操作状态"
  98. // @Router /role/add [post]
  99. func (a RoleApi) Add(c *frame.Context) {
  100. role := &model.SysRole{DelFlag: "0"}
  101. c.ValidteError(c.ShouldBind(role), role)
  102. role.CreateBy = admin.GetUserInfo(c).UserName
  103. role.UpdateBy = role.CreateBy
  104. a.RoleService.Add(role)
  105. }
  106. // Edit 修改角色接口
  107. // @Summary 修改角色接口
  108. // @Description 新增角色接口
  109. // @Tags 角色相关接口
  110. // @Accept application/json
  111. // @Produce application/json
  112. // @Param Authorization header string false "Bearer 令牌"
  113. // @Param data body model.SysRole true "角色实体对象"
  114. // @Success 200 {object} resp.Response{msg=string} "操作状态"
  115. // @Router /role/edit [put]
  116. func (a RoleApi) Edit(c *frame.Context) {
  117. role := &model.SysRole{}
  118. c.ValidteError(c.ShouldBind(role), role)
  119. role.UpdateBy = admin.GetUserInfo(c).UserName
  120. a.RoleService.Update(role)
  121. }
  122. // Delete 删除角色
  123. // @Summary 删除角色接口
  124. // @Description 删除角色接口
  125. // @Tags 角色相关接口
  126. // @Accept application/json
  127. // @Produce application/json
  128. // @Param Authorization header string false "Bearer 令牌"
  129. // @Param id path int true "id" id
  130. // @Success 200 {object} resp.Response{msg=string} "操作状态"
  131. // @Router /role/remove [delete]
  132. func (a RoleApi) Delete(c *frame.Context) {
  133. param := c.Param("id")
  134. id, err := strconv.ParseInt(param, 10, 64)
  135. if err != nil {
  136. c.Error("参数绑定异常")
  137. return
  138. }
  139. a.RoleService.Delete(id)
  140. }
  141. // ChangeStatus 状态修改
  142. // ChangeStatus 修改状态
  143. // @Summary 修改状态接口
  144. // @Description 修改状态接口
  145. // @Tags 角色相关接口
  146. // @Accept application/json
  147. // @Produce application/json
  148. // @Param Authorization header string false "Bearer 令牌"
  149. // @Param id query int true "id" id
  150. // @Param status query string true "status" status
  151. // @Success 200 {object} resp.Response{msg=string} "操作状态"
  152. // @Router /role/changeStatus [put]
  153. func (a RoleApi) ChangeStatus(c *frame.Context) {
  154. var req struct {
  155. Id int64 `form:"ids" binding:"required" msg:"id不存在"` //ids
  156. }
  157. c.ValidteError(c.ShouldBind(&req), req)
  158. body := new(model.SysRole)
  159. body.Id = req.Id
  160. allowed, s := a.RoleService.CheckRoleAllowed(body.Id)
  161. if !allowed {
  162. c.Error(s)
  163. }
  164. body.UpdateTime = time.Now()
  165. body.UpdateBy = admin.GetUserInfo(c).UserName
  166. a.RoleService.UpdateStatus(body)
  167. }
  168. // AllocatedList 查询已分配角色角色列表
  169. // @Summary 查询已分配角色角色列表
  170. // @Description 查询已分配角色角色列表
  171. // @Tags 角色相关接口
  172. // @Accept application/json
  173. // @Produce application/json
  174. // @Param Authorization header string false "Bearer 令牌"
  175. // @Param object query req.UserQuery false "查询参数"
  176. // @Security ApiKeyAuth
  177. // @Success 200 {object} resp.Response{data=page.Page{list=model.SysRole},msg=string} "分页获取角色列表,返回包括列表,总数,页码,每页数量"
  178. // @Router /role/authUser/allocatedList [get]
  179. func (a RoleApi) AllocatedList(c *frame.Context) {
  180. query := &req.UserQuery{}
  181. c.ValidteError(c.ShouldBind(query), query)
  182. list, i := a.UserService.GetAllocatedList(query)
  183. c.Ok(page.Page{
  184. List: list,
  185. Total: i,
  186. })
  187. }
  188. // UnallocatedList 查询未分配角色角色列表
  189. // @Summary 查询已分配角色角色列表
  190. // @Description 查询已分配角色角色列表
  191. // @Tags 角色相关接口
  192. // @Accept application/json
  193. // @Produce application/json
  194. // @Param Authorization header string false "Bearer 令牌"
  195. // @Param object query req.UserQuery false "查询参数"
  196. // @Security ApiKeyAuth
  197. // @Success 200 {object} resp.Response{data=page.Page{list=model.SysRole},msg=string} "分页获取角色列表,返回包括列表,总数,页码,每页数量"
  198. // @Router /role/authUser/unallocatedList [get]
  199. func (a RoleApi) UnallocatedList(c *frame.Context) {
  200. query := &req.UserQuery{}
  201. c.ValidteError(c.ShouldBind(query), query)
  202. list, i := a.UserService.GetUnallocatedList(query)
  203. c.Ok(page.Page{
  204. List: list,
  205. Total: i,
  206. })
  207. }
  208. // CancelAuthUser 取消授权角色
  209. // @Summary 取消授权角色
  210. // @Description 取消授权角色
  211. // @Tags 角色相关接口
  212. // @Accept application/json
  213. // @Produce application/json
  214. // @Param Authorization header string false "Bearer 令牌"
  215. // @Param data body model.SysRole true "角色实体对象"
  216. // @Success 200 {object} resp.Response{msg=string} "操作状态"
  217. // @Router /role/authUser/cancel [put]
  218. func (a RoleApi) CancelAuthUser(c *frame.Context) {
  219. roleUser := &model.SysUserRole{}
  220. c.ValidteError(c.ShouldBind(roleUser), roleUser)
  221. a.RoleService.DeleteAuthUser(roleUser)
  222. }
  223. // BatchCancelAuthUsers 批量取消角色授权
  224. // CancelAuthUser 批量取消角色授权
  225. // @Summary 批量取消角色授权
  226. // @Description 取消授权角色
  227. // @Tags 角色相关接口
  228. // @Accept application/json
  229. // @Produce application/json
  230. // @Param Authorization header string false "Bearer 令牌"
  231. // @Param data body model.SysRole true "角色实体对象"
  232. // @Success 200 {object} resp.Response{msg=string} "操作状态"
  233. // @Router /role/authUser/cancelAll [put]
  234. func (a RoleApi) BatchCancelAuthUsers(c *frame.Context) {
  235. body := &req.UserRoleBody{}
  236. c.ValidteError(c.ShouldBind(body), body)
  237. a.RoleService.BatchCancelAuthUsers(body)
  238. }
  239. // UpdateAuthUserAll 批量选择角色授权
  240. // @Summary 批量选择角色授权
  241. // @Description 批量选择角色授权
  242. // @Tags 角色相关接口
  243. // @Accept application/json
  244. // @Produce application/json
  245. // @Param Authorization header string false "Bearer 令牌"
  246. // @Param data body model.SysRole true "角色实体对象"
  247. // @Success 200 {object} resp.Response{msg=string} "操作状态"
  248. // @Router /role/authUser/selectAll [put]
  249. func (a RoleApi) UpdateAuthUserAll(c *frame.Context) {
  250. body := &req.UserRoleBody{}
  251. c.ValidteError(c.ShouldBind(body), body)
  252. a.RoleService.InsertAuthUsers(body)
  253. }
  254. // Export 导出Excel
  255. func (a RoleApi) Export(c *frame.Context) {
  256. query := &req.RoleQuery{}
  257. items := make([]interface{}, 0)
  258. c.ValidteError(c.ShouldBind(query), query)
  259. list := make([]model.SysRole, 0)
  260. a.RoleService.List(query, list)
  261. for _, role := range list {
  262. items = append(items, role)
  263. }
  264. _, file := excels.ExportExcel(items, "角色表")
  265. c.Header("Content-Type", "application/octet-stream")
  266. c.Header("Content-Disposition", "attachment; filename="+gotool.IdUtils.IdUUIDToRan(false)+".xlsx")
  267. c.Header("Content-Transfer-Encoding", "binary")
  268. c.Header("FileName", gotool.IdUtils.IdUUIDToRan(false)+".xlsx")
  269. file.Write(c.Writer)
  270. }