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.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.ReviewMapper;
import com.guwan.backend.pojo.dto.SubmitReviewDTO;
@ -13,7 +15,10 @@ import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
/**
* @author 12455
@ -40,7 +45,14 @@ public class ReviewServiceImpl extends ServiceImpl<ReviewMapper, Review>
review.setUserId(String.valueOf(submitReviewDTO.getUserId()));
Integer rating = submitReviewDTO.getRating();
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.setCreatedAt(new Date());
review.setUpdatedAt(new Date());