mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-11 11:56:50 +08:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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> {
|
||||
}
|
||||
|
||||
@@ -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> {
|
||||
}
|
||||
@@ -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> {
|
||||
}
|
||||
@@ -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> {
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package com.xboe.module.boecase.service;
|
||||
|
||||
|
||||
|
||||
public interface ICasesRecommendLaunchImportDataService {
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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 {
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user