This commit is contained in:
2023-07-13 17:30:09 +08:00
parent 672f66b40e
commit 6ed1224410
373 changed files with 566 additions and 409 deletions

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>qiaoba-modules</artifactId>
<groupId>com.qiaoba</groupId>
<version>1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>qiaoba-module-monitor</artifactId>
<description>监控模块</description>
<dependencies>
<dependency>
<groupId>com.qiaoba</groupId>
<artifactId>qiaoba-api-auth</artifactId>
</dependency>
<dependency>
<groupId>com.qiaoba</groupId>
<artifactId>qiaoba-common-doc</artifactId>
</dependency>
<dependency>
<groupId>com.qiaoba</groupId>
<artifactId>qiaoba-common-datasource</artifactId>
</dependency>
<dependency>
<groupId>com.qiaoba</groupId>
<artifactId>qiaoba-api-monitor</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,42 @@
package com.qiaoba.module.monitor.controller;
import com.qiaoba.api.auth.service.OnlineUserService;
import com.qiaoba.common.base.entity.BasePage;
import com.qiaoba.common.base.result.AjaxResult;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
/**
* 在线用户管理 Web层
*
* @author ailanyin
* @version 1.0
* @since 2023-05-27 21:59:12
*/
@RestController
@RequestMapping("/monitor/online")
@RequiredArgsConstructor
@Tag(name = "在线用户管理")
public class OnlineUserController {
private final OnlineUserService onlineUserService;
@PreAuthorize("hasAuthority('monitor:online:list')")
@Operation(summary = "获取列表")
@GetMapping("/list")
public BasePage getList(Integer pageNum, Integer pageSize, @RequestParam(required = false) String username) {
return onlineUserService.selectPageList(pageNum, pageSize, username);
}
@PreAuthorize("hasAuthority('monitor:online:forceLogout')")
@DeleteMapping("/{username}/{deviceSn}")
@Operation(summary = "强退用户")
public AjaxResult forceLogout(@PathVariable String username, @PathVariable String deviceSn) {
onlineUserService.deleteOne(username, deviceSn, false);
return AjaxResult.success();
}
}

View File

@ -0,0 +1,56 @@
package com.qiaoba.module.monitor.controller;
import com.qiaoba.api.monitor.entity.SysLoginLog;
import com.qiaoba.api.monitor.entity.param.LoginLogParam;
import com.qiaoba.common.base.result.AjaxResult;
import com.qiaoba.common.database.entity.PageQuery;
import com.qiaoba.common.database.entity.TableDataInfo;
import com.qiaoba.common.poi.util.ExcelUtil;
import com.qiaoba.module.monitor.service.SysLoginLogService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 登录日志管理 Web层
*
* @author ailanyin
* @version 1.0
* @since 2023-05-27 21:59:12
*/
@RestController
@RequestMapping("/monitor/login-log")
@RequiredArgsConstructor
@Tag(name = "登录日志管理")
public class SysLoginLogController {
private final SysLoginLogService sysLoginLogService;
@GetMapping("/list")
@Operation(summary = "分页查询")
@PreAuthorize("hasAuthority('monitor:login-log:list')")
public TableDataInfo<SysLoginLog> list(LoginLogParam param, PageQuery pageQuery) {
return sysLoginLogService.selectPageList(param, pageQuery);
}
@PreAuthorize("hasAuthority('monitor:login-log:export')")
@PostMapping("/export")
@Operation(summary = "导出日志")
public void export(HttpServletResponse response, LoginLogParam param) {
List<SysLoginLog> list = sysLoginLogService.selectList(param);
ExcelUtil.exportExcel(list, SysLoginLog.class, "登录日志", response);
}
@PreAuthorize("hasAuthority('monitor:login-log:remove')")
@DeleteMapping("/clean")
@Operation(summary = "清空日志")
public AjaxResult clean() {
sysLoginLogService.cleanLoginLog();
return AjaxResult.success();
}
}

View File

@ -0,0 +1,14 @@
package com.qiaoba.module.monitor.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qiaoba.api.monitor.entity.SysLoginLog;
/**
* 登录日志 数据层
*
* @author ailanyin
* @version 1.0
* @since 2023/6/19 14:41
*/
public interface SysLoginLogMapper extends BaseMapper<SysLoginLog> {
}

View File

@ -0,0 +1,42 @@
package com.qiaoba.module.monitor.service;
import com.qiaoba.api.monitor.entity.SysLoginLog;
import com.qiaoba.api.monitor.entity.param.LoginLogParam;
import com.qiaoba.api.monitor.service.SysLoginLogApiService;
import com.qiaoba.common.database.entity.PageQuery;
import com.qiaoba.common.database.entity.TableDataInfo;
import java.util.List;
/**
* 登录日志 服务层
*
* @author ailanyin
* @version 1.0
* @since 2023/6/19 15:52
*/
public interface SysLoginLogService extends SysLoginLogApiService {
/**
* 分页查询
*
* @param param 查询参数
* @param pageQuery 分页参数
* @return page
*/
TableDataInfo<SysLoginLog> selectPageList(LoginLogParam param, PageQuery pageQuery);
/**
* 清空日志
*/
void cleanLoginLog();
/**
* 条件查询
*
* @param param param
* @return list
*/
List<SysLoginLog> selectList(LoginLogParam param);
}

View File

@ -0,0 +1,62 @@
package com.qiaoba.module.monitor.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.qiaoba.api.monitor.entity.SysLoginLog;
import com.qiaoba.api.monitor.entity.param.LoginLogParam;
import com.qiaoba.common.database.entity.PageQuery;
import com.qiaoba.common.database.entity.TableDataInfo;
import com.qiaoba.module.monitor.mapper.SysLoginLogMapper;
import com.qiaoba.module.monitor.service.SysLoginLogService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects;
/**
* 登录日志 服务层实现
*
* @author ailanyin
* @version 1.0
* @since 2023/6/19 14:39
*/
@Service
@RequiredArgsConstructor
public class SysLoginLogServiceImpl implements SysLoginLogService {
private final SysLoginLogMapper sysLoginLogMapper;
@Override
public Integer insert(SysLoginLog sysLoginLog) {
return sysLoginLogMapper.insert(sysLoginLog);
}
@Override
public TableDataInfo<SysLoginLog> selectPageList(LoginLogParam param, PageQuery pageQuery) {
return TableDataInfo.build(sysLoginLogMapper.selectPage(pageQuery.build(), param2Wrapper(param)));
}
@Override
public void cleanLoginLog() {
sysLoginLogMapper.delete(new QueryWrapper<>());
}
@Override
public List<SysLoginLog> selectList(LoginLogParam param) {
return sysLoginLogMapper.selectList(param2Wrapper(param));
}
private QueryWrapper<SysLoginLog> param2Wrapper(LoginLogParam param) {
QueryWrapper<SysLoginLog> wrapper = new QueryWrapper<>();
wrapper.lambda()
.orderByDesc(SysLoginLog::getLoginTime)
.ge(Objects.nonNull(param.getBeginTime()), SysLoginLog::getLoginTime, param.getBeginTime())
.le(Objects.nonNull(param.getEndTime()), SysLoginLog::getLoginTime, param.getEndTime())
.like(StrUtil.isNotBlank(param.getNickname()), SysLoginLog::getNickname, param.getNickname())
.like(StrUtil.isNotBlank(param.getUsername()), SysLoginLog::getUsername, param.getUsername())
.like(StrUtil.isNotBlank(param.getIp()), SysLoginLog::getIp, param.getIp());
return wrapper;
}
}