You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package com.example.demo.serviceImpl.coin;
import com.example.demo.domain.vo.coin.RechargeActivity;import com.example.demo.mapper.coin.RechargeActivityCenterMapper;import com.example.demo.service.coin.RechargeActivityCenterService;import com.github.pagehelper.PageHelper;import com.github.pagehelper.PageInfo;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;
import java.time.LocalDateTime;import java.util.Date;import java.util.List;import java.util.regex.Pattern;
/** * @program: gold-java * @ClassName RechargeActivityCenterServiceImpl * @description: 充值活动中心服务实现类 * @author: Double * @create: 2025−10-28 14:40 * @Version 1.0 **/
@Servicepublic class RechargeActivityCenterServiceImpl implements RechargeActivityCenterService {
@Autowired private RechargeActivityCenterMapper rechargeActivityCenterMapper;
private static final String ACTIVITY_NAME_REGEX = "^[\\u4e00-\\u9fa5a-zA-Z0-9,。!?、;:\"'()《》【】——~,.:;!'()\\[\\]-_&+=]{1,50}$"; private static final Pattern ACTIVITY_NAME_PATTERN = Pattern.compile(ACTIVITY_NAME_REGEX); // 根据ID查询活动
@Override public PageInfo<RechargeActivity> queryActivity(Integer pageNum, Integer pageSize, RechargeActivity activity) { updateStatus(); PageHelper.startPage(pageNum, pageSize); List<RechargeActivity> activityList = rechargeActivityCenterMapper.queryActivity(activity); return new PageInfo<>(activityList); }
// 新增活动
@Override public void addActivity(RechargeActivity activity) {
if (activity.getActivityName().length() > 50) { throw new IllegalArgumentException("活动名称不能超过50个字符"); } RechargeActivity activityByName = rechargeActivityCenterMapper.queryActivityByName(activity); if (activityByName != null) { throw new IllegalArgumentException("活动名称已存在"); } // 3. 字符格式校验
if (!ACTIVITY_NAME_PATTERN.matcher(activity.getActivityName()).matches()) { throw new IllegalArgumentException("活动名称仅允许包含汉字、英文字母、数字及常见标点符号(中英文标点:,。!?、;:\"'()《》【】——~,.:;!'()[]-_&+=)"); } Date startTime = activity.getStartTime(); Date endTime = activity.getEndTime();
//获取当前系统时间(本地时间,与活动时间时区保持一致)
Date now = new Date();
//时间范围判断,设置对应状态
if (now.before(startTime)) { // 当前时间 < 开始时间 → 未开始(状态0)
activity.setStatus("0"); } else if (now.after(endTime)) { // 当前时间 > 结束时间 → 已结束(状态2)
activity.setStatus("2"); } else { // 开始时间 ≤ 当前时间 ≤ 结束时间 → 进行中(状态1)
activity.setStatus("1"); } rechargeActivityCenterMapper.addActivity(activity); }
// 更新活动
@Override public void updateActivity(RechargeActivity activity) { Date startTime = activity.getStartTime(); Date endTime = activity.getEndTime();
//获取当前系统时间(本地时间,与活动时间时区保持一致)
Date now = new Date();
//时间范围判断,设置对应状态
if (now.before(startTime)) { // 当前时间 < 开始时间 → 未开始(状态0)
activity.setStatus("0"); } else if (now.after(endTime)) { // 当前时间 > 结束时间 → 已结束(状态2)
activity.setStatus("2"); } else { // 开始时间 ≤ 当前时间 ≤ 结束时间 → 进行中(状态1)
activity.setStatus("1"); } rechargeActivityCenterMapper.updateActivity(activity); }
@Override public void updateStatus() { // 查询所有活动
List<RechargeActivity> activityList = rechargeActivityCenterMapper.listActivities();
if (activityList == null || activityList.isEmpty()) { return; }
Date now = new Date();
// 遍历所有活动,更新状态
for (RechargeActivity activity : activityList) { Date startTime = activity.getStartTime(); Date endTime = activity.getEndTime();
// 跳过时间为空的活动
if (startTime == null || endTime == null) { continue; }
String newStatus;
// 时间范围判断,设置对应状态
if (now.before(startTime)) { // 当前时间 < 开始时间 → 未开始(状态0)
newStatus = "0"; } else if (now.after(endTime)) { // 当前时间 > 结束时间 → 已结束(状态2)
newStatus = "2"; } else { // 开始时间 ≤ 当前时间 ≤ 结束时间 → 进行中(状态1)
newStatus = "1"; }
// 只有当状态发生变化时才更新
if (!newStatus.equals(activity.getStatus())) { activity.setStatus(newStatus); rechargeActivityCenterMapper.updateActivity(activity); } } }
// 删除活动
@Override public void deleteActivity(RechargeActivity activity) { rechargeActivityCenterMapper.deleteActivity(activity); }}
|