| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- package beilv.web.controller.monitor;
- import java.util.List;
- import org.apache.shiro.authz.annotation.Logical;
- import org.apache.shiro.authz.annotation.RequiresPermissions;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.ResponseBody;
- import beilv.common.annotation.Log;
- import beilv.common.core.controller.BaseController;
- import beilv.common.core.domain.AjaxResult;
- import beilv.common.core.page.TableDataInfo;
- import beilv.common.core.text.Convert;
- import beilv.common.enums.BusinessType;
- import beilv.common.enums.OnlineStatus;
- import beilv.common.utils.ShiroUtils;
- import beilv.framework.shiro.session.OnlineSession;
- import beilv.framework.shiro.session.OnlineSessionDAO;
- import beilv.system.domain.SysUserOnline;
- import beilv.system.service.ISysUserOnlineService;
- /**
- * 在线用户监控
- *
- * @author ruoyi
- */
- @Controller
- @RequestMapping("/monitor/online")
- public class SysUserOnlineController extends BaseController
- {
- private String prefix = "monitor/online";
- @Autowired
- private ISysUserOnlineService userOnlineService;
- @Autowired
- private OnlineSessionDAO onlineSessionDAO;
- @RequiresPermissions("monitor:online:view")
- @GetMapping()
- public String online()
- {
- return prefix + "/online";
- }
- @RequiresPermissions("monitor:online:list")
- @PostMapping("/list")
- @ResponseBody
- public TableDataInfo list(SysUserOnline userOnline)
- {
- startPage();
- List<SysUserOnline> list = userOnlineService.selectUserOnlineList(userOnline);
- return getDataTable(list);
- }
- @RequiresPermissions(value = { "monitor:online:batchForceLogout", "monitor:online:forceLogout" }, logical = Logical.OR)
- @Log(title = "在线用户", businessType = BusinessType.FORCE)
- @PostMapping("/batchForceLogout")
- @ResponseBody
- public AjaxResult batchForceLogout(String ids)
- {
- for (String sessionId : Convert.toStrArray(ids))
- {
- SysUserOnline online = userOnlineService.selectOnlineById(sessionId);
- if (online == null)
- {
- return error("用户已下线");
- }
- OnlineSession onlineSession = (OnlineSession) onlineSessionDAO.readSession(online.getSessionId());
- if (onlineSession == null)
- {
- return error("用户已下线");
- }
- if (sessionId.equals(ShiroUtils.getSessionId()))
- {
- return error("当前登录用户无法强退");
- }
- onlineSessionDAO.delete(onlineSession);
- online.setStatus(OnlineStatus.off_line);
- userOnlineService.saveOnline(online);
- userOnlineService.removeUserCache(online.getLoginName(), sessionId);
- }
- return success();
- }
- }
|