From 5caa4b65808455cfea4e5e484ce8786f5bc40485 Mon Sep 17 00:00:00 2001 From: Ziin Date: Thu, 7 Aug 2025 21:17:47 +0800 Subject: [PATCH] =?UTF-8?q?1.=E8=B0=83=E6=95=B4=20controller=20=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE=202.=E6=B7=BB=E5=8A=A0=E6=97=A5=E5=BF=97=E6=8B=A6?= =?UTF-8?q?=E6=88=AA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 ++ .../java/vvpkassistant/Data/ResponseData.java | 2 +- .../User/service/UserServiceImpl.java | 4 +- .../vvpkassistant/aop/LogInterceptor.java | 55 +++++++++++++++++++ .../controller/AnchorsController.java | 2 +- .../{chat => }/controller/ChatController.java | 3 +- .../{file => }/controller/FileController.java | 2 +- .../controller/FunctionConfigController.java | 3 +- .../{pk => }/controller/PkController.java | 5 +- .../controller/SystemMessageController.java | 2 +- .../{User => }/controller/UserController.java | 15 +++-- .../mail/service/MailServiceImpl.java | 17 ++++-- 12 files changed, 91 insertions(+), 23 deletions(-) create mode 100644 src/main/java/vvpkassistant/aop/LogInterceptor.java rename src/main/java/vvpkassistant/{Anchors => }/controller/AnchorsController.java (97%) rename src/main/java/vvpkassistant/{chat => }/controller/ChatController.java (94%) rename src/main/java/vvpkassistant/{file => }/controller/FileController.java (95%) rename src/main/java/vvpkassistant/{FunctionConfig => }/controller/FunctionConfigController.java (96%) rename src/main/java/vvpkassistant/{pk => }/controller/PkController.java (97%) rename src/main/java/vvpkassistant/{SystemMessage => }/controller/SystemMessageController.java (97%) rename src/main/java/vvpkassistant/{User => }/controller/UserController.java (97%) diff --git a/pom.xml b/pom.xml index 96e2b50..117ed7a 100644 --- a/pom.xml +++ b/pom.xml @@ -61,6 +61,10 @@ spring-boot-configuration-processor true + + org.springframework.boot + spring-boot-starter-aop + com.fasterxml.jackson.core diff --git a/src/main/java/vvpkassistant/Data/ResponseData.java b/src/main/java/vvpkassistant/Data/ResponseData.java index 44ca361..587942b 100644 --- a/src/main/java/vvpkassistant/Data/ResponseData.java +++ b/src/main/java/vvpkassistant/Data/ResponseData.java @@ -34,7 +34,7 @@ public class ResponseData implements Serializable { // 返回错误的方法 public static ResponseData error(int code,String message) { - return new ResponseData<>(code, message); + return new ResponseData<>(code, null,message); } public static ResponseData error(ErrorCode errorCode) { diff --git a/src/main/java/vvpkassistant/User/service/UserServiceImpl.java b/src/main/java/vvpkassistant/User/service/UserServiceImpl.java index 87af89a..6c63c88 100644 --- a/src/main/java/vvpkassistant/User/service/UserServiceImpl.java +++ b/src/main/java/vvpkassistant/User/service/UserServiceImpl.java @@ -127,7 +127,6 @@ public class UserServiceImpl extends ServiceImpl implements @Override public UserModelVO addUserWithMail(UserModelDTO userModelDTO) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(UserModel::getEmail,userModelDTO.getEmail()); UserModel userModel = userDao.selectOne(lambdaQueryWrapper); @@ -156,9 +155,12 @@ public class UserServiceImpl extends ServiceImpl implements userDao.updateById(oldUser); } UserModelVO userModelVO = BeanUtil.copyProperties(userModelEntity, UserModelVO.class); + StpUtil.login(userModelVO.getId()); + userModelVO.setToken(StpUtil.getTokenValue()); userModelVO.setHavaPassword(true); userModelVO.setNewAccount(true); userModelVO.setChatInfo(wxChatParam); + log.info("用户{}注册,邮箱{},手机号{}",userModelVO.getId(),userModelVO.getEmail(),userModelVO.getPhoneNumber()); return userModelVO; } diff --git a/src/main/java/vvpkassistant/aop/LogInterceptor.java b/src/main/java/vvpkassistant/aop/LogInterceptor.java new file mode 100644 index 0000000..dc9af30 --- /dev/null +++ b/src/main/java/vvpkassistant/aop/LogInterceptor.java @@ -0,0 +1,55 @@ +package vvpkassistant.aop; + +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; + +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.springframework.stereotype.Component; +import org.springframework.util.StopWatch; +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; +import java.util.UUID; + + +@Aspect +@Component +@Slf4j +public class LogInterceptor { + + /** + * 执行拦截 + */ + @Around("execution(* vvpkassistant.controller.*.*(..))") + public Object doInterceptor(ProceedingJoinPoint point) throws Throwable { + // 计时 + StopWatch stopWatch = new StopWatch(); + stopWatch.start(); + // 获取请求路径 + RequestAttributes requestAttributes = RequestContextHolder.currentRequestAttributes(); + HttpServletRequest httpServletRequest = ((ServletRequestAttributes) requestAttributes).getRequest(); + // 生成请求唯一 id + String requestId = UUID.randomUUID().toString(); + String url = httpServletRequest.getRequestURI(); + // 获取请求参数 + Object[] args = point.getArgs(); + String reqParam = "[" + StringUtils.join(args, ", ") + "]"; + // 输出请求日志 + log.info("request start,id: {}, path: {}, ip: {}, params: {}", requestId, url, + httpServletRequest.getRemoteHost(), reqParam); +// log.info("request start,id: {}, path: {}, ip: {}", requestId, url, +// httpServletRequest.getRemoteHost()); + // 执行原方法 + Object result = point.proceed(); + // 输出响应日志 + stopWatch.stop(); + long totalTimeMillis = stopWatch.getTotalTimeMillis(); + log.info("request end, id: {}, cost: {}ms", requestId, totalTimeMillis); + return result; + } +} + diff --git a/src/main/java/vvpkassistant/Anchors/controller/AnchorsController.java b/src/main/java/vvpkassistant/controller/AnchorsController.java similarity index 97% rename from src/main/java/vvpkassistant/Anchors/controller/AnchorsController.java rename to src/main/java/vvpkassistant/controller/AnchorsController.java index d2f4e9d..699b1c6 100644 --- a/src/main/java/vvpkassistant/Anchors/controller/AnchorsController.java +++ b/src/main/java/vvpkassistant/controller/AnchorsController.java @@ -1,4 +1,4 @@ -package vvpkassistant.Anchors.controller; +package vvpkassistant.controller; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; diff --git a/src/main/java/vvpkassistant/chat/controller/ChatController.java b/src/main/java/vvpkassistant/controller/ChatController.java similarity index 94% rename from src/main/java/vvpkassistant/chat/controller/ChatController.java rename to src/main/java/vvpkassistant/controller/ChatController.java index 2d9f45b..5865d27 100644 --- a/src/main/java/vvpkassistant/chat/controller/ChatController.java +++ b/src/main/java/vvpkassistant/controller/ChatController.java @@ -1,10 +1,9 @@ -package vvpkassistant.chat.controller; +package vvpkassistant.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import vvpkassistant.Data.ResponseData; -import vvpkassistant.Data.ResponseInfo; import vvpkassistant.chat.mapper.ChatDao; import vvpkassistant.chat.model.ChatModel; import vvpkassistant.common.ErrorCode; diff --git a/src/main/java/vvpkassistant/file/controller/FileController.java b/src/main/java/vvpkassistant/controller/FileController.java similarity index 95% rename from src/main/java/vvpkassistant/file/controller/FileController.java rename to src/main/java/vvpkassistant/controller/FileController.java index 0284973..c8e35b7 100644 --- a/src/main/java/vvpkassistant/file/controller/FileController.java +++ b/src/main/java/vvpkassistant/controller/FileController.java @@ -1,4 +1,4 @@ -package vvpkassistant.file.controller; +package vvpkassistant.controller; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; diff --git a/src/main/java/vvpkassistant/FunctionConfig/controller/FunctionConfigController.java b/src/main/java/vvpkassistant/controller/FunctionConfigController.java similarity index 96% rename from src/main/java/vvpkassistant/FunctionConfig/controller/FunctionConfigController.java rename to src/main/java/vvpkassistant/controller/FunctionConfigController.java index 5dffc41..cb436f3 100644 --- a/src/main/java/vvpkassistant/FunctionConfig/controller/FunctionConfigController.java +++ b/src/main/java/vvpkassistant/controller/FunctionConfigController.java @@ -1,8 +1,7 @@ -package vvpkassistant.FunctionConfig.controller; +package vvpkassistant.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import vvpkassistant.Data.ResponseData; -import vvpkassistant.Data.ResponseInfo; import vvpkassistant.FunctionConfig.mapper.FunctionConfigMapper; import vvpkassistant.FunctionConfig.model.FunctionConfigModel; import vvpkassistant.FunctionConfig.service.FunctionConfigService; diff --git a/src/main/java/vvpkassistant/pk/controller/PkController.java b/src/main/java/vvpkassistant/controller/PkController.java similarity index 97% rename from src/main/java/vvpkassistant/pk/controller/PkController.java rename to src/main/java/vvpkassistant/controller/PkController.java index f912e55..0a512dd 100644 --- a/src/main/java/vvpkassistant/pk/controller/PkController.java +++ b/src/main/java/vvpkassistant/controller/PkController.java @@ -1,14 +1,11 @@ -package vvpkassistant.pk.controller; +package vvpkassistant.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import vvpkassistant.CoinRecords.CoinRecords; import vvpkassistant.CoinRecords.CoinRecordsDao; import vvpkassistant.Data.ResponseData; import vvpkassistant.Data.ResponseInfo; -import vvpkassistant.config.FunctionConfigHolder; import vvpkassistant.Tools.VVTools; import vvpkassistant.User.mapper.UserDao; -import vvpkassistant.User.model.UserModel; import vvpkassistant.pk.mapper.PkInfoDao; import vvpkassistant.pk.mapper.PkRecordDao; import vvpkassistant.pk.mapper.PkRecordDetailDao; diff --git a/src/main/java/vvpkassistant/SystemMessage/controller/SystemMessageController.java b/src/main/java/vvpkassistant/controller/SystemMessageController.java similarity index 97% rename from src/main/java/vvpkassistant/SystemMessage/controller/SystemMessageController.java rename to src/main/java/vvpkassistant/controller/SystemMessageController.java index e724b34..cba81c3 100644 --- a/src/main/java/vvpkassistant/SystemMessage/controller/SystemMessageController.java +++ b/src/main/java/vvpkassistant/controller/SystemMessageController.java @@ -1,4 +1,4 @@ -package vvpkassistant.SystemMessage.controller; +package vvpkassistant.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; diff --git a/src/main/java/vvpkassistant/User/controller/UserController.java b/src/main/java/vvpkassistant/controller/UserController.java similarity index 97% rename from src/main/java/vvpkassistant/User/controller/UserController.java rename to src/main/java/vvpkassistant/controller/UserController.java index 6fe8eb2..98af04e 100644 --- a/src/main/java/vvpkassistant/User/controller/UserController.java +++ b/src/main/java/vvpkassistant/controller/UserController.java @@ -1,7 +1,6 @@ -package vvpkassistant.User.controller; +package vvpkassistant.controller; import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.bean.BeanUtil; -import cn.hutool.extra.mail.Mail; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import vvpkassistant.CoinRecords.CoinRecords; @@ -10,12 +9,10 @@ import vvpkassistant.Data.ResponseData; import vvpkassistant.Data.ResponseInfo; import vvpkassistant.Data.WxChatParam; import vvpkassistant.User.mapper.UserDao; -import vvpkassistant.User.model.DTO.LoginInfoDTO; import vvpkassistant.User.model.DTO.ScanInfoDTO; import vvpkassistant.User.model.DTO.UserModelDTO; import vvpkassistant.User.model.UserModel; import vvpkassistant.User.model.UserModelVO; -import vvpkassistant.User.model.enumeration.LoginStatusEnum; import vvpkassistant.User.service.UserService; import vvpkassistant.common.ErrorCode; import vvpkassistant.config.FunctionConfigHolder; @@ -205,8 +202,14 @@ public class UserController { // 获取用户信息 @PostMapping("getUserInfo") - public ResponseData getUserInfo(@RequestBody Map map) { - UserModel userModel = userDao.selectById(map.get("id")); + public ResponseData getUserInfo(@RequestBody UserModelDTO userModelDTO) { + if (userModelDTO.getId() == null){ + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + UserModel userModel = userDao.selectById(userModelDTO.getId()); + if (userModel == null) { + throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST); + } UserModelVO userModelVO = BeanUtil.copyProperties(userModel, UserModelVO.class); userModelVO.setHavaPassword(userModel.getPassword() != null); return ResponseData.success(userModelVO); diff --git a/src/main/java/vvpkassistant/mail/service/MailServiceImpl.java b/src/main/java/vvpkassistant/mail/service/MailServiceImpl.java index cb0c663..7117dbb 100644 --- a/src/main/java/vvpkassistant/mail/service/MailServiceImpl.java +++ b/src/main/java/vvpkassistant/mail/service/MailServiceImpl.java @@ -6,6 +6,7 @@ import cn.hutool.extra.mail.MailUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.github.benmanes.caffeine.cache.Cache; import com.github.benmanes.caffeine.cache.Caffeine; +import com.ibm.j9ddr.tools.ddrinteractive.IFieldFormatter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Async; @@ -379,17 +380,25 @@ public class MailServiceImpl implements MailService { @Override public Boolean resendMail(MailModel mailModel) { - Object ifPresent = emailSendCache.getIfPresent(mailModel.getMailAddress()); + if (mailModel.getMailAddress() == null && mailModel.getType() == null) { + throw new BusinessException(ErrorCode.PARAMS_ERROR); + } + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + UserModel userModel = userDao.selectOne(lambdaQueryWrapper.eq(UserModel::getEmail, mailModel.getMailAddress())); + if (userModel == null) { + throw new BusinessException(ErrorCode.USER_DOES_NOT_EXIST); + } + Object ifPresent = emailSendCache.getIfPresent(mailModel.getMailAddress()); if (ifPresent == null) { switch (mailModel.getType()) { case 1: - sendMail(mailModel.getMailAddress(), mailModel.getUserId()); + sendMail(mailModel.getMailAddress(), userModel.getId()); break; case 2: - sendVerificationMail(mailModel.getMailAddress(), mailModel.getUserId()); + sendVerificationMail(mailModel.getMailAddress(), userModel.getId()); break; case 3: - sendForgetPassWordMail(mailModel.getMailAddress(), mailModel.getUserId()); + sendForgetPassWordMail(mailModel.getMailAddress(), userModel.getId()); break; } return true;