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.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<PageList<CasesRecommend>> page(Pagination pager, CasesRecommendVo 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);
}
@PostMapping("/delete")
@GetMapping("/delete")
public JsonResponse<Boolean> 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<CasesRecommendPushRecord> recordList = iCasesRecommendPushRecordService.findAllByRecommendId(casesRecommendId);
// 用个List<Map>装表格的所有内容
@@ -179,7 +186,7 @@ public class CasesRecommendApi extends ApiBaseController {
Map<String, Object> 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);
}

View File

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

View File

@@ -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)) {

View File

@@ -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<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()));
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<CasesRecommend> 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);
}
}