|
@@ -2,6 +2,7 @@ package com.cyksj.service.home.impl;
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
+import cn.hutool.core.date.DateTime;
|
|
|
import cn.hutool.core.lang.Assert;
|
|
import cn.hutool.core.lang.Assert;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
@@ -10,13 +11,19 @@ import com.cyksj.mapper.GoodsDonMapper;
|
|
|
import com.cyksj.mapper.manage.home.HomeManagementConfigMapper;
|
|
import com.cyksj.mapper.manage.home.HomeManagementConfigMapper;
|
|
|
import com.cyksj.model.entity.GoodsDon;
|
|
import com.cyksj.model.entity.GoodsDon;
|
|
|
import com.cyksj.model.entity.HomeManagementConfig;
|
|
import com.cyksj.model.entity.HomeManagementConfig;
|
|
|
|
|
+import com.cyksj.model.entity.SysFuncTimingShelf;
|
|
|
|
|
+import com.cyksj.model.request.HomeConfigTimingReq;
|
|
|
import com.cyksj.model.request.HomeManageConfigReq;
|
|
import com.cyksj.model.request.HomeManageConfigReq;
|
|
|
import com.cyksj.service.home.HomeManagementConfigService;
|
|
import com.cyksj.service.home.HomeManagementConfigService;
|
|
|
|
|
+import com.cyksj.service.sys.SysFuncTimingShelfService;
|
|
|
|
|
+import com.cyksj.task.JobManager;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
+import java.util.Optional;
|
|
|
|
|
|
|
|
/*
|
|
/*
|
|
|
*项目名: netflix
|
|
*项目名: netflix
|
|
@@ -30,6 +37,10 @@ import java.util.List;
|
|
|
public class HomeManagementConfigServiceImpl extends ServiceImpl<HomeManagementConfigMapper, HomeManagementConfig> implements HomeManagementConfigService {
|
|
public class HomeManagementConfigServiceImpl extends ServiceImpl<HomeManagementConfigMapper, HomeManagementConfig> implements HomeManagementConfigService {
|
|
|
private final GoodsDonMapper goodsDonMapper;
|
|
private final GoodsDonMapper goodsDonMapper;
|
|
|
|
|
|
|
|
|
|
+ private final SysFuncTimingShelfService sysFuncTimingShelfService;
|
|
|
|
|
+
|
|
|
|
|
+ private final JobManager jobManager;
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public void saveOrUpdateConfig(HomeManageConfigReq config) {
|
|
public void saveOrUpdateConfig(HomeManageConfigReq config) {
|
|
|
if (isSpecialType(config.getType())) {
|
|
if (isSpecialType(config.getType())) {
|
|
@@ -73,4 +84,94 @@ public class HomeManagementConfigServiceImpl extends ServiceImpl<HomeManagementC
|
|
|
}
|
|
}
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ @Transactional(rollbackFor = Throwable.class)
|
|
|
|
|
+ public void timingUpdateStatus(HomeConfigTimingReq req) {
|
|
|
|
|
+ Long id = req.getId();
|
|
|
|
|
+ HomeManagementConfig config = this.getById(id);
|
|
|
|
|
+ if (config == null || !config.getDeleted()) {
|
|
|
|
|
+ throw BusinessRuntimeException.getInstance("对应配置不存在..");
|
|
|
|
|
+ }
|
|
|
|
|
+ Boolean preStatus = Optional.ofNullable(req.getPreStatus()).orElse(false);
|
|
|
|
|
+ //上架状态
|
|
|
|
|
+ if (config.getStatus() && preStatus) {
|
|
|
|
|
+ throw BusinessRuntimeException.getInstance("该首页配置已上架,只能定时下架..");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (!config.getStatus() && !preStatus) {
|
|
|
|
|
+ throw BusinessRuntimeException.getInstance("该首页配置已下架,只能定时上架..");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ Long time = req.getTime();
|
|
|
|
|
+ Long nowMills = System.currentTimeMillis();
|
|
|
|
|
+
|
|
|
|
|
+ //直接将配置改为对应 定时上下架状态
|
|
|
|
|
+ Boolean timingJob = true;
|
|
|
|
|
+ if (time <= nowMills) {
|
|
|
|
|
+ config.setStatus(preStatus);
|
|
|
|
|
+ config.setTime(null);
|
|
|
|
|
+ config.setPreStatus(null);
|
|
|
|
|
+ timingJob = false;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ config.setTime(time);
|
|
|
|
|
+ config.setPreStatus(preStatus);
|
|
|
|
|
+ }
|
|
|
|
|
+ this.updateById(config);
|
|
|
|
|
+
|
|
|
|
|
+ //删除之前设置的定时任务
|
|
|
|
|
+ cancelTimingJob(List.of(id));
|
|
|
|
|
+
|
|
|
|
|
+ if (timingJob) {
|
|
|
|
|
+ SysFuncTimingShelf timingShelf = new SysFuncTimingShelf();
|
|
|
|
|
+
|
|
|
|
|
+ timingShelf.setTime(time);
|
|
|
|
|
+ timingShelf.setTimeStr(DateTime.of(time).toString());
|
|
|
|
|
+ timingShelf.setPreStatus(preStatus);
|
|
|
|
|
+ timingShelf.setFuncId(id);
|
|
|
|
|
+ timingShelf.setType(SysFuncTimingShelf.Type.hc.name());
|
|
|
|
|
+ sysFuncTimingShelfService.save(timingShelf);
|
|
|
|
|
+
|
|
|
|
|
+ sysFuncTimingShelfService.addTimingJob(SysFuncTimingShelf.Type.hc.name(), id, timingShelf.getPreStatus(), time, nowMills);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ @Transactional(rollbackFor = Throwable.class)
|
|
|
|
|
+ public void timingCancel(Long id) {
|
|
|
|
|
+ HomeManagementConfig config = this.getById(id);
|
|
|
|
|
+ if (config == null || !config.getDeleted()) {
|
|
|
|
|
+ throw BusinessRuntimeException.getInstance("对应配置不存在..");
|
|
|
|
|
+ }
|
|
|
|
|
+ //删除之前设置的定时任务
|
|
|
|
|
+ cancelTimingJob(List.of(id));
|
|
|
|
|
+
|
|
|
|
|
+ if (config.getTime() != null) {
|
|
|
|
|
+ config.setTime(null);
|
|
|
|
|
+ config.setPreStatus(null);
|
|
|
|
|
+ this.updateById(config);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ @Transactional(rollbackFor = Throwable.class)
|
|
|
|
|
+ public void batchCancelTimingStatus(List<Long> ids) {
|
|
|
|
|
+ cancelTimingJob(ids);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public void cancelTimingJob(List<Long> ids) {
|
|
|
|
|
+ Integer count = sysFuncTimingShelfService.count(Wrappers.lambdaQuery(SysFuncTimingShelf.class)
|
|
|
|
|
+ .eq(SysFuncTimingShelf::getType, SysFuncTimingShelf.Type.hc)
|
|
|
|
|
+ .in(SysFuncTimingShelf::getFuncId, ids)
|
|
|
|
|
+ .eq(SysFuncTimingShelf::getDeleted, 1));
|
|
|
|
|
+ if (count > 0) {
|
|
|
|
|
+ sysFuncTimingShelfService.update(null, Wrappers.lambdaUpdate(SysFuncTimingShelf.class)
|
|
|
|
|
+ .set(SysFuncTimingShelf::getDeleted, 0)
|
|
|
|
|
+ .eq(SysFuncTimingShelf::getType, SysFuncTimingShelf.Type.hc)
|
|
|
|
|
+ .in(SysFuncTimingShelf::getFuncId, ids)
|
|
|
|
|
+ .eq(SysFuncTimingShelf::getDeleted, 1));
|
|
|
|
|
+ log.info("将之前设置的同配置下{},ids:{}的定时上下架删除", SysFuncTimingShelf.Type.hc.getDesc(), ids.toString());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|