feat(search): 实现用户搜索昵称高亮与粉丝数格式化- 添加昵称高亮字段 highlightNickname 到 SearchUserRspVO

- 修改粉丝总数字段类型为 String,支持格式化显示
- 引入 NumberUtils 工具类,实现数字转“万”单位格式
- 配置 Elasticsearch 查询高亮规则,支持昵称关键词高亮
- 新增 mergeHitToRspVO 方法,合并原始数据与高亮结果
- 优化搜索请求构建逻辑,增强可读性与扩展性
This commit is contained in:
2025-11-01 13:50:18 +08:00
parent 4e00542371
commit 4b13e52a29
4 changed files with 140 additions and 42 deletions

View File

@@ -0,0 +1,39 @@
package com.hanserwei.framework.common.utils;
import java.math.RoundingMode;
import java.text.DecimalFormat;
public class NumberUtils {
/**
* 数字转换字符串
*
* @param number 数字
* @return 字符串
*/
public static String formatNumberString(long number) {
if (number < 10000) {
return String.valueOf(number); // 小于 1 万显示原始数字
} else if (number < 100000000) {
// 小于 1 亿,显示万单位
double result = number / 10000.0;
DecimalFormat df = new DecimalFormat("#.#"); // 保留 1 位小数
df.setRoundingMode(RoundingMode.DOWN); // 禁用四舍五入
String formatted = df.format(result);
return formatted + "";
} else {
return "9999万"; // 超过 1 亿,统一显示 9999万
}
}
public static void main(String[] args) {
// 测试
System.out.println(formatNumberString(1000)); // 1000
System.out.println(formatNumberString(11130)); // 1.1万
System.out.println(formatNumberString(26719300)); // 2671.9万
System.out.println(formatNumberString(10000000)); // 1000万
System.out.println(formatNumberString(999999)); // 99.9万
System.out.println(formatNumberString(150000000)); // 超过一亿展示9999万
System.out.println(formatNumberString(99999)); // 9.9万
}
}