diff --git a/src/main/java/com/bao/dating/common/ResultCode.java b/src/main/java/com/bao/dating/common/ResultCode.java index fb89f00..2c7b892 100644 --- a/src/main/java/com/bao/dating/common/ResultCode.java +++ b/src/main/java/com/bao/dating/common/ResultCode.java @@ -2,6 +2,7 @@ package com.bao.dating.common; /** * 响应状态码枚举 + * @author KilLze */ public enum ResultCode { /** 成功 */ diff --git a/src/main/java/com/bao/dating/common/aliyun/AliOssUtil.java b/src/main/java/com/bao/dating/common/aliyun/AliOssUtil.java index 2c34931..aaee41b 100644 --- a/src/main/java/com/bao/dating/common/aliyun/AliOssUtil.java +++ b/src/main/java/com/bao/dating/common/aliyun/AliOssUtil.java @@ -4,16 +4,17 @@ import com.aliyun.oss.ClientException; import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.OSSException; -import lombok.AllArgsConstructor; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.io.ByteArrayInputStream; -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; +/** + * 阿里云OSS工具类 + * @author KilLze + */ @Data @Slf4j @Component diff --git a/src/main/java/com/bao/dating/common/result/AliOssResult.java b/src/main/java/com/bao/dating/common/result/AliOssResult.java new file mode 100644 index 0000000..c849a1d --- /dev/null +++ b/src/main/java/com/bao/dating/common/result/AliOssResult.java @@ -0,0 +1,11 @@ +package com.bao.dating.common.result; + +/** + * 阿里云 OSS 文件上传结果 + * @author KilLze + */ +public class AliOssResult { + public static final String IMAGE = "image"; + public static final String VIDEO = "video"; + +} diff --git a/src/main/java/com/bao/dating/common/result/FileResult.java b/src/main/java/com/bao/dating/common/result/FileResult.java new file mode 100644 index 0000000..dfcbcb8 --- /dev/null +++ b/src/main/java/com/bao/dating/common/result/FileResult.java @@ -0,0 +1,15 @@ +package com.bao.dating.common.result; + +/** + * 文件上传结果 + * @author KilLze + */ +public class FileResult { + public static final String JPG = "jpg"; + public static final String JPEG = "jpeg"; + public static final String PNG = "png"; + public static final String GIF = "gif"; + public static final String MP4 = "mp4"; + public static final String AVI = "avi"; + public static final String MOV = "mov"; +} diff --git a/src/main/java/com/bao/dating/common/result/GreenAuditResult.java b/src/main/java/com/bao/dating/common/result/GreenAuditResult.java new file mode 100644 index 0000000..2f9b44a --- /dev/null +++ b/src/main/java/com/bao/dating/common/result/GreenAuditResult.java @@ -0,0 +1,11 @@ +package com.bao.dating.common.result; + +/** + * 阿里云敏感内容审核结果 + * @author KilLze + */ +public class GreenAuditResult { + public static final String PASS = "pass"; + public static final String REVIEW = "review"; + public static final String BLOCK = "block"; +} diff --git a/src/main/java/com/bao/dating/config/WebConfig.java b/src/main/java/com/bao/dating/config/WebConfig.java index a7ff5fd..98a0683 100644 --- a/src/main/java/com/bao/dating/config/WebConfig.java +++ b/src/main/java/com/bao/dating/config/WebConfig.java @@ -7,6 +7,10 @@ import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +/** + * WebMvc配置类 + * @author KilLze + */ @Configuration public class WebConfig implements WebMvcConfigurer { diff --git a/src/main/java/com/bao/dating/context/UserContext.java b/src/main/java/com/bao/dating/context/UserContext.java index df2cfbd..a8dde6c 100644 --- a/src/main/java/com/bao/dating/context/UserContext.java +++ b/src/main/java/com/bao/dating/context/UserContext.java @@ -6,14 +6,14 @@ package com.bao.dating.context; */ public class UserContext { - private static final ThreadLocal userHolder = new ThreadLocal<>(); + private static final ThreadLocal USER_HOLDER = new ThreadLocal<>(); /** * 设置当前线程的用户ID * @param userId 用户ID */ public static void setUserId(Long userId) { - userHolder.set(userId); + USER_HOLDER.set(userId); } /** @@ -21,13 +21,13 @@ public class UserContext { * @return 当前用户ID,如果未设置则返回null */ public static Long getUserId() { - return userHolder.get(); + return USER_HOLDER.get(); } /** * 清除当前线程的用户ID */ public static void clear() { - userHolder.remove(); + USER_HOLDER.remove(); } } diff --git a/src/main/java/com/bao/dating/controller/PostController.java b/src/main/java/com/bao/dating/controller/PostController.java index 9f335ae..648e32f 100644 --- a/src/main/java/com/bao/dating/controller/PostController.java +++ b/src/main/java/com/bao/dating/controller/PostController.java @@ -13,6 +13,11 @@ import org.springframework.web.multipart.MultipartFile; import java.util.List; +/** + * 动态接口 + * + * @author KilLze + */ @RestController @RequestMapping("/posts") public class PostController { diff --git a/src/main/java/com/bao/dating/controller/UserController.java b/src/main/java/com/bao/dating/controller/UserController.java index 338d072..b62cdfd 100644 --- a/src/main/java/com/bao/dating/controller/UserController.java +++ b/src/main/java/com/bao/dating/controller/UserController.java @@ -12,6 +12,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +/** + * 用户接口 + * + * @author KilLze + */ @RestController @RequestMapping("/user") public class UserController { diff --git a/src/main/java/com/bao/dating/handler/ListToJsonTypeHandler.java b/src/main/java/com/bao/dating/handler/ListToJsonTypeHandler.java index 2448bfb..5c6da2b 100644 --- a/src/main/java/com/bao/dating/handler/ListToJsonTypeHandler.java +++ b/src/main/java/com/bao/dating/handler/ListToJsonTypeHandler.java @@ -13,11 +13,16 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; -@MappedJdbcTypes(JdbcType.VARCHAR) // 也可以使用JdbcType.JSON,如果数据库支持的话 + +/** + * List类型转换成JSON类型 + * @author KilLze + */ +@MappedJdbcTypes(JdbcType.VARCHAR) @MappedTypes(List.class) public class ListToJsonTypeHandler implements TypeHandler> { - private static final ObjectMapper objectMapper = new ObjectMapper(); + private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); @Override public void setParameter(PreparedStatement ps, int i, List parameter, JdbcType jdbcType) throws SQLException { @@ -26,7 +31,7 @@ public class ListToJsonTypeHandler implements TypeHandler> { return; } try { - String json = objectMapper.writeValueAsString(parameter); + String json = OBJECT_MAPPER.writeValueAsString(parameter); ps.setString(i, json); } catch (JsonProcessingException e) { throw new SQLException("Error converting list to JSON", e); @@ -56,7 +61,7 @@ public class ListToJsonTypeHandler implements TypeHandler> { return null; } try { - return objectMapper.readValue(json, new TypeReference>() {}); + return OBJECT_MAPPER.readValue(json, new TypeReference>() {}); } catch (JsonProcessingException e) { throw new SQLException("Error converting JSON to list", e); } diff --git a/src/main/java/com/bao/dating/interceptor/TokenInterceptor.java b/src/main/java/com/bao/dating/interceptor/TokenInterceptor.java index 29ab4a1..8dee76c 100644 --- a/src/main/java/com/bao/dating/interceptor/TokenInterceptor.java +++ b/src/main/java/com/bao/dating/interceptor/TokenInterceptor.java @@ -5,7 +5,6 @@ import javax.servlet.http.HttpServletResponse; import com.bao.dating.context.UserContext; import com.bao.dating.util.JwtUtil; -import io.jsonwebtoken.Claims; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.web.method.HandlerMethod; @@ -14,6 +13,7 @@ import org.springframework.web.servlet.HandlerInterceptor; /** * HttpToken拦截器类 * 用于拦截请求并验证JWT token的有效性,同时从token中解析用户信息 + * @author KilLze */ @Slf4j @Component diff --git a/src/main/java/com/bao/dating/mapper/PostMapper.java b/src/main/java/com/bao/dating/mapper/PostMapper.java index fd30d09..8380a2f 100644 --- a/src/main/java/com/bao/dating/mapper/PostMapper.java +++ b/src/main/java/com/bao/dating/mapper/PostMapper.java @@ -6,12 +6,17 @@ import org.apache.ibatis.annotations.Param; import java.util.List; +/** + * 动态Mapper + * + * @author KilLze lanyangyang-yzx + */ @Mapper public interface PostMapper { /** * 插入动态 * - * @param post + * @param post 动态 */ void insert(Post post); @@ -25,24 +30,23 @@ public interface PostMapper { /** * 根据ID查询动态 * - * @param postId - * @return + * @param postId 动态ID + * @return 动态 */ Post selectById(Long postId); /** * 根据ID更新动态 * - * @param post - * @return + * @param post 动态 */ void updateById(Post post); /** * 查询点赞数 * - * @param postId - * @return + * @param postId 动态ID + * @return 点赞数 */ int selectLikeCount(Long postId); @@ -72,8 +76,8 @@ public interface PostMapper { /** * 查询点赞数 * - * @param postId - * @return + * @param postId 动态ID + * @return 点赞数 */ int selectFavoriteCount(Long postId); diff --git a/src/main/java/com/bao/dating/mapper/UserMapper.java b/src/main/java/com/bao/dating/mapper/UserMapper.java index 8326914..b15f293 100644 --- a/src/main/java/com/bao/dating/mapper/UserMapper.java +++ b/src/main/java/com/bao/dating/mapper/UserMapper.java @@ -1,10 +1,13 @@ package com.bao.dating.mapper; import com.bao.dating.pojo.dto.UserInfoUpdateDTO; -import com.bao.dating.pojo.entity.Post; import com.bao.dating.pojo.entity.User; import org.apache.ibatis.annotations.Mapper; +/** + * 用户Mapper + * @author KilLze + */ @Mapper public interface UserMapper { @@ -26,7 +29,7 @@ public interface UserMapper { /** * 更新用户信息 - * @param userInfoUpdateDTO + * @param userInfoUpdateDTO 用户信息更新参数 */ void updateUserInfoByUserId(UserInfoUpdateDTO userInfoUpdateDTO); diff --git a/src/main/java/com/bao/dating/pojo/dto/PostRequestDTO.java b/src/main/java/com/bao/dating/pojo/dto/PostRequestDTO.java index f0fd51d..c2c13f3 100644 --- a/src/main/java/com/bao/dating/pojo/dto/PostRequestDTO.java +++ b/src/main/java/com/bao/dating/pojo/dto/PostRequestDTO.java @@ -7,9 +7,10 @@ import java.util.List; /** * 动态数据传输对象 + * @author KilLze */ @Data -public class PostRequestDTO implements Serializable { +public class PostRequestDTO implements Serializable{ private String content; private List mediaOssKeys; private List tags; diff --git a/src/main/java/com/bao/dating/pojo/dto/UserInfoUpdateDTO.java b/src/main/java/com/bao/dating/pojo/dto/UserInfoUpdateDTO.java index 8fc9912..97dd6e9 100644 --- a/src/main/java/com/bao/dating/pojo/dto/UserInfoUpdateDTO.java +++ b/src/main/java/com/bao/dating/pojo/dto/UserInfoUpdateDTO.java @@ -6,6 +6,10 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; +/** + * 用户信息更新数据传输对象 + * @author KilLze + */ @Data public class UserInfoUpdateDTO { private Long userId; @@ -18,6 +22,4 @@ public class UserInfoUpdateDTO { private List hobbies; private String signature; private LocalDateTime updatedAt; - /** 需要清空的字段 */ - private List clearFields; } diff --git a/src/main/java/com/bao/dating/pojo/dto/UserLoginDTO.java b/src/main/java/com/bao/dating/pojo/dto/UserLoginDTO.java index 119a6cf..940b726 100644 --- a/src/main/java/com/bao/dating/pojo/dto/UserLoginDTO.java +++ b/src/main/java/com/bao/dating/pojo/dto/UserLoginDTO.java @@ -6,6 +6,7 @@ import java.io.Serializable; /** * 用户登录数据传输对象 + * @author KilLze */ @Data public class UserLoginDTO implements Serializable { diff --git a/src/main/java/com/bao/dating/pojo/vo/PostEditVO.java b/src/main/java/com/bao/dating/pojo/vo/PostEditVO.java index 2bd4602..7ff781c 100644 --- a/src/main/java/com/bao/dating/pojo/vo/PostEditVO.java +++ b/src/main/java/com/bao/dating/pojo/vo/PostEditVO.java @@ -8,6 +8,7 @@ import java.util.List; /** * 修改内容查询返回数据 + * @author KilLze */ @Data public class PostEditVO implements Serializable { diff --git a/src/main/java/com/bao/dating/pojo/vo/UserInfoVO.java b/src/main/java/com/bao/dating/pojo/vo/UserInfoVO.java index 475bb66..c5a81fa 100644 --- a/src/main/java/com/bao/dating/pojo/vo/UserInfoVO.java +++ b/src/main/java/com/bao/dating/pojo/vo/UserInfoVO.java @@ -2,15 +2,17 @@ package com.bao.dating.pojo.vo; import lombok.Data; +import java.io.Serializable; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; /** * 用户信息VO + * @author KilLze */ @Data -public class UserInfoVO { +public class UserInfoVO implements Serializable { private Long userId; private String userName; private String nickname; diff --git a/src/main/java/com/bao/dating/pojo/vo/UserLoginVO.java b/src/main/java/com/bao/dating/pojo/vo/UserLoginVO.java index 87c025b..bfeb93d 100644 --- a/src/main/java/com/bao/dating/pojo/vo/UserLoginVO.java +++ b/src/main/java/com/bao/dating/pojo/vo/UserLoginVO.java @@ -5,6 +5,7 @@ import java.io.Serializable; /** * 登录返回数据 + * @author KilLze */ @Data public class UserLoginVO implements Serializable { diff --git a/src/main/java/com/bao/dating/service/PostService.java b/src/main/java/com/bao/dating/service/PostService.java index c29c887..627fed6 100644 --- a/src/main/java/com/bao/dating/service/PostService.java +++ b/src/main/java/com/bao/dating/service/PostService.java @@ -7,6 +7,10 @@ import org.springframework.web.multipart.MultipartFile; import java.util.List; +/** + * 动态服务 + * @author bao KilLze lanyangyang-yzx yang + */ public interface PostService { /** * 上传媒体文件 @@ -33,6 +37,7 @@ public interface PostService { /** * 查询动态详情(用于编辑) * @param postId 动态ID + * @return 动态详情 */ PostEditVO getPostForEdit(Long postId); diff --git a/src/main/java/com/bao/dating/service/UserService.java b/src/main/java/com/bao/dating/service/UserService.java index 0eb9218..5705ceb 100644 --- a/src/main/java/com/bao/dating/service/UserService.java +++ b/src/main/java/com/bao/dating/service/UserService.java @@ -2,13 +2,14 @@ package com.bao.dating.service; import com.bao.dating.pojo.dto.UserInfoUpdateDTO; import com.bao.dating.pojo.dto.UserLoginDTO; -import com.bao.dating.pojo.vo.PostEditVO; import com.bao.dating.pojo.vo.UserInfoVO; import com.bao.dating.pojo.vo.UserLoginVO; import org.springframework.web.multipart.MultipartFile; -import java.util.List; - +/** + * 用户服务接口 + * @author KilLze + */ public interface UserService { /** * 登录 @@ -20,6 +21,7 @@ public interface UserService { /** * 查询个人信息 * @param userId 动态ID + * @return 个人信息 */ UserInfoVO getUserInfo(Long userId); @@ -40,6 +42,7 @@ public interface UserService { /** * 更新用户信息 * @param userInfoUpdateDTO 用户信息 + * @return 更新后的用户信息 */ UserInfoVO updateUserInfo(UserInfoUpdateDTO userInfoUpdateDTO); } diff --git a/src/main/java/com/bao/dating/service/impl/PostServiceImpl.java b/src/main/java/com/bao/dating/service/impl/PostServiceImpl.java index e759ddc..5a430cd 100644 --- a/src/main/java/com/bao/dating/service/impl/PostServiceImpl.java +++ b/src/main/java/com/bao/dating/service/impl/PostServiceImpl.java @@ -2,6 +2,7 @@ package com.bao.dating.service.impl; import com.bao.dating.common.aliyun.GreenImageScan; import com.bao.dating.common.aliyun.GreenTextScan; +import com.bao.dating.common.result.GreenAuditResult; import com.bao.dating.context.UserContext; import com.bao.dating.mapper.PostMapper; import com.bao.dating.pojo.dto.PostRequestDTO; @@ -25,7 +26,7 @@ import java.util.*; /** * 动态服务实现类 * - * @author KilLze + * @author KilLze yang */ @Service public class PostServiceImpl implements PostService { @@ -144,10 +145,10 @@ public class PostServiceImpl implements PostService { String imageSuggestion = (String) imageResult.get("suggestion"); // 根据审核结果设置状态 - if ("block".equals(textSuggestion) || "block".equals(imageSuggestion)) { + if (GreenAuditResult.BLOCK.equals(textSuggestion) || GreenAuditResult.BLOCK.equals(imageSuggestion)) { // 审核未通过,允许用户修改 post.setIsPublic(2); - } else if ("review".equals(textSuggestion) || "review".equals(imageSuggestion)) { + } else if (GreenAuditResult.REVIEW.equals(textSuggestion) || GreenAuditResult.REVIEW.equals(imageSuggestion)) { // 待审核,需人工审核 post.setIsPublic(1); } else { @@ -156,10 +157,10 @@ public class PostServiceImpl implements PostService { } } else { // 只有文本内容的情况 - if ("block".equals(textSuggestion)) { + if (GreenAuditResult.BLOCK.equals(textSuggestion)) { // 审核未通过,允许用户修改 post.setIsPublic(2); - } else if ("review".equals(textSuggestion)) { + } else if (GreenAuditResult.REVIEW.equals(textSuggestion)) { // 待审核,需人工审核 post.setIsPublic(1); } else { @@ -268,10 +269,10 @@ public class PostServiceImpl implements PostService { String imageSuggestion = (String) imageResult.get("suggestion"); // 根据审核结果设置状态 - if ("block".equals(textSuggestion) || "block".equals(imageSuggestion)) { + if (GreenAuditResult.BLOCK.equals(textSuggestion) || GreenAuditResult.BLOCK.equals(imageSuggestion)) { // 审核未通过,允许用户修改 post.setIsPublic(2); - } else if ("review".equals(textSuggestion) || "review".equals(imageSuggestion)) { + } else if (GreenAuditResult.REVIEW.equals(textSuggestion) || GreenAuditResult.REVIEW.equals(imageSuggestion)) { // 待审核,需人工审核 post.setIsPublic(1); } else { @@ -280,10 +281,10 @@ public class PostServiceImpl implements PostService { } } else { // 只有文本内容的情况 - if ("block".equals(textSuggestion)) { + if (GreenAuditResult.BLOCK.equals(textSuggestion)) { // 审核未通过,允许用户修改 post.setIsPublic(2); - } else if ("review".equals(textSuggestion)) { + } else if (GreenAuditResult.REVIEW.equals(textSuggestion)) { // 待审核,需人工审核 post.setIsPublic(1); } else { diff --git a/src/main/java/com/bao/dating/service/impl/UserServiceImpl.java b/src/main/java/com/bao/dating/service/impl/UserServiceImpl.java index 0481b62..d6b48dd 100644 --- a/src/main/java/com/bao/dating/service/impl/UserServiceImpl.java +++ b/src/main/java/com/bao/dating/service/impl/UserServiceImpl.java @@ -3,6 +3,8 @@ package com.bao.dating.service.impl; import com.bao.dating.common.aliyun.AliOssUtil; import com.bao.dating.common.aliyun.GreenImageScan; import com.bao.dating.common.aliyun.GreenTextScan; +import com.bao.dating.common.result.AliOssResult; +import com.bao.dating.common.result.GreenAuditResult; import com.bao.dating.context.UserContext; import com.bao.dating.mapper.UserMapper; import com.bao.dating.pojo.dto.UserInfoUpdateDTO; @@ -20,9 +22,7 @@ import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; -import java.time.LocalDate; import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -120,12 +120,11 @@ public class UserServiceImpl implements UserService { } String fileType = FileUtil.getFileType(originalFilename); - if (!"image".equals(fileType)) { + if (!AliOssResult.IMAGE.equals(fileType)) { throw new RuntimeException("仅支持图片上传"); } //生成 OSS 路径 - String dir = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy/MM")); String extension = FileUtil.getFileExtension(originalFilename); String fileName = UUID.randomUUID().toString().replace("-", "") + "." + extension; Long userId = UserContext.getUserId(); @@ -165,7 +164,7 @@ public class UserServiceImpl implements UserService { } String fileType = FileUtil.getFileType(originalFilename); - if (!"image".equals(fileType)) { + if (!AliOssResult.IMAGE.equals(fileType)) { throw new RuntimeException("仅支持图片上传"); } @@ -228,10 +227,10 @@ public class UserServiceImpl implements UserService { String suggestion = (String) textResult.get("suggestion"); - if ("block".equals(suggestion)) { + if (GreenAuditResult.BLOCK.equals(suggestion)) { throw new RuntimeException("用户信息包含违规内容,修改失败"); } - if ("review".equals(suggestion)) { + if (GreenAuditResult.REVIEW.equals(suggestion)) { throw new RuntimeException("用户信息需要人工审核,暂无法修改"); } } @@ -254,10 +253,10 @@ public class UserServiceImpl implements UserService { String suggestion = (String) imageResult.get("suggestion"); - if ("block".equals(suggestion)) { + if (GreenAuditResult.BLOCK.equals(suggestion)) { throw new RuntimeException("头像或背景图不合规,修改失败"); } - if ("review".equals(suggestion)) { + if (GreenAuditResult.REVIEW.equals(suggestion)) { throw new RuntimeException("头像或背景图需要人工审核,暂无法修改"); } } diff --git a/src/main/java/com/bao/dating/util/FileUtil.java b/src/main/java/com/bao/dating/util/FileUtil.java index 5543dcd..60e4636 100644 --- a/src/main/java/com/bao/dating/util/FileUtil.java +++ b/src/main/java/com/bao/dating/util/FileUtil.java @@ -1,5 +1,7 @@ package com.bao.dating.util; +import com.bao.dating.common.result.FileResult; + /** * 文件工具类 * @author KilLze @@ -13,9 +15,9 @@ public class FileUtil { public static String getFileType(String fileUrl) { String extension = getFileExtension(fileUrl); - if (extension.equals("jpg") || extension.equals("jpeg") || extension.equals("png") || extension.equals("gif")) { + if (FileResult.JPG.equals(extension) || FileResult.JPEG.equals(extension) || FileResult.PNG.equals(extension) || FileResult.GIF.equals(extension)) { return "image"; - } else if (extension.equals("mp4") || extension.equals("avi") || extension.equals("mov")) { + } else if (FileResult.MP4.equals(extension) || FileResult.AVI.equals(extension) || FileResult.MOV.equals(extension)) { return "video"; } return "unknown";