Skip to content

Commit

Permalink
添加日志记录
Browse files Browse the repository at this point in the history
  • Loading branch information
LiggMax committed Feb 15, 2025
1 parent 26d3e03 commit 82e8fe1
Show file tree
Hide file tree
Showing 20 changed files with 270 additions and 97 deletions.
35 changes: 4 additions & 31 deletions .idea/dataSources.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 7 additions & 0 deletions .idea/inspectionProfiles/Project_Default.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 5 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,11 @@
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>

<!--AOP-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
Expand Down
11 changes: 11 additions & 0 deletions src/main/java/com/ligg/anno/Log.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.ligg.anno;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Log {
}
77 changes: 77 additions & 0 deletions src/main/java/com/ligg/aop/LogAspect.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package com.ligg.aop;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.ligg.mapper.OperateLogMapper;
import com.ligg.pojo.OperateLog;
import com.ligg.utils.JwtUtil;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Map;

@Slf4j
@Component
@Aspect
public class LogAspect {

@Autowired
private OperateLogMapper operateLogMapper;
@Autowired
private HttpServletRequest request;
@Autowired
ObjectMapper objectMapper;

@Around("@annotation(com.ligg.anno.Log)")
public Object recordLog(ProceedingJoinPoint pjp) throws Throwable {

//操作人ID
String token = request.getHeader("Authorization");
if (token == null){
return null;
}
Map<String, Object> user = JwtUtil.parseTokenWithValidation(token);
Long operateUserId = (Long) user.get("id");

//操作时间
LocalDateTime operateTime = LocalDateTime.now();

//操作类名
String className = pjp.getTarget().getClass().getName();

//操作方法名
String methodName = pjp.getSignature().getName();

//操作方法参数
Object[] args = pjp.getArgs();
String methodParams = Arrays.toString(args);

long begin = System.currentTimeMillis();
//调用原始目标方法运行
Object result = pjp.proceed();
long end = System.currentTimeMillis();

//方法返回值
String returnValue = objectMapper.writeValueAsString(result);
//操作耗时
Long costTime = end - begin;


//记录日志
OperateLog operateLog = new OperateLog(null,operateUserId,operateTime,className,methodName,methodParams,returnValue,costTime);
operateLogMapper.insertLog(operateLog);
log.info("AOP操作日志:[操作人ID:{},操作时间:{},操作类名:{},操作方法名:{},操作方法参数:{},操作耗时:{}]",operateUserId,operateTime,className,methodName,methodParams,costTime);
return result;
}

public static void main(String[] args) {
Map<String, Object> map = JwtUtil.parseTokenWithValidation("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjbGFpbXMiOnsiaWQiOjI0NTAyODQ3ODYsInVzZXJuYW1lIjoibGlnZzIwMDMwOSJ9LCJleHAiOjE3MzkyNjIyMzl9.DdDdaMtDOoAHnyQypFAFBVBVJEqaDB7vY-qRzDJ2Lp0");
System.out.println(map);
}
}
20 changes: 20 additions & 0 deletions src/main/java/com/ligg/config/CorsConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.ligg.config;

import org.springframework.context.annotation.Bean;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

public class CorsConfig {
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*") // 或指定具体域名
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
.allowCredentials(true);
}
};
}
}
11 changes: 10 additions & 1 deletion src/main/java/com/ligg/config/WebSocketConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,14 @@
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;


@Configuration
@EnableWebSocket
public class WebSocketConfig {
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

/**
* 注入ServerEndpointExporter,
Expand All @@ -18,4 +20,11 @@ public class WebSocketConfig {
public ServerEndpointExporter serverEndpointExporter(){
return new ServerEndpointExporter();
}

@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {

registry.addEndpoint("/ws/chat")
.setAllowedOriginPatterns("*");
}
}
2 changes: 2 additions & 0 deletions src/main/java/com/ligg/controller/BarrageController.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.ligg.controller;

import com.ligg.anno.Log;
import com.ligg.pojo.Barrage;
import com.ligg.pojo.Result;
import com.ligg.service.BarrageService;
Expand All @@ -16,6 +17,7 @@ public class BarrageController {
BarrageService barrageService;

//发送弹幕
@Log
@PostMapping("/send")
public Result<String> sendBarrage(@RequestBody Barrage barrage) {
return Result.success(barrageService.sendBarrage(barrage));
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/com/ligg/controller/EmailController.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.ligg.controller;

import com.ligg.anno.Log;
import com.ligg.pojo.Result;
import com.ligg.service.User.UserService;
import jakarta.servlet.http.HttpSession;
Expand All @@ -26,6 +27,7 @@ public Result<String> sendEmail(@RequestParam("email") @Email String email, Http
}

//发送重置密码邮箱验证码
@Log
@PostMapping("/forget")
public Result<String> forget(@RequestParam("email") @Email String email, HttpSession session) {
String s = userService.sendValidateCode(email, session.getId(),true);
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/com/ligg/controller/commentsController.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.ligg.controller;

import com.ligg.anno.Log;
import com.ligg.pojo.Comments;
import com.ligg.pojo.Result;
import com.ligg.service.CommentsService;
Expand All @@ -16,6 +17,7 @@ public class commentsController {
CommentsService commentsService;

//发布评论
@Log
@PostMapping("/publish")
public Result<String> publish(@RequestBody Comments comments) {
String c = commentsService.publish(comments.getId(), comments.getContent());
Expand Down
44 changes: 8 additions & 36 deletions src/main/java/com/ligg/controller/user/UserController.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.ligg.controller.user;

import com.ligg.anno.Log;
import com.ligg.dto.UserDto;
import com.ligg.pojo.Result;
import com.ligg.pojo.user.User;
Expand All @@ -17,7 +18,11 @@
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.math.BigInteger;
import java.security.SecureRandom;
import java.util.Map;
import java.util.Random;
import java.util.UUID;


//用户接口
Expand Down Expand Up @@ -80,6 +85,7 @@ public Result<UserDto> userInfo() {
}

//更新用户信息
@Log
@PutMapping("/updateUser")
public Result<String> update(@RequestBody @Validated(User.Update.class) User user) throws QiniuException {
String update = userService.update(user);
Expand All @@ -90,6 +96,7 @@ public Result<String> update(@RequestBody @Validated(User.Update.class) User use
}

//更新用户头像
@Log
@PatchMapping("/updateAvatar")
public Result<String> updateAvatar(@RequestParam @URL String avatarUrl) {
userService.updateAvatar(avatarUrl);
Expand All @@ -106,7 +113,7 @@ public Result<String> logout() {

//用户首页信息
@GetMapping("/homeList")
public Result<UserDto> userInfoList(@RequestParam(required = false) String username) {
public Result<UserDto> userHomeList(@RequestParam(required = false) String username) {
if (username == null) {
Map<String, Object> map = ThreadLocalUtil.get();
String user = (String) map.get("username");
Expand All @@ -116,39 +123,4 @@ public Result<UserDto> userInfoList(@RequestParam(required = false) String usern
UserDto userInfoDto = userService.getUserHomeList(username);
return Result.success(userInfoDto);
}



/* //修改密码
@PatchMapping("/updatePassword")
public Result<String> updatePassword(@RequestBody Map<String, String> params, @RequestHeader("Authorization") String token) {
//参数校验
String oldPassword = params.get("old_pwd");
String newPassword = params.get("new_pwd");
String rePassword = params.get("re_pwd");
if (!StringUtils.hasLength(oldPassword) || !StringUtils.hasLength(newPassword) || !StringUtils.hasLength(rePassword)) {
return Result.error("缺少参数");
}
//获取用户信息
User loginUser = userService.findByUsername();
if (!loginUser.getPassword().equals(Md5Util.getMD5String(oldPassword))) {
return Result.error("原始码错误");
}
if (!rePassword.equals(newPassword)) {
return Result.error("两次密码不一致");
}
if (loginUser.getPassword().equals(Md5Util.getMD5String(newPassword))) {
return Result.error("新密码不能与原始密码一致");
}
//判断密码是否小于5位,大于15位
if (newPassword.length() < 5 || newPassword.length() > 15) {
return Result.error("密码长度需在5-15位之间");
}
//修改密码
userService.updatePassword(newPassword, loginUser.getId());
//删除token
ValueOperations<String, String> operations = stringRedisTemplate.opsForValue();
operations.getOperations().delete(token);
return Result.success();
}*/
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.ligg.controller.user;

import com.ligg.anno.Log;
import com.ligg.pojo.Result;
import com.ligg.pojo.user.UserFollowData;
import com.ligg.pojo.user.UserFollow;
Expand All @@ -17,6 +18,7 @@ public class UserFollowController {
UserFollowService userFollowService;

// 关注或取消关注
@Log
@PutMapping("/{id}")
public Result<String> follow(@PathVariable("id") Long id, Boolean isFollow) {
return userFollowService.follow(id,isFollow);
Expand Down
Loading

0 comments on commit 82e8fe1

Please sign in to comment.