From 62b2507eed8aa716b34331b0081c38ded03a64f5 Mon Sep 17 00:00:00 2001 From: xiongxiaoyang <1179705413@qq.com> Date: Wed, 21 Oct 2026 11:49:50 +0800 Subject: [PATCH] =?UTF-8?q?perf(novel-front):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=98=B5=E7=A7=B0=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serialize/CommentUserNameSerialize.java | 8 +--- .../novel/core/utils/NameMaskUtil.java | 46 +++++++++++++++++++ .../mybatis/mapping/BookCommentMapper.xml | 2 +- .../mapping/BookCommentReplyMapper.xml | 2 +- .../FrontBookParagraphCommentMapper.xml | 4 +- .../mapping/FrontUserMessageMapper.xml | 2 +- .../src/main/resources/static/css/base.css | 2 +- .../resources/static/javascript/common.js | 1 - .../main/resources/static/mobile/js/common.js | 2 - .../resources/templates/book/book_detail.html | 2 +- .../templates/mobile/book/book_detail.html | 2 +- .../resources/templates/user/comment.html | 2 +- 12 files changed, 57 insertions(+), 18 deletions(-) create mode 100644 novel-front/src/main/java/com/java2nb/novel/core/utils/NameMaskUtil.java diff --git a/novel-front/src/main/java/com/java2nb/novel/core/serialize/CommentUserNameSerialize.java b/novel-front/src/main/java/com/java2nb/novel/core/serialize/CommentUserNameSerialize.java index 8e86da2..ff6fbd3 100644 --- a/novel-front/src/main/java/com/java2nb/novel/core/serialize/CommentUserNameSerialize.java +++ b/novel-front/src/main/java/com/java2nb/novel/core/serialize/CommentUserNameSerialize.java @@ -3,7 +3,7 @@ package com.java2nb.novel.core.serialize; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; -import org.apache.commons.lang3.StringUtils; +import com.java2nb.novel.core.utils.NameMaskUtil; import java.io.IOException; @@ -11,10 +11,6 @@ public class CommentUserNameSerialize extends JsonSerializer { @Override public void serialize(String s, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { - - if(StringUtils.isNotBlank(s)){ - jsonGenerator.writeString(s.substring(0, 4) + "****" + s.substring(s.length() - 3)); - } - + jsonGenerator.writeString(NameMaskUtil.maskIfNeeded(s)); } } \ No newline at end of file diff --git a/novel-front/src/main/java/com/java2nb/novel/core/utils/NameMaskUtil.java b/novel-front/src/main/java/com/java2nb/novel/core/utils/NameMaskUtil.java new file mode 100644 index 0000000..516bc78 --- /dev/null +++ b/novel-front/src/main/java/com/java2nb/novel/core/utils/NameMaskUtil.java @@ -0,0 +1,46 @@ +package com.java2nb.novel.core.utils; + +import org.apache.commons.lang3.StringUtils; + +import java.util.regex.Pattern; + +/** + * 用户名/昵称展示脱敏工具 + *

+ * 若昵称是手机号格式,隐藏中间四位;其它情况原样返回。 + * + * @author 11797 + */ +public final class NameMaskUtil { + + /** + * 中国大陆手机号格式:1开头,第二位3-9,共11位 + */ + private static final Pattern PHONE_PATTERN = Pattern.compile("^1[3-9]\\d{9}$"); + + private static final String DEFAULT_DISPLAY = "匿名用户"; + + private NameMaskUtil() { + } + + /** + * 判断字符串是否为手机号格式 + */ + public static boolean isPhone(String s) { + return StringUtils.isNotBlank(s) && PHONE_PATTERN.matcher(s).matches(); + } + + /** + * 展示用脱敏:空返回「匿名用户」;手机号中间四位打码;其它原样 + */ + public static String maskIfNeeded(String s) { + if (StringUtils.isBlank(s)) { + return DEFAULT_DISPLAY; + } + String trim = s.trim(); + if (isPhone(trim)) { + return trim.substring(0, 3) + "****" + trim.substring(trim.length() - 4); + } + return trim; + } +} diff --git a/novel-front/src/main/resources/mybatis/mapping/BookCommentMapper.xml b/novel-front/src/main/resources/mybatis/mapping/BookCommentMapper.xml index 6aaa12b..8f49f91 100644 --- a/novel-front/src/main/resources/mybatis/mapping/BookCommentMapper.xml +++ b/novel-front/src/main/resources/mybatis/mapping/BookCommentMapper.xml @@ -4,7 +4,7 @@ - select t1.id,t1.reply_content,t1.location,t1.create_time,t2.username create_user_name,t2.user_photo create_user_photo + select t1.id,t1.reply_content,t1.location,t1.create_time,IFNULL(NULLIF(t2.nick_name, ''), t2.username) create_user_name,t2.user_photo create_user_photo from book_comment_reply t1 inner join user t2 on t1.create_user_id = t2.id diff --git a/novel-front/src/main/resources/mybatis/mapping/FrontBookParagraphCommentMapper.xml b/novel-front/src/main/resources/mybatis/mapping/FrontBookParagraphCommentMapper.xml index ac351ca..91b9238 100644 --- a/novel-front/src/main/resources/mybatis/mapping/FrontBookParagraphCommentMapper.xml +++ b/novel-front/src/main/resources/mybatis/mapping/FrontBookParagraphCommentMapper.xml @@ -14,7 +14,7 @@ select t1.id, t1.book_id, t1.book_index_id, t1.paragraph_idx, t1.root_id, t1.reply_user_name, t1.reply_count, t1.comment_content, t1.location, t1.create_user_id, t1.create_time, - t2.username create_user_name, t2.user_photo create_user_photo + IFNULL(NULLIF(t2.nick_name, ''), t2.username) create_user_name, t2.user_photo create_user_photo from book_paragraph_comment t1 inner join user t2 on t1.create_user_id = t2.id where t1.id = #{id} diff --git a/novel-front/src/main/resources/mybatis/mapping/FrontUserMessageMapper.xml b/novel-front/src/main/resources/mybatis/mapping/FrontUserMessageMapper.xml index fdc4dce..d5020e6 100644 --- a/novel-front/src/main/resources/mybatis/mapping/FrontUserMessageMapper.xml +++ b/novel-front/src/main/resources/mybatis/mapping/FrontUserMessageMapper.xml @@ -10,7 +10,7 @@