Browse Source

爱心互助定时任务修改

feature/dangjian
yujintao 6 years ago
parent
commit
7c8f4c075e
  1. 5
      esua-epdc/epdc-module/epdc-heart/epdc-heart-client/pom.xml
  2. 5
      esua-epdc/epdc-module/epdc-heart/epdc-heart-server/pom.xml
  3. 35
      esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActInfoServiceImpl.java
  4. 15
      esua-epdc/epdc-module/epdc-job/epdc-job-client/src/main/java/com/elink/esua/epdc/constant/JobModuleConstant.java
  5. 158
      esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/service/impl/ScheduleJobServiceImpl.java
  6. 31
      esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/task/activity/AutoAuditActUserTask.java
  7. 55
      esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/task/activity/AutoAuditActUserTaskImpl.java
  8. 19
      esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/task/volunteer/UpdateVolunteerRankTask.java
  9. 43
      esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/task/volunteer/UpdateVolunteerRankTaskImpl.java

5
esua-epdc/epdc-module/epdc-heart/epdc-heart-client/pom.xml

@ -18,11 +18,6 @@
<artifactId>epdc-demo-client</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.esua.epdc</groupId>
<artifactId>epdc-user-client</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>

5
esua-epdc/epdc-module/epdc-heart/epdc-heart-server/pom.xml

@ -18,6 +18,11 @@
<artifactId>epdc-heart-client</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.esua.epdc</groupId>
<artifactId>epdc-user-client</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.esua.epdc</groupId>
<artifactId>epdc-commons-tools</artifactId>

35
esua-epdc/epdc-module/epdc-heart/epdc-heart-server/src/main/java/com/elink/esua/epdc/modules/activity/service/impl/ActInfoServiceImpl.java

@ -31,17 +31,16 @@ import com.elink.esua.epdc.activity.result.ActInfoResultDTO;
import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl;
import com.elink.esua.epdc.commons.tools.constant.FieldConstant;
import com.elink.esua.epdc.commons.tools.constant.NumConstant;
import com.elink.esua.epdc.commons.tools.constant.StrConstant;
import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.ConvertUtils;
import com.elink.esua.epdc.commons.tools.utils.DateUtils;
import com.elink.esua.epdc.commons.tools.utils.LocalDateUtils;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils;
import com.elink.esua.epdc.commons.tools.validator.group.AddGroup;
import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup;
import com.elink.esua.epdc.constant.ActStateConstant;
import com.elink.esua.epdc.constant.ActUserRelationStatusConstant;
import com.elink.esua.epdc.constant.ActUserStatusConstant;
import com.elink.esua.epdc.constant.HeartNoticeConstant;
import com.elink.esua.epdc.constant.*;
import com.elink.esua.epdc.dto.ScheduleJobDTO;
import com.elink.esua.epdc.dto.epdc.form.EpdcInformationFormDTO;
import com.elink.esua.epdc.modules.activity.dao.ActInfoDao;
@ -61,6 +60,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.*;
/**
@ -507,22 +507,23 @@ public class ActInfoServiceImpl extends BaseServiceImpl<ActInfoDao, ActInfoEntit
* @since 2020/2/6 21:10
*/
private Result saveActToScheduleJob(String actId, Date actStartTime) {
LocalDateTime jobTime = LocalDateUtils.dateToLocalDateTime(actStartTime);
StringBuffer cronStr = new StringBuffer(StringUtils.EMPTY);
cronStr.append(jobTime.getSecond()).append(StringUtils.SPACE)
.append(jobTime.getMinute()).append(StringUtils.SPACE)
.append(jobTime.getHour()).append(StringUtils.SPACE)
.append(jobTime.getDayOfMonth()).append(StringUtils.SPACE)
.append(jobTime.getMonthValue()).append(StringUtils.SPACE)
.append(StrConstant.QUESTION_MARK).append(StringUtils.SPACE)
.append(jobTime.getYear()).append(StrConstant.HYPHEN).append(jobTime.getYear());
ScheduleJobDTO jobDTO = new ScheduleJobDTO();
jobDTO.setBeanName("AutoAuditActUserTask");
jobDTO.setBeanName(JobModuleConstant.TASK_NAME_AUDIT_ACT);
jobDTO.setParams(actId);
jobDTO.setStatus(NumConstant.ONE);
String cron = "";
Calendar calendar = Calendar.getInstance();
calendar.setTime(actStartTime);
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DATE);
int hours = calendar.get(Calendar.HOUR_OF_DAY);
int minutes = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
cron = second + " " + minutes + " " + hours + " " + day + " " + month + " ? " + year + "-" + year;
jobDTO.setCronExpression(cron);
jobDTO.setCronExpression(cronStr.toString());
return jobFeignClient.save(jobDTO);
}
}

15
esua-epdc/epdc-module/epdc-job/epdc-job-client/src/main/java/com/elink/esua/epdc/constant/JobModuleConstant.java

@ -0,0 +1,15 @@
package com.elink.esua.epdc.constant;
/**
* 定时任务模块部分常量
*
* @author work@yujt.net.cn
* @date 2020/4/10 16:49
*/
public interface JobModuleConstant {
/**
* 审核初心互助报名用户
*/
String TASK_NAME_AUDIT_ACT = "autoAuditActUserTask";
}

158
esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/service/impl/ScheduleJobServiceImpl.java

@ -1,13 +1,14 @@
/**
* Copyright (c) 2018 人人开源 All rights reserved.
*
* <p>
* https://www.renren.io
*
* <p>
* 版权所有侵权必究
*/
package com.elink.esua.epdc.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.elink.esua.epdc.entity.ScheduleJobEntity;
@ -18,10 +19,8 @@ import com.elink.esua.epdc.commons.tools.page.PageData;
import com.elink.esua.epdc.commons.tools.utils.ConvertUtils;
import com.elink.esua.epdc.dao.ScheduleJobDao;
import com.elink.esua.epdc.dto.ScheduleJobDTO;
import com.elink.esua.epdc.entity.ScheduleJobEntity;
import com.elink.esua.epdc.enums.ScheduleStatusEnum;
import com.elink.esua.epdc.service.ScheduleJobService;
import com.elink.esua.epdc.utils.ScheduleUtils;
import org.apache.commons.lang3.StringUtils;
import org.quartz.Scheduler;
import org.springframework.beans.factory.annotation.Autowired;
@ -30,110 +29,123 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class ScheduleJobServiceImpl extends BaseServiceImpl<ScheduleJobDao, ScheduleJobEntity> implements ScheduleJobService {
@Autowired
private Scheduler scheduler;
@Override
public PageData<ScheduleJobDTO> page(Map<String, Object> params) {
IPage<ScheduleJobEntity> page = baseDao.selectPage(
getPage(params, Constant.CREATE_DATE, false),
getWrapper(params)
);
return getPageData(page, ScheduleJobDTO.class);
}
@Autowired
private Scheduler scheduler;
@Override
public PageData<ScheduleJobDTO> page(Map<String, Object> params) {
IPage<ScheduleJobEntity> page = baseDao.selectPage(
getPage(params, Constant.CREATE_DATE, false),
getWrapper(params)
);
return getPageData(page, ScheduleJobDTO.class);
}
@Override
public ScheduleJobDTO get(Long id) {
ScheduleJobEntity entity = baseDao.selectById(id);
@Override
public ScheduleJobDTO get(Long id) {
ScheduleJobEntity entity = baseDao.selectById(id);
return ConvertUtils.sourceToTarget(entity, ScheduleJobDTO.class);
}
return ConvertUtils.sourceToTarget(entity, ScheduleJobDTO.class);
}
private QueryWrapper<ScheduleJobEntity> getWrapper(Map<String, Object> params){
String beanName = (String)params.get("beanName");
private QueryWrapper<ScheduleJobEntity> getWrapper(Map<String, Object> params) {
String beanName = (String) params.get("beanName");
QueryWrapper<ScheduleJobEntity> wrapper = new QueryWrapper<>();
wrapper.like(StringUtils.isNotBlank(beanName), "bean_name", beanName);
QueryWrapper<ScheduleJobEntity> wrapper = new QueryWrapper<>();
wrapper.like(StringUtils.isNotBlank(beanName), "bean_name", beanName);
return wrapper;
}
return wrapper;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void save(ScheduleJobDTO dto) {
ScheduleJobEntity entity = ConvertUtils.sourceToTarget(dto, ScheduleJobEntity.class);
@Override
@Transactional(rollbackFor = Exception.class)
public void save(ScheduleJobDTO dto) {
ScheduleJobEntity entity = ConvertUtils.sourceToTarget(dto, ScheduleJobEntity.class);
entity.setStatus(ScheduleStatusEnum.NORMAL.value());
entity.setStatus(ScheduleStatusEnum.NORMAL.value());
this.insert(entity);
ScheduleUtils.createScheduleJob(scheduler, entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(ScheduleJobDTO dto) {
ScheduleJobEntity entity = ConvertUtils.sourceToTarget(dto, ScheduleJobEntity.class);
@Override
@Transactional(rollbackFor = Exception.class)
public void update(ScheduleJobDTO dto) {
ScheduleJobEntity entity = ConvertUtils.sourceToTarget(dto, ScheduleJobEntity.class);
ScheduleUtils.updateScheduleJob(scheduler, entity);
this.updateById(entity);
}
@Override
@Transactional(rollbackFor = Exception.class)
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteBatch(Long[] ids) {
for(Long id : ids){
ScheduleUtils.deleteScheduleJob(scheduler, id);
}
//删除数据
this.deleteBatchIds(Arrays.asList(ids));
}
@Override
public int updateBatch(Long[] ids, int status){
Map<String, Object> map = new HashMap<>(2);
map.put("ids", ids);
map.put("status", status);
return baseDao.updateBatch(map);
for (Long id : ids) {
ScheduleUtils.deleteScheduleJob(scheduler, id);
}
//删除数据
this.deleteBatchIds(Arrays.asList(ids));
}
@Override
@Transactional(rollbackFor = Exception.class)
@Override
public int updateBatch(Long[] ids, int status) {
Map<String, Object> map = new HashMap<>(2);
map.put("ids", ids);
map.put("status", status);
return baseDao.updateBatch(map);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void run(Long[] ids) {
for(Long id : ids){
ScheduleUtils.run(scheduler, this.selectById(id));
}
for (Long id : ids) {
ScheduleUtils.run(scheduler, this.selectById(id));
}
}
@Override
@Transactional(rollbackFor = Exception.class)
@Override
@Transactional(rollbackFor = Exception.class)
public void pause(Long[] ids) {
for(Long id : ids){
ScheduleUtils.pauseJob(scheduler, id);
}
for (Long id : ids) {
ScheduleUtils.pauseJob(scheduler, id);
}
updateBatch(ids, ScheduleStatusEnum.PAUSE.value());
updateBatch(ids, ScheduleStatusEnum.PAUSE.value());
}
@Override
@Transactional(rollbackFor = Exception.class)
@Override
@Transactional(rollbackFor = Exception.class)
public void resume(Long[] ids) {
for(Long id : ids){
ScheduleUtils.resumeJob(scheduler, id);
}
for (Long id : ids) {
ScheduleUtils.resumeJob(scheduler, id);
}
updateBatch(ids, ScheduleStatusEnum.NORMAL.value());
updateBatch(ids, ScheduleStatusEnum.NORMAL.value());
}
@Override
public void deleteJobByParams(String params) {
//删除数据
baseDao.deleteJobByParams(params);
}
@Override
public void deleteJobByParams(String params) {
QueryWrapper<ScheduleJobEntity> wrapper = new QueryWrapper<>();
wrapper.eq("params", params);
List<ScheduleJobEntity> scheduleJobEntities = baseDao.selectList(wrapper);
if (CollUtil.isNotEmpty(scheduleJobEntities)) {
Long[] jobIds = scheduleJobEntities.stream()
.map(ScheduleJobEntity::getId)
.distinct()
.toArray(Long[]::new);
this.deleteBatch(jobIds);
}
}
}

31
esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/task/activity/AutoAuditActUserTask.java

@ -17,15 +17,40 @@
package com.elink.esua.epdc.task.activity;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.constant.JobModuleConstant;
import com.elink.esua.epdc.service.ActivityService;
import com.elink.esua.epdc.service.ScheduleJobService;
import com.elink.esua.epdc.task.ITask;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 志愿者排名
* 自动审核通过未审核的报名人员
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2019-12-19
*/
public interface AutoAuditActUserTask {
@Component(JobModuleConstant.TASK_NAME_AUDIT_ACT)
public class AutoAuditActUserTask implements ITask {
@Autowired
private ActivityService activityService;
@Autowired
private ScheduleJobService scheduleJobService;
@Override
public void run(String actId) {
// 活动时间到自动审核通过未审核的报名人员
Result result = activityService.AutoAuditActUser(actId);
// 删除对应job
if (result.success()) {
scheduleJobService.deleteJobByParams(actId);
}
void run(String actId);
}
}

55
esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/task/activity/AutoAuditActUserTaskImpl.java

@ -1,55 +0,0 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.elink.esua.epdc.task.activity;
import com.elink.esua.epdc.commons.tools.utils.Result;
import com.elink.esua.epdc.service.ActivityService;
import com.elink.esua.epdc.service.ScheduleJobService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 自动审核通过未审核的报名人员
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2019-12-19
*/
@Component("AutoAuditActUserTask")
public class AutoAuditActUserTaskImpl implements AutoAuditActUserTask {
@Autowired
private ActivityService activityService;
@Autowired
private ScheduleJobService scheduleJobService;
@Override
public void run(String actId){
//活动时间到自动审核通过未审核的报名人员
Result result = activityService.AutoAuditActUser(actId);
//删除对应job
if(result.getCode() == 0){
scheduleJobService.deleteJobByParams(actId);
}
}
}

19
esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/task/volunteer/UpdateVolunteerRankTask.java

@ -17,15 +17,28 @@
package com.elink.esua.epdc.task.volunteer;
import com.elink.esua.epdc.service.VolunteerService;
import com.elink.esua.epdc.task.ITask;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 志愿者排名
* 定时更新志愿者排名
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2019-12-19
*/
public interface UpdateVolunteerRankTask {
@Component("updateVolunteerRankTask")
public class UpdateVolunteerRankTask implements ITask {
@Autowired
private VolunteerService volunteerService;
void run(String param);
@Override
public void run(String param) {
//每日定时更新排行榜
volunteerService.generateRankingList();
}
}

43
esua-epdc/epdc-module/epdc-job/epdc-job-server/src/main/java/com/elink/esua/epdc/task/volunteer/UpdateVolunteerRankTaskImpl.java

@ -1,43 +0,0 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.elink.esua.epdc.task.volunteer;
import com.elink.esua.epdc.service.VolunteerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* 定时更新志愿者排名
*
* @author qu qu@elink-cn.com
* @since v1.0.0 2019-12-19
*/
@Component("UpdateVolunteerRankTask")
public class UpdateVolunteerRankTaskImpl implements UpdateVolunteerRankTask {
@Autowired
private VolunteerService volunteerService;
@Override
public void run(String param){
//每日定时更新排行榜
volunteerService.generateRankingList();
}
}
Loading…
Cancel
Save