diff --git a/servers/boe-server-all/pom.xml b/servers/boe-server-all/pom.xml index e0f2844b..faacfc00 100644 --- a/servers/boe-server-all/pom.xml +++ b/servers/boe-server-all/pom.xml @@ -17,6 +17,11 @@ 1.8 + + cn.hutool + hutool-all + 5.8.16 + com.xboe xboe-api 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 new file mode 100644 index 00000000..b9083604 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java @@ -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> page(Pagination pager, CasesRecommendVo casesRecommendVo) { + PageList page = iCasesRecommendService.page(pager.getPageIndex(), pager.getPageSize(), casesRecommendVo); + return success(page); + } + + @PostMapping("/delete") + public JsonResponse 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 excelImport(String importId) { + CasesRecommendLaunchImport byId = iCasesRecommendLaunchImportService.getById(importId); + return success(byId); + } + + + /** + * 导入 + * + * @param file + * @return + * @throws Exception + */ + @PostMapping("/import") + public JsonResponse excelImport(@RequestParam("file") MultipartFile file) throws Exception { + ExcelReader reader = ExcelUtil.getReader(file.getInputStream()); + List> 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 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 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)); + } + + +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/RecommendApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/RecommendApi.java index c23a7d55..0200fc26 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/RecommendApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/RecommendApi.java @@ -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 save(String id, AcceptVo acceptVo){ - if(StringUtil.isBlank(id)){ + @AutoLog(module = "案例推荐", action = "推荐案例", info = "推荐案例") + public JsonResponse 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> selectRecommend(){ + public JsonResponse> selectRecommend() { List recommends = recommendService.selectRecommend(); return success(recommends); } - } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesDao.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesDao.java index e5dc25a0..21b0a098 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesDao.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesDao.java @@ -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 { /** * 案例列表分页 - * */ - public PageList queryPageCases(int pageIndex, int pageSize, String keyWord,OrderCondition order, List filters){ + */ + public PageList queryPageCases(int pageIndex, int pageSize, String keyWord, OrderCondition order, List filters) { PageList page = this.getGenericDao().findPage(pageIndex, pageSize, getEntityClass(), filters, order); return page; } + /** * 案例列表置顶分页* - * */ - public PageList queryPageIsTop(int pageIndex,int pageSize,String keyWord,OrderCondition order,List filters){ + */ + public PageList queryPageIsTop(int pageIndex, int pageSize, String keyWord, OrderCondition order, List filters) { PageList 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)); + } + } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRecommendDao.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRecommendDao.java new file mode 100644 index 00000000..69685510 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRecommendDao.java @@ -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 { +} + diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRecommendLaunchImportDao.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRecommendLaunchImportDao.java new file mode 100644 index 00000000..c350d138 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRecommendLaunchImportDao.java @@ -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 { +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRecommendLaunchImportDataDao.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRecommendLaunchImportDataDao.java new file mode 100644 index 00000000..6d90bbb4 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRecommendLaunchImportDataDao.java @@ -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 { +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRecommendPushRecordDao.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRecommendPushRecordDao.java new file mode 100644 index 00000000..3eb8fba2 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRecommendPushRecordDao.java @@ -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 { +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommend.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommend.java new file mode 100644 index 00000000..8ba103f8 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommend.java @@ -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; +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommendLaunchImport.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommendLaunchImport.java new file mode 100644 index 00000000..0c593482 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommendLaunchImport.java @@ -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; + +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommendLaunchImportData.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommendLaunchImportData.java new file mode 100644 index 00000000..66e342c5 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommendLaunchImportData.java @@ -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; + +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommendPushRecord.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommendPushRecord.java new file mode 100644 index 00000000..8761d514 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/CasesRecommendPushRecord.java @@ -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; + + +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendLaunchImportDataService.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendLaunchImportDataService.java new file mode 100644 index 00000000..99b362aa --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendLaunchImportDataService.java @@ -0,0 +1,7 @@ +package com.xboe.module.boecase.service; + + + +public interface ICasesRecommendLaunchImportDataService { + +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendLaunchImportService.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendLaunchImportService.java new file mode 100644 index 00000000..6b784dd0 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendLaunchImportService.java @@ -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> dataList); + + + /** + * 下载失败的数据 + * + * @param importId + * @return + */ + List downFailData(String importId); + + /** + * 获取导入结果信息 + * + * @param id + * @return + */ + CasesRecommendLaunchImport getById(String id); + +} 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 new file mode 100644 index 00000000..86bb4715 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendPushRecordService.java @@ -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); + +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendService.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendService.java new file mode 100644 index 00000000..fbfc2b3e --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesRecommendService.java @@ -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 page(int pageIndex, int pageSize, CasesRecommendVo casesRecommendVo); + + /** + * 删除 + * @param id + */ + void delete(String id); +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendLaunchImportDataServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendLaunchImportDataServiceImpl.java new file mode 100644 index 00000000..3de47775 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendLaunchImportDataServiceImpl.java @@ -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 { + +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendLaunchImportServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendLaunchImportServiceImpl.java new file mode 100644 index 00000000..02083a94 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendLaunchImportServiceImpl.java @@ -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> 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 downFailData(String importId) { + + List 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); + } +} 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 new file mode 100644 index 00000000..24379ec2 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java @@ -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 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; + } +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendServiceImpl.java new file mode 100644 index 00000000..530c385a --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendServiceImpl.java @@ -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 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 page = casesRecommendDao.findPage(query.builder()); + return page; + } + + @Override + public void delete(String id) { + casesRecommendDao.setDeleted(id); + } +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/CasesRecommendLaunchVo.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/CasesRecommendLaunchVo.java new file mode 100644 index 00000000..6b0c1c6f --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/CasesRecommendLaunchVo.java @@ -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 casesIdList; + + /** + * 推送的用户id + */ + private List pushUserIdList; + + /** + * 推荐机构 + */ + private String recommendOrgName; +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/CasesRecommendVo.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/CasesRecommendVo.java new file mode 100644 index 00000000..24988595 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/CasesRecommendVo.java @@ -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 recommendTimeList; + +}