优化:优化模型类命名(为数据模型类添加 DO 后缀),并优化所有模型相关变量命名
This commit is contained in:
parent
d7851bc811
commit
3075038067
@ -213,6 +213,7 @@ continew-admin # 全局通用项目配置及依赖版本管理
|
|||||||
│ └─ cnadmin
|
│ └─ cnadmin
|
||||||
│ └─ common
|
│ └─ common
|
||||||
│ ├─ annotation # 公共注解
|
│ ├─ annotation # 公共注解
|
||||||
|
│ ├─ base # 公共基类
|
||||||
│ ├─ config # 公共配置
|
│ ├─ config # 公共配置
|
||||||
│ │ ├─ jackson # Jackson 配置
|
│ │ ├─ jackson # Jackson 配置
|
||||||
│ │ ├─ mybatis # MyBatis Plus 配置
|
│ │ ├─ mybatis # MyBatis Plus 配置
|
||||||
@ -224,7 +225,6 @@ continew-admin # 全局通用项目配置及依赖版本管理
|
|||||||
│ ├─ handler # 公共处理器
|
│ ├─ handler # 公共处理器
|
||||||
│ ├─ model # 公共模型
|
│ ├─ model # 公共模型
|
||||||
│ │ ├─ dto # 公共 DTO(Data Transfer Object)
|
│ │ ├─ dto # 公共 DTO(Data Transfer Object)
|
||||||
│ │ ├─ entity # 公共实体对象
|
|
||||||
│ │ ├─ query # 公共查询条件
|
│ │ ├─ query # 公共查询条件
|
||||||
│ │ ├─ request # 公共请求对象
|
│ │ ├─ request # 公共请求对象
|
||||||
│ │ └─ vo # 公共 VO(View Object)
|
│ │ └─ vo # 公共 VO(View Object)
|
||||||
|
@ -29,7 +29,7 @@ import org.springframework.validation.annotation.Validated;
|
|||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import top.charles7c.cnadmin.common.model.query.PageQuery;
|
import top.charles7c.cnadmin.common.model.query.PageQuery;
|
||||||
import top.charles7c.cnadmin.common.model.vo.PageInfo;
|
import top.charles7c.cnadmin.common.model.vo.PageDataVO;
|
||||||
import top.charles7c.cnadmin.common.model.vo.R;
|
import top.charles7c.cnadmin.common.model.vo.R;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -67,9 +67,9 @@ public abstract class BaseController<S extends BaseService<V, D, Q, C, U>, V, D,
|
|||||||
*/
|
*/
|
||||||
@Operation(summary = "分页查询列表")
|
@Operation(summary = "分页查询列表")
|
||||||
@GetMapping
|
@GetMapping
|
||||||
protected R<PageInfo<V>> page(@Validated Q query, @Validated PageQuery pageQuery) {
|
protected R<PageDataVO<V>> page(@Validated Q query, @Validated PageQuery pageQuery) {
|
||||||
PageInfo<V> pageInfo = baseService.page(query, pageQuery);
|
PageDataVO<V> pageDataVO = baseService.page(query, pageQuery);
|
||||||
return R.ok(pageInfo);
|
return R.ok(pageDataVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -20,7 +20,7 @@ import java.util.Collections;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import top.charles7c.cnadmin.common.model.query.PageQuery;
|
import top.charles7c.cnadmin.common.model.query.PageQuery;
|
||||||
import top.charles7c.cnadmin.common.model.vo.PageInfo;
|
import top.charles7c.cnadmin.common.model.vo.PageDataVO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 业务接口基类
|
* 业务接口基类
|
||||||
@ -49,8 +49,8 @@ public interface BaseService<V, D, Q, C, U> {
|
|||||||
* 分页查询条件
|
* 分页查询条件
|
||||||
* @return 分页列表信息
|
* @return 分页列表信息
|
||||||
*/
|
*/
|
||||||
default PageInfo<V> page(Q query, PageQuery pageQuery) {
|
default PageDataVO<V> page(Q query, PageQuery pageQuery) {
|
||||||
return new PageInfo<>();
|
return new PageDataVO<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -29,7 +29,7 @@ import com.baomidou.mybatisplus.core.toolkit.ReflectionKit;
|
|||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
|
||||||
import top.charles7c.cnadmin.common.model.query.PageQuery;
|
import top.charles7c.cnadmin.common.model.query.PageQuery;
|
||||||
import top.charles7c.cnadmin.common.model.vo.PageInfo;
|
import top.charles7c.cnadmin.common.model.vo.PageDataVO;
|
||||||
import top.charles7c.cnadmin.common.util.helper.QueryHelper;
|
import top.charles7c.cnadmin.common.util.helper.QueryHelper;
|
||||||
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
|
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
|
||||||
|
|
||||||
@ -53,10 +53,10 @@ public abstract class BaseServiceImpl<M extends BaseMapper<T>, T, V, D, Q, C, U>
|
|||||||
protected Class<D> detailVoClass = currentDetailVoClass();
|
protected Class<D> detailVoClass = currentDetailVoClass();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageInfo<V> page(Q query, PageQuery pageQuery) {
|
public PageDataVO<V> page(Q query, PageQuery pageQuery) {
|
||||||
QueryWrapper<T> queryWrapper = QueryHelper.build(query);
|
QueryWrapper<T> queryWrapper = QueryHelper.build(query);
|
||||||
IPage<T> page = baseMapper.selectPage(pageQuery.toPage(), queryWrapper);
|
IPage<T> page = baseMapper.selectPage(pageQuery.toPage(), queryWrapper);
|
||||||
return PageInfo.build(page, voClass);
|
return PageDataVO.build(page, voClass);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -40,7 +40,7 @@ import cn.hutool.core.collection.CollUtil;
|
|||||||
@Data
|
@Data
|
||||||
@Accessors(chain = true)
|
@Accessors(chain = true)
|
||||||
@Schema(description = "分页信息")
|
@Schema(description = "分页信息")
|
||||||
public class PageInfo<V> {
|
public class PageDataVO<V> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 列表数据
|
* 列表数据
|
||||||
@ -52,7 +52,7 @@ public class PageInfo<V> {
|
|||||||
* 总记录数
|
* 总记录数
|
||||||
*/
|
*/
|
||||||
@Schema(description = "总记录数")
|
@Schema(description = "总记录数")
|
||||||
private long total;
|
private Long total;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 基于 MyBatis Plus 分页数据构建分页信息,并将源数据转换为指定类型数据
|
* 基于 MyBatis Plus 分页数据构建分页信息,并将源数据转换为指定类型数据
|
||||||
@ -67,14 +67,14 @@ public class PageInfo<V> {
|
|||||||
* 目标列表数据类型
|
* 目标列表数据类型
|
||||||
* @return 分页信息
|
* @return 分页信息
|
||||||
*/
|
*/
|
||||||
public static <T, V> PageInfo<V> build(IPage<T> page, Class<V> targetClass) {
|
public static <T, V> PageDataVO<V> build(IPage<T> page, Class<V> targetClass) {
|
||||||
if (page == null) {
|
if (page == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
PageInfo<V> pageInfo = new PageInfo<>();
|
PageDataVO<V> pageDataVO = new PageDataVO<>();
|
||||||
pageInfo.setList(BeanUtil.copyToList(page.getRecords(), targetClass));
|
pageDataVO.setList(BeanUtil.copyToList(page.getRecords(), targetClass));
|
||||||
pageInfo.setTotal(page.getTotal());
|
pageDataVO.setTotal(page.getTotal());
|
||||||
return pageInfo;
|
return pageDataVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -86,14 +86,14 @@ public class PageInfo<V> {
|
|||||||
* 列表数据类型
|
* 列表数据类型
|
||||||
* @return 分页信息
|
* @return 分页信息
|
||||||
*/
|
*/
|
||||||
public static <V> PageInfo<V> build(IPage<V> page) {
|
public static <V> PageDataVO<V> build(IPage<V> page) {
|
||||||
if (page == null) {
|
if (page == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
PageInfo<V> pageInfo = new PageInfo<>();
|
PageDataVO<V> pageDataVO = new PageDataVO<>();
|
||||||
pageInfo.setList(page.getRecords());
|
pageDataVO.setList(page.getRecords());
|
||||||
pageInfo.setTotal(pageInfo.getTotal());
|
pageDataVO.setTotal(page.getTotal());
|
||||||
return pageInfo;
|
return pageDataVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -109,23 +109,23 @@ public class PageInfo<V> {
|
|||||||
* 列表数据类型
|
* 列表数据类型
|
||||||
* @return 分页信息
|
* @return 分页信息
|
||||||
*/
|
*/
|
||||||
public static <V> PageInfo<V> build(int page, int size, List<V> list) {
|
public static <V> PageDataVO<V> build(int page, int size, List<V> list) {
|
||||||
PageInfo<V> pageInfo = new PageInfo<>();
|
PageDataVO<V> pageDataVO = new PageDataVO<>();
|
||||||
if (CollUtil.isEmpty(list)) {
|
if (CollUtil.isEmpty(list)) {
|
||||||
return pageInfo;
|
return pageDataVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
pageInfo.setTotal(list.size());
|
pageDataVO.setTotal((long)list.size());
|
||||||
// 对列表数据进行分页
|
// 对列表数据进行分页
|
||||||
int fromIndex = (page - 1) * size;
|
int fromIndex = (page - 1) * size;
|
||||||
int toIndex = page * size + size;
|
int toIndex = page * size + size;
|
||||||
if (fromIndex > list.size()) {
|
if (fromIndex > list.size()) {
|
||||||
pageInfo.setList(new ArrayList<>());
|
pageDataVO.setList(new ArrayList<>());
|
||||||
} else if (toIndex >= list.size()) {
|
} else if (toIndex >= list.size()) {
|
||||||
pageInfo.setList(list.subList(fromIndex, list.size()));
|
pageDataVO.setList(list.subList(fromIndex, list.size()));
|
||||||
} else {
|
} else {
|
||||||
pageInfo.setList(list.subList(fromIndex, toIndex));
|
pageDataVO.setList(list.subList(fromIndex, toIndex));
|
||||||
}
|
}
|
||||||
return pageInfo;
|
return pageDataVO;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -53,7 +53,7 @@ import top.charles7c.cnadmin.common.util.holder.LogContextHolder;
|
|||||||
import top.charles7c.cnadmin.monitor.annotation.Log;
|
import top.charles7c.cnadmin.monitor.annotation.Log;
|
||||||
import top.charles7c.cnadmin.monitor.config.properties.LogProperties;
|
import top.charles7c.cnadmin.monitor.config.properties.LogProperties;
|
||||||
import top.charles7c.cnadmin.monitor.enums.LogStatusEnum;
|
import top.charles7c.cnadmin.monitor.enums.LogStatusEnum;
|
||||||
import top.charles7c.cnadmin.monitor.model.entity.SysLog;
|
import top.charles7c.cnadmin.monitor.model.entity.LogDO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 系统日志拦截器
|
* 系统日志拦截器
|
||||||
@ -83,20 +83,20 @@ public class LogInterceptor implements HandlerInterceptor {
|
|||||||
public void afterCompletion(@NonNull HttpServletRequest request, @NonNull HttpServletResponse response,
|
public void afterCompletion(@NonNull HttpServletRequest request, @NonNull HttpServletResponse response,
|
||||||
@NonNull Object handler, Exception e) {
|
@NonNull Object handler, Exception e) {
|
||||||
// 记录请求耗时及异常信息
|
// 记录请求耗时及异常信息
|
||||||
SysLog sysLog = this.logElapsedTimeAndException();
|
LogDO logDO = this.logElapsedTimeAndException();
|
||||||
if (sysLog == null) {
|
if (logDO == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 记录日志描述
|
// 记录日志描述
|
||||||
this.logDescription(sysLog, handler);
|
this.logDescription(logDO, handler);
|
||||||
// 记录请求信息
|
// 记录请求信息
|
||||||
this.logRequest(sysLog, request);
|
this.logRequest(logDO, request);
|
||||||
// 记录响应信息
|
// 记录响应信息
|
||||||
this.logResponse(sysLog, response);
|
this.logResponse(logDO, response);
|
||||||
|
|
||||||
// 保存系统日志
|
// 保存系统日志
|
||||||
SpringUtil.getApplicationContext().publishEvent(sysLog);
|
SpringUtil.getApplicationContext().publishEvent(logDO);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -114,28 +114,28 @@ public class LogInterceptor implements HandlerInterceptor {
|
|||||||
*
|
*
|
||||||
* @return 系统日志信息
|
* @return 系统日志信息
|
||||||
*/
|
*/
|
||||||
private SysLog logElapsedTimeAndException() {
|
private LogDO logElapsedTimeAndException() {
|
||||||
LogContext logContext = LogContextHolder.get();
|
LogContext logContext = LogContextHolder.get();
|
||||||
if (logContext != null) {
|
if (logContext != null) {
|
||||||
LogContextHolder.remove();
|
LogContextHolder.remove();
|
||||||
SysLog sysLog = new SysLog();
|
LogDO logDO = new LogDO();
|
||||||
sysLog.setCreateTime(logContext.getCreateTime());
|
logDO.setCreateTime(logContext.getCreateTime());
|
||||||
sysLog.setElapsedTime(System.currentTimeMillis() - LocalDateTimeUtil.toEpochMilli(sysLog.getCreateTime()));
|
logDO.setElapsedTime(System.currentTimeMillis() - LocalDateTimeUtil.toEpochMilli(logDO.getCreateTime()));
|
||||||
sysLog.setStatus(LogStatusEnum.SUCCESS);
|
logDO.setStatus(LogStatusEnum.SUCCESS);
|
||||||
|
|
||||||
// 记录错误信息(非未知异常不记录异常详情,只记录错误信息)
|
// 记录错误信息(非未知异常不记录异常详情,只记录错误信息)
|
||||||
String errorMsg = logContext.getErrorMsg();
|
String errorMsg = logContext.getErrorMsg();
|
||||||
if (StrUtil.isNotBlank(errorMsg)) {
|
if (StrUtil.isNotBlank(errorMsg)) {
|
||||||
sysLog.setStatus(LogStatusEnum.FAILURE);
|
logDO.setStatus(LogStatusEnum.FAILURE);
|
||||||
sysLog.setErrorMsg(errorMsg);
|
logDO.setErrorMsg(errorMsg);
|
||||||
}
|
}
|
||||||
// 记录异常详情
|
// 记录异常详情
|
||||||
Exception exception = logContext.getException();
|
Exception exception = logContext.getException();
|
||||||
if (exception != null) {
|
if (exception != null) {
|
||||||
sysLog.setStatus(LogStatusEnum.FAILURE);
|
logDO.setStatus(LogStatusEnum.FAILURE);
|
||||||
sysLog.setExceptionDetail(ExceptionUtil.stacktraceToString(exception, -1));
|
logDO.setExceptionDetail(ExceptionUtil.stacktraceToString(exception, -1));
|
||||||
}
|
}
|
||||||
return sysLog;
|
return logDO;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -143,69 +143,69 @@ public class LogInterceptor implements HandlerInterceptor {
|
|||||||
/**
|
/**
|
||||||
* 记录日志描述
|
* 记录日志描述
|
||||||
*
|
*
|
||||||
* @param sysLog
|
* @param logDO
|
||||||
* 系统日志信息
|
* 系统日志信息
|
||||||
* @param handler
|
* @param handler
|
||||||
* 处理器
|
* 处理器
|
||||||
*/
|
*/
|
||||||
private void logDescription(SysLog sysLog, Object handler) {
|
private void logDescription(LogDO logDO, Object handler) {
|
||||||
HandlerMethod handlerMethod = (HandlerMethod)handler;
|
HandlerMethod handlerMethod = (HandlerMethod)handler;
|
||||||
Operation methodOperation = AnnotationUtils.findAnnotation(handlerMethod.getMethod(), Operation.class);
|
Operation methodOperation = AnnotationUtils.findAnnotation(handlerMethod.getMethod(), Operation.class);
|
||||||
Log methodLog = AnnotationUtils.findAnnotation(handlerMethod.getMethod(), Log.class);
|
Log methodLog = AnnotationUtils.findAnnotation(handlerMethod.getMethod(), Log.class);
|
||||||
|
|
||||||
if (methodOperation != null) {
|
if (methodOperation != null) {
|
||||||
sysLog.setDescription(
|
logDO.setDescription(
|
||||||
StrUtil.isNotBlank(methodOperation.summary()) ? methodOperation.summary() : "请在该接口方法上指定日志描述");
|
StrUtil.isNotBlank(methodOperation.summary()) ? methodOperation.summary() : "请在该接口方法上指定日志描述");
|
||||||
}
|
}
|
||||||
// 例如:@Log("获取验证码") -> 获取验证码
|
// 例如:@Log("获取验证码") -> 获取验证码
|
||||||
if (methodLog != null && StrUtil.isNotBlank(methodLog.value())) {
|
if (methodLog != null && StrUtil.isNotBlank(methodLog.value())) {
|
||||||
sysLog.setDescription(methodLog.value());
|
logDO.setDescription(methodLog.value());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 记录请求信息
|
* 记录请求信息
|
||||||
*
|
*
|
||||||
* @param sysLog
|
* @param logDO
|
||||||
* 系统日志信息
|
* 系统日志信息
|
||||||
* @param request
|
* @param request
|
||||||
* 请求对象
|
* 请求对象
|
||||||
*/
|
*/
|
||||||
private void logRequest(SysLog sysLog, HttpServletRequest request) {
|
private void logRequest(LogDO logDO, HttpServletRequest request) {
|
||||||
sysLog.setRequestUrl(StrUtil.isBlank(request.getQueryString()) ? request.getRequestURL().toString()
|
logDO.setRequestUrl(StrUtil.isBlank(request.getQueryString()) ? request.getRequestURL().toString()
|
||||||
: request.getRequestURL().append("?").append(request.getQueryString()).toString());
|
: request.getRequestURL().append("?").append(request.getQueryString()).toString());
|
||||||
sysLog.setRequestMethod(request.getMethod());
|
logDO.setRequestMethod(request.getMethod());
|
||||||
sysLog.setRequestHeaders(this.desensitize(ServletUtil.getHeaderMap(request)));
|
logDO.setRequestHeaders(this.desensitize(ServletUtil.getHeaderMap(request)));
|
||||||
String requestBody = this.getRequestBody(request);
|
String requestBody = this.getRequestBody(request);
|
||||||
if (StrUtil.isNotBlank(requestBody)) {
|
if (StrUtil.isNotBlank(requestBody)) {
|
||||||
sysLog.setRequestBody(this.desensitize(
|
logDO.setRequestBody(this.desensitize(
|
||||||
JSONUtil.isTypeJSON(requestBody) ? JSONUtil.parseObj(requestBody) : ServletUtil.getParamMap(request)));
|
JSONUtil.isTypeJSON(requestBody) ? JSONUtil.parseObj(requestBody) : ServletUtil.getParamMap(request)));
|
||||||
}
|
}
|
||||||
sysLog.setClientIp(ServletUtil.getClientIP(request));
|
logDO.setClientIp(ServletUtil.getClientIP(request));
|
||||||
sysLog.setLocation(IpUtils.getCityInfo(sysLog.getClientIp()));
|
logDO.setLocation(IpUtils.getCityInfo(logDO.getClientIp()));
|
||||||
sysLog.setBrowser(ServletUtils.getBrowser(request));
|
logDO.setBrowser(ServletUtils.getBrowser(request));
|
||||||
sysLog.setCreateUser(sysLog.getCreateUser() == null ? LoginHelper.getUserId() : sysLog.getCreateUser());
|
logDO.setCreateUser(logDO.getCreateUser() == null ? LoginHelper.getUserId() : logDO.getCreateUser());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 记录响应信息
|
* 记录响应信息
|
||||||
*
|
*
|
||||||
* @param sysLog
|
* @param logDO
|
||||||
* 系统日志信息
|
* 系统日志信息
|
||||||
* @param response
|
* @param response
|
||||||
* 响应对象
|
* 响应对象
|
||||||
*/
|
*/
|
||||||
private void logResponse(SysLog sysLog, HttpServletResponse response) {
|
private void logResponse(LogDO logDO, HttpServletResponse response) {
|
||||||
int status = response.getStatus();
|
int status = response.getStatus();
|
||||||
sysLog.setStatusCode(status);
|
logDO.setStatusCode(status);
|
||||||
sysLog.setResponseHeaders(this.desensitize(ServletUtil.getHeadersMap(response)));
|
logDO.setResponseHeaders(this.desensitize(ServletUtil.getHeadersMap(response)));
|
||||||
// 响应体(不记录非 JSON 响应数据)
|
// 响应体(不记录非 JSON 响应数据)
|
||||||
String responseBody = this.getResponseBody(response);
|
String responseBody = this.getResponseBody(response);
|
||||||
if (StrUtil.isNotBlank(responseBody) && JSONUtil.isTypeJSON(responseBody)) {
|
if (StrUtil.isNotBlank(responseBody) && JSONUtil.isTypeJSON(responseBody)) {
|
||||||
sysLog.setResponseBody(responseBody);
|
logDO.setResponseBody(responseBody);
|
||||||
}
|
}
|
||||||
// 操作失败:>= 400
|
// 操作失败:>= 400
|
||||||
sysLog.setStatus(status >= HttpStatus.HTTP_BAD_REQUEST ? LogStatusEnum.FAILURE : sysLog.getStatus());
|
logDO.setStatus(status >= HttpStatus.HTTP_BAD_REQUEST ? LogStatusEnum.FAILURE : logDO.getStatus());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -18,7 +18,7 @@ package top.charles7c.cnadmin.monitor.mapper;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
|
||||||
import top.charles7c.cnadmin.monitor.model.entity.SysLog;
|
import top.charles7c.cnadmin.monitor.model.entity.LogDO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 系统日志 Mapper
|
* 系统日志 Mapper
|
||||||
@ -26,4 +26,4 @@ import top.charles7c.cnadmin.monitor.model.entity.SysLog;
|
|||||||
* @author Charles7c
|
* @author Charles7c
|
||||||
* @since 2022/12/22 21:47
|
* @since 2022/12/22 21:47
|
||||||
*/
|
*/
|
||||||
public interface LogMapper extends BaseMapper<SysLog> {}
|
public interface LogMapper extends BaseMapper<LogDO> {}
|
||||||
|
@ -34,7 +34,7 @@ import top.charles7c.cnadmin.monitor.enums.LogStatusEnum;
|
|||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@TableName("sys_log")
|
@TableName("sys_log")
|
||||||
public class SysLog implements Serializable {
|
public class LogDO implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
@ -17,7 +17,7 @@
|
|||||||
package top.charles7c.cnadmin.monitor.service;
|
package top.charles7c.cnadmin.monitor.service;
|
||||||
|
|
||||||
import top.charles7c.cnadmin.common.model.query.PageQuery;
|
import top.charles7c.cnadmin.common.model.query.PageQuery;
|
||||||
import top.charles7c.cnadmin.common.model.vo.PageInfo;
|
import top.charles7c.cnadmin.common.model.vo.PageDataVO;
|
||||||
import top.charles7c.cnadmin.monitor.model.query.LoginLogQuery;
|
import top.charles7c.cnadmin.monitor.model.query.LoginLogQuery;
|
||||||
import top.charles7c.cnadmin.monitor.model.query.OperationLogQuery;
|
import top.charles7c.cnadmin.monitor.model.query.OperationLogQuery;
|
||||||
import top.charles7c.cnadmin.monitor.model.query.SystemLogQuery;
|
import top.charles7c.cnadmin.monitor.model.query.SystemLogQuery;
|
||||||
@ -43,7 +43,7 @@ public interface LogService {
|
|||||||
* 分页查询条件
|
* 分页查询条件
|
||||||
* @return 操作日志分页信息
|
* @return 操作日志分页信息
|
||||||
*/
|
*/
|
||||||
PageInfo<OperationLogVO> list(OperationLogQuery query, PageQuery pageQuery);
|
PageDataVO<OperationLogVO> list(OperationLogQuery query, PageQuery pageQuery);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页查询登录日志列表
|
* 分页查询登录日志列表
|
||||||
@ -54,7 +54,7 @@ public interface LogService {
|
|||||||
* 分页查询条件
|
* 分页查询条件
|
||||||
* @return 登录日志分页信息
|
* @return 登录日志分页信息
|
||||||
*/
|
*/
|
||||||
PageInfo<LoginLogVO> list(LoginLogQuery query, PageQuery pageQuery);
|
PageDataVO<LoginLogVO> list(LoginLogQuery query, PageQuery pageQuery);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页查询系统日志列表
|
* 分页查询系统日志列表
|
||||||
@ -65,7 +65,7 @@ public interface LogService {
|
|||||||
* 分页查询条件
|
* 分页查询条件
|
||||||
* @return 系统日志分页信息
|
* @return 系统日志分页信息
|
||||||
*/
|
*/
|
||||||
PageInfo<SystemLogVO> list(SystemLogQuery query, PageQuery pageQuery);
|
PageDataVO<SystemLogVO> list(SystemLogQuery query, PageQuery pageQuery);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查看系统日志详情
|
* 查看系统日志详情
|
||||||
|
@ -34,13 +34,13 @@ import cn.hutool.core.bean.BeanUtil;
|
|||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
|
||||||
import top.charles7c.cnadmin.common.model.query.PageQuery;
|
import top.charles7c.cnadmin.common.model.query.PageQuery;
|
||||||
import top.charles7c.cnadmin.common.model.vo.PageInfo;
|
import top.charles7c.cnadmin.common.model.vo.PageDataVO;
|
||||||
import top.charles7c.cnadmin.common.util.ExceptionUtils;
|
import top.charles7c.cnadmin.common.util.ExceptionUtils;
|
||||||
import top.charles7c.cnadmin.common.util.ReflectUtils;
|
import top.charles7c.cnadmin.common.util.ReflectUtils;
|
||||||
import top.charles7c.cnadmin.common.util.helper.QueryHelper;
|
import top.charles7c.cnadmin.common.util.helper.QueryHelper;
|
||||||
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
|
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
|
||||||
import top.charles7c.cnadmin.monitor.mapper.LogMapper;
|
import top.charles7c.cnadmin.monitor.mapper.LogMapper;
|
||||||
import top.charles7c.cnadmin.monitor.model.entity.SysLog;
|
import top.charles7c.cnadmin.monitor.model.entity.LogDO;
|
||||||
import top.charles7c.cnadmin.monitor.model.query.LoginLogQuery;
|
import top.charles7c.cnadmin.monitor.model.query.LoginLogQuery;
|
||||||
import top.charles7c.cnadmin.monitor.model.query.OperationLogQuery;
|
import top.charles7c.cnadmin.monitor.model.query.OperationLogQuery;
|
||||||
import top.charles7c.cnadmin.monitor.model.query.SystemLogQuery;
|
import top.charles7c.cnadmin.monitor.model.query.SystemLogQuery;
|
||||||
@ -64,13 +64,13 @@ public class LogServiceImpl implements LogService {
|
|||||||
|
|
||||||
@Async
|
@Async
|
||||||
@EventListener
|
@EventListener
|
||||||
public void save(SysLog sysLog) {
|
public void save(LogDO logDO) {
|
||||||
logMapper.insert(sysLog);
|
logMapper.insert(logDO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageInfo<OperationLogVO> list(OperationLogQuery query, PageQuery pageQuery) {
|
public PageDataVO<OperationLogVO> list(OperationLogQuery query, PageQuery pageQuery) {
|
||||||
QueryWrapper<SysLog> queryWrapper = QueryHelper.build(query);
|
QueryWrapper<LogDO> queryWrapper = QueryHelper.build(query);
|
||||||
|
|
||||||
// 限定查询信息
|
// 限定查询信息
|
||||||
String[] fieldsName = ReflectUtils.getNonStaticFieldsName(OperationLogVO.class);
|
String[] fieldsName = ReflectUtils.getNonStaticFieldsName(OperationLogVO.class);
|
||||||
@ -79,24 +79,24 @@ public class LogServiceImpl implements LogService {
|
|||||||
queryWrapper.select(columns);
|
queryWrapper.select(columns);
|
||||||
|
|
||||||
// 分页查询
|
// 分页查询
|
||||||
IPage<SysLog> page = logMapper.selectPage(pageQuery.toPage(), queryWrapper);
|
IPage<LogDO> page = logMapper.selectPage(pageQuery.toPage(), queryWrapper);
|
||||||
PageInfo<OperationLogVO> pageInfo = PageInfo.build(page, OperationLogVO.class);
|
PageDataVO<OperationLogVO> pageDataVO = PageDataVO.build(page, OperationLogVO.class);
|
||||||
|
|
||||||
// 填充数据(如果是查询个人操作日志,只查询一次用户信息即可)
|
// 填充数据(如果是查询个人操作日志,只查询一次用户信息即可)
|
||||||
if (query.getUid() != null) {
|
if (query.getUid() != null) {
|
||||||
String nickname = ExceptionUtils.exToNull(() -> userService.getById(query.getUid()).getNickname());
|
String nickname = ExceptionUtils.exToNull(() -> userService.getById(query.getUid()).getNickname());
|
||||||
pageInfo.getList().forEach(o -> o.setCreateUserString(nickname));
|
pageDataVO.getList().forEach(o -> o.setCreateUserString(nickname));
|
||||||
} else {
|
} else {
|
||||||
pageInfo.getList().forEach(this::fill);
|
pageDataVO.getList().forEach(this::fill);
|
||||||
}
|
}
|
||||||
return pageInfo;
|
return pageDataVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageInfo<LoginLogVO> list(LoginLogQuery query, PageQuery pageQuery) {
|
public PageDataVO<LoginLogVO> list(LoginLogQuery query, PageQuery pageQuery) {
|
||||||
QueryWrapper<SysLog> queryWrapper = QueryHelper.build(query);
|
QueryWrapper<LogDO> queryWrapper = QueryHelper.build(query);
|
||||||
queryWrapper.lambda()
|
queryWrapper.lambda()
|
||||||
.and(qw -> qw.like(SysLog::getRequestUrl, "/auth/login").or().like(SysLog::getRequestUrl, "/auth/logout"));
|
.and(qw -> qw.like(LogDO::getRequestUrl, "/auth/login").or().like(LogDO::getRequestUrl, "/auth/logout"));
|
||||||
|
|
||||||
// 限定查询信息
|
// 限定查询信息
|
||||||
String[] fieldsName = ReflectUtils.getNonStaticFieldsName(LoginLogVO.class);
|
String[] fieldsName = ReflectUtils.getNonStaticFieldsName(LoginLogVO.class);
|
||||||
@ -105,17 +105,17 @@ public class LogServiceImpl implements LogService {
|
|||||||
queryWrapper.select(columns);
|
queryWrapper.select(columns);
|
||||||
|
|
||||||
// 分页查询
|
// 分页查询
|
||||||
IPage<SysLog> page = logMapper.selectPage(pageQuery.toPage(), queryWrapper);
|
IPage<LogDO> page = logMapper.selectPage(pageQuery.toPage(), queryWrapper);
|
||||||
PageInfo<LoginLogVO> pageInfo = PageInfo.build(page, LoginLogVO.class);
|
PageDataVO<LoginLogVO> pageDataVO = PageDataVO.build(page, LoginLogVO.class);
|
||||||
|
|
||||||
// 填充数据
|
// 填充数据
|
||||||
pageInfo.getList().forEach(this::fill);
|
pageDataVO.getList().forEach(this::fill);
|
||||||
return pageInfo;
|
return pageDataVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageInfo<SystemLogVO> list(SystemLogQuery query, PageQuery pageQuery) {
|
public PageDataVO<SystemLogVO> list(SystemLogQuery query, PageQuery pageQuery) {
|
||||||
QueryWrapper<SysLog> queryWrapper = QueryHelper.build(query);
|
QueryWrapper<LogDO> queryWrapper = QueryHelper.build(query);
|
||||||
|
|
||||||
// 限定查询信息
|
// 限定查询信息
|
||||||
String[] fieldsName = ReflectUtils.getNonStaticFieldsName(SystemLogVO.class);
|
String[] fieldsName = ReflectUtils.getNonStaticFieldsName(SystemLogVO.class);
|
||||||
@ -124,35 +124,36 @@ public class LogServiceImpl implements LogService {
|
|||||||
queryWrapper.select(columns);
|
queryWrapper.select(columns);
|
||||||
|
|
||||||
// 分页查询
|
// 分页查询
|
||||||
IPage<SysLog> page = logMapper.selectPage(pageQuery.toPage(), queryWrapper);
|
IPage<LogDO> page = logMapper.selectPage(pageQuery.toPage(), queryWrapper);
|
||||||
PageInfo<SystemLogVO> pageInfo = PageInfo.build(page, SystemLogVO.class);
|
PageDataVO<SystemLogVO> pageDataVO = PageDataVO.build(page, SystemLogVO.class);
|
||||||
|
|
||||||
// 填充数据
|
// 填充数据
|
||||||
pageInfo.getList().forEach(this::fill);
|
pageDataVO.getList().forEach(this::fill);
|
||||||
return pageInfo;
|
return pageDataVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SystemLogDetailVO detail(Long logId) {
|
public SystemLogDetailVO detail(Long logId) {
|
||||||
SysLog sysLog = logMapper.selectById(logId);
|
LogDO logDO = logMapper.selectById(logId);
|
||||||
CheckUtils.throwIfNull(sysLog, String.format("ID为 [%s] 的日志已不存在", logId));
|
CheckUtils.throwIfNull(logDO, String.format("ID为 [%s] 的日志已不存在", logId));
|
||||||
|
|
||||||
SystemLogDetailVO detailVO = BeanUtil.copyProperties(sysLog, SystemLogDetailVO.class);
|
SystemLogDetailVO systemLogDetailVO = BeanUtil.copyProperties(logDO, SystemLogDetailVO.class);
|
||||||
this.fill(detailVO);
|
this.fill(systemLogDetailVO);
|
||||||
return detailVO;
|
return systemLogDetailVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 填充数据
|
* 填充数据
|
||||||
*
|
*
|
||||||
* @param vo
|
* @param logVO
|
||||||
* VO
|
* 日志信息
|
||||||
*/
|
*/
|
||||||
private void fill(LogVO vo) {
|
private void fill(LogVO logVO) {
|
||||||
Long createUser = vo.getCreateUser();
|
Long createUser = logVO.getCreateUser();
|
||||||
if (createUser == null) {
|
if (createUser == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
vo.setCreateUserString(ExceptionUtils.exToNull(() -> userService.getById(vo.getCreateUser())).getNickname());
|
logVO.setCreateUserString(
|
||||||
|
ExceptionUtils.exToNull(() -> userService.getById(logVO.getCreateUser())).getNickname());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ import top.charles7c.cnadmin.common.model.dto.LoginUser;
|
|||||||
import top.charles7c.cnadmin.common.util.SecureUtils;
|
import top.charles7c.cnadmin.common.util.SecureUtils;
|
||||||
import top.charles7c.cnadmin.common.util.helper.LoginHelper;
|
import top.charles7c.cnadmin.common.util.helper.LoginHelper;
|
||||||
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
|
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
|
||||||
import top.charles7c.cnadmin.system.model.entity.SysUser;
|
import top.charles7c.cnadmin.system.model.entity.UserDO;
|
||||||
import top.charles7c.cnadmin.system.service.UserService;
|
import top.charles7c.cnadmin.system.service.UserService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -46,14 +46,14 @@ public class LoginServiceImpl implements LoginService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String login(String username, String password) {
|
public String login(String username, String password) {
|
||||||
SysUser sysUser = userService.getByUsername(username);
|
UserDO userDO = userService.getByUsername(username);
|
||||||
CheckUtils.throwIfNull(sysUser, "用户名或密码错误");
|
CheckUtils.throwIfNull(userDO, "用户名或密码错误");
|
||||||
Long userId = sysUser.getUserId();
|
Long userId = userDO.getUserId();
|
||||||
CheckUtils.throwIfNotEqual(SecureUtils.md5Salt(password, userId.toString()), sysUser.getPassword(), "用户名或密码错误");
|
CheckUtils.throwIfNotEqual(SecureUtils.md5Salt(password, userId.toString()), userDO.getPassword(), "用户名或密码错误");
|
||||||
CheckUtils.throwIfEqual(DisEnableStatusEnum.DISABLE, sysUser.getStatus(), "此账号已被禁用,如有疑问,请联系管理员");
|
CheckUtils.throwIfEqual(DisEnableStatusEnum.DISABLE, userDO.getStatus(), "此账号已被禁用,如有疑问,请联系管理员");
|
||||||
|
|
||||||
// 登录
|
// 登录
|
||||||
LoginUser loginUser = BeanUtil.copyProperties(sysUser, LoginUser.class);
|
LoginUser loginUser = BeanUtil.copyProperties(userDO, LoginUser.class);
|
||||||
LoginHelper.login(loginUser);
|
LoginHelper.login(loginUser);
|
||||||
|
|
||||||
// 返回令牌
|
// 返回令牌
|
||||||
|
@ -18,7 +18,7 @@ package top.charles7c.cnadmin.system.mapper;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
|
||||||
import top.charles7c.cnadmin.system.model.entity.SysDept;
|
import top.charles7c.cnadmin.system.model.entity.DeptDO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 部门 Mapper
|
* 部门 Mapper
|
||||||
@ -26,4 +26,4 @@ import top.charles7c.cnadmin.system.model.entity.SysDept;
|
|||||||
* @author Charles7c
|
* @author Charles7c
|
||||||
* @since 2023/1/22 17:56
|
* @since 2023/1/22 17:56
|
||||||
*/
|
*/
|
||||||
public interface DeptMapper extends BaseMapper<SysDept> {}
|
public interface DeptMapper extends BaseMapper<DeptDO> {}
|
||||||
|
@ -18,7 +18,7 @@ package top.charles7c.cnadmin.system.mapper;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
|
||||||
import top.charles7c.cnadmin.system.model.entity.SysUser;
|
import top.charles7c.cnadmin.system.model.entity.UserDO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户 Mapper
|
* 用户 Mapper
|
||||||
@ -26,4 +26,4 @@ import top.charles7c.cnadmin.system.model.entity.SysUser;
|
|||||||
* @author Charles7c
|
* @author Charles7c
|
||||||
* @since 2022/12/22 21:47
|
* @since 2022/12/22 21:47
|
||||||
*/
|
*/
|
||||||
public interface UserMapper extends BaseMapper<SysUser> {}
|
public interface UserMapper extends BaseMapper<UserDO> {}
|
||||||
|
@ -32,7 +32,7 @@ import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
|
|||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@TableName("sys_dept")
|
@TableName("sys_dept")
|
||||||
public class SysDept extends BaseEntity {
|
public class DeptDO extends BaseEntity {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
@ -35,7 +35,7 @@ import top.charles7c.cnadmin.common.enums.GenderEnum;
|
|||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@TableName("sys_user")
|
@TableName("sys_user")
|
||||||
public class SysUser extends BaseEntity {
|
public class UserDO extends BaseEntity {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
@ -27,14 +27,14 @@ import io.swagger.v3.oas.annotations.media.Schema;
|
|||||||
import org.hibernate.validator.constraints.Length;
|
import org.hibernate.validator.constraints.Length;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建部门信息
|
* 创建或修改部门信息
|
||||||
*
|
*
|
||||||
* @author Charles7c
|
* @author Charles7c
|
||||||
* @since 2023/1/24 00:21
|
* @since 2023/1/24 00:21
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@Schema(description = "创建部门信息")
|
@Schema(description = "创建或修改部门信息")
|
||||||
public class CreateDeptRequest implements Serializable {
|
public class DeptRequest implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
@ -23,7 +23,7 @@ import cn.hutool.core.lang.tree.Tree;
|
|||||||
import top.charles7c.cnadmin.common.base.BaseService;
|
import top.charles7c.cnadmin.common.base.BaseService;
|
||||||
import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
|
import top.charles7c.cnadmin.common.enums.DisEnableStatusEnum;
|
||||||
import top.charles7c.cnadmin.system.model.query.DeptQuery;
|
import top.charles7c.cnadmin.system.model.query.DeptQuery;
|
||||||
import top.charles7c.cnadmin.system.model.request.CreateDeptRequest;
|
import top.charles7c.cnadmin.system.model.request.DeptRequest;
|
||||||
import top.charles7c.cnadmin.system.model.vo.DeptVO;
|
import top.charles7c.cnadmin.system.model.vo.DeptVO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -32,7 +32,7 @@ import top.charles7c.cnadmin.system.model.vo.DeptVO;
|
|||||||
* @author Charles7c
|
* @author Charles7c
|
||||||
* @since 2023/1/22 17:54
|
* @since 2023/1/22 17:54
|
||||||
*/
|
*/
|
||||||
public interface DeptService extends BaseService<DeptVO, DeptVO, DeptQuery, CreateDeptRequest, CreateDeptRequest> {
|
public interface DeptService extends BaseService<DeptVO, DeptVO, DeptQuery, DeptRequest, DeptRequest> {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构建树
|
* 构建树
|
||||||
|
@ -18,7 +18,7 @@ package top.charles7c.cnadmin.system.service;
|
|||||||
|
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import top.charles7c.cnadmin.system.model.entity.SysUser;
|
import top.charles7c.cnadmin.system.model.entity.UserDO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户业务接口
|
* 用户业务接口
|
||||||
@ -35,7 +35,7 @@ public interface UserService {
|
|||||||
* 用户名
|
* 用户名
|
||||||
* @return 用户信息
|
* @return 用户信息
|
||||||
*/
|
*/
|
||||||
SysUser getByUsername(String username);
|
UserDO getByUsername(String username);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 上传头像
|
* 上传头像
|
||||||
@ -54,7 +54,7 @@ public interface UserService {
|
|||||||
* @param user
|
* @param user
|
||||||
* 用户信息
|
* 用户信息
|
||||||
*/
|
*/
|
||||||
void update(SysUser user);
|
void update(UserDO user);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改密码
|
* 修改密码
|
||||||
@ -87,5 +87,5 @@ public interface UserService {
|
|||||||
* 用户ID
|
* 用户ID
|
||||||
* @return 用户信息
|
* @return 用户信息
|
||||||
*/
|
*/
|
||||||
SysUser getById(Long userId);
|
UserDO getById(Long userId);
|
||||||
}
|
}
|
||||||
|
@ -40,9 +40,9 @@ import top.charles7c.cnadmin.common.util.TreeUtils;
|
|||||||
import top.charles7c.cnadmin.common.util.helper.QueryHelper;
|
import top.charles7c.cnadmin.common.util.helper.QueryHelper;
|
||||||
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
|
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
|
||||||
import top.charles7c.cnadmin.system.mapper.DeptMapper;
|
import top.charles7c.cnadmin.system.mapper.DeptMapper;
|
||||||
import top.charles7c.cnadmin.system.model.entity.SysDept;
|
import top.charles7c.cnadmin.system.model.entity.DeptDO;
|
||||||
import top.charles7c.cnadmin.system.model.query.DeptQuery;
|
import top.charles7c.cnadmin.system.model.query.DeptQuery;
|
||||||
import top.charles7c.cnadmin.system.model.request.CreateDeptRequest;
|
import top.charles7c.cnadmin.system.model.request.DeptRequest;
|
||||||
import top.charles7c.cnadmin.system.model.vo.DeptVO;
|
import top.charles7c.cnadmin.system.model.vo.DeptVO;
|
||||||
import top.charles7c.cnadmin.system.service.DeptService;
|
import top.charles7c.cnadmin.system.service.DeptService;
|
||||||
import top.charles7c.cnadmin.system.service.UserService;
|
import top.charles7c.cnadmin.system.service.UserService;
|
||||||
@ -55,21 +55,20 @@ import top.charles7c.cnadmin.system.service.UserService;
|
|||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class DeptServiceImpl
|
public class DeptServiceImpl extends
|
||||||
extends BaseServiceImpl<DeptMapper, SysDept, DeptVO, DeptVO, DeptQuery, CreateDeptRequest, CreateDeptRequest>
|
BaseServiceImpl<DeptMapper, DeptDO, DeptVO, DeptVO, DeptQuery, DeptRequest, DeptRequest> implements DeptService {
|
||||||
implements DeptService {
|
|
||||||
|
|
||||||
private final UserService userService;
|
private final UserService userService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<DeptVO> list(DeptQuery query) {
|
public List<DeptVO> list(DeptQuery query) {
|
||||||
QueryWrapper<SysDept> queryWrapper = QueryHelper.build(query);
|
QueryWrapper<DeptDO> queryWrapper = QueryHelper.build(query);
|
||||||
queryWrapper.lambda().orderByAsc(SysDept::getParentId).orderByAsc(SysDept::getDeptSort)
|
queryWrapper.lambda().orderByAsc(DeptDO::getParentId).orderByAsc(DeptDO::getDeptSort)
|
||||||
.orderByDesc(SysDept::getUpdateTime);
|
.orderByDesc(DeptDO::getUpdateTime);
|
||||||
List<SysDept> list = baseMapper.selectList(queryWrapper);
|
List<DeptDO> deptList = baseMapper.selectList(queryWrapper);
|
||||||
List<DeptVO> voList = BeanUtil.copyToList(list, DeptVO.class);
|
List<DeptVO> list = BeanUtil.copyToList(deptList, DeptVO.class);
|
||||||
voList.forEach(this::fill);
|
list.forEach(this::fill);
|
||||||
return voList;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -79,8 +78,8 @@ public class DeptServiceImpl
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 去除重复子部门列表
|
// 去除重复子部门列表
|
||||||
List<DeptVO> deDuplicationDeptList = deDuplication(list);
|
List<DeptVO> deDuplicationList = deDuplication(list);
|
||||||
return deDuplicationDeptList.stream().map(d -> d.setChildren(this.getChildren(d, list)))
|
return deDuplicationList.stream().map(d -> d.setChildren(this.getChildren(d, list)))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,7 +91,7 @@ public class DeptServiceImpl
|
|||||||
* @return 去重后部门列表
|
* @return 去重后部门列表
|
||||||
*/
|
*/
|
||||||
private List<DeptVO> deDuplication(List<DeptVO> list) {
|
private List<DeptVO> deDuplication(List<DeptVO> list) {
|
||||||
List<DeptVO> deptList = new ArrayList<>();
|
List<DeptVO> deDuplicationList = new ArrayList<>();
|
||||||
for (DeptVO outerDept : list) {
|
for (DeptVO outerDept : list) {
|
||||||
boolean flag = true;
|
boolean flag = true;
|
||||||
for (DeptVO innerDept : list) {
|
for (DeptVO innerDept : list) {
|
||||||
@ -104,10 +103,10 @@ public class DeptServiceImpl
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (flag) {
|
if (flag) {
|
||||||
deptList.add(outerDept);
|
deDuplicationList.add(outerDept);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return deptList;
|
return deDuplicationList;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -136,49 +135,50 @@ public class DeptServiceImpl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Long create(CreateDeptRequest request) {
|
public Long create(DeptRequest request) {
|
||||||
String deptName = request.getDeptName();
|
String deptName = request.getDeptName();
|
||||||
boolean isExist = this.checkDeptNameExist(deptName, request.getParentId(), null);
|
boolean isExist = this.checkDeptNameExist(deptName, request.getParentId(), null);
|
||||||
CheckUtils.throwIf(() -> isExist, String.format("新增失败,'%s'已存在", deptName));
|
CheckUtils.throwIf(() -> isExist, String.format("新增失败,'%s'已存在", deptName));
|
||||||
|
|
||||||
// 保存部门信息
|
// 保存部门信息
|
||||||
SysDept sysDept = BeanUtil.copyProperties(request, SysDept.class);
|
DeptDO deptDO = BeanUtil.copyProperties(request, DeptDO.class);
|
||||||
sysDept.setStatus(DisEnableStatusEnum.ENABLE);
|
deptDO.setStatus(DisEnableStatusEnum.ENABLE);
|
||||||
baseMapper.insert(sysDept);
|
baseMapper.insert(deptDO);
|
||||||
return sysDept.getDeptId();
|
return deptDO.getDeptId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void updateStatus(List<Long> ids, DisEnableStatusEnum status) {
|
public void updateStatus(List<Long> ids, DisEnableStatusEnum status) {
|
||||||
baseMapper.update(null,
|
baseMapper.update(null,
|
||||||
Wrappers.<SysDept>lambdaUpdate().set(SysDept::getStatus, status).in(SysDept::getDeptId, ids));
|
Wrappers.<DeptDO>lambdaUpdate().set(DeptDO::getStatus, status).in(DeptDO::getDeptId, ids));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void delete(List<Long> ids) {
|
public void delete(List<Long> ids) {
|
||||||
super.delete(ids);
|
super.delete(ids);
|
||||||
baseMapper.delete(Wrappers.<SysDept>lambdaQuery().in(SysDept::getParentId, ids));
|
baseMapper.delete(Wrappers.<DeptDO>lambdaQuery().in(DeptDO::getParentId, ids));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean checkDeptNameExist(String deptName, Long parentId, Long deptId) {
|
public boolean checkDeptNameExist(String deptName, Long parentId, Long deptId) {
|
||||||
return baseMapper.exists(Wrappers.<SysDept>lambdaQuery().eq(SysDept::getDeptName, deptName)
|
return baseMapper.exists(Wrappers.<DeptDO>lambdaQuery().eq(DeptDO::getDeptName, deptName)
|
||||||
.eq(SysDept::getParentId, parentId).ne(deptId != null, SysDept::getDeptId, deptId));
|
.eq(DeptDO::getParentId, parentId).ne(deptId != null, DeptDO::getDeptId, deptId));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 填充数据
|
* 填充数据
|
||||||
*
|
*
|
||||||
* @param vo
|
* @param deptVO
|
||||||
* VO
|
* 部门信息
|
||||||
*/
|
*/
|
||||||
private void fill(DeptVO vo) {
|
private void fill(DeptVO deptVO) {
|
||||||
Long updateUser = vo.getUpdateUser();
|
Long updateUser = deptVO.getUpdateUser();
|
||||||
if (updateUser == null) {
|
if (updateUser == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
vo.setUpdateUserString(ExceptionUtils.exToNull(() -> userService.getById(vo.getUpdateUser())).getNickname());
|
deptVO.setUpdateUserString(
|
||||||
|
ExceptionUtils.exToNull(() -> userService.getById(deptVO.getUpdateUser())).getNickname());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ import top.charles7c.cnadmin.common.util.SecureUtils;
|
|||||||
import top.charles7c.cnadmin.common.util.helper.LoginHelper;
|
import top.charles7c.cnadmin.common.util.helper.LoginHelper;
|
||||||
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
|
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
|
||||||
import top.charles7c.cnadmin.system.mapper.UserMapper;
|
import top.charles7c.cnadmin.system.mapper.UserMapper;
|
||||||
import top.charles7c.cnadmin.system.model.entity.SysUser;
|
import top.charles7c.cnadmin.system.model.entity.UserDO;
|
||||||
import top.charles7c.cnadmin.system.service.UserService;
|
import top.charles7c.cnadmin.system.service.UserService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -58,8 +58,8 @@ public class UserServiceImpl implements UserService {
|
|||||||
private final LocalStorageProperties localStorageProperties;
|
private final LocalStorageProperties localStorageProperties;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SysUser getByUsername(String username) {
|
public UserDO getByUsername(String username) {
|
||||||
return userMapper.selectOne(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getUsername, username));
|
return userMapper.selectOne(Wrappers.<UserDO>lambdaQuery().eq(UserDO::getUsername, username));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -82,7 +82,7 @@ public class UserServiceImpl implements UserService {
|
|||||||
// 更新用户头像
|
// 更新用户头像
|
||||||
String newAvatar = newAvatarFile.getName();
|
String newAvatar = newAvatarFile.getName();
|
||||||
userMapper.update(null,
|
userMapper.update(null,
|
||||||
new LambdaUpdateWrapper<SysUser>().set(SysUser::getAvatar, newAvatar).eq(SysUser::getUserId, userId));
|
new LambdaUpdateWrapper<UserDO>().set(UserDO::getAvatar, newAvatar).eq(UserDO::getUserId, userId));
|
||||||
|
|
||||||
// 删除原头像
|
// 删除原头像
|
||||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||||
@ -99,13 +99,13 @@ public class UserServiceImpl implements UserService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void update(SysUser user) {
|
public void update(UserDO user) {
|
||||||
userMapper.updateById(user);
|
userMapper.updateById(user);
|
||||||
|
|
||||||
// 更新登录用户信息
|
// 更新登录用户信息
|
||||||
SysUser sysUser = this.getById(user.getUserId());
|
UserDO userDO = this.getById(user.getUserId());
|
||||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||||
BeanUtil.copyProperties(sysUser, loginUser);
|
BeanUtil.copyProperties(userDO, loginUser);
|
||||||
LoginHelper.updateLoginUser(loginUser);
|
LoginHelper.updateLoginUser(loginUser);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,16 +113,15 @@ public class UserServiceImpl implements UserService {
|
|||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void updatePassword(String oldPassword, String newPassword, Long userId) {
|
public void updatePassword(String oldPassword, String newPassword, Long userId) {
|
||||||
CheckUtils.throwIfEqual(newPassword, oldPassword, "新密码不能与当前密码相同");
|
CheckUtils.throwIfEqual(newPassword, oldPassword, "新密码不能与当前密码相同");
|
||||||
SysUser sysUser = this.getById(userId);
|
UserDO userDO = this.getById(userId);
|
||||||
CheckUtils.throwIfNotEqual(SecureUtils.md5Salt(oldPassword, userId.toString()), sysUser.getPassword(),
|
CheckUtils.throwIfNotEqual(SecureUtils.md5Salt(oldPassword, userId.toString()), userDO.getPassword(), "当前密码错误");
|
||||||
"当前密码错误");
|
|
||||||
|
|
||||||
// 更新密码和密码重置时间
|
// 更新密码和密码重置时间
|
||||||
LocalDateTime now = LocalDateTime.now();
|
LocalDateTime now = LocalDateTime.now();
|
||||||
userMapper.update(null,
|
userMapper.update(null,
|
||||||
new LambdaUpdateWrapper<SysUser>()
|
new LambdaUpdateWrapper<UserDO>()
|
||||||
.set(SysUser::getPassword, SecureUtils.md5Salt(newPassword, userId.toString()))
|
.set(UserDO::getPassword, SecureUtils.md5Salt(newPassword, userId.toString()))
|
||||||
.set(SysUser::getPwdResetTime, now).eq(SysUser::getUserId, userId));
|
.set(UserDO::getPwdResetTime, now).eq(UserDO::getUserId, userId));
|
||||||
|
|
||||||
// 更新登录用户信息
|
// 更新登录用户信息
|
||||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||||
@ -133,16 +132,16 @@ public class UserServiceImpl implements UserService {
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void updateEmail(String newEmail, String currentPassword, Long userId) {
|
public void updateEmail(String newEmail, String currentPassword, Long userId) {
|
||||||
SysUser sysUser = this.getById(userId);
|
UserDO userDO = this.getById(userId);
|
||||||
CheckUtils.throwIfNotEqual(SecureUtils.md5Salt(currentPassword, userId.toString()), sysUser.getPassword(),
|
CheckUtils.throwIfNotEqual(SecureUtils.md5Salt(currentPassword, userId.toString()), userDO.getPassword(),
|
||||||
"当前密码错误");
|
"当前密码错误");
|
||||||
Long count = userMapper.selectCount(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getEmail, newEmail));
|
Long count = userMapper.selectCount(Wrappers.<UserDO>lambdaQuery().eq(UserDO::getEmail, newEmail));
|
||||||
CheckUtils.throwIf(() -> count > 0, "邮箱已绑定其他账号,请更换其他邮箱");
|
CheckUtils.throwIf(() -> count > 0, "邮箱已绑定其他账号,请更换其他邮箱");
|
||||||
CheckUtils.throwIfEqual(newEmail, sysUser.getEmail(), "新邮箱不能与当前邮箱相同");
|
CheckUtils.throwIfEqual(newEmail, userDO.getEmail(), "新邮箱不能与当前邮箱相同");
|
||||||
|
|
||||||
// 更新邮箱
|
// 更新邮箱
|
||||||
userMapper.update(null,
|
userMapper.update(null,
|
||||||
new LambdaUpdateWrapper<SysUser>().set(SysUser::getEmail, newEmail).eq(SysUser::getUserId, userId));
|
new LambdaUpdateWrapper<UserDO>().set(UserDO::getEmail, newEmail).eq(UserDO::getUserId, userId));
|
||||||
|
|
||||||
// 更新登录用户信息
|
// 更新登录用户信息
|
||||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||||
@ -151,9 +150,9 @@ public class UserServiceImpl implements UserService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SysUser getById(Long userId) {
|
public UserDO getById(Long userId) {
|
||||||
SysUser sysUser = userMapper.selectById(userId);
|
UserDO userDO = userMapper.selectById(userId);
|
||||||
CheckUtils.throwIfNull(sysUser, String.format("ID为 [%s] 的用户已不存在", userId));
|
CheckUtils.throwIfNull(userDO, String.format("ID为 [%s] 的用户已不存在", userId));
|
||||||
return sysUser;
|
return userDO;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -91,7 +91,7 @@ public class LoginController {
|
|||||||
@GetMapping("/user/info")
|
@GetMapping("/user/info")
|
||||||
public R<UserInfoVO> getUserInfo() {
|
public R<UserInfoVO> getUserInfo() {
|
||||||
LoginUser loginUser = LoginHelper.getLoginUser();
|
LoginUser loginUser = LoginHelper.getLoginUser();
|
||||||
UserInfoVO userInfoVo = BeanUtil.copyProperties(loginUser, UserInfoVO.class);
|
UserInfoVO userInfoVO = BeanUtil.copyProperties(loginUser, UserInfoVO.class);
|
||||||
return R.ok(userInfoVo);
|
return R.ok(userInfoVO);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -80,8 +80,8 @@ public class CaptchaController {
|
|||||||
Duration.ofMinutes(captchaImage.getExpirationInMinutes()));
|
Duration.ofMinutes(captchaImage.getExpirationInMinutes()));
|
||||||
|
|
||||||
// 返回验证码
|
// 返回验证码
|
||||||
CaptchaVO captchaVo = new CaptchaVO().setUuid(uuid).setImg(captcha.toBase64());
|
CaptchaVO captchaVO = new CaptchaVO().setUuid(uuid).setImg(captcha.toBase64());
|
||||||
return R.ok(captchaVo);
|
return R.ok(captchaVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Operation(summary = "获取邮箱验证码", description = "发送验证码到指定邮箱")
|
@Operation(summary = "获取邮箱验证码", description = "发送验证码到指定邮箱")
|
||||||
|
@ -54,7 +54,7 @@ public class CommonController {
|
|||||||
@GetMapping("/tree/dept")
|
@GetMapping("/tree/dept")
|
||||||
public R<List<Tree<Long>>> deptTree(@Validated DeptQuery query) {
|
public R<List<Tree<Long>>> deptTree(@Validated DeptQuery query) {
|
||||||
List<DeptVO> list = deptService.list(query);
|
List<DeptVO> list = deptService.list(query);
|
||||||
List<Tree<Long>> deptTree = deptService.buildTree(list);
|
List<Tree<Long>> deptTreeList = deptService.buildTree(list);
|
||||||
return R.ok(deptTree);
|
return R.ok(deptTreeList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
|||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import top.charles7c.cnadmin.common.model.query.PageQuery;
|
import top.charles7c.cnadmin.common.model.query.PageQuery;
|
||||||
import top.charles7c.cnadmin.common.model.vo.PageInfo;
|
import top.charles7c.cnadmin.common.model.vo.PageDataVO;
|
||||||
import top.charles7c.cnadmin.common.model.vo.R;
|
import top.charles7c.cnadmin.common.model.vo.R;
|
||||||
import top.charles7c.cnadmin.monitor.model.query.LoginLogQuery;
|
import top.charles7c.cnadmin.monitor.model.query.LoginLogQuery;
|
||||||
import top.charles7c.cnadmin.monitor.model.query.OperationLogQuery;
|
import top.charles7c.cnadmin.monitor.model.query.OperationLogQuery;
|
||||||
@ -56,23 +56,23 @@ public class LogController {
|
|||||||
|
|
||||||
@Operation(summary = "分页查询登录日志列表")
|
@Operation(summary = "分页查询登录日志列表")
|
||||||
@GetMapping("/login")
|
@GetMapping("/login")
|
||||||
public R<PageInfo<LoginLogVO>> list(@Validated LoginLogQuery query, @Validated PageQuery pageQuery) {
|
public R<PageDataVO<LoginLogVO>> list(@Validated LoginLogQuery query, @Validated PageQuery pageQuery) {
|
||||||
PageInfo<LoginLogVO> pageInfo = logService.list(query, pageQuery);
|
PageDataVO<LoginLogVO> pageDataVO = logService.list(query, pageQuery);
|
||||||
return R.ok(pageInfo);
|
return R.ok(pageDataVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Operation(summary = "分页查询操作日志列表")
|
@Operation(summary = "分页查询操作日志列表")
|
||||||
@GetMapping("/operation")
|
@GetMapping("/operation")
|
||||||
public R<PageInfo<OperationLogVO>> list(@Validated OperationLogQuery query, @Validated PageQuery pageQuery) {
|
public R<PageDataVO<OperationLogVO>> list(@Validated OperationLogQuery query, @Validated PageQuery pageQuery) {
|
||||||
PageInfo<OperationLogVO> pageInfo = logService.list(query, pageQuery);
|
PageDataVO<OperationLogVO> pageDataVO = logService.list(query, pageQuery);
|
||||||
return R.ok(pageInfo);
|
return R.ok(pageDataVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Operation(summary = "分页查询系统日志列表")
|
@Operation(summary = "分页查询系统日志列表")
|
||||||
@GetMapping("/system")
|
@GetMapping("/system")
|
||||||
public R<PageInfo<SystemLogVO>> list(@Validated SystemLogQuery query, @Validated PageQuery pageQuery) {
|
public R<PageDataVO<SystemLogVO>> list(@Validated SystemLogQuery query, @Validated PageQuery pageQuery) {
|
||||||
PageInfo<SystemLogVO> pageInfo = logService.list(query, pageQuery);
|
PageDataVO<SystemLogVO> pageDataVO = logService.list(query, pageQuery);
|
||||||
return R.ok(pageInfo);
|
return R.ok(pageDataVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Operation(summary = "查看系统日志详情")
|
@Operation(summary = "查看系统日志详情")
|
||||||
|
@ -41,7 +41,7 @@ import cn.hutool.core.util.StrUtil;
|
|||||||
import top.charles7c.cnadmin.common.consts.CacheConstants;
|
import top.charles7c.cnadmin.common.consts.CacheConstants;
|
||||||
import top.charles7c.cnadmin.common.model.dto.LoginUser;
|
import top.charles7c.cnadmin.common.model.dto.LoginUser;
|
||||||
import top.charles7c.cnadmin.common.model.query.PageQuery;
|
import top.charles7c.cnadmin.common.model.query.PageQuery;
|
||||||
import top.charles7c.cnadmin.common.model.vo.PageInfo;
|
import top.charles7c.cnadmin.common.model.vo.PageDataVO;
|
||||||
import top.charles7c.cnadmin.common.model.vo.R;
|
import top.charles7c.cnadmin.common.model.vo.R;
|
||||||
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
|
import top.charles7c.cnadmin.common.util.validate.CheckUtils;
|
||||||
import top.charles7c.cnadmin.monitor.model.query.OnlineUserQuery;
|
import top.charles7c.cnadmin.monitor.model.query.OnlineUserQuery;
|
||||||
@ -61,7 +61,7 @@ public class OnlineUserController {
|
|||||||
|
|
||||||
@Operation(summary = "分页查询在线用户列表")
|
@Operation(summary = "分页查询在线用户列表")
|
||||||
@GetMapping
|
@GetMapping
|
||||||
public R<PageInfo<OnlineUserVO>> list(@Validated OnlineUserQuery query, @Validated PageQuery pageQuery) {
|
public R<PageDataVO<OnlineUserVO>> list(@Validated OnlineUserQuery query, @Validated PageQuery pageQuery) {
|
||||||
List<LoginUser> loginUserList = new ArrayList<>();
|
List<LoginUser> loginUserList = new ArrayList<>();
|
||||||
List<String> tokenKeyList = StpUtil.searchTokenValue("", 0, -1, false);
|
List<String> tokenKeyList = StpUtil.searchTokenValue("", 0, -1, false);
|
||||||
for (String tokenKey : tokenKeyList) {
|
for (String tokenKey : tokenKeyList) {
|
||||||
@ -82,10 +82,10 @@ public class OnlineUserController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 构建分页数据
|
// 构建分页数据
|
||||||
List<OnlineUserVO> onlineUserList = BeanUtil.copyToList(loginUserList, OnlineUserVO.class);
|
List<OnlineUserVO> list = BeanUtil.copyToList(loginUserList, OnlineUserVO.class);
|
||||||
CollUtil.sort(onlineUserList, Comparator.comparing(OnlineUserVO::getLoginTime).reversed());
|
CollUtil.sort(list, Comparator.comparing(OnlineUserVO::getLoginTime).reversed());
|
||||||
PageInfo<OnlineUserVO> pageInfo = PageInfo.build(pageQuery.getPage(), pageQuery.getSize(), onlineUserList);
|
PageDataVO<OnlineUserVO> pageDataVO = PageDataVO.build(pageQuery.getPage(), pageQuery.getSize(), list);
|
||||||
return R.ok(pageInfo);
|
return R.ok(pageDataVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -33,7 +33,7 @@ import top.charles7c.cnadmin.common.base.BaseController;
|
|||||||
import top.charles7c.cnadmin.common.model.request.UpdateStatusRequest;
|
import top.charles7c.cnadmin.common.model.request.UpdateStatusRequest;
|
||||||
import top.charles7c.cnadmin.common.model.vo.R;
|
import top.charles7c.cnadmin.common.model.vo.R;
|
||||||
import top.charles7c.cnadmin.system.model.query.DeptQuery;
|
import top.charles7c.cnadmin.system.model.query.DeptQuery;
|
||||||
import top.charles7c.cnadmin.system.model.request.CreateDeptRequest;
|
import top.charles7c.cnadmin.system.model.request.DeptRequest;
|
||||||
import top.charles7c.cnadmin.system.model.vo.DeptVO;
|
import top.charles7c.cnadmin.system.model.vo.DeptVO;
|
||||||
import top.charles7c.cnadmin.system.service.DeptService;
|
import top.charles7c.cnadmin.system.service.DeptService;
|
||||||
|
|
||||||
@ -46,8 +46,7 @@ import top.charles7c.cnadmin.system.service.DeptService;
|
|||||||
@Tag(name = "部门管理 API")
|
@Tag(name = "部门管理 API")
|
||||||
@RestController
|
@RestController
|
||||||
@CrudRequestMapping(value = "/system/dept", api = {Api.ALL})
|
@CrudRequestMapping(value = "/system/dept", api = {Api.ALL})
|
||||||
public class DeptController
|
public class DeptController extends BaseController<DeptService, DeptVO, DeptVO, DeptQuery, DeptRequest, DeptRequest> {
|
||||||
extends BaseController<DeptService, DeptVO, DeptVO, DeptQuery, CreateDeptRequest, CreateDeptRequest> {
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Operation(summary = "查询部门列表树")
|
@Operation(summary = "查询部门列表树")
|
||||||
|
@ -39,7 +39,7 @@ import top.charles7c.cnadmin.common.util.RedisUtils;
|
|||||||
import top.charles7c.cnadmin.common.util.SecureUtils;
|
import top.charles7c.cnadmin.common.util.SecureUtils;
|
||||||
import top.charles7c.cnadmin.common.util.helper.LoginHelper;
|
import top.charles7c.cnadmin.common.util.helper.LoginHelper;
|
||||||
import top.charles7c.cnadmin.common.util.validate.ValidationUtils;
|
import top.charles7c.cnadmin.common.util.validate.ValidationUtils;
|
||||||
import top.charles7c.cnadmin.system.model.entity.SysUser;
|
import top.charles7c.cnadmin.system.model.entity.UserDO;
|
||||||
import top.charles7c.cnadmin.system.model.request.UpdateBasicInfoRequest;
|
import top.charles7c.cnadmin.system.model.request.UpdateBasicInfoRequest;
|
||||||
import top.charles7c.cnadmin.system.model.request.UpdateEmailRequest;
|
import top.charles7c.cnadmin.system.model.request.UpdateEmailRequest;
|
||||||
import top.charles7c.cnadmin.system.model.request.UpdatePasswordRequest;
|
import top.charles7c.cnadmin.system.model.request.UpdatePasswordRequest;
|
||||||
@ -74,10 +74,10 @@ public class UserCenterController {
|
|||||||
@Operation(summary = "修改基础信息", description = "修改用户基础信息")
|
@Operation(summary = "修改基础信息", description = "修改用户基础信息")
|
||||||
@PatchMapping("/basic/info")
|
@PatchMapping("/basic/info")
|
||||||
public R updateBasicInfo(@Validated @RequestBody UpdateBasicInfoRequest updateBasicInfoRequest) {
|
public R updateBasicInfo(@Validated @RequestBody UpdateBasicInfoRequest updateBasicInfoRequest) {
|
||||||
SysUser user = new SysUser();
|
UserDO userDO = new UserDO();
|
||||||
user.setUserId(LoginHelper.getUserId());
|
userDO.setUserId(LoginHelper.getUserId());
|
||||||
BeanUtil.copyProperties(updateBasicInfoRequest, user);
|
BeanUtil.copyProperties(updateBasicInfoRequest, userDO);
|
||||||
userService.update(user);
|
userService.update(userDO);
|
||||||
return R.ok("修改成功");
|
return R.ok("修改成功");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user