From dc5b5d538eaba1783276eb9c715d4e3f817191d1 Mon Sep 17 00:00:00 2001
From: sxu <602087911@qq.com>
Date: Sun, 16 Feb 2025 06:41:55 +0800
Subject: [PATCH] bonus_houqin
---
.../com/bonus/system/api/domain/SysUser.java | 15 ++++++-
bonus-common/bonus-common-core/pom.xml | 5 +++
.../bonus/common/core/utils/PinyingUtils.java | 44 +++++++++++++++++++
.../bonus/system/mapper/SysUserMapper.java | 1 +
.../service/impl/SysUserServiceImpl.java | 8 ++++
.../resources/mapper/system/SysUserMapper.xml | 6 +++
6 files changed, 78 insertions(+), 1 deletion(-)
create mode 100644 bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/PinyingUtils.java
diff --git a/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysUser.java b/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysUser.java
index 2e88531..4579fb5 100644
--- a/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysUser.java
+++ b/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/domain/SysUser.java
@@ -61,6 +61,11 @@ public class SysUser extends BaseEntity {
@Excel(name = "用户名称")
private String nickName;
+ /**
+ * 用户昵称的拼音
+ */
+ private String nickNameLike;
+
/**
* 用户邮箱
*/
@@ -211,7 +216,7 @@ public class SysUser extends BaseEntity {
}
@Xss(message = "用户昵称不能包含脚本字符")
- @Size(min = 0, max = 20, message = "用户昵称长度不能超过20个字符")
+ @Size(min = 0, max = 200, message = "用户昵称长度不能超过200个字符")
public String getNickName() {
return nickName;
}
@@ -220,6 +225,14 @@ public class SysUser extends BaseEntity {
this.nickName = nickName;
}
+ public String getNickNameLike() {
+ return nickNameLike;
+ }
+
+ public void setNickNameLike(String nickNameLike) {
+ this.nickNameLike = nickNameLike;
+ }
+
@Xss(message = "用户账号不能包含脚本字符")
@NotBlank(message = "用户账号不能为空")
@Size(min = 0, max = 20, message = "用户账号长度不能超过20个字符")
diff --git a/bonus-common/bonus-common-core/pom.xml b/bonus-common/bonus-common-core/pom.xml
index 6e10994..a70e384 100644
--- a/bonus-common/bonus-common-core/pom.xml
+++ b/bonus-common/bonus-common-core/pom.xml
@@ -174,6 +174,11 @@
33.0.0-jre
compile
+
+ com.belerweb
+ pinyin4j
+ 2.5.0
+
diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/PinyingUtils.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/PinyingUtils.java
new file mode 100644
index 0000000..7b2479f
--- /dev/null
+++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/utils/PinyingUtils.java
@@ -0,0 +1,44 @@
+package com.bonus.common.core.utils;
+
+import lombok.extern.slf4j.Slf4j;
+import net.sourceforge.pinyin4j.PinyinHelper;
+import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
+import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
+import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
+
+@Slf4j
+public class PinyingUtils {
+ public static String convertToPinyin(String text) {
+ StringBuilder pinyin = new StringBuilder();
+ HanyuPinyinOutputFormat hanyuPinyinOutputFormat = new HanyuPinyinOutputFormat();
+ hanyuPinyinOutputFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
+ for (char ch : text.toCharArray()) {
+ // 只处理中文字符
+ if (Character.toString(ch).matches("[\\u4E00-\\u9FA5]+")) {
+ String[] pinyinArray = new String[0];
+ try {
+ pinyinArray = PinyinHelper.toHanyuPinyinStringArray(ch, hanyuPinyinOutputFormat);
+ if (pinyinArray != null && pinyinArray.length > 0) {
+ pinyin.append(pinyinArray[0]); // 取第一个拼音,通常是标准的普通话拼音
+ } else {
+ pinyin.append(ch); // 如果无法转换,则保留原字符
+ }
+ } catch (BadHanyuPinyinOutputFormatCombination e) {
+ pinyin.append(ch); // 如果无法转换,则保留原字符
+ log.error("拼音转换失败," + ch);
+ }
+ pinyin.append(""); // 添加空格以便区分不同的汉字拼音
+ } else {
+ pinyin.append(ch); // 非中文字符直接添加
+ }
+ }
+ return pinyin.toString().trim(); // 移除尾部的空格
+ }
+
+ public static void main(String[] args) {
+ String text = "盛旭";
+ String pinyin = convertToPinyin(text);
+ System.out.println(pinyin);
+ }
+
+}
diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysUserMapper.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysUserMapper.java
index 186350d..4405ff1 100644
--- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysUserMapper.java
+++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/mapper/SysUserMapper.java
@@ -164,4 +164,5 @@ public interface SysUserMapper {
*/
public SysUser selectCustInfoByPhoneNumber(@Param("phoneNumber") String phoneNumber);
+ public int updateNickNameLike(SysUser sysUser);
}
diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysUserServiceImpl.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysUserServiceImpl.java
index f041e25..f5d8aec 100644
--- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysUserServiceImpl.java
+++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/service/impl/SysUserServiceImpl.java
@@ -4,6 +4,7 @@ import com.bonus.common.core.constant.Constants;
import com.bonus.common.core.constant.UserConstants;
import com.bonus.common.core.domain.R;
import com.bonus.common.core.exception.ServiceException;
+import com.bonus.common.core.utils.PinyingUtils;
import com.bonus.common.core.utils.SpringUtils;
import com.bonus.common.core.utils.StringUtils;
import com.bonus.common.core.utils.bean.BeanValidators;
@@ -111,6 +112,13 @@ public class SysUserServiceImpl implements ISysUserService {
return sysUsers;
}
+ private void updateNickNameLike(List sysUsers) {
+ for (SysUser sysUser : sysUsers) {
+ sysUser.setNickNameLike(PinyingUtils.convertToPinyin(Sm4Utils.custDecrypt(sysUser.getNickName())));
+ int count = userMapper.updateNickNameLike(sysUser);
+ }
+ }
+
/**
* 根据条件分页查询已分配用户角色列表
*
diff --git a/bonus-modules/bonus-system/src/main/resources/mapper/system/SysUserMapper.xml b/bonus-modules/bonus-system/src/main/resources/mapper/system/SysUserMapper.xml
index 60764e6..5d6252c 100644
--- a/bonus-modules/bonus-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/bonus-modules/bonus-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -382,4 +382,10 @@
+
+
+ update sys_user set nick_name_like = #{nickNameLike}
+ where user_id = #{userId}
+
+