优化:优化模型类命名(为数据模型类添加 DO 后缀),并优化所有模型相关变量命名

This commit is contained in:
Charles7c 2023-01-30 21:00:30 +08:00
parent d7851bc811
commit 3075038067
27 changed files with 213 additions and 214 deletions

View File

@ -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 # 公共 DTOData Transfer Object │ │ ├─ dto # 公共 DTOData Transfer Object
│ │ ├─ entity # 公共实体对象
│ │ ├─ query # 公共查询条件 │ │ ├─ query # 公共查询条件
│ │ ├─ request # 公共请求对象 │ │ ├─ request # 公共请求对象
│ │ └─ vo # 公共 VOView Object │ │ └─ vo # 公共 VOView Object

View File

@ -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);
} }
/** /**

View File

@ -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<>();
} }
/** /**

View File

@ -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

View File

@ -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;
} }
} }

View File

@ -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());
} }
/** /**

View File

@ -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> {}

View File

@ -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;

View File

@ -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);
/** /**
* 查看系统日志详情 * 查看系统日志详情

View File

@ -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());
} }
} }

View File

@ -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);
// 返回令牌 // 返回令牌

View File

@ -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> {}

View File

@ -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> {}

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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> {
/** /**
* 构建树 * 构建树

View File

@ -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);
} }

View File

@ -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());
} }
} }

View File

@ -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;
} }
} }

View File

@ -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);
} }
} }

View File

@ -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 = "发送验证码到指定邮箱")

View File

@ -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);
} }
} }

View File

@ -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 = "查看系统日志详情")

View File

@ -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);
} }
/** /**

View File

@ -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 = "查询部门列表树")

View File

@ -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("修改成功");
} }