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} + +