This commit is contained in:
Guava
2023-06-21 11:34:04 +08:00
4 changed files with 48 additions and 21 deletions

View File

@@ -11,7 +11,6 @@ import com.xboe.common.PageList;
import com.xboe.common.Pagination; import com.xboe.common.Pagination;
import com.xboe.core.JsonResponse; import com.xboe.core.JsonResponse;
import com.xboe.core.api.ApiBaseController; import com.xboe.core.api.ApiBaseController;
import com.xboe.enums.CasesPushStatusEnum;
import com.xboe.enums.CasesRecommendLaunchTypeEnum; import com.xboe.enums.CasesRecommendLaunchTypeEnum;
import com.xboe.module.boecase.entity.CasesRecommend; import com.xboe.module.boecase.entity.CasesRecommend;
import com.xboe.module.boecase.entity.CasesRecommendLaunchImport; import com.xboe.module.boecase.entity.CasesRecommendLaunchImport;
@@ -30,7 +29,6 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -63,10 +61,18 @@ public class CasesRecommendApi extends ApiBaseController {
@PostMapping("/page") @PostMapping("/page")
public JsonResponse<PageList<CasesRecommend>> page(Pagination pager, CasesRecommendVo casesRecommendVo) { public JsonResponse<PageList<CasesRecommend>> page(Pagination pager, CasesRecommendVo casesRecommendVo) {
PageList<CasesRecommend> page = iCasesRecommendService.page(pager.getPageIndex(), pager.getPageSize(), casesRecommendVo); PageList<CasesRecommend> page = iCasesRecommendService.page(pager.getPageIndex(), pager.getPageSize(), casesRecommendVo);
// 组装查看率
page.getList().forEach(it -> {
List<CasesRecommendPushRecord> 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); return success(page);
} }
@PostMapping("/delete") @GetMapping("/delete")
public JsonResponse<Boolean> delete(String id) { public JsonResponse<Boolean> delete(String id) {
if (StringUtils.isBlank(id)) { if (StringUtils.isBlank(id)) {
return badRequest("缺少必要参数"); return badRequest("缺少必要参数");
@@ -171,6 +177,7 @@ public class CasesRecommendApi extends ApiBaseController {
if (StringUtils.isEmpty(casesRecommendId)) { if (StringUtils.isEmpty(casesRecommendId)) {
throw new RuntimeException("缺少必要参数"); throw new RuntimeException("缺少必要参数");
} }
CasesRecommend casesRecommend = iCasesRecommendService.findById(casesRecommendId);
// 拿取表格里需要的数据 // 拿取表格里需要的数据
List<CasesRecommendPushRecord> recordList = iCasesRecommendPushRecordService.findAllByRecommendId(casesRecommendId); List<CasesRecommendPushRecord> recordList = iCasesRecommendPushRecordService.findAllByRecommendId(casesRecommendId);
// 用个List<Map>装表格的所有内容 // 用个List<Map>装表格的所有内容
@@ -179,7 +186,7 @@ public class CasesRecommendApi extends ApiBaseController {
Map<String, Object> row = new LinkedHashMap<>(); Map<String, Object> row = new LinkedHashMap<>();
row.put("案例名称", it.getCaseTitle()); row.put("案例名称", it.getCaseTitle());
row.put("推送用户", it.getPushUserName()); row.put("推送用户", it.getPushUserName());
row.put("所属组织", "it.get"); row.put("所属组织", casesRecommend.getRecommendOrgName());
row.put("推送时间", it.getPushTime()); row.put("推送时间", it.getPushTime());
row.put("是否查看", it.getReadFlag()); row.put("是否查看", it.getReadFlag());
row.put("首次查看时间", it.getReadStartTime()); row.put("首次查看时间", it.getReadStartTime());
@@ -227,17 +234,7 @@ public class CasesRecommendApi extends ApiBaseController {
if (StringUtils.isEmpty(casesRecommendPushVo.getCasesRecommendId())) { if (StringUtils.isEmpty(casesRecommendPushVo.getCasesRecommendId())) {
throw new RuntimeException("缺少必要参数"); throw new RuntimeException("缺少必要参数");
} }
// 查询 iCasesRecommendService.rePushOrWithdraw(casesRecommendPushVo);
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());
}
return success(true); return success(true);
} }

View File

@@ -2,6 +2,7 @@ package com.xboe.module.boecase.service;
import com.xboe.common.PageList; import com.xboe.common.PageList;
import com.xboe.module.boecase.entity.CasesRecommend; import com.xboe.module.boecase.entity.CasesRecommend;
import com.xboe.module.boecase.vo.CasesRecommendPushVo;
import com.xboe.module.boecase.vo.CasesRecommendVo; import com.xboe.module.boecase.vo.CasesRecommendVo;
public interface ICasesRecommendService { public interface ICasesRecommendService {
@@ -26,4 +27,11 @@ public interface ICasesRecommendService {
* @return * @return
*/ */
CasesRecommend findById(String id); CasesRecommend findById(String id);
/**
* 撤回或者重新推送
* @param casesRecommendPushVo
*/
void rePushOrWithdraw(CasesRecommendPushVo casesRecommendPushVo);
} }

View File

@@ -114,8 +114,8 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR
record.setPushStatus(CasesPushStatusEnum.PUSH_REVOKE.getStatus()) record.setPushStatus(CasesPushStatusEnum.PUSH_REVOKE.getStatus())
); );
} else { } else {
recordList.stream().forEach(record -> recordList.stream().filter(it -> CasesPushStatusEnum.PUSH_SUCCESS.getStatus() != it.getPushStatus()).forEach(record ->
record.setPushStatus(CasesPushStatusEnum.PUSH_ING.getStatus()) record.setPushStatus(CasesPushStatusEnum.WAIT_PUSH.getStatus())
); );
} }
if (CollectionUtil.isNotEmpty(recordList)) { if (CollectionUtil.isNotEmpty(recordList)) {

View File

@@ -5,9 +5,12 @@ import com.xboe.common.PageList;
import com.xboe.core.orm.FieldFilters; import com.xboe.core.orm.FieldFilters;
import com.xboe.core.orm.LikeMatchMode; import com.xboe.core.orm.LikeMatchMode;
import com.xboe.core.orm.QueryBuilder; import com.xboe.core.orm.QueryBuilder;
import com.xboe.enums.CasesPushStatusEnum;
import com.xboe.module.boecase.dao.CasesRecommendDao; import com.xboe.module.boecase.dao.CasesRecommendDao;
import com.xboe.module.boecase.entity.CasesRecommend; 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.service.ICasesRecommendService;
import com.xboe.module.boecase.vo.CasesRecommendPushVo;
import com.xboe.module.boecase.vo.CasesRecommendVo; import com.xboe.module.boecase.vo.CasesRecommendVo;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -22,20 +25,22 @@ public class CasesRecommendServiceImpl implements ICasesRecommendService {
@Resource @Resource
private CasesRecommendDao casesRecommendDao; private CasesRecommendDao casesRecommendDao;
@Resource
private ICasesRecommendPushRecordService iCasesRecommendPushRecordService;
@Override @Override
public PageList<CasesRecommend> page(int pageIndex, int pageSize, CasesRecommendVo casesRecommendVo) { public PageList<CasesRecommend> page(int pageIndex, int pageSize, CasesRecommendVo casesRecommendVo) {
QueryBuilder query=QueryBuilder.from(CasesRecommend.class); QueryBuilder query=QueryBuilder.from(CasesRecommend.class);
query.addFilter(FieldFilters.eq("deleted",false)); query.addFilter(FieldFilters.eq("deleted",false));
if(StringUtils.isNotBlank(casesRecommendVo.getRecommendName())){ 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())){ if(!CollectionUtils.isEmpty(casesRecommendVo.getRecommendTimeList())){
query.addFilter(FieldFilters.ge("recommendTime",casesRecommendVo.getRecommendTimeList().get(0))); query.addFilter(FieldFilters.ge("recommend_time",casesRecommendVo.getRecommendTimeList().get(0)));
query.addFilter(FieldFilters.le("recommendTime",casesRecommendVo.getRecommendTimeList().get(1))); 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.setPageIndex(pageIndex);
query.setPageSize(pageSize); query.setPageSize(pageSize);
PageList<CasesRecommend> page = casesRecommendDao.findPage(query.builder()); PageList<CasesRecommend> page = casesRecommendDao.findPage(query.builder());
@@ -51,4 +56,21 @@ public class CasesRecommendServiceImpl implements ICasesRecommendService {
public CasesRecommend findById(String id) { public CasesRecommend findById(String id) {
return casesRecommendDao.get(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);
}
} }