feat(search): 实现用户搜索昵称高亮与粉丝数格式化- 添加昵称高亮字段 highlightNickname 到 SearchUserRspVO
- 修改粉丝总数字段类型为 String,支持格式化显示 - 引入 NumberUtils 工具类,实现数字转“万”单位格式 - 配置 Elasticsearch 查询高亮规则,支持昵称关键词高亮 - 新增 mergeHitToRspVO 方法,合并原始数据与高亮结果 - 优化搜索请求构建逻辑,增强可读性与扩展性
This commit is contained in:
@@ -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万
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user