提交推送逻辑

This commit is contained in:
Guava
2023-06-17 16:27:31 +08:00
parent aafaf92f96
commit 92a404e46a
5 changed files with 190 additions and 1 deletions

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -1,7 +1,9 @@
package com.xboe.module.boecase.api; package com.xboe.module.boecase.api;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.collection.ListUtil; import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.io.IoUtil; import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.ExcelReader; import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter; import cn.hutool.poi.excel.ExcelWriter;
@@ -9,9 +11,11 @@ import com.xboe.common.PageList;
import com.xboe.common.Pagination; import com.xboe.common.Pagination;
import com.xboe.core.JsonResponse; import com.xboe.core.JsonResponse;
import com.xboe.core.api.ApiBaseController; import com.xboe.core.api.ApiBaseController;
import com.xboe.enums.CasesRecommendLaunchTypeEnum;
import com.xboe.module.boecase.entity.CasesRecommend; import com.xboe.module.boecase.entity.CasesRecommend;
import com.xboe.module.boecase.entity.CasesRecommendLaunchImport; import com.xboe.module.boecase.entity.CasesRecommendLaunchImport;
import com.xboe.module.boecase.service.ICasesRecommendLaunchImportService; 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.service.ICasesRecommendService;
import com.xboe.module.boecase.vo.CasesRecommendLaunchVo; import com.xboe.module.boecase.vo.CasesRecommendLaunchVo;
import com.xboe.module.boecase.vo.CasesRecommendVo; import com.xboe.module.boecase.vo.CasesRecommendVo;
@@ -39,6 +43,9 @@ public class CasesRecommendApi extends ApiBaseController {
@Resource @Resource
private ICasesRecommendLaunchImportService iCasesRecommendLaunchImportService; private ICasesRecommendLaunchImportService iCasesRecommendLaunchImportService;
@Resource
private ICasesRecommendPushRecordService iCasesRecommendPushRecordService;
/** /**
* 用于后台管理分页 * 用于后台管理分页
* *
@@ -131,8 +138,19 @@ public class CasesRecommendApi extends ApiBaseController {
*/ */
@PostMapping("/launch") @PostMapping("/launch")
public JsonResponse<Boolean> excelImport(@RequestBody CasesRecommendLaunchVo casesRecommendLaunch) { public JsonResponse<Boolean> 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));
} }

View File

@@ -1,5 +1,16 @@
package com.xboe.module.boecase.service; package com.xboe.module.boecase.service;
import com.xboe.module.boecase.vo.CasesRecommendLaunchVo;
public interface ICasesRecommendPushRecordService { public interface ICasesRecommendPushRecordService {
/**
* 案例推送
*
* @param casesRecommendLaunch
* @return
*/
boolean launchPush(CasesRecommendLaunchVo casesRecommendLaunch);
} }

View File

@@ -1,11 +1,96 @@
package com.xboe.module.boecase.service.impl; 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.service.ICasesRecommendPushRecordService;
import com.xboe.module.boecase.vo.CasesRecommendLaunchVo;
import com.xboe.system.user.dao.UserDao;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; 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 @Service
@Transactional @Transactional
public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushRecordService { 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<String> caseIds = new ArrayList<>();
if (casesRecommendLaunch.getLaunchType() == 1) {
caseIds.addAll(casesRecommendLaunch.getCasesIdList());
} else {
List<CasesRecommendLaunchImportData> importDataList = casesRecommendLaunchImportDataDao.findList(FieldFilters.eq("import_id", casesRecommendLaunch.getImportId()));
List<String> 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<CasesRecommendPushRecord> pushRecords = new ArrayList<>();
Map<String, Object> 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;
}
} }