UserOnlineController.java 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package jnpf.base.controller;
  2. import cn.dev33.satoken.annotation.SaCheckPermission;
  3. import cn.dev33.satoken.annotation.SaMode;
  4. import io.swagger.v3.oas.annotations.Operation;
  5. import io.swagger.v3.oas.annotations.Parameter;
  6. import io.swagger.v3.oas.annotations.tags.Tag;
  7. import jnpf.base.ActionResult;
  8. import jnpf.base.Pagination;
  9. import jnpf.base.model.online.BatchOnlineModel;
  10. import jnpf.base.service.UserOnlineService;
  11. import jnpf.base.vo.PageListVO;
  12. import jnpf.base.vo.PaginationVO;
  13. import jnpf.constant.MsgCode;
  14. import jnpf.message.model.UserOnlineModel;
  15. import jnpf.message.model.UserOnlineVO;
  16. import jnpf.util.JsonUtil;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.web.bind.annotation.*;
  19. import java.util.List;
  20. import java.util.stream.Collectors;
  21. /**
  22. * 在线用户
  23. *
  24. * @author JNPF开发平台组
  25. * @version V3.1.0
  26. * @copyright 引迈信息技术有限公司
  27. * @date 2019年9月26日 上午9:18
  28. */
  29. @Tag(name = "在线用户", description = "Online")
  30. @RestController
  31. @RequestMapping("/api/system/OnlineUser")
  32. public class UserOnlineController {
  33. @Autowired
  34. private UserOnlineService userOnlineService;
  35. /**
  36. * 列表
  37. *
  38. * @param page 分页参数
  39. * @return ignore
  40. */
  41. @Operation(summary = "获取在线用户列表")
  42. @SaCheckPermission(value = {"permission.userOnline", "monitor.userOnline"}, mode = SaMode.OR)
  43. @GetMapping
  44. public ActionResult<PageListVO<UserOnlineVO>> list(Pagination page) {
  45. List<UserOnlineModel> data = userOnlineService.getList(page);
  46. List<UserOnlineVO> voList = data.stream().map(online -> {
  47. UserOnlineVO vo = JsonUtil.getJsonToBean(online, UserOnlineVO.class);
  48. vo.setUserId(online.getToken());
  49. //vo.setUserName(vo.getUserName() + "/" + online.getDevice());
  50. return vo;
  51. }).collect(Collectors.toList());
  52. PaginationVO paginationVO = JsonUtil.getJsonToBean(page, PaginationVO.class);
  53. return ActionResult.page(voList, paginationVO);
  54. }
  55. /**
  56. * 注销
  57. *
  58. * @param token 主键值
  59. * @return
  60. */
  61. @Operation(summary = "强制下线")
  62. @Parameter(name = "token", description = "token", required = true)
  63. @SaCheckPermission("permission.userOnline")
  64. @DeleteMapping("/{token}")
  65. public ActionResult delete(@PathVariable("token") String token) {
  66. userOnlineService.delete(token);
  67. return ActionResult.success(MsgCode.SU005.get());
  68. }
  69. /**
  70. * 批量下线用户
  71. *
  72. * @param model 主键值
  73. * @return ignore
  74. */
  75. @Operation(summary = "批量下线用户")
  76. @Parameter(name = "model", description = "在线用户id集合", required = true)
  77. @SaCheckPermission("permission.userOnline")
  78. @DeleteMapping
  79. public ActionResult clear(@RequestBody BatchOnlineModel model) {
  80. userOnlineService.delete(model.getIds());
  81. return ActionResult.success(MsgCode.SU005.get());
  82. }
  83. }