From 92a404e46a14d3a0a66e8007e76d904c31f7f59a Mon Sep 17 00:00:00 2001 From: Guava Date: Sat, 17 Jun 2023 16:27:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=8E=A8=E9=80=81=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xboe/enums/CasesPushStatusEnum.java | 40 +++++++++ .../enums/CasesRecommendLaunchTypeEnum.java | 35 ++++++++ .../module/boecase/api/CasesRecommendApi.java | 20 ++++- .../ICasesRecommendPushRecordService.java | 11 +++ .../CasesRecommendPushRecordServiceImpl.java | 85 +++++++++++++++++++ 5 files changed, 190 insertions(+), 1 deletion(-) create mode 100644 servers/boe-server-all/src/main/java/com/xboe/enums/CasesPushStatusEnum.java create mode 100644 servers/boe-server-all/src/main/java/com/xboe/enums/CasesRecommendLaunchTypeEnum.java diff --git a/servers/boe-server-all/src/main/java/com/xboe/enums/CasesPushStatusEnum.java b/servers/boe-server-all/src/main/java/com/xboe/enums/CasesPushStatusEnum.java new file mode 100644 index 00000000..f5f74074 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/enums/CasesPushStatusEnum.java @@ -0,0 +1,40 @@ +package com.xboe.enums; + +/** + * @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-all/src/main/java/com/xboe/enums/CasesRecommendLaunchTypeEnum.java b/servers/boe-server-all/src/main/java/com/xboe/enums/CasesRecommendLaunchTypeEnum.java new file mode 100644 index 00000000..5414d969 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/enums/CasesRecommendLaunchTypeEnum.java @@ -0,0 +1,35 @@ +package com.xboe.enums; + +/** + * @author : civism + * @version 1.0 + * @date 2023/6/17 16:22 + */ +public enum CasesRecommendLaunchTypeEnum { + + /** + * 发起类型 1 正常选择 2 文件导入 + */ + COMMON(1, "正常选择"), + IMPORT(2, "文件导入"), + ; + + + private Integer launchType; + + private String desc; + + + CasesRecommendLaunchTypeEnum(Integer launchType, String desc) { + this.launchType = launchType; + this.desc = desc; + } + + public Integer getLaunchType() { + return launchType; + } + + public String getDesc() { + return desc; + } +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java index de90e766..b9083604 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java @@ -1,7 +1,9 @@ package com.xboe.module.boecase.api; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.io.IoUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.poi.excel.ExcelReader; import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.ExcelWriter; @@ -9,9 +11,11 @@ import com.xboe.common.PageList; import com.xboe.common.Pagination; import com.xboe.core.JsonResponse; import com.xboe.core.api.ApiBaseController; +import com.xboe.enums.CasesRecommendLaunchTypeEnum; import com.xboe.module.boecase.entity.CasesRecommend; import com.xboe.module.boecase.entity.CasesRecommendLaunchImport; import com.xboe.module.boecase.service.ICasesRecommendLaunchImportService; +import com.xboe.module.boecase.service.ICasesRecommendPushRecordService; import com.xboe.module.boecase.service.ICasesRecommendService; import com.xboe.module.boecase.vo.CasesRecommendLaunchVo; import com.xboe.module.boecase.vo.CasesRecommendVo; @@ -39,6 +43,9 @@ public class CasesRecommendApi extends ApiBaseController { @Resource private ICasesRecommendLaunchImportService iCasesRecommendLaunchImportService; + @Resource + private ICasesRecommendPushRecordService iCasesRecommendPushRecordService; + /** * 用于后台管理分页 * @@ -131,8 +138,19 @@ public class CasesRecommendApi extends ApiBaseController { */ @PostMapping("/launch") public JsonResponse excelImport(@RequestBody CasesRecommendLaunchVo casesRecommendLaunch) { + if (CasesRecommendLaunchTypeEnum.COMMON.getLaunchType().equals(casesRecommendLaunch.getLaunchType()) || CasesRecommendLaunchTypeEnum.IMPORT.getLaunchType().equals(casesRecommendLaunch.getLaunchType())) { + throw new RuntimeException("参数错误"); + } + if (CasesRecommendLaunchTypeEnum.COMMON.getLaunchType().equals(casesRecommendLaunch.getLaunchType()) && CollectionUtil.isEmpty(casesRecommendLaunch.getCasesIdList())) { + throw new RuntimeException("推送案例id不能为空"); + } else if (CasesRecommendLaunchTypeEnum.IMPORT.getLaunchType().equals(casesRecommendLaunch.getLaunchType()) && StrUtil.isEmpty(casesRecommendLaunch.getImportId())) { + throw new RuntimeException("导入id不能为空"); + } + if (CollectionUtil.isEmpty(casesRecommendLaunch.getPushUserIdList())) { + throw new RuntimeException("参数错误"); + } - return success(true); + return success(iCasesRecommendPushRecordService.launchPush(casesRecommendLaunch)); } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendPushRecordService.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendPushRecordService.java index f0f276bd..86bb4715 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendPushRecordService.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendPushRecordService.java @@ -1,5 +1,16 @@ package com.xboe.module.boecase.service; +import com.xboe.module.boecase.vo.CasesRecommendLaunchVo; + public interface ICasesRecommendPushRecordService { + + /** + * 案例推送 + * + * @param casesRecommendLaunch + * @return + */ + boolean launchPush(CasesRecommendLaunchVo casesRecommendLaunch); + } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java index c00c45f4..24379ec2 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java @@ -1,11 +1,96 @@ package com.xboe.module.boecase.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import com.xboe.core.orm.FieldFilters; +import com.xboe.data.dto.UserData; +import com.xboe.data.outside.IOutSideDataService; +import com.xboe.enums.CasesPushStatusEnum; +import com.xboe.module.boecase.dao.CasesDao; +import com.xboe.module.boecase.dao.CasesRecommendDao; +import com.xboe.module.boecase.dao.CasesRecommendLaunchImportDataDao; +import com.xboe.module.boecase.dao.CasesRecommendPushRecordDao; +import com.xboe.module.boecase.entity.Cases; +import com.xboe.module.boecase.entity.CasesRecommend; +import com.xboe.module.boecase.entity.CasesRecommendLaunchImportData; +import com.xboe.module.boecase.entity.CasesRecommendPushRecord; import com.xboe.module.boecase.service.ICasesRecommendPushRecordService; +import com.xboe.module.boecase.vo.CasesRecommendLaunchVo; +import com.xboe.system.user.dao.UserDao; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + @Service @Transactional public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushRecordService { + + @Resource + private UserDao userDao; + + @Resource + private IOutSideDataService outSideDataService; + + @Resource + private CasesDao casesDao; + + @Resource + private CasesRecommendDao casesRecommendDao; + + @Resource + private CasesRecommendLaunchImportDataDao casesRecommendLaunchImportDataDao; + + @Resource + private CasesRecommendPushRecordDao casesRecommendPushRecordDao; + + @Override + public boolean launchPush(CasesRecommendLaunchVo casesRecommendLaunch) { + //当前用户登录信息 + UserData userInfoByUserId = outSideDataService.getUserInfoByUserId(null); + + CasesRecommend casesRecommend = new CasesRecommend(); + casesRecommend.setRecommendId(userInfoByUserId.getId()); + casesRecommend.setRecommendBy(userInfoByUserId.getName()); + casesRecommend.setRecommendTime(LocalDateTime.now()); + casesRecommend.setCaseCount(casesRecommendLaunch.getCasesIdList().size()); + casesRecommend.setUserCount(casesRecommendLaunch.getPushUserIdList().size()); + casesRecommend.setRecommendOrgName(casesRecommendLaunch.getRecommendOrgName()); + casesRecommendDao.save(casesRecommend); + + List caseIds = new ArrayList<>(); + if (casesRecommendLaunch.getLaunchType() == 1) { + caseIds.addAll(casesRecommendLaunch.getCasesIdList()); + } else { + List importDataList = casesRecommendLaunchImportDataDao.findList(FieldFilters.eq("import_id", casesRecommendLaunch.getImportId())); + List caseIdList = importDataList.stream().filter(casesRecommendLaunchImportData -> casesRecommendLaunchImportData.getStatus() == 1).map(CasesRecommendLaunchImportData::getCaseId).collect(Collectors.toList()); + caseIds.addAll(caseIdList); + } + for (String caseId : caseIds) { + Cases cases = casesDao.get(caseId); + List pushRecords = new ArrayList<>(); + Map userMap = userDao.findMap("id", "name", FieldFilters.in("id", casesRecommendLaunch.getPushUserIdList())); + + for (String userId : casesRecommendLaunch.getPushUserIdList()) { + CasesRecommendPushRecord casesRecommendPushRecord = new CasesRecommendPushRecord(); + casesRecommendPushRecord.setRecommendId(casesRecommend.getId()); + casesRecommendPushRecord.setCaseId(caseId); + casesRecommendPushRecord.setCaseTitle(cases.getTitle()); + casesRecommendPushRecord.setPushUserId(userId); + casesRecommendPushRecord.setPushUserName(userMap.get(userId) != null ? userMap.get(userId).toString() : null); + casesRecommendPushRecord.setPushStatus(CasesPushStatusEnum.WAIT_PUSH.getStatus()); + pushRecords.add(casesRecommendPushRecord); + } + if (CollectionUtil.isNotEmpty(pushRecords)) { + casesRecommendPushRecordDao.saveList(pushRecords); + } + } + + return true; + } }