diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java index 03c97c71..820b1d26 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesRecommendApi.java @@ -11,7 +11,6 @@ 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.CasesPushStatusEnum; import com.xboe.enums.CasesRecommendLaunchTypeEnum; import com.xboe.module.boecase.entity.CasesRecommend; import com.xboe.module.boecase.entity.CasesRecommendLaunchImport; @@ -30,7 +29,6 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; -import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -63,10 +61,18 @@ public class CasesRecommendApi extends ApiBaseController { @PostMapping("/page") public JsonResponse> page(Pagination pager, CasesRecommendVo casesRecommendVo) { PageList page = iCasesRecommendService.page(pager.getPageIndex(), pager.getPageSize(), casesRecommendVo); + // 组装查看率 + page.getList().forEach(it -> { + List recordList = iCasesRecommendPushRecordService.findAllByRecommendId(it.getId()); + // 查看率:查看率=案例查看人数(各案例查看人数之合)/(当条推荐记录包含的案例 × 用户数) + long viewCount = recordList.stream().filter(record -> record.getReadFlag().equals(1)).count(); + it.setViewRate(String.valueOf(viewCount * 100 / recordList.size()).concat("%")); + }); + return success(page); } - @PostMapping("/delete") + @GetMapping("/delete") public JsonResponse delete(String id) { if (StringUtils.isBlank(id)) { return badRequest("缺少必要参数"); @@ -171,6 +177,7 @@ public class CasesRecommendApi extends ApiBaseController { if (StringUtils.isEmpty(casesRecommendId)) { throw new RuntimeException("缺少必要参数"); } + CasesRecommend casesRecommend = iCasesRecommendService.findById(casesRecommendId); // 拿取表格里需要的数据 List recordList = iCasesRecommendPushRecordService.findAllByRecommendId(casesRecommendId); // 用个List装表格的所有内容 @@ -179,7 +186,7 @@ public class CasesRecommendApi extends ApiBaseController { Map row = new LinkedHashMap<>(); row.put("案例名称", it.getCaseTitle()); row.put("推送用户", it.getPushUserName()); - row.put("所属组织", "it.get"); + row.put("所属组织", casesRecommend.getRecommendOrgName()); row.put("推送时间", it.getPushTime()); row.put("是否查看", it.getReadFlag()); row.put("首次查看时间", it.getReadStartTime()); @@ -227,17 +234,7 @@ public class CasesRecommendApi extends ApiBaseController { if (StringUtils.isEmpty(casesRecommendPushVo.getCasesRecommendId())) { throw new RuntimeException("缺少必要参数"); } - // 查询 - CasesRecommend db = iCasesRecommendService.findById(casesRecommendPushVo.getCasesRecommendId()); - if (CasesPushStatusEnum.PUSH_SUCCESS.getStatus().equals(db.getPushProgress())){ - // 当为推送成功时为 - iCasesRecommendPushRecordService.rePushOrWithdraw(true, casesRecommendPushVo.getCasesRecommendId()); - }else if (CasesPushStatusEnum.PUSH_FAIL.getStatus().equals(db.getPushProgress()) - || CasesPushStatusEnum.PUSH_REVOKE.getStatus().equals(db.getPushProgress())){ - // 推送失败或者已撤回时 - iCasesRecommendPushRecordService.rePushOrWithdraw(false, casesRecommendPushVo.getCasesRecommendId()); - } - + iCasesRecommendService.rePushOrWithdraw(casesRecommendPushVo); return success(true); } 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 index 4ce96881..5ea6e659 100644 --- 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 @@ -2,6 +2,7 @@ package com.xboe.module.boecase.service; import com.xboe.common.PageList; import com.xboe.module.boecase.entity.CasesRecommend; +import com.xboe.module.boecase.vo.CasesRecommendPushVo; import com.xboe.module.boecase.vo.CasesRecommendVo; public interface ICasesRecommendService { @@ -26,4 +27,11 @@ public interface ICasesRecommendService { * @return */ CasesRecommend findById(String id); + + /** + * 撤回或者重新推送 + * @param casesRecommendPushVo + */ + void rePushOrWithdraw(CasesRecommendPushVo casesRecommendPushVo); + } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java index 9cb93f9f..e11c6d7c 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesRecommendPushRecordServiceImpl.java @@ -114,8 +114,8 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR record.setPushStatus(CasesPushStatusEnum.PUSH_REVOKE.getStatus()) ); } else { - recordList.stream().forEach(record -> - record.setPushStatus(CasesPushStatusEnum.PUSH_ING.getStatus()) + recordList.stream().filter(it -> CasesPushStatusEnum.PUSH_SUCCESS.getStatus() != it.getPushStatus()).forEach(record -> + record.setPushStatus(CasesPushStatusEnum.WAIT_PUSH.getStatus()) ); } if (CollectionUtil.isNotEmpty(recordList)) { 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 index f07f31bf..69a6715b 100644 --- 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 @@ -5,9 +5,12 @@ 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.enums.CasesPushStatusEnum; import com.xboe.module.boecase.dao.CasesRecommendDao; import com.xboe.module.boecase.entity.CasesRecommend; +import com.xboe.module.boecase.service.ICasesRecommendPushRecordService; import com.xboe.module.boecase.service.ICasesRecommendService; +import com.xboe.module.boecase.vo.CasesRecommendPushVo; import com.xboe.module.boecase.vo.CasesRecommendVo; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -22,20 +25,22 @@ public class CasesRecommendServiceImpl implements ICasesRecommendService { @Resource private CasesRecommendDao casesRecommendDao; + @Resource + private ICasesRecommendPushRecordService iCasesRecommendPushRecordService; @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())); + query.addFilter(FieldFilters.like("recommend_by", 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.addFilter(FieldFilters.ge("recommend_time",casesRecommendVo.getRecommendTimeList().get(0))); + query.addFilter(FieldFilters.le("recommend_time",casesRecommendVo.getRecommendTimeList().get(1))); } - query.addOrder(OrderCondition.desc("sysCreateTime")); + query.addOrder(OrderCondition.desc("sys_create_time")); query.setPageIndex(pageIndex); query.setPageSize(pageSize); PageList page = casesRecommendDao.findPage(query.builder()); @@ -51,4 +56,21 @@ public class CasesRecommendServiceImpl implements ICasesRecommendService { public CasesRecommend findById(String id) { return casesRecommendDao.get(id); } + + @Override + public void rePushOrWithdraw(CasesRecommendPushVo casesRecommendPushVo) { + // 查询 + CasesRecommend db = casesRecommendDao.get(casesRecommendPushVo.getCasesRecommendId()); + if (CasesPushStatusEnum.PUSH_SUCCESS.getStatus().equals(db.getPushProgress())){ + // 当为推送成功时为 + iCasesRecommendPushRecordService.rePushOrWithdraw(true, casesRecommendPushVo.getCasesRecommendId()); + db.setPushProgress(CasesPushStatusEnum.PUSH_REVOKE.getStatus()); + }else if (CasesPushStatusEnum.PUSH_FAIL.getStatus().equals(db.getPushProgress()) + || CasesPushStatusEnum.PUSH_REVOKE.getStatus().equals(db.getPushProgress())){ + // 推送失败或者已撤回时 + iCasesRecommendPushRecordService.rePushOrWithdraw(false, casesRecommendPushVo.getCasesRecommendId()); + db.setPushProgress(CasesPushStatusEnum.WAIT_PUSH.getStatus()); + } + casesRecommendDao.update(db); + } }