量表发布过期判断

This commit is contained in:
cjw 2024-04-15 15:35:10 +08:00
parent a154caee2a
commit 0a27a4ca98
4 changed files with 65 additions and 6 deletions

View File

@ -125,7 +125,14 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
* 计算相差天数
*/
public static int differentDaysByMillisecond(Date date1, Date date2) {
return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24)));
return Math.abs((int) (differentMillisecond(date1, date2) / (1000 * 3600 * 24)));
}
/**
* 计算相差毫秒数
*/
public static long differentMillisecond(Date date1, Date date2) {
return date2.getTime() - date1.getTime();
}
/**

View File

@ -3,6 +3,7 @@ package org.dromara.scale.controller.web;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.domain.model.LoginUser;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
@ -19,6 +20,8 @@ import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
import static org.dromara.common.satoken.utils.LoginHelper.getLoginUser;
/**
* <p>TODO<p>
*

View File

@ -9,10 +9,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.model.LoginUser;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.redis.utils.QueueUtils;
import org.dromara.scale.constant.StatusEnum;
import org.dromara.scale.domain.SysScalePublish;
import org.dromara.scale.domain.bo.SysScalePublishBo;
@ -26,6 +28,7 @@ import org.springframework.stereotype.Service;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import static org.dromara.common.satoken.utils.LoginHelper.getLoginUser;
@ -95,7 +98,12 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
add.setCreateBy(loginUser.getUserId());
add.setCreateTime(new Date());
validEntityBeforeSave(add);
//将时间校验移出来方便后面使用
Date expireTime = add.getExpireTime();
long l = DateUtils.differentMillisecond(new Date(), expireTime);
if(l<=1000 * 3600 * 12){
throw new ServiceException("截止日期必须在六小时后");
}
if (CollUtil.isNotEmpty(bo.getScaleIds())) {
List<SysScaleVo> list = sysScaleMapper.findSysScaleByIds(StrUtil.join(StrUtil.COMMA, bo.getScaleIds()));
add.setScaleNames(list.stream().map(SysScaleVo::getScaleName).collect(Collectors.joining(StrUtil.COMMA)));
@ -113,7 +121,8 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
if (flag) {
bo.setBatchNo(add.getBatchNo());
}
//加入延迟队列
QueueUtils.addDelayedQueueObject("scalePublish-delay-queue", add.getBatchNo(), l, TimeUnit.MILLISECONDS);
return flag;
}
@ -134,9 +143,9 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService {
//TODO 做一些数据校验,如唯一约束
Long deptId = entity.getDeptId();
List<SysScalePublishVo> sysScalePublishVos = baseMapper.selectVoList(new LambdaQueryWrapper<SysScalePublish>()
.eq(SysScalePublish::getDeptId, deptId)
.eq(SysScalePublish::getStatus, StatusEnum.IN_USE.getValue()));
if(!ArrayUtil.isEmpty(sysScalePublishVos)){
.eq(SysScalePublish::getDeptId, deptId)
.eq(SysScalePublish::getStatus, StatusEnum.IN_USE.getValue()));
if (!ArrayUtil.isEmpty(sysScalePublishVos)) {
throw new ServiceException("此年级下已有发布");
}
}

View File

@ -0,0 +1,40 @@
package org.dromara.scale.starter;
import lombok.RequiredArgsConstructor;
import org.dromara.common.redis.utils.QueueUtils;
import org.dromara.scale.constant.StatusEnum;
import org.dromara.scale.domain.SysScalePublish;
import org.dromara.scale.mapper.SysScalePublishMapper;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
/**
* <p>项目初始化执行的任务<p>
*
* @author cjw
* @version V1.0.0
* @date 2024/4/15 15:08
*/
@Component
@RequiredArgsConstructor
@Order(value = 99)
public class ApplicationStarter implements CommandLineRunner {
private final SysScalePublishMapper publishMapper;
@Override
public void run(String... strings){
subscribeRedisDelayedQueue();
}
private void subscribeRedisDelayedQueue(){
// 项目初始化设置一次即可
QueueUtils.subscribeBlockingQueue("scalePublish-delay-queue", (Long batchNo) -> {
SysScalePublish publish = new SysScalePublish();
publish.setBatchNo(batchNo);
publish.setStatus(StatusEnum.DISABLED.getValue());
publishMapper.updateById(publish);
}, true);
}
}