diff --git a/servers/boe-server-task/src/main/java/com/xboe/constants/CasesPushStatusEnum.java b/servers/boe-server-task/src/main/java/com/xboe/constants/CasesPushStatusEnum.java new file mode 100644 index 00000000..5112411a --- /dev/null +++ b/servers/boe-server-task/src/main/java/com/xboe/constants/CasesPushStatusEnum.java @@ -0,0 +1,40 @@ +package com.xboe.constants; + +/** + * @author : civism + * @version 1.0 + * @date 2023/6/17 16:13 + */ +public enum CasesPushStatusEnum { + + /** + * 推送状态1未推送2推送中3已推送4推送失败5已撤回 + */ + WAIT_PUSH(1,"未推送"), + PUSH_ING(2,"推送中"), + PUSH_SUCCESS(3,"已推送"), + PUSH_FAIL(4,"推送失败"), + PUSH_REVOKE(5,"已撤回"), + + ; + + + CasesPushStatusEnum(Integer status, String desc) { + this.status = status; + this.desc = desc; + } + + private Integer status; + + + private String desc; + + + public Integer getStatus() { + return status; + } + + public String getDesc() { + return desc; + } +} diff --git a/servers/boe-server-task/src/main/java/com/xboe/module/cases/dao/CasesRecommendDao.java b/servers/boe-server-task/src/main/java/com/xboe/module/cases/dao/CasesRecommendDao.java new file mode 100644 index 00000000..b0d9debf --- /dev/null +++ b/servers/boe-server-task/src/main/java/com/xboe/module/cases/dao/CasesRecommendDao.java @@ -0,0 +1,10 @@ +package com.xboe.module.cases.dao; + +import com.xboe.casetask.entity.CasesRecommend; +import com.xboe.core.orm.BaseDao; +import org.springframework.stereotype.Repository; + +@Repository +public class CasesRecommendDao extends BaseDao { +} + diff --git a/servers/boe-server-task/src/main/java/com/xboe/module/cases/dao/CasesRecommendPushRecordDao.java b/servers/boe-server-task/src/main/java/com/xboe/module/cases/dao/CasesRecommendPushRecordDao.java new file mode 100644 index 00000000..d811200a --- /dev/null +++ b/servers/boe-server-task/src/main/java/com/xboe/module/cases/dao/CasesRecommendPushRecordDao.java @@ -0,0 +1,9 @@ +package com.xboe.module.cases.dao; + +import com.xboe.core.orm.BaseDao; +import com.xboe.module.cases.entity.CasesRecommendPushRecord; +import org.springframework.stereotype.Repository; + +@Repository +public class CasesRecommendPushRecordDao extends BaseDao { +} diff --git a/servers/boe-server-task/src/main/java/com/xboe/module/cases/entity/CasesRecommend.java b/servers/boe-server-task/src/main/java/com/xboe/module/cases/entity/CasesRecommend.java new file mode 100644 index 00000000..a3032134 --- /dev/null +++ b/servers/boe-server-task/src/main/java/com/xboe/module/cases/entity/CasesRecommend.java @@ -0,0 +1,56 @@ +package com.xboe.module.cases.entity; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.xboe.core.SysConstant; +import com.xboe.core.orm.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; +import java.time.LocalDateTime; + +/** + * 案例推荐表 + * */ +@Data +@Entity +@EqualsAndHashCode(callSuper = false) +@Table(name = SysConstant.TABLE_PRE+"cases_recommend") +public class CasesRecommend extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /**推荐人ID*/ + @Column(name = "recommend_id",nullable = false,length = 100) + private String recommendId; + + /**推荐人*/ + @Column(name = "recommend_by", length = 255) + private String recommendBy; + + /**推荐时间*/ + @Column(name = "recommend_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime recommendTime; + /**案例数*/ + @Column(name = "case_count",length = 11) + private Integer caseCount; + /**用户数*/ + @Column(name = "user_count",length = 11) + private Integer userCount; + /**推送进度*/ + @Column(name = "push_progress", length = 255) + private String pushProgress; + /**查看率*/ + @Column(name = "view_rate", length = 255) + private String viewRate; + /**推荐组织ID*/ + @Column(name = "recommend_org_id", length = 20) + private String recommendOrgId; + + /**推荐组织名称*/ + @Column(name = "recommend_org_name", length = 255) + private String recommendOrgName; +} diff --git a/servers/boe-server-task/src/main/java/com/xboe/module/cases/entity/CasesRecommendPushRecord.java b/servers/boe-server-task/src/main/java/com/xboe/module/cases/entity/CasesRecommendPushRecord.java new file mode 100644 index 00000000..e7c2e16f --- /dev/null +++ b/servers/boe-server-task/src/main/java/com/xboe/module/cases/entity/CasesRecommendPushRecord.java @@ -0,0 +1,95 @@ +package com.xboe.module.cases.entity; + +import com.xboe.core.SysConstant; +import com.xboe.core.orm.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; +import java.util.Date; + +/** + * 案例推荐发起导入 + */ +@Data +@Entity +@EqualsAndHashCode(callSuper = false) +@Table(name = SysConstant.TABLE_PRE + "cases_recommend_push_record") +public class CasesRecommendPushRecord extends BaseEntity { + + /** + * 推送id + */ + @Column(name = "recommend_id") + private String recommendId; + + /** + * 案例id + */ + @Column(name = "case_id") + private String caseId; + + + /** + * 案例标题 + */ + @Column(name = "case_title") + private String caseTitle; + + + /** + * 推送用户id + */ + @Column(name = "push_user_id") + private String pushUserId; + + + /** + * 推送用户名称 + */ + @Column(name = "push_user_name") + private String pushUserName; + + + /** + * 推送状态1未推送2推送中3已推送4推送失败5已撤回 + */ + @Column(name = "push_status") + private Integer pushStatus; + + + /** + * 推送时间 + */ + @Column(name = "push_time") + private Date pushTime; + + + /** + * 查看标识 + */ + @Column(name = "read_flag") + private Integer readFlag; + + /** + * 首次查看时间 + */ + @Column(name = "read_start_time") + private Date readStartTime; + + /** + * 最后查看时间 + */ + @Column(name = "read_end_time") + private Date readEndTime; + + /** + * 备注 + */ + @Column(name = "remark") + private String remark; + + +} diff --git a/servers/boe-server-task/src/main/java/com/xboe/module/cases/service/ICasesRecommendPushRecordService.java b/servers/boe-server-task/src/main/java/com/xboe/module/cases/service/ICasesRecommendPushRecordService.java new file mode 100644 index 00000000..6f827539 --- /dev/null +++ b/servers/boe-server-task/src/main/java/com/xboe/module/cases/service/ICasesRecommendPushRecordService.java @@ -0,0 +1,24 @@ +package com.xboe.module.cases.service; + +import com.xboe.module.cases.entity.CasesRecommendPushRecord; + +import java.util.List; + +public interface ICasesRecommendPushRecordService { + + /** + * 查询推送纪录通过推送状态 + * + * @param pushStatusList + * @return + */ + List queryPushRecordByPushStatus(List pushStatusList); + + + /** + * 修改 + * @param casesRecommendPushRecord + * @return + */ + boolean update(CasesRecommendPushRecord casesRecommendPushRecord); +} diff --git a/servers/boe-server-task/src/main/java/com/xboe/module/cases/service/ICasesRecommendService.java b/servers/boe-server-task/src/main/java/com/xboe/module/cases/service/ICasesRecommendService.java new file mode 100644 index 00000000..6d57d469 --- /dev/null +++ b/servers/boe-server-task/src/main/java/com/xboe/module/cases/service/ICasesRecommendService.java @@ -0,0 +1,25 @@ +package com.xboe.module.cases.service; + +import com.xboe.module.cases.entity.CasesRecommend; + +import java.util.List; + +public interface ICasesRecommendService { + + /** + * 通过推送状态查询 + * + * @param pushProgress + * @return + */ + List queryByPushProgress(String pushProgress); + + /** + * 修改 + * + * @param casesRecommend + * @return + */ + boolean update(CasesRecommend casesRecommend); + +} diff --git a/servers/boe-server-task/src/main/java/com/xboe/module/cases/service/impl/CasesRecommendPushRecordServiceImpl.java b/servers/boe-server-task/src/main/java/com/xboe/module/cases/service/impl/CasesRecommendPushRecordServiceImpl.java new file mode 100644 index 00000000..a2d59f44 --- /dev/null +++ b/servers/boe-server-task/src/main/java/com/xboe/module/cases/service/impl/CasesRecommendPushRecordServiceImpl.java @@ -0,0 +1,28 @@ +package com.xboe.module.cases.service.impl; + +import com.xboe.core.orm.FieldFilters; +import com.xboe.module.cases.dao.CasesRecommendPushRecordDao; +import com.xboe.module.cases.entity.CasesRecommendPushRecord; +import com.xboe.module.cases.service.ICasesRecommendPushRecordService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +@Service +public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushRecordService { + + @Resource + private CasesRecommendPushRecordDao casesRecommendPushRecordDao; + + @Override + public List queryPushRecordByPushStatus(List pushStatusList) { + return casesRecommendPushRecordDao.getGenericDao().findList(CasesRecommendPushRecord.class, FieldFilters.in("push_status", pushStatusList)); + } + + + @Override + public boolean update(CasesRecommendPushRecord casesRecommendPushRecord) { + return casesRecommendPushRecordDao.getGenericDao().update(casesRecommendPushRecord) != null; + } +} diff --git a/servers/boe-server-task/src/main/java/com/xboe/module/cases/service/impl/CasesRecommendServiceImpl.java b/servers/boe-server-task/src/main/java/com/xboe/module/cases/service/impl/CasesRecommendServiceImpl.java new file mode 100644 index 00000000..92191a12 --- /dev/null +++ b/servers/boe-server-task/src/main/java/com/xboe/module/cases/service/impl/CasesRecommendServiceImpl.java @@ -0,0 +1,28 @@ +package com.xboe.module.cases.service.impl; + +import com.xboe.casetask.dao.CasesRecommendDao; +import com.xboe.casetask.entity.CasesRecommend; +import com.xboe.casetask.service.ICasesRecommendService; +import com.xboe.core.orm.FieldFilters; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +@Service +public class CasesRecommendServiceImpl implements ICasesRecommendService { + + @Resource + private CasesRecommendDao casesRecommendDao; + + @Override + public List queryByPushProgress(String pushProgress) { + return casesRecommendDao.getGenericDao().findList(CasesRecommend.class, FieldFilters.eq("push_progress", pushProgress)); + } + + + @Override + public boolean update(CasesRecommend casesRecommend) { + return casesRecommendDao.getGenericDao().update(casesRecommend) != null; + } +} diff --git a/servers/boe-server-task/src/main/java/com/xboe/task/CasesRecommendPushSchedule.java b/servers/boe-server-task/src/main/java/com/xboe/task/CasesRecommendPushSchedule.java new file mode 100644 index 00000000..ef95a988 --- /dev/null +++ b/servers/boe-server-task/src/main/java/com/xboe/task/CasesRecommendPushSchedule.java @@ -0,0 +1,87 @@ +package com.xboe.task; + +import com.xboe.constants.CasesPushStatusEnum; +import com.xboe.module.cases.entity.CasesRecommend; +import com.xboe.module.cases.entity.CasesRecommendPushRecord; +import com.xboe.module.cases.service.ICasesRecommendPushRecordService; +import com.xboe.module.cases.service.ICasesRecommendService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @author : civism + * @version 1.0 + * @date 2023/6/18 10:50 + */ +@EnableScheduling +@Component("com.xboe.casetask.CasesRecommendPushSchedule") +@Slf4j +public class CasesRecommendPushSchedule { + + + @Resource + private ICasesRecommendService casesRecommendService; + + + @Resource + private ICasesRecommendPushRecordService casesRecommendPushRecordService; + + /** + * 每分钟执行一次 + */ + @Scheduled(cron = "0 * * * * ? ") + public void execute() { + List casesRecommends = casesRecommendService.queryByPushProgress(CasesPushStatusEnum.WAIT_PUSH.name()); + if (CollectionUtils.isEmpty(casesRecommends)) { + log.warn("没有推送纪录,无需推送"); + return; + } + for (CasesRecommend casesRecommend : casesRecommends) { + List pushStatusList = new ArrayList<>(); + pushStatusList.add(CasesPushStatusEnum.WAIT_PUSH.getStatus()); + pushStatusList.add(CasesPushStatusEnum.WAIT_PUSH.getStatus()); + List casesRecommendPushRecords = casesRecommendPushRecordService.queryPushRecordByPushStatus(pushStatusList); + if (CollectionUtils.isEmpty(casesRecommendPushRecords)) { + //修改为推送完成 --- 无数据 无需推送 + CasesRecommend tempUpdate = new CasesRecommend(); + tempUpdate.setId(casesRecommend.getId()); + tempUpdate.setPushProgress(CasesPushStatusEnum.PUSH_SUCCESS.name()); + casesRecommendService.update(tempUpdate); + continue; + } + //修改为推送中 + CasesRecommend tempUpdate = new CasesRecommend(); + tempUpdate.setId(casesRecommend.getId()); + tempUpdate.setPushProgress(CasesPushStatusEnum.PUSH_ING.name()); + casesRecommendService.update(tempUpdate); + + for (CasesRecommendPushRecord casesRecommendPushRecord : casesRecommendPushRecords) { + + CasesRecommendPushRecord pushRecordTemp = new CasesRecommendPushRecord(); + pushRecordTemp.setId(casesRecommendPushRecord.getId()); + pushRecordTemp.setPushTime(new Date()); + try { + //TODO 推送 + pushRecordTemp.setPushStatus(CasesPushStatusEnum.PUSH_SUCCESS.getStatus()); + } catch (Exception e) { + pushRecordTemp.setPushStatus(CasesPushStatusEnum.PUSH_FAIL.getStatus()); + } + casesRecommendPushRecordService.update(pushRecordTemp); + } + + //修改为推送完成 --- 无数据 无需推送 + CasesRecommend finishTemp = new CasesRecommend(); + finishTemp.setId(casesRecommend.getId()); + finishTemp.setPushProgress(CasesPushStatusEnum.PUSH_SUCCESS.name()); + casesRecommendService.update(finishTemp); + } + } +}