feature: [评论的屏蔽字-DFA算法]

This commit is contained in:
ovo 2025-05-09 00:18:37 +08:00
parent 1b4f330af6
commit d25063164b
2 changed files with 24 additions and 1 deletions

View File

@ -0,0 +1,11 @@
package com.guwan.backend.constant;
import java.util.Set;
public class SensitiveWordConstants {
public static final Set<String> SENSITIVE_WORD = Set.of(
"傻瓜",
"笨蛋",
"白痴"
);
}

View File

@ -2,6 +2,8 @@ package com.guwan.backend.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.guwan.backend.constant.SensitiveWordConstants;
import com.guwan.backend.filter.SensitiveWordFilter;
import com.guwan.backend.mapper.RatingDistributionMapper; import com.guwan.backend.mapper.RatingDistributionMapper;
import com.guwan.backend.mapper.ReviewMapper; import com.guwan.backend.mapper.ReviewMapper;
import com.guwan.backend.pojo.dto.SubmitReviewDTO; import com.guwan.backend.pojo.dto.SubmitReviewDTO;
@ -13,7 +15,10 @@ import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.HashSet;
import java.util.Set;
/** /**
* @author 12455 * @author 12455
@ -40,7 +45,14 @@ public class ReviewServiceImpl extends ServiceImpl<ReviewMapper, Review>
review.setUserId(String.valueOf(submitReviewDTO.getUserId())); review.setUserId(String.valueOf(submitReviewDTO.getUserId()));
Integer rating = submitReviewDTO.getRating(); Integer rating = submitReviewDTO.getRating();
review.setRating(rating); review.setRating(rating);
review.setContent(submitReviewDTO.getContent()); // TODO DFA算法
SensitiveWordFilter filter = new SensitiveWordFilter(SensitiveWordConstants.SENSITIVE_WORD);
String content = submitReviewDTO.getContent();
content = filter.replace(content);
review.setContent(content);
review.setDate(new Date()); review.setDate(new Date());
review.setCreatedAt(new Date()); review.setCreatedAt(new Date());
review.setUpdatedAt(new Date()); review.setUpdatedAt(new Date());