Merge remote-tracking branch 'origin/master'

This commit is contained in:
Boolean
2023-06-17 17:51:35 +08:00
24 changed files with 922 additions and 29 deletions

View File

@@ -17,6 +17,11 @@
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.16</version>
</dependency>
<dependency>
<groupId>com.xboe</groupId>
<artifactId>xboe-api</artifactId>

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

@@ -0,0 +1,157 @@
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;
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;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 案例推荐表
*/
@Slf4j
@RestController
@RequestMapping(value = "xboe/m/boe/cases/recommend")
public class CasesRecommendApi extends ApiBaseController {
@Resource
private ICasesRecommendService iCasesRecommendService;
@Resource
private ICasesRecommendLaunchImportService iCasesRecommendLaunchImportService;
@Resource
private ICasesRecommendPushRecordService iCasesRecommendPushRecordService;
/**
* 用于后台管理分页
*
* @param pager
* @param casesRecommendVo
* @return
*/
@PostMapping("/page")
public JsonResponse<PageList<CasesRecommend>> page(Pagination pager, CasesRecommendVo casesRecommendVo) {
PageList<CasesRecommend> page = iCasesRecommendService.page(pager.getPageIndex(), pager.getPageSize(), casesRecommendVo);
return success(page);
}
@PostMapping("/delete")
public JsonResponse<Boolean> delete(String id) {
if (StringUtils.isBlank(id)) {
return badRequest("缺少必要参数");
}
try {
iCasesRecommendService.delete(id);
return success(true);
} catch (Exception e) {
log.error("删除失败", e);
return error("删除失败", e.getMessage());
}
}
/**
* 获取导入纪录
*
* @return
* @throws Exception
*/
@GetMapping("/import-info")
public JsonResponse<CasesRecommendLaunchImport> excelImport(String importId) {
CasesRecommendLaunchImport byId = iCasesRecommendLaunchImportService.getById(importId);
return success(byId);
}
/**
* 导入
*
* @param file
* @return
* @throws Exception
*/
@PostMapping("/import")
public JsonResponse<String> excelImport(@RequestParam("file") MultipartFile file) throws Exception {
ExcelReader reader = ExcelUtil.getReader(file.getInputStream());
List<List<Object>> read = reader.read();
String s = iCasesRecommendLaunchImportService.importData(read);
return success(s);
}
/**
* 下载错误数据
*
* @return
* @throws Exception
*/
@GetMapping("/download")
public void download(String importId, HttpServletResponse response) throws Exception {
List<String> dataList = iCasesRecommendLaunchImportService.downFailData(importId);
// 通过工具类创建writer默认创建xls格式
ExcelWriter writer = ExcelUtil.getWriter();
writer.writeHeadRow(ListUtil.toList("标题"));
writer.write(dataList);
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename=failData.xls");
ServletOutputStream out = response.getOutputStream();
writer.flush(out, true);
writer.close();
IoUtil.close(out);
}
/**
* 发起推送
*
* @param casesRecommendLaunch
* @return
*/
@PostMapping("/launch")
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(iCasesRecommendPushRecordService.launchPush(casesRecommendLaunch));
}
}

View File

@@ -1,14 +1,5 @@
package com.xboe.module.boecase.api;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.xboe.common.utils.StringUtil;
import com.xboe.core.JsonResponse;
import com.xboe.core.api.ApiBaseController;
@@ -16,12 +7,18 @@ import com.xboe.core.log.AutoLog;
import com.xboe.module.boecase.dto.AcceptVo;
import com.xboe.module.boecase.entity.Recommend;
import com.xboe.module.boecase.service.IRecommendService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* 案例推荐表
* */
*/
@Slf4j
@RestController
@RequestMapping(value = "xboe/m/boe/recommend")
@@ -29,32 +26,33 @@ public class RecommendApi extends ApiBaseController {
@Resource
private IRecommendService recommendService;
/**
* 推荐
* */
*/
@PostMapping("/save")
@AutoLog(module = "案例推荐",action = "推荐案例",info = "推荐案例")
public JsonResponse<Boolean> save(String id, AcceptVo acceptVo){
if(StringUtil.isBlank(id)){
@AutoLog(module = "案例推荐", action = "推荐案例", info = "推荐案例")
public JsonResponse<Boolean> save(String id, AcceptVo acceptVo) {
if (StringUtil.isBlank(id)) {
return badRequest("缺少案例id");
}
try {
recommendService.save(id,acceptVo);
recommendService.save(id, acceptVo);
return success(true);
} catch (Exception e) {
log.error("推荐失败",e);
return error("推荐失败",e.getMessage());
log.error("推荐失败", e);
return error("推荐失败", e.getMessage());
}
}
/**
* 推荐列表
* */
*/
@GetMapping("/query")
public JsonResponse<List<Recommend>> selectRecommend(){
public JsonResponse<List<Recommend>> selectRecommend() {
List<Recommend> recommends = recommendService.selectRecommend();
return success(recommends);
}
}

View File

@@ -1,32 +1,37 @@
package com.xboe.module.boecase.dao;
import java.util.List;
import org.springframework.stereotype.Repository;
import com.xboe.common.OrderCondition;
import com.xboe.common.PageList;
import com.xboe.core.orm.BaseDao;
import com.xboe.core.orm.FieldFilters;
import com.xboe.core.orm.IFieldFilter;
import com.xboe.module.boecase.entity.Cases;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public class CasesDao extends BaseDao<Cases> {
/**
* 案例列表分页
* */
public PageList<Cases> queryPageCases(int pageIndex, int pageSize, String keyWord,OrderCondition order, List<IFieldFilter> filters){
*/
public PageList<Cases> queryPageCases(int pageIndex, int pageSize, String keyWord, OrderCondition order, List<IFieldFilter> filters) {
PageList<Cases> page = this.getGenericDao().findPage(pageIndex, pageSize, getEntityClass(), filters, order);
return page;
}
/**
* 案例列表置顶分页*
* */
public PageList<Cases> queryPageIsTop(int pageIndex,int pageSize,String keyWord,OrderCondition order,List<IFieldFilter> filters){
*/
public PageList<Cases> queryPageIsTop(int pageIndex, int pageSize, String keyWord, OrderCondition order, List<IFieldFilter> filters) {
PageList<Cases> page = this.getGenericDao().findPage(pageIndex, pageSize, getEntityClass(), filters, order);
return page;
}
public Cases getByTitle(String title) {
return this.getGenericDao().findOne(Cases.class, FieldFilters.eq("title", title));
}
}

View File

@@ -0,0 +1,10 @@
package com.xboe.module.boecase.dao;
import com.xboe.core.orm.BaseDao;
import com.xboe.module.boecase.entity.CasesRecommend;
import org.springframework.stereotype.Repository;
@Repository
public class CasesRecommendDao extends BaseDao<CasesRecommend> {
}

View File

@@ -0,0 +1,9 @@
package com.xboe.module.boecase.dao;
import com.xboe.core.orm.BaseDao;
import com.xboe.module.boecase.entity.CasesRecommendLaunchImport;
import org.springframework.stereotype.Repository;
@Repository
public class CasesRecommendLaunchImportDao extends BaseDao<CasesRecommendLaunchImport> {
}

View File

@@ -0,0 +1,9 @@
package com.xboe.module.boecase.dao;
import com.xboe.core.orm.BaseDao;
import com.xboe.module.boecase.entity.CasesRecommendLaunchImportData;
import org.springframework.stereotype.Repository;
@Repository
public class CasesRecommendLaunchImportDataDao extends BaseDao<CasesRecommendLaunchImportData> {
}

View File

@@ -0,0 +1,9 @@
package com.xboe.module.boecase.dao;
import com.xboe.core.orm.BaseDao;
import com.xboe.module.boecase.entity.CasesRecommendPushRecord;
import org.springframework.stereotype.Repository;
@Repository
public class CasesRecommendPushRecordDao extends BaseDao<CasesRecommendPushRecord> {
}

View File

@@ -0,0 +1,56 @@
package com.xboe.module.boecase.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;
}

View File

@@ -0,0 +1,45 @@
package com.xboe.module.boecase.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;
/**
* 案例推荐发起导入
*/
@Data
@Entity
@EqualsAndHashCode(callSuper = false)
@Table(name = SysConstant.TABLE_PRE + "cases_recommend_launch_import")
public class CasesRecommendLaunchImport extends BaseEntity {
/**
* 总条数
*/
@Column(name = "total_num",length = 20)
private Integer totalNum;
/**
* 成功条数
*/
@Column(name = "success_num",length = 20)
private Integer successNum;
/**
* 失败条数
*/
@Column(name = "fail_num",length = 20)
private Integer failNum;
/**
* 上传状态1进行中2成功3失败
*/
@Column(name = "process_status",length = 20)
private Integer processStatus;
}

View File

@@ -0,0 +1,45 @@
package com.xboe.module.boecase.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;
/**
* 案例推荐发起导入
*/
@Data
@Entity
@EqualsAndHashCode(callSuper = false)
@Table(name = SysConstant.TABLE_PRE + "cases_recommend_launch_import")
public class CasesRecommendLaunchImportData extends BaseEntity {
/**
* 导入id
*/
@Column(name = "import_id", length = 20)
private String importId;
/**
* 导入类容第一例标题
*/
@Column(name = "case_title")
private String caseTitle;
/**
* 导入类容匹配的案例id
*/
@Column(name = "case_id")
private String caseId;
/**
* 状态1成功2失败
*/
@Column(name = "status")
private Integer status;
}

View File

@@ -0,0 +1,95 @@
package com.xboe.module.boecase.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 Integer 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;
}

View File

@@ -0,0 +1,7 @@
package com.xboe.module.boecase.service;
public interface ICasesRecommendLaunchImportDataService {
}

View File

@@ -0,0 +1,35 @@
package com.xboe.module.boecase.service;
import com.xboe.module.boecase.entity.CasesRecommendLaunchImport;
import java.util.List;
public interface ICasesRecommendLaunchImportService {
/**
* 导入数据
*
* @param dataList
* @return
*/
String importData(List<List<Object>> dataList);
/**
* 下载失败的数据
*
* @param importId
* @return
*/
List<String> downFailData(String importId);
/**
* 获取导入结果信息
*
* @param id
* @return
*/
CasesRecommendLaunchImport getById(String id);
}

View File

@@ -0,0 +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);
}

View File

@@ -0,0 +1,22 @@
package com.xboe.module.boecase.service;
import com.xboe.common.PageList;
import com.xboe.module.boecase.entity.CasesRecommend;
import com.xboe.module.boecase.vo.CasesRecommendVo;
public interface ICasesRecommendService {
/**
* 分页并查询案例推荐列表
* @param pageIndex
* @param pageSize
* @param casesRecommendVo
* @return
*/
PageList<CasesRecommend> page(int pageIndex, int pageSize, CasesRecommendVo casesRecommendVo);
/**
* 删除
* @param id
*/
void delete(String id);
}

View File

@@ -0,0 +1,10 @@
package com.xboe.module.boecase.service.impl;
import com.xboe.module.boecase.service.ICasesRecommendLaunchImportDataService;
import org.springframework.stereotype.Service;
@Service
public class CasesRecommendLaunchImportDataServiceImpl implements ICasesRecommendLaunchImportDataService {
}

View File

@@ -0,0 +1,83 @@
package com.xboe.module.boecase.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.IdUtil;
import com.xboe.core.orm.FieldFilters;
import com.xboe.module.boecase.dao.CasesDao;
import com.xboe.module.boecase.dao.CasesRecommendLaunchImportDao;
import com.xboe.module.boecase.dao.CasesRecommendLaunchImportDataDao;
import com.xboe.module.boecase.entity.Cases;
import com.xboe.module.boecase.entity.CasesRecommendLaunchImport;
import com.xboe.module.boecase.entity.CasesRecommendLaunchImportData;
import com.xboe.module.boecase.service.ICasesRecommendLaunchImportService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
@Service
public class CasesRecommendLaunchImportServiceImpl implements ICasesRecommendLaunchImportService {
@Resource
private CasesRecommendLaunchImportDao casesRecommendLaunchImportDao;
@Resource
private CasesRecommendLaunchImportDataDao casesRecommendLaunchImportDataDao;
@Resource
private CasesDao casesDao;
@Override
public String importData(List<List<Object>> dataList) {
if (CollectionUtil.isEmpty(dataList)) {
throw new RuntimeException("导入数据为空");
}
int totalNum = dataList.size();
int successNum = 0;
int failNum = 0;
Long importId = IdUtil.getSnowflakeNextId();
for (int i = 1; i < dataList.size(); i++) {
String caseTitle = dataList.get(i).get(0).toString();
CasesRecommendLaunchImportData casesRecommendLaunchImportData = new CasesRecommendLaunchImportData();
casesRecommendLaunchImportData.setImportId(importId + "");
casesRecommendLaunchImportData.setCaseTitle(caseTitle);
Cases cases = casesDao.getByTitle(caseTitle);
if (cases == null) {
failNum++;
casesRecommendLaunchImportData.setStatus(2);
} else {
casesRecommendLaunchImportData.setStatus(1);
casesRecommendLaunchImportData.setCaseTitle(caseTitle);
}
casesRecommendLaunchImportDataDao.save(casesRecommendLaunchImportData);
successNum++;
}
CasesRecommendLaunchImport casesRecommendLaunchImport = new CasesRecommendLaunchImport();
casesRecommendLaunchImport.setFailNum(failNum);
casesRecommendLaunchImport.setId(importId + "");
casesRecommendLaunchImport.setSuccessNum(successNum);
casesRecommendLaunchImport.setTotalNum(totalNum);
casesRecommendLaunchImportDao.save(casesRecommendLaunchImport);
return importId + "";
}
@Override
public List<String> downFailData(String importId) {
List<CasesRecommendLaunchImportData> dataList = casesRecommendLaunchImportDataDao.findList(FieldFilters.eq("import_id", importId));
if (CollectionUtil.isEmpty(dataList)) {
return Collections.emptyList();
}
return dataList.stream().map(CasesRecommendLaunchImportData::getCaseTitle).collect(Collectors.toList());
}
@Override
public CasesRecommendLaunchImport getById(String id) {
return casesRecommendLaunchImportDao.get(id);
}
}

View File

@@ -0,0 +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<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;
}
}

View File

@@ -0,0 +1,49 @@
package com.xboe.module.boecase.service.impl;
import com.xboe.common.OrderCondition;
import com.xboe.common.PageList;
import com.xboe.core.orm.FieldFilters;
import com.xboe.core.orm.LikeMatchMode;
import com.xboe.core.orm.QueryBuilder;
import com.xboe.module.boecase.dao.CasesRecommendDao;
import com.xboe.module.boecase.entity.CasesRecommend;
import com.xboe.module.boecase.service.ICasesRecommendService;
import com.xboe.module.boecase.vo.CasesRecommendVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
@Service
@Transactional
public class CasesRecommendServiceImpl implements ICasesRecommendService {
@Resource
private CasesRecommendDao casesRecommendDao;
@Override
public PageList<CasesRecommend> page(int pageIndex, int pageSize, CasesRecommendVo casesRecommendVo) {
QueryBuilder query=QueryBuilder.from(CasesRecommend.class);
query.addFilter(FieldFilters.eq("deleted",false));
if(StringUtils.isNotBlank(casesRecommendVo.getRecommendName())){
query.addFilter(FieldFilters.like("recommendBy", LikeMatchMode.ANYWHERE, casesRecommendVo.getRecommendName()));
}
if(!CollectionUtils.isEmpty(casesRecommendVo.getRecommendTimeList())){
query.addFilter(FieldFilters.ge("recommendTime",casesRecommendVo.getRecommendTimeList().get(0)));
query.addFilter(FieldFilters.le("recommendTime",casesRecommendVo.getRecommendTimeList().get(1)));
}
query.addOrder(OrderCondition.desc("sysCreateTime"));
query.setPageIndex(pageIndex);
query.setPageSize(pageSize);
PageList<CasesRecommend> page = casesRecommendDao.findPage(query.builder());
return page;
}
@Override
public void delete(String id) {
casesRecommendDao.setDeleted(id);
}
}

View File

@@ -0,0 +1,40 @@
package com.xboe.module.boecase.vo;
import lombok.Data;
import java.util.List;
/**
* @author : civism
* @version 1.0
* @date 2023/6/17 09:46
*/
@Data
public class CasesRecommendLaunchVo {
/**
* 发起类型 1 正常选择 2 文件导入
*/
private Integer launchType;
/**
* 如果launchType为2 必须传递 其他情况不用传递
*/
private String importId;
/**
* 推送的文章标题id launchType 为1必须传递 其他情况不用传递
*/
private List<String> casesIdList;
/**
* 推送的用户id
*/
private List<String> pushUserIdList;
/**
* 推荐机构
*/
private String recommendOrgName;
}

View File

@@ -0,0 +1,17 @@
package com.xboe.module.boecase.vo;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class CasesRecommendVo {
/** 推荐人姓名 */
private String recommendName;
/** 推荐时间区间 */
private List<LocalDateTime> recommendTimeList;
}