package cn.lili.utils;
|
|
|
import cn.lili.common.utils.StringUtils;
|
|
import java.util.Calendar;
|
import java.util.Date;
|
|
/**
|
* lmk-shop-java
|
* 工具
|
*
|
* @author : zxl
|
* @date : 2025-08-07 14:40
|
**/
|
|
|
public class CommonUtil {
|
|
public static Date[] getMonthStartAndEnd(int year, int month) {
|
Calendar calendar = Calendar.getInstance();
|
Date[] result = new Date[2];
|
|
// 设置月份起始时间(当月的第一天 00:00:00)
|
calendar.set(Calendar.YEAR, year);
|
calendar.set(Calendar.MONTH, month - 1); // Calendar月份从0开始,0=1月
|
calendar.set(Calendar.DAY_OF_MONTH, 1);
|
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
calendar.set(Calendar.MINUTE, 0);
|
calendar.set(Calendar.SECOND, 0);
|
calendar.set(Calendar.MILLISECOND, 0);
|
|
result[0] = calendar.getTime(); // 月份起始时间
|
|
// 设置月份结束时间(下个月的第一天 00:00:00,然后减1毫秒)
|
calendar.add(Calendar.MONTH, 1);
|
calendar.add(Calendar.MILLISECOND, -1);
|
|
result[1] = calendar.getTime(); // 月份结束时间
|
|
return result;
|
}
|
|
public static String maskName(String name) {
|
if (StringUtils.isBlank(name)) {
|
return "";
|
}
|
// 规则:保留第一个字符,其余替换为 *
|
return name.charAt(0) + StringUtils.repeat("*", name.length() - 1);
|
}
|
/**
|
* 通用手机号脱敏:无论位数多少,均替换中间4位
|
* 示例:
|
* - 13812345678 → 138****5678
|
* - 12345678 → 12****78
|
* - 12345 → 1****5 (不足4位时全部替换)
|
*/
|
public static String maskMobile(String mobile) {
|
String digits = mobile.replaceAll("[^0-9]", "");
|
int length = digits.length();
|
|
// 2. 短号码直接隐藏
|
if (length <= 4) {
|
return "****";
|
}
|
|
// 3. 保留前2位和后2位,替换中间
|
return digits.replaceAll("(\\d{2})\\d+(\\d{2})", "$1****$2");
|
}
|
|
}
|