Browse Source

11月21日字符串提示

sunjiabei/feature-20251021102635-银行接口
sunjiabei 4 days ago
parent
commit
ede69a52b6
  1. 46
      src/main/java/com/example/demo/serviceImpl/coin/RechargeActivityCenterServiceImpl.java

46
src/main/java/com/example/demo/serviceImpl/coin/RechargeActivityCenterServiceImpl.java

@ -29,7 +29,7 @@ public class RechargeActivityCenterServiceImpl implements RechargeActivityCenter
@Autowired
private RechargeActivityCenterMapper rechargeActivityCenterMapper;
private static final String ACTIVITY_NAME_REGEX = "^[\\u4e00-\\u9fa5a-zA-Z0-9,。!?、;:\"'()《》【】——~,.:;!'()\\[\\]-_&+=]{1,100}$";
private static final String ACTIVITY_NAME_REGEX = "^[\\u4e00-\\u9fa5a-zA-Z0-9,。!?、;:\"'‘’“”()《》【】——~,.:;!()\\[\\]-_&+=]{1,100}$";
private static final Pattern ACTIVITY_NAME_PATTERN = Pattern.compile(ACTIVITY_NAME_REGEX);
// 根据ID查询活动
@Override
@ -43,35 +43,51 @@ public class RechargeActivityCenterServiceImpl implements RechargeActivityCenter
// 新增活动
@Override
public void addActivity(RechargeActivity activity) {
String activityName = activity.getActivityName();
if (activity.getActivityName().length() > 100) {
// 1. 长度校验
if (activityName.length() > 100) {
throw new IllegalArgumentException("活动名称不能超过100个字符");
}
// 2. 名称重复校验
RechargeActivity activityByName = rechargeActivityCenterMapper.queryActivityByName(activity);
if (activityByName != null) {
throw new IllegalArgumentException("活动名称已存在");
}
// 3. 字符格式校验
if (!ACTIVITY_NAME_PATTERN.matcher(activity.getActivityName()).matches()) {
throw new IllegalArgumentException("活动名称仅允许包含汉字、英文字母、数字及常见标点符号(中英文标点:,。!?、;:\"'()《》【】——~,.:;!'()[]-_&+=)");
// 3. 字符格式校验提取非法字符
if (!ACTIVITY_NAME_PATTERN.matcher(activityName).matches()) {
// 反向匹配提取所有不符合规则的字符
StringBuilder illegalChars = new StringBuilder();
for (char c : activityName.toCharArray()) {
if (!ACTIVITY_NAME_PATTERN.matcher(String.valueOf(c)).matches()) {
// 去重避免重复输出同一非法字符
if (illegalChars.indexOf(String.valueOf(c)) == -1) {
illegalChars.append(c).append("、");
}
}
}
// 去除最后一个顿号拼接提示信息
String illegalStr = illegalChars.deleteCharAt(illegalChars.length() - 1).toString();
throw new IllegalArgumentException(
String.format("活动名称包含非法字符:%s,仅允许包含汉字、英文字母、数字及常见标点符号(中英文标点:,。!?、;:\"'‘’“”()《》【】——~,.:;!()[]-_&+=)", illegalStr)
);
}
// 4. 时间范围判断设置对应状态
Date startTime = activity.getStartTime();
Date endTime = activity.getEndTime();
Date now = new Date(); // 当前系统本地时间
//获取当前系统时间本地时间与活动时间时区保持一致
Date now = new Date();
//时间范围判断设置对应状态
if (now.before(startTime)) {
// 当前时间 < 开始时间 未开始状态0
activity.setStatus("0");
activity.setStatus("0"); // 未开始
} else if (now.after(endTime)) {
// 当前时间 > 结束时间 已结束状态2
activity.setStatus("2");
activity.setStatus("2"); // 已结束
} else {
// 开始时间 当前时间 结束时间 进行中状态1
activity.setStatus("1");
activity.setStatus("1"); // 进行中
}
rechargeActivityCenterMapper.addActivity(activity);
}

Loading…
Cancel
Save