bonus_houqin

This commit is contained in:
sxu 2025-02-16 06:41:55 +08:00
parent fa901ec458
commit dc5b5d538e
6 changed files with 78 additions and 1 deletions

View File

@ -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个字符")

View File

@ -174,6 +174,11 @@
<version>33.0.0-jre</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.0</version>
</dependency>
</dependencies>
</project>

View File

@ -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);
}
}

View File

@ -164,4 +164,5 @@ public interface SysUserMapper {
*/
public SysUser selectCustInfoByPhoneNumber(@Param("phoneNumber") String phoneNumber);
public int updateNickNameLike(SysUser sysUser);
}

View File

@ -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<SysUser> sysUsers) {
for (SysUser sysUser : sysUsers) {
sysUser.setNickNameLike(PinyingUtils.convertToPinyin(Sm4Utils.custDecrypt(sysUser.getNickName())));
int count = userMapper.updateNickNameLike(sysUser);
}
}
/**
* 根据条件分页查询已分配用户角色列表
*

View File

@ -382,4 +382,10 @@
</where>
</select>
<!-- 更新nick_name_like -->
<delete id="updateNickNameLike" parameterType="com.bonus.system.api.domain.SysUser">
update sys_user set nick_name_like = #{nickNameLike}
where user_id = #{userId}
</delete>
</mapper>