From ae4382441ac786707f31451061d2e7f600f5c880 Mon Sep 17 00:00:00 2001 From: buerjun Date: Thu, 29 Jun 2023 16:19:41 +0800 Subject: [PATCH 01/22] =?UTF-8?q?=E6=8E=A8=E8=8D=90=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E5=BC=80=E5=8F=91=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/boecase/dao/CasesRecordDao.java | 32 ++--- .../com/xboe/module/boecase/entity/Cases.java | 26 ++++ .../service/impl/CasesServiceImpl.java | 136 ++++++------------ .../boecase/dao/CasesRecordDaoTest.java | 15 ++ 4 files changed, 99 insertions(+), 110 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRecordDao.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRecordDao.java index 09c11042..f633b194 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRecordDao.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRecordDao.java @@ -18,43 +18,37 @@ import org.springframework.stereotype.Repository; @Repository public interface CasesRecordDao extends JpaRepository, JpaSpecificationExecutor { - @Query(nativeQuery = true, value = "select b.id,b.sys_create_aid,b.sys_create_by,b.sys_create_time,b.deleted,b.sys_update_by,b.sys_update_time,b.sys_version," + - "b.excellent_time,b.excellent,b.case_value,b.readers,b.keyword5,b.keyword4,b.keyword3,b.keyword2,b.keyword1,b.case_theme_description,b.case_theme" + - ",b.case_type2,b.case_type1,b.case_type,b.case_owner_org,b.case_specialty_sequence,b.case_other_contributor,b.case_owner_phone,b.case_owner_department" + - ",b.case_owner,b.case_flow,b.case_scope,b.is_leadership_plan,b.case_channel,b.email,b.contact_number,b.department,b.drafter,b.end_time,b.drafting_time," + - "b.confidentiality_level,b.approval_number,b.major_type,b.org_domain_parent3,b.org_domain_parent2,b.org_domain_parent,b.org_domain,b.summary,b.cites,b.recommends," + - "b.favorites,b.shares,b.praises,b.comments,b.views,b.status,b.top_time,b.is_top,b.recommend_time,b.bre_commend,b.cover_url,b.author_name,b.author_id,b.file_name" + - ",b.file_path,b.content,b.company_id,b.title" + - " from boe_cases_recommend_push_record a LEFT JOIN boe_cases b on a.case_id = b.id and b.deleted=0 " + - " where a.deleted=0 and a.push_user_id= :#{#condition.userId}" + - " and if(:#{#condition.keyWord} is not null,b.title like CONCAT('%',:#{#condition.keyWord},'%')" + + @Query(nativeQuery = true, value = "select b.*" + + " from boe_cases_recommend_push_record a INNER JOIN boe_cases b on a.case_id = b.id" + + " where b.deleted=0 and a.push_status = 3 and a.push_user_id= :#{#condition.userId}" + + " and if(IFNULL(:#{#condition.keyWord},'')!='',b.title like CONCAT('%',:#{#condition.keyWord},'%')" + " or b.author_name like CONCAT('%',:#{#condition.keyWord},'%')" + " or b.keyword1 like CONCAT('%',:#{#condition.keyWord},'%')" + " or b.keyword2 like CONCAT('%',:#{#condition.keyWord},'%')" + " or b.keyword3 like CONCAT('%',:#{#condition.keyWord},'%')" + " or b.keyword4 like CONCAT('%',:#{#condition.keyWord},'%')" + " or b.keyword5 like CONCAT('%',:#{#condition.keyWord},'%'),1=1)" + - " and if(coalesce(:#{#condition.years},null) is null OR YEAR(b.sys_create_time) in (:#{#condition.years}))" + - " and if(:#{#condition.majorType} !='' ,b.major_type = :#{#condition.majorType},1=1) " + + " and if(:#{#condition.yearsEmpty},1=1, YEAR(b.sys_create_time) in (:#{#condition.years}))" + + " and if(IFNULL(:#{#condition.majorType},'') !='',b.major_type = :#{#condition.majorType},1=1) " + " and if(:#{#condition.org1Empty}, 1=1, b.org_domain_parent in (:#{#condition.org1}))" + " and if(:#{#condition.org2Empty}, 1=1, b.org_domain_parent2 in (:#{#condition.org2}))" + " and if(:#{#condition.org3Empty}, 1=1, b.org_domain_parent3 in (:#{#condition.org3}))" + " group by b.id order by a.sys_create_time DESC", - countQuery = "select count(*)" + - " from boe_cases_recommend_push_record a LEFT JOIN boe_cases b on a.case_id = b.id and b.deleted=0 " + - " where a.deleted=0 and a.push_user_id= :#{#condition.userId}" + - " and if(:#{#condition.keyWord} is not null,b.title like CONCAT('%',:#{#condition.keyWord},'%')" + + countQuery = "select count(*) FROM (select b.*" + + " from boe_cases_recommend_push_record a INNER JOIN boe_cases b on a.case_id = b.id " + + " where b.deleted=0 and a.push_status = 3 and a.push_user_id= :#{#condition.userId}" + + " and if(IFNULL(:#{#condition.keyWord},'')!='',b.title like CONCAT('%',:#{#condition.keyWord},'%')" + " or b.author_name like CONCAT('%',:#{#condition.keyWord},'%')" + " or b.keyword1 like CONCAT('%',:#{#condition.keyWord},'%')" + " or b.keyword2 like CONCAT('%',:#{#condition.keyWord},'%')" + " or b.keyword3 like CONCAT('%',:#{#condition.keyWord},'%')" + " or b.keyword4 like CONCAT('%',:#{#condition.keyWord},'%')" + " or b.keyword5 like CONCAT('%',:#{#condition.keyWord},'%'),1=1)" + - " and :#{#condition.yearsEmpty} = false OR YEAR(b.sys_create_time) in (:#{#condition.years})" + - " and if(:#{#condition.majorType} !='' ,b.major_type = :#{#condition.majorType},1=1) " + + " and if(:#{#condition.yearsEmpty},1=1, YEAR(b.sys_create_time) in (:#{#condition.years}))" + + " and if(IFNULL(:#{#condition.majorType},'') !='' ,b.major_type = :#{#condition.majorType},1=1) " + " and if(:#{#condition.org1Empty}, 1=1, b.org_domain_parent in (:#{#condition.org1}))" + " and if(:#{#condition.org2Empty}, 1=1, b.org_domain_parent2 in (:#{#condition.org2}))" + " and if(:#{#condition.org3Empty}, 1=1, b.org_domain_parent3 in (:#{#condition.org3}))" + - " group by b.id") + " group by b.id) as b") Page queryList(Pageable pageable, @Param("condition") CasePageVo casePage); } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/Cases.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/Cases.java index df6ef6e0..a2f12514 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/Cases.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/Cases.java @@ -267,6 +267,32 @@ public class Cases extends BaseEntity { @Transient private String recommendOrgName; + @Transient + private Long recommendId; + + public Long getRecommendId() { + return recommendId; + } + + public void setRecommendId(Long recommendId) { + this.recommendId = recommendId; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } public Cases() { diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java index e73cda3c..d33e018e 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java @@ -293,7 +293,7 @@ public class CasesServiceImpl implements ICasesService { List subFilters = new ArrayList<>(); subFilters.add(FieldFilters.eq("pushUserId", caseVo.getUserId())); subFilters.add(FieldFilters.in("caseId", caseIds)); - subFilters.add(FieldFilters.eq("pushStatus", 4)); + subFilters.add(FieldFilters.eq("pushStatus", 3)); subFilters.add(FieldFilters.eq("deleted", Boolean.FALSE)); QueryBuilder queryBuilder = recommendCasesQuery.addFilters(subFilters) @@ -332,99 +332,53 @@ public class CasesServiceImpl implements ICasesService { @Override public PageList queryRecommendPageCasesV2(CasePageVo caseVo) { - PageList page = null; - QueryBuilder query=QueryBuilder.from("CasesRecommendPushRecord a, Cases b"); - query.addFields("b"); - query.addFilter(FieldFilters.eqField("a.caseId", "b.id")); - query.addFilter(FieldFilters.eq("b.deleted",false)); - query.addFilter(FieldFilters.eq("a.pushUserId",caseVo.getUserId())); - List likes = new ArrayList(); - String keyword = caseVo.getKeyWord(); - likes.add(FieldFilters.like("b.title", LikeMatchMode.ANYWHERE, keyword)); - likes.add(FieldFilters.like("b.authorName", LikeMatchMode.ANYWHERE, keyword)); - likes.add(FieldFilters.like("b.keyword1", LikeMatchMode.ANYWHERE, keyword)); - likes.add(FieldFilters.like("b.keyword2", LikeMatchMode.ANYWHERE, keyword)); - likes.add(FieldFilters.like("b.keyword3", LikeMatchMode.ANYWHERE, keyword)); - likes.add(FieldFilters.like("b.keyword4", LikeMatchMode.ANYWHERE, keyword)); - likes.add(FieldFilters.like("b.keyword5", LikeMatchMode.ANYWHERE, keyword)); - List filters = new ArrayList<>(); + PageRequest pageRequest = PageRequest.of(caseVo.getPageIndex() - 1, caseVo.getPageSize()); + Page cases = casesRecordDao.queryList(pageRequest,caseVo); + PageList pageList = new PageList<>(); + pageList.setCount((int) cases.getTotalElements()); + pageList.setPageSize(cases.getSize()); + List content = cases.getContent(); + List caseIds = content.stream().map(Cases::getId).collect(Collectors.toList()); + String userId = caseVo.getUserId(); + if (CollUtil.isNotEmpty(caseIds)) { + QueryBuilder recommendCasesQuery = QueryBuilder.from(CasesRecommendPushRecord.class); + recommendCasesQuery.addField("new CasesRecommendPushRecord(recommendId,caseId)"); + List subFilters = new ArrayList<>(); + subFilters.add(FieldFilters.eq("pushUserId", userId)); + subFilters.add(FieldFilters.in("caseId", caseIds)); + subFilters.add(FieldFilters.eq("pushStatus", 3)); + subFilters.add(FieldFilters.eq("deleted", Boolean.FALSE)); - if (StringUtil.isNotBlank(caseVo.getKeyWord())) { - filters.add(FieldFilters.or(likes)); - } - //创建时间过滤 - List years = caseVo.getYears(); - if (CollUtil.isNotEmpty(years)) { - filters.add(new CustomFieldInFilter("YEAR(b.sysCreateTime)", "b.sysCreateTime", years)); - } -//增加只是查询有附件的 - filters.add(FieldFilters.isNotNull("b.filePath")); - filters.add(FieldFilters.ne("b.filePath", "")); - - String majorType = caseVo.getMajorType(); - if (StringUtil.isNotBlank(majorType)) { - List casesTypes = casesMajorTypeRepoDao.findCasesBy(StrUtil.split(majorType, ",")); - if (CollUtil.isNotEmpty(casesTypes)) { - List caseIds = casesTypes.stream().map(CasesMajorType::getCaseId).collect(Collectors.toList()); - query.addFilter(FieldFilters.in("b.id", caseIds)); - } else { - return page; - } - } - List orgDomainDtos = caseVo.getOrgDomainDtos(); - IFieldFilter orgDomain = null; - if (CollUtil.isNotEmpty(orgDomainDtos)) { - for (int i = 0; i < orgDomainDtos.size(); i++) { - OrgDomainDto domainDto = orgDomainDtos.get(i); - String orgDomainParent = domainDto.getParent(); - IFieldFilter itemFilter = FieldFilters.eq("b.orgDomainParent", orgDomainParent); - List orgDomainParent2 = domainDto.getChildren(); - if (CollUtil.isNotEmpty(orgDomainParent2)) { - List seconds = orgDomainParent2.stream().map(OrgDomainDto::getParent).collect(Collectors.toList()); - IFieldFilter orgDomainParentFilter = FieldFilters.in("b.orgDomainParent2", seconds); - itemFilter = FieldFilters.and(itemFilter, orgDomainParentFilter); - } - for (OrgDomainDto orgDomainDto : orgDomainParent2) { - List orgDomainParent3 = orgDomainDto.getChildren(); - if (CollUtil.isNotEmpty(orgDomainParent3)) { - List thirds = orgDomainParent3.stream().map(OrgDomainDto::getParent).collect(Collectors.toList()); - IFieldFilter orgDomainParent3Filter = FieldFilters.eq("b.orgDomainParent3", thirds); - itemFilter = FieldFilters.and(itemFilter, orgDomainParent3Filter); - } - } - if (i == 0) { - orgDomain = itemFilter; - } else { - orgDomain = FieldFilters.or(orgDomain, itemFilter); + QueryBuilder queryBuilder = recommendCasesQuery.addFilters(subFilters) + .addOrder("sysCreateTime", OrderDirection.DESC) + .addGroupBy("recommendId"); + List pushRecords = casesRecommendPushRecordDao.findList(queryBuilder.builder()); + if (CollUtil.isNotEmpty(pushRecords)) { + List rIds = pushRecords.stream().map(CasesRecommendPushRecord::getRecommendId).collect(Collectors.toList()); + QueryBuilder builder = QueryBuilder.from(CasesRecommend.class); + builder.addField("new CasesRecommend(id,recommendOrgName)"); + List recommendFilters = new ArrayList<>(); + recommendFilters.add(FieldFilters.eq("deleted", Boolean.FALSE)); + recommendFilters.add(FieldFilters.in("id", rIds)); + builder.addFilters(recommendFilters); + List recommands = casesRecommendDao.findList(builder.builder()); + if (CollUtil.isNotEmpty(recommands)) { + Map collect = recommands.stream().collect(Collectors.toMap(k -> k.getId(), v -> v.getRecommendOrgName())); + content.forEach(it -> { + CasesRecommendPushRecord one = CollUtil.findOne(pushRecords, (a) -> StrUtil.equals(a.getCaseId(), it.getId())); + if (Objects.nonNull(one)) { + String recommendOrgName = collect.get(one.getRecommendId()); + it.setBreCommend(1); + it.setRecommendOrgName(recommendOrgName); + } else { + it.setBreCommend(0); + } + }); } } } - if (Objects.nonNull(orgDomain)) { - filters.add(orgDomain); - } - - if (StringUtils.isNotBlank(caseVo.getCaseType())) { - filters.add(FieldFilters.eq("b.caseType", caseVo.getCaseType())); - } - OrderCondition order = null; - if (StringUtils.isNotBlank(caseVo.getOrderField())) { - if (caseVo.getOrderAsc() == null || caseVo.getOrderAsc()) { - order = OrderCondition.asc(caseVo.getOrderField()); - } else { - order = OrderCondition.desc(caseVo.getOrderField()); - } - } else { - order = OrderCondition.desc("b.pushTime"); - } - - query.addFilters(filters); - query.addGroupBy("b.id"); - query.addOrder(order); - query.addOrder(OrderCondition.rand()); - query.setPageIndex(caseVo.getPageIndex()); - query.setPageSize(caseVo.getPageSize()); - page = casesDao.findPage(query.builder()); - return page; + pageList.setList(content); + return pageList; } public static void main(String[] args) { @@ -933,7 +887,7 @@ public class CasesServiceImpl implements ICasesService { String accountId = current.getAccountId(); List result = new ArrayList<>(); try { - String hql = "select a.caseId FROM CasesRecommendPushRecord a left join Cases b ON a.caseId = b.id WHERE a.pushUserId=?1 and b.deleted = false group by a.caseId ORDER By a.pushTime DESC"; + String hql = "select a.caseId FROM CasesRecommendPushRecord a left join Cases b ON a.caseId = b.id WHERE a.pushUserId=?1 and a.pushStatus=4 and b.deleted = false group by a.caseId ORDER By a.pushTime DESC"; List listFields = casesRecommendDao.findListFields(hql, CASE_LEN, ListUtil.toList(accountId)); List caseIds = new ArrayList<>(); if (CollUtil.isNotEmpty(listFields)) { diff --git a/servers/boe-server-all/src/test/java/com/xboe/module/boecase/dao/CasesRecordDaoTest.java b/servers/boe-server-all/src/test/java/com/xboe/module/boecase/dao/CasesRecordDaoTest.java index 5dec4da4..05aca682 100644 --- a/servers/boe-server-all/src/test/java/com/xboe/module/boecase/dao/CasesRecordDaoTest.java +++ b/servers/boe-server-all/src/test/java/com/xboe/module/boecase/dao/CasesRecordDaoTest.java @@ -1,5 +1,8 @@ package com.xboe.module.boecase.dao; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; import com.xboe.module.boecase.dto.CasePageVo; import com.xboe.module.boecase.entity.Cases; import org.junit.jupiter.api.Test; @@ -7,6 +10,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; import org.springframework.test.context.ActiveProfiles; import static org.junit.jupiter.api.Assertions.*; @@ -18,4 +22,15 @@ class CasesRecordDaoTest { @Autowired private CasesRecordDao casesRecordDao; + @Test + void queryList() throws JsonProcessingException { + PageRequest of = PageRequest.of(0, 10); + String jsonStr = "{\"pageIndex\":1,\"pageSize\":10,\"orderField\":\"excellent\",\"majorType\":\"\",\"orgDomainDtos\":[],\"orderAsc\":false,\"excellent\":true,\"breCommend\":true,\"caseType\":\"\",\"authorName\":\"\",\"notInIds\":[],\"type\":\"recommend\",\"userId\":\"\",\"parent\":\"\",\"children\":[],\"name\":\"\",\"years\":[2023,2022,2020,2021]}"; + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false); + CasePageVo pageVo = mapper.readValue(jsonStr, CasePageVo.class); + pageVo.setUserId("965341999643234304"); + Page cases = casesRecordDao.queryList(of, pageVo); + System.out.println(cases); + } } \ No newline at end of file From e1fc23ba57fc4f46c8d43772cc93bc07bf7c115a Mon Sep 17 00:00:00 2001 From: Guava Date: Thu, 29 Jun 2023 18:01:07 +0800 Subject: [PATCH 02/22] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=8F=91=E8=B5=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/xboe/api/ThirdApi.java | 85 +++++++++++++++++++ .../main/java/com/xboe/api/vo/AuditList.java | 24 ++++++ .../java/com/xboe/api/vo/AuditListParam.java | 14 +++ .../java/com/xboe/api/vo/AuditRootBean.java | 41 +++++++++ .../java/com/xboe/api/vo/OrgRootBean.java | 63 ++++++++++++++ .../src/main/java/com/xboe/api/vo/Result.java | 27 ++++++ .../java/com/xboe/api/vo/TreeSearchVo.java | 15 ++++ .../java/com/xboe/api/vo/UserInfoList.java | 40 +++++++++ .../com/xboe/api/vo/UserInfoListRootBean.java | 37 ++++++++ .../java/com/xboe/api/vo/UserListParam.java | 19 +++++ .../module/boecase/api/CasesRecommendApi.java | 10 ++- .../ICasesRecommendPushRecordService.java | 2 +- .../CasesRecommendPushRecordServiceImpl.java | 41 ++++++++- .../boecase/vo/CasesRecommendLaunchVo.java | 11 +++ .../src/main/resources/application.properties | 25 ++---- .../src/main/resources/log/logback-dev.xml | 2 +- 16 files changed, 431 insertions(+), 25 deletions(-) create mode 100644 servers/boe-server-all/src/main/java/com/xboe/api/ThirdApi.java create mode 100644 servers/boe-server-all/src/main/java/com/xboe/api/vo/AuditList.java create mode 100644 servers/boe-server-all/src/main/java/com/xboe/api/vo/AuditListParam.java create mode 100644 servers/boe-server-all/src/main/java/com/xboe/api/vo/AuditRootBean.java create mode 100644 servers/boe-server-all/src/main/java/com/xboe/api/vo/OrgRootBean.java create mode 100644 servers/boe-server-all/src/main/java/com/xboe/api/vo/Result.java create mode 100644 servers/boe-server-all/src/main/java/com/xboe/api/vo/TreeSearchVo.java create mode 100644 servers/boe-server-all/src/main/java/com/xboe/api/vo/UserInfoList.java create mode 100644 servers/boe-server-all/src/main/java/com/xboe/api/vo/UserInfoListRootBean.java create mode 100644 servers/boe-server-all/src/main/java/com/xboe/api/vo/UserListParam.java diff --git a/servers/boe-server-all/src/main/java/com/xboe/api/ThirdApi.java b/servers/boe-server-all/src/main/java/com/xboe/api/ThirdApi.java new file mode 100644 index 00000000..cefe4aec --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/api/ThirdApi.java @@ -0,0 +1,85 @@ +package com.xboe.api; + +import cn.hutool.core.collection.ListUtil; +import cn.hutool.core.lang.Opt; +import cn.hutool.http.HttpRequest; +import cn.hutool.json.JSONUtil; +import com.xboe.api.vo.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.List; +import java.util.Optional; +import java.util.concurrent.ForkJoinPool; +import java.util.stream.IntStream; + +@Service +@Slf4j +public class ThirdApi { + + public static final ForkJoinPool REQUEST_TASK = new ForkJoinPool(100); + + @Value("${orgTree.orgChildTreeList}") + private String orgChildTreeListUrl; + + @Value("${audience.usersByAudienceList}") + private String usersByAudienceList; + + @Value("${userBasic.searchUserList}") + private String searchUserListUrl; + + + public List getAllUserList(UserListParam userListParam, String token) { + log.info("获取用户"); + String resp = Optional.ofNullable(HttpRequest.post(searchUserListUrl).body(JSONUtil.toJsonStr(userListParam)).header("token", token).execute().body()).orElseThrow(() -> new RuntimeException("token校验失败")); + System.out.println(resp); + return Opt.ofBlankAble(resp).map(t -> JSONUtil.toBean(resp, UserInfoListRootBean.class).success()) + .map(UserInfoListRootBean::getResult) + .map(result -> Opt.ofEmptyAble(result.getUserInfoList()).peek(t -> nextPage(userListParam, token, t, result)).orElse(ListUtil.toList())) + .orElse(ListUtil.toList()); + } + + private void getAllUserList(UserListParam userListParam, String token, List userInfoLists) { + log.info("获取用户2"); + String resp = Optional.ofNullable(HttpRequest.post(searchUserListUrl).body(JSONUtil.toJsonStr(userListParam)).header("token", token).execute().body()).orElseThrow(() -> new RuntimeException("token校验失败")); + System.out.println(resp); + Opt.ofBlankAble(resp).map(t -> JSONUtil.toBean(t, UserInfoListRootBean.class).success()).map(UserInfoListRootBean::getResult).map(UserInfoListRootBean.ResultData::getUserInfoList).stream().flatMap(Collection::stream).forEach(userInfoLists::add); + } + + + private void nextPage(UserListParam userListParam, String token, List userInfoLists, UserInfoListRootBean.ResultData t) { + System.out.println("获取用户--" + userListParam.getPage()); + if (t.getTotalPage() > userListParam.getPage()) { + REQUEST_TASK.submit(() -> IntStream.range(userListParam.getPage(), t.getTotalPage()).parallel().forEach(i -> getAllUserList(userListParam.withPage(i + 1), token, userInfoLists))).join(); + } + } + + + public List getOrgChildTree(String id, String token) { + log.info("getOrgChildTree"); + String resp = Optional.ofNullable(HttpRequest.post(orgChildTreeListUrl).header("token", token).body(JSONUtil.toJsonStr(TreeSearchVo.builder().orgId(id).build())).execute().body()).orElseThrow(() -> new RuntimeException("token校验失败")); + return Opt.ofNullable(JSONUtil.toBean(resp, OrgRootBean.class).success()).map(OrgRootBean::getResult).orElse(ListUtil.empty()); + } + + public List getAllAudienceList(AuditListParam userListParam, String token) { + String resp = Optional.ofNullable(HttpRequest.post(usersByAudienceList).body(JSONUtil.toJsonStr(userListParam)).header("token", token).execute().body()).orElseThrow(() -> new RuntimeException("token校验失败")); + return Opt.ofBlankAble(resp).map(t -> JSONUtil.toBean(resp, AuditRootBean.class).success()) + .map(AuditRootBean::getResult) + .map(result -> Opt.ofEmptyAble(result.getList()).peek(t -> nextPage(userListParam, t, result, token)).orElse(ListUtil.toList())) + .orElse(ListUtil.toList()); + } + + private void nextPage(AuditListParam userListParam, List t, Result result, String token) { + if (result.getTotalPage() > userListParam.getPage()) { + REQUEST_TASK.submit(() -> IntStream.range(userListParam.getPage(), result.getTotalPage()).parallel().forEach(i -> getAllAudienceList(userListParam.withPage(i + 1), t, token))).join(); + } + } + + private void getAllAudienceList(AuditListParam userListParam, List list, String token) { + String resp = Optional.ofNullable(HttpRequest.post(usersByAudienceList).body(JSONUtil.toJsonStr(userListParam)).header("token", token).execute().body()).orElseThrow(() -> new RuntimeException("token校验失败")); + Opt.ofBlankAble(resp).map(t -> JSONUtil.toBean(t, AuditRootBean.class).success()).map(AuditRootBean::getResult).map(Result::getList).stream().flatMap(Collection::stream).forEach(list::add); + } + +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/api/vo/AuditList.java b/servers/boe-server-all/src/main/java/com/xboe/api/vo/AuditList.java new file mode 100644 index 00000000..4b228703 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/api/vo/AuditList.java @@ -0,0 +1,24 @@ +package com.xboe.api.vo; /** + * Copyright 2022 bejson.com + */ + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * Auto-generated: 2022-12-10 14:3:18 + * + * @author bejson.com (i@bejson.com) + * @website http://www.bejson.com/java2pojo/ + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class AuditList { + private long audienceId; + private long userId; + private long id; +} \ No newline at end of file diff --git a/servers/boe-server-all/src/main/java/com/xboe/api/vo/AuditListParam.java b/servers/boe-server-all/src/main/java/com/xboe/api/vo/AuditListParam.java new file mode 100644 index 00000000..32c80e17 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/api/vo/AuditListParam.java @@ -0,0 +1,14 @@ +package com.xboe.api.vo; + +import lombok.*; + +@Data +@Builder +@With +@NoArgsConstructor +@AllArgsConstructor +public class AuditListParam implements Cloneable { + private String audienceId; + private Integer page; + private Integer pageSize; +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/api/vo/AuditRootBean.java b/servers/boe-server-all/src/main/java/com/xboe/api/vo/AuditRootBean.java new file mode 100644 index 00000000..449853e8 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/api/vo/AuditRootBean.java @@ -0,0 +1,41 @@ +package com.xboe.api.vo; /** + * Copyright 2022 bejson.com + */ + +import cn.hutool.json.JSONUtil; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +import java.util.Date; + +/** + * Auto-generated: 2022-12-10 14:3:18 + * + * @author bejson.com (i@bejson.com) + * @website http://www.bejson.com/java2pojo/ + */ +@Data +@Slf4j +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class AuditRootBean { + + private String error; + private String message; + private String permissions; + private Result result; + private int status; + private Date timestamp; + + public AuditRootBean success() { + if (this.status != 200) { + log.error("获取受众列表失败----{}", JSONUtil.toJsonPrettyStr(this)); + return null; + } + return this; + } +} \ No newline at end of file diff --git a/servers/boe-server-all/src/main/java/com/xboe/api/vo/OrgRootBean.java b/servers/boe-server-all/src/main/java/com/xboe/api/vo/OrgRootBean.java new file mode 100644 index 00000000..d3fe5f3f --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/api/vo/OrgRootBean.java @@ -0,0 +1,63 @@ +package com.xboe.api.vo; + +import cn.hutool.json.JSONUtil; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +import java.util.Date; +import java.util.List; + +@Data +@Slf4j +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class OrgRootBean { + + private String error; + private String message; + private String permissions; + private List result; + private int status; + private Date timestamp; + + public OrgRootBean success() { + if (this.status != 200) { + log.error("获取组织列表失败----{}", JSONUtil.toJsonPrettyStr(this)); + return null; + } + return this; + } + + @Data + public static class ResultData { + + private String id; + private String parentId; + private String oldKid; + private String oldParentId; + private String name; + private String code; + private String namePath; + private int level; + private int status; + private String description; + private boolean isMakeOrg; + private boolean isServiceSite; + private String managerId; + private String hrbpId; + private Date createTime; + private String createBy; + private String oldOrgId; + private String oldOrgParentId; + private String companyId; + private String sassId; + private String orgRepository; + private String orgFactory; + private String directChildList; + private List treeChildList; + } +} \ No newline at end of file diff --git a/servers/boe-server-all/src/main/java/com/xboe/api/vo/Result.java b/servers/boe-server-all/src/main/java/com/xboe/api/vo/Result.java new file mode 100644 index 00000000..8f837786 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/api/vo/Result.java @@ -0,0 +1,27 @@ +package com.xboe.api.vo; /** + * Copyright 2022 bejson.com + */ +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * Auto-generated: 2022-12-10 14:3:18 + * + * @author bejson.com (i@bejson.com) + * @website http://www.bejson.com/java2pojo/ + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class Result { + + private int totalElement; + private int totalPage; + private List list; + +} \ No newline at end of file diff --git a/servers/boe-server-all/src/main/java/com/xboe/api/vo/TreeSearchVo.java b/servers/boe-server-all/src/main/java/com/xboe/api/vo/TreeSearchVo.java new file mode 100644 index 00000000..d66dd0ab --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/api/vo/TreeSearchVo.java @@ -0,0 +1,15 @@ +package com.xboe.api.vo; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TreeSearchVo { + private String keyword; + private String orgId; +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/api/vo/UserInfoList.java b/servers/boe-server-all/src/main/java/com/xboe/api/vo/UserInfoList.java new file mode 100644 index 00000000..a10da8ed --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/api/vo/UserInfoList.java @@ -0,0 +1,40 @@ +package com.xboe.api.vo; + +import lombok.Data; + +@Data +public class UserInfoList { + + private long id; + private String bandCode; + private String bandDesc; + private Boolean deleted; + private Long departId; + private String description; + private String domainId; + private String departName; + private String duty; + private int employeeStatus; + private String companyId; + private String orgName; + private Integer gender; + private String jobName; + private String kid; + private int learningDuration; + private String mobile; + private String realName; + private String oldDepartId; + private String orgNamePath; + private String orgTreeType; + private String payrollPlaceId; + private String payrollPlaceName; + private long personId; + private String positionMgrLevel; + private String rank; + private long sassId; + private int status; + private String telephoneNo; + private String userNo; + private String email; + private String avatar; +} \ No newline at end of file diff --git a/servers/boe-server-all/src/main/java/com/xboe/api/vo/UserInfoListRootBean.java b/servers/boe-server-all/src/main/java/com/xboe/api/vo/UserInfoListRootBean.java new file mode 100644 index 00000000..2c4be964 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/api/vo/UserInfoListRootBean.java @@ -0,0 +1,37 @@ +package com.xboe.api.vo; + +import cn.hutool.json.JSONUtil; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; + +import java.util.Date; +import java.util.List; + +@Data +@Slf4j +public class UserInfoListRootBean { + + private String error; + private String message; + private String permissions; + private ResultData result; + private int status; + private Date timestamp; + + public UserInfoListRootBean success() { + if (this.status != 200) { + log.error("获取学员列表失败----{}", JSONUtil.toJsonPrettyStr(this)); + return null; + } + return this; + } + + @Data + public static class ResultData { + + private int totalElement; + private int totalPage; + private List userInfoList; + + } +} \ No newline at end of file diff --git a/servers/boe-server-all/src/main/java/com/xboe/api/vo/UserListParam.java b/servers/boe-server-all/src/main/java/com/xboe/api/vo/UserListParam.java new file mode 100644 index 00000000..0f063a3d --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/api/vo/UserListParam.java @@ -0,0 +1,19 @@ +package com.xboe.api.vo; + +import lombok.*; + +@Data +@Builder +@With +@NoArgsConstructor +@AllArgsConstructor +public class UserListParam { + private String id; + private String departId; + private String userNo; + private String realName; + @Builder.Default + private int page = 1; + @Builder.Default + private int pageSize = 10; +} 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 14caf745..9537e7ef 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 @@ -32,6 +32,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.OutputStream; import java.util.ArrayList; @@ -179,7 +180,7 @@ public class CasesRecommendApi extends ApiBaseController { * @return */ @PostMapping("/launch") - public JsonResponse excelImport(@RequestBody CasesRecommendLaunchVo casesRecommendLaunch) { + public JsonResponse launch(@RequestBody CasesRecommendLaunchVo casesRecommendLaunch, HttpServletRequest request) { if (!CasesRecommendLaunchTypeEnum.COMMON.getLaunchType().equals(casesRecommendLaunch.getLaunchType()) && !CasesRecommendLaunchTypeEnum.IMPORT.getLaunchType().equals(casesRecommendLaunch.getLaunchType())) { throw new RuntimeException("参数错误"); } @@ -191,7 +192,12 @@ public class CasesRecommendApi extends ApiBaseController { if (CollectionUtil.isEmpty(casesRecommendLaunch.getPushUserIdList())) { throw new RuntimeException("参数错误"); } - return success(iCasesRecommendPushRecordService.launchPush(casesRecommendLaunch, getCurrent())); + String token = request.getHeader("Xboe-Access-Token"); + if (StringUtils.isEmpty(token)) { + token = request.getHeader("token"); + } + + return success(iCasesRecommendPushRecordService.launchPush(casesRecommendLaunch, getCurrent(), token)); } /** 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 index 5e3991dc..4205cc26 100644 --- 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 @@ -15,7 +15,7 @@ public interface ICasesRecommendPushRecordService { * @param * @return */ - boolean launchPush(CasesRecommendLaunchVo casesRecommendLaunch, CurrentUser currentUser); + boolean launchPush(CasesRecommendLaunchVo casesRecommendLaunch, CurrentUser currentUser,String token); /** * 根据案例推荐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 index 01d070a7..88252fa8 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 @@ -2,6 +2,8 @@ package com.xboe.module.boecase.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.json.JSONUtil; +import com.xboe.api.ThirdApi; +import com.xboe.api.vo.*; import com.xboe.core.CurrentUser; import com.xboe.core.event.IEventDataSender; import com.xboe.core.orm.FieldFilters; @@ -62,8 +64,11 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR @Autowired(required = false) private IEventDataSender eventDataSender; + @Resource + private ThirdApi thirdApi; + @Override - public boolean launchPush(CasesRecommendLaunchVo casesRecommendLaunch, CurrentUser currentUser) { + public boolean launchPush(CasesRecommendLaunchVo casesRecommendLaunch, CurrentUser currentUser, String token) { CasesRecommend casesRecommend = new CasesRecommend(); @@ -85,12 +90,42 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR List caseIdList = importDataList.stream().filter(casesRecommendLaunchImportData -> casesRecommendLaunchImportData.getStatus() == 1).map(CasesRecommendLaunchImportData::getCaseId).collect(Collectors.toList()); caseIds.addAll(caseIdList); } + List userIds = new ArrayList<>(); + if (CollectionUtil.isNotEmpty(casesRecommendLaunch.getPushUserIdList())) { + userIds.addAll(casesRecommendLaunch.getPushUserIdList()); + } + // 组织 + if (CollectionUtil.isNotEmpty(casesRecommendLaunch.getDeptIds())) { + for (String orgId : casesRecommendLaunch.getDeptIds()) { + List orgChildTree = thirdApi.getOrgChildTree(orgId, token); + if (CollectionUtil.isNotEmpty(orgChildTree)) { + for (OrgRootBean.ResultData result : orgChildTree) { + UserListParam build = UserListParam.builder().departId(result.getId()).pageSize(100).build(); + List allUserList = thirdApi.getAllUserList(build, token); + if (CollectionUtil.isNotEmpty(allUserList)) { + for (UserInfoList userInfo : allUserList) { + userIds.add(String.valueOf(userInfo.getId())); + } + } + } + } + } + } + // 受众关联 + if (CollectionUtil.isNotEmpty(casesRecommendLaunch.getGroupIds())) { + for (String groupId : casesRecommendLaunch.getGroupIds()) { + List allAudienceList = thirdApi.getAllAudienceList(AuditListParam.builder().audienceId(groupId).pageSize(100).page(1).build(), token); + if (CollectionUtil.isNotEmpty(allAudienceList)) { + allAudienceList.forEach(auditList -> userIds.add(String.valueOf(auditList.getUserId()))); + } + } + } + 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()) { + for (String userId : userIds) { CasesRecommendPushRecord casesRecommendPushRecord = new CasesRecommendPushRecord(); casesRecommendPushRecord.setRecommendId(casesRecommend.getId()); casesRecommendPushRecord.setCaseId(caseId); 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 index 6b0c1c6f..ac544239 100644 --- 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 @@ -33,6 +33,17 @@ public class CasesRecommendLaunchVo { */ private List pushUserIdList; + + /** + * 组织列表 + */ + private List deptIds; + + /** + * 受众列表 + */ + private List groupIds; + /** * 推荐机构 */ diff --git a/servers/boe-server-all/src/main/resources/application.properties b/servers/boe-server-all/src/main/resources/application.properties index eec9ca92..49f5f1c0 100644 --- a/servers/boe-server-all/src/main/resources/application.properties +++ b/servers/boe-server-all/src/main/resources/application.properties @@ -2,15 +2,10 @@ spring.profiles.active=@profileActive@ spring.application.name=boe-server-all server.port=9090 server.servlet.session.timeout=30m - server.servlet.encoding.charset=UTF-8 server.servlet.encoding.enabled=true server.servlet.encoding.force=true - server.tomcat.uri-encoding=UTF-8 - - - ok.http.connect-timeout=30 ok.http.read-timeout=30 ok.http.write-timeout=30 @@ -18,31 +13,24 @@ ok.http.write-timeout=30 ok.http.max-idle-connections=200 # 连接空闲时间最多为 300 秒 ok.http.keep-alive-duration=300 - #spring.jackson.locale= #spring.jackson.date-format=yyyy-MM-dd HH:mm:ss # spring.jackson.default-property-inclusion=NON_NULL spring.jackson.time-zone=GMT+8 - spring.servlet.multipart.max-file-size=1024MB spring.servlet.multipart.max-request-size=1024MB - ## 静态文件目录,默认是在static下面,以后独立到nginx下面配置 spring.mvc.static-path-pattern=/cdn/** - - spring.redis.lettuce.pool.max-active=8 spring.redis.lettuce.pool.min-idle=0 spring.redis.lettuce.pool.max-idle=30 spring.redis.lettuce.pool.max-wait=10000ms spring.redis.lettuce.shutdown-timeout=100ms - # 上传的临时目录,部署到服务器必须指定 # spring.servlet.multipart.location= - # jpa config -spring.jpa.database = MYSQL -spring.jpa.show-sql = false +spring.jpa.database=MYSQL +spring.jpa.show-sql=false # spring.jpa.properties.hibernate.cache.use_second_level_cache=true # spring.jpa.properties.hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory spring.jpa.properties.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy @@ -52,12 +40,13 @@ spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect # spring.jpa.properties.hibernate.allow_update_outside_transaction=true # spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate5.SpringSessionContext spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate5.SpringSessionContext - - # 设置logback.xml位置 logging.config=classpath:log/logback-@profileActive@.xml - # 用于分布式id生成不重复的处理 配置,0-31 的数值 # config.id.generator.server.num=1 # config.id.generator.datacenter.num=1 - +boe.domain=https://pretest.zcwytd.com +orgTree.orgTreeList=${boe.domain}/userbasic/org/list +# ????id???????????? +orgTree.orgChildTreeList=${boe.domain}/userbasic/org/childOrgs +userBasic.searchUserList=${boe.domain}/userbasic/user/list diff --git a/servers/boe-server-all/src/main/resources/log/logback-dev.xml b/servers/boe-server-all/src/main/resources/log/logback-dev.xml index 97f328fc..f0d3a44a 100644 --- a/servers/boe-server-all/src/main/resources/log/logback-dev.xml +++ b/servers/boe-server-all/src/main/resources/log/logback-dev.xml @@ -6,7 +6,7 @@ - + ${APP_NAME} From 2795adc0d511c39f244d75ac6eede84e61678f36 Mon Sep 17 00:00:00 2001 From: Guava Date: Thu, 29 Jun 2023 18:08:05 +0800 Subject: [PATCH 03/22] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=8F=91=E8=B5=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- servers/boe-server-all/src/main/java/com/xboe/api/ThirdApi.java | 1 + servers/boe-server-all/src/main/resources/application.properties | 1 + 2 files changed, 2 insertions(+) diff --git a/servers/boe-server-all/src/main/java/com/xboe/api/ThirdApi.java b/servers/boe-server-all/src/main/java/com/xboe/api/ThirdApi.java index cefe4aec..ad4ba6fa 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/api/ThirdApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/api/ThirdApi.java @@ -24,6 +24,7 @@ public class ThirdApi { @Value("${orgTree.orgChildTreeList}") private String orgChildTreeListUrl; + @Value("${audience.usersByAudienceList}") private String usersByAudienceList; diff --git a/servers/boe-server-all/src/main/resources/application.properties b/servers/boe-server-all/src/main/resources/application.properties index 49f5f1c0..2452471e 100644 --- a/servers/boe-server-all/src/main/resources/application.properties +++ b/servers/boe-server-all/src/main/resources/application.properties @@ -50,3 +50,4 @@ orgTree.orgTreeList=${boe.domain}/userbasic/org/list # ????id???????????? orgTree.orgChildTreeList=${boe.domain}/userbasic/org/childOrgs userBasic.searchUserList=${boe.domain}/userbasic/user/list +audience.usersByAudienceList=${boe.domain}/userbasic/audience/memberList From fe1371a94acb0086bdf1b03b172db646170efd55 Mon Sep 17 00:00:00 2001 From: Guava Date: Thu, 29 Jun 2023 18:33:12 +0800 Subject: [PATCH 04/22] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/CasesRecommendPushRecordServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 88252fa8..fe133db1 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 @@ -124,7 +124,7 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR for (String caseId : caseIds) { Cases cases = casesDao.get(caseId); List pushRecords = new ArrayList<>(); - Map userMap = userDao.findMap("id", "name", FieldFilters.in("id", casesRecommendLaunch.getPushUserIdList())); + Map userMap = userDao.findMap("id", "name", FieldFilters.in("id", userIds)); for (String userId : userIds) { CasesRecommendPushRecord casesRecommendPushRecord = new CasesRecommendPushRecord(); casesRecommendPushRecord.setRecommendId(casesRecommend.getId()); From 23a8fb7283582e54936ef19414f5a60e25687361 Mon Sep 17 00:00:00 2001 From: Guava Date: Fri, 30 Jun 2023 09:27:27 +0800 Subject: [PATCH 05/22] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xboe/module/boecase/api/CasesRecommendApi.java | 3 --- 1 file changed, 3 deletions(-) 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 9537e7ef..9b8e3a49 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 @@ -189,9 +189,6 @@ public class CasesRecommendApi extends ApiBaseController { } else if (CasesRecommendLaunchTypeEnum.IMPORT.getLaunchType().equals(casesRecommendLaunch.getLaunchType()) && StrUtil.isEmpty(casesRecommendLaunch.getImportId())) { throw new RuntimeException("导入id不能为空"); } - if (CollectionUtil.isEmpty(casesRecommendLaunch.getPushUserIdList())) { - throw new RuntimeException("参数错误"); - } String token = request.getHeader("Xboe-Access-Token"); if (StringUtils.isEmpty(token)) { token = request.getHeader("token"); From 170f46d1df3f0e000b08f65a04900f59f4bedbe3 Mon Sep 17 00:00:00 2001 From: Guava Date: Fri, 30 Jun 2023 09:37:03 +0800 Subject: [PATCH 06/22] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A1=88=E4=BE=8B?= =?UTF-8?q?=E6=8E=A8=E8=8D=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CasesRecommendPushRecordServiceImpl.java | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) 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 fe133db1..452fe0f4 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 @@ -71,17 +71,6 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR public boolean launchPush(CasesRecommendLaunchVo casesRecommendLaunch, CurrentUser currentUser, String token) { - CasesRecommend casesRecommend = new CasesRecommend(); - casesRecommend.setRecommendId(currentUser.getAccountId()); - casesRecommend.setRecommendBy(currentUser.getName()); - casesRecommend.setRecommendTime(LocalDateTime.now()); - casesRecommend.setCaseCount(casesRecommendLaunch.getCasesIdList().size()); - casesRecommend.setUserCount(casesRecommendLaunch.getPushUserIdList().size()); - casesRecommend.setRecommendOrgName(casesRecommendLaunch.getRecommendOrgName()); - casesRecommend.setPushProgress(CasesPushStatusEnum.WAIT_PUSH.getStatus()); - casesRecommendDao.save(casesRecommend); - log.info("案例推送对象 {}", JSONUtil.toJsonStr(casesRecommend)); - List caseIds = new ArrayList<>(); if (casesRecommendLaunch.getLaunchType() == 1) { caseIds.addAll(casesRecommendLaunch.getCasesIdList()); @@ -120,6 +109,21 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR } } } + if (CollectionUtil.isEmpty(userIds)) { + throw new RuntimeException("推荐人不能为空"); + } + + CasesRecommend casesRecommend = new CasesRecommend(); + casesRecommend.setRecommendId(currentUser.getAccountId()); + casesRecommend.setRecommendBy(currentUser.getName()); + casesRecommend.setRecommendTime(LocalDateTime.now()); + casesRecommend.setCaseCount(caseIds.size()); + casesRecommend.setUserCount(userIds.size()); + casesRecommend.setRecommendOrgName(casesRecommendLaunch.getRecommendOrgName()); + casesRecommend.setPushProgress(CasesPushStatusEnum.WAIT_PUSH.getStatus()); + casesRecommendDao.save(casesRecommend); + log.info("案例推送对象 {}", JSONUtil.toJsonStr(casesRecommend)); + for (String caseId : caseIds) { Cases cases = casesDao.get(caseId); From 05e7fdae33105acbd5478d7e28fa7f14609b9505 Mon Sep 17 00:00:00 2001 From: buerjun Date: Fri, 30 Jun 2023 10:23:44 +0800 Subject: [PATCH 07/22] =?UTF-8?q?=E6=8E=A8=E8=8D=90=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xboe/module/boecase/service/impl/CasesServiceImpl.java | 2 +- .../xboe/module/boecase/service/impl/CasesServiceImplTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java index d33e018e..26c1ff52 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java @@ -351,7 +351,7 @@ public class CasesServiceImpl implements ICasesService { QueryBuilder queryBuilder = recommendCasesQuery.addFilters(subFilters) .addOrder("sysCreateTime", OrderDirection.DESC) - .addGroupBy("recommendId"); + .addGroupBy("caseId"); List pushRecords = casesRecommendPushRecordDao.findList(queryBuilder.builder()); if (CollUtil.isNotEmpty(pushRecords)) { List rIds = pushRecords.stream().map(CasesRecommendPushRecord::getRecommendId).collect(Collectors.toList()); diff --git a/servers/boe-server-all/src/test/java/com/xboe/module/boecase/service/impl/CasesServiceImplTest.java b/servers/boe-server-all/src/test/java/com/xboe/module/boecase/service/impl/CasesServiceImplTest.java index de6dc69f..7d626bf7 100644 --- a/servers/boe-server-all/src/test/java/com/xboe/module/boecase/service/impl/CasesServiceImplTest.java +++ b/servers/boe-server-all/src/test/java/com/xboe/module/boecase/service/impl/CasesServiceImplTest.java @@ -41,7 +41,7 @@ class CasesServiceImplTest { @Test void queryRecommendPageCasesV2() throws JsonProcessingException { - String jsonStr = "{\"pageIndex\":1,\"pageSize\":10,\"orderField\":\"excellent\",\"majorType\":\"\",\"orgDomainDtos\":[],\"orderAsc\":false,\"excellent\":true,\"breCommend\":true,\"caseType\":\"\",\"authorName\":\"\",\"notInIds\":[],\"type\":\"recommend\",\"userId\":\"\",\"parent\":\"\",\"children\":[],\"name\":\"\",\"years\":[2023,2022,2020,2021]}"; + String jsonStr = "{\"pageIndex\":1,\"pageSize\":5,\"majorType\":\"\",\"orderAsc\":false,\"excellent\":false,\"orgDomainDtos\":[],\"caseType\":\"\",\"authorName\":\"\",\"notInIds\":[],\"type\":\"recommend\",\"userId\":\"\",\"parent\":\"\",\"children\":[],\"name\":\"\",\"years\":[2023]}\n"; ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false); CasePageVo pageVo = mapper.readValue(jsonStr, CasePageVo.class); From 3e77dfa76d3c745a6d9e8c6eef4605e44604528e Mon Sep 17 00:00:00 2001 From: buerjun Date: Fri, 30 Jun 2023 10:37:16 +0800 Subject: [PATCH 08/22] =?UTF-8?q?=E6=9C=80=E4=BD=B3=E6=A1=88=E4=BE=8B?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xboe/module/boecase/service/impl/CasesServiceImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java index 26c1ff52..4386b2c6 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java @@ -298,10 +298,10 @@ public class CasesServiceImpl implements ICasesService { QueryBuilder queryBuilder = recommendCasesQuery.addFilters(subFilters) .addOrder("sysCreateTime", OrderDirection.DESC) - .addGroupBy("recommendId"); + .addGroupBy("caseId"); List pushRecords = casesRecommendPushRecordDao.findList(queryBuilder.builder()); if (CollUtil.isNotEmpty(pushRecords)) { - List rIds = pushRecords.stream().map(CasesRecommendPushRecord::getRecommendId).collect(Collectors.toList()); + List rIds = pushRecords.stream().map(CasesRecommendPushRecord::getRecommendId).distinct().collect(Collectors.toList()); QueryBuilder builder = QueryBuilder.from(CasesRecommend.class); builder.addField("new CasesRecommend(id,recommendOrgName)"); List recommendFilters = new ArrayList<>(); From 70f988fb8f33bbada21125e9034d98e9831be825 Mon Sep 17 00:00:00 2001 From: buerjun Date: Fri, 30 Jun 2023 10:44:32 +0800 Subject: [PATCH 09/22] =?UTF-8?q?=E6=99=AE=E9=80=9A=E6=A1=88=E4=BE=8B?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xboe/module/boecase/service/impl/CasesServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java index 4386b2c6..213045e5 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java @@ -265,7 +265,7 @@ public class CasesServiceImpl implements ICasesService { query.addOrder(OrderCondition.desc("topTime")); } //如果选择的是优秀案例,那么这里就按优秀案例的试试排序 - if (caseVo.getExcellent() != null) { + if (caseVo.getExcellent() != null && caseVo.getExcellent()) { filters.add(FieldFilters.eq("excellent", caseVo.getExcellent())); } OrderCondition order = null; From 81fd4210fc44d5df0833673bffea30be407971d9 Mon Sep 17 00:00:00 2001 From: buerjun Date: Fri, 30 Jun 2023 20:36:24 +0800 Subject: [PATCH 10/22] =?UTF-8?q?=E6=8E=A8=E8=8D=90=E6=A1=88=E4=BE=8B?= =?UTF-8?q?=E6=8C=89=E7=85=A7=E5=8F=91=E5=B8=83=E6=97=B6=E9=97=B4=EF=BC=8C?= =?UTF-8?q?=E6=9C=AA=E8=AF=BB=E4=BC=98=E5=85=88=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/xboe/module/boecase/dao/CasesRecordDao.java | 8 ++++---- .../module/boecase/service/impl/CasesServiceImpl.java | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRecordDao.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRecordDao.java index f633b194..68a72eea 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRecordDao.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/dao/CasesRecordDao.java @@ -18,7 +18,7 @@ import org.springframework.stereotype.Repository; @Repository public interface CasesRecordDao extends JpaRepository, JpaSpecificationExecutor { - @Query(nativeQuery = true, value = "select b.*" + + @Query(nativeQuery = true, value = "select c.* from ( select b.*" + " from boe_cases_recommend_push_record a INNER JOIN boe_cases b on a.case_id = b.id" + " where b.deleted=0 and a.push_status = 3 and a.push_user_id= :#{#condition.userId}" + " and if(IFNULL(:#{#condition.keyWord},'')!='',b.title like CONCAT('%',:#{#condition.keyWord},'%')" + @@ -33,8 +33,8 @@ public interface CasesRecordDao extends JpaRepository, JpaSpecifi " and if(:#{#condition.org1Empty}, 1=1, b.org_domain_parent in (:#{#condition.org1}))" + " and if(:#{#condition.org2Empty}, 1=1, b.org_domain_parent2 in (:#{#condition.org2}))" + " and if(:#{#condition.org3Empty}, 1=1, b.org_domain_parent3 in (:#{#condition.org3}))" + - " group by b.id order by a.sys_create_time DESC", - countQuery = "select count(*) FROM (select b.*" + + " order by a.sys_create_time DESC, a.read_flag ASC) as c group by c.id", + countQuery = "select count(*) FROM (select c.* from ( select b.*" + " from boe_cases_recommend_push_record a INNER JOIN boe_cases b on a.case_id = b.id " + " where b.deleted=0 and a.push_status = 3 and a.push_user_id= :#{#condition.userId}" + " and if(IFNULL(:#{#condition.keyWord},'')!='',b.title like CONCAT('%',:#{#condition.keyWord},'%')" + @@ -49,6 +49,6 @@ public interface CasesRecordDao extends JpaRepository, JpaSpecifi " and if(:#{#condition.org1Empty}, 1=1, b.org_domain_parent in (:#{#condition.org1}))" + " and if(:#{#condition.org2Empty}, 1=1, b.org_domain_parent2 in (:#{#condition.org2}))" + " and if(:#{#condition.org3Empty}, 1=1, b.org_domain_parent3 in (:#{#condition.org3}))" + - " group by b.id) as b") + " order by a.sys_create_time DESC, a.read_flag ASC ) as c group by c.id) as d") Page queryList(Pageable pageable, @Param("condition") CasePageVo casePage); } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java index 213045e5..13d9dcb8 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java @@ -887,7 +887,7 @@ public class CasesServiceImpl implements ICasesService { String accountId = current.getAccountId(); List result = new ArrayList<>(); try { - String hql = "select a.caseId FROM CasesRecommendPushRecord a left join Cases b ON a.caseId = b.id WHERE a.pushUserId=?1 and a.pushStatus=4 and b.deleted = false group by a.caseId ORDER By a.pushTime DESC"; + String hql = "select a.caseId FROM CasesRecommendPushRecord a left join Cases b ON a.caseId = b.id WHERE a.pushUserId=?1 and a.pushStatus=3 and b.deleted = false group by a.caseId ORDER By a.pushTime DESC"; List listFields = casesRecommendDao.findListFields(hql, CASE_LEN, ListUtil.toList(accountId)); List caseIds = new ArrayList<>(); if (CollUtil.isNotEmpty(listFields)) { From 9339cb8c59dad6d6e32bdc81e9d3c859e773d203 Mon Sep 17 00:00:00 2001 From: buerjun Date: Fri, 30 Jun 2023 20:43:10 +0800 Subject: [PATCH 11/22] =?UTF-8?q?=E6=8E=A8=E8=8D=90=E6=A1=88=E4=BE=8B?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E6=98=BE=E7=A4=BA=E6=8E=A8=E8=8D=90=E6=97=B6?= =?UTF-8?q?=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/boecase/service/impl/CasesServiceImpl.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java index 13d9dcb8..ac05f31b 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java @@ -356,22 +356,20 @@ public class CasesServiceImpl implements ICasesService { if (CollUtil.isNotEmpty(pushRecords)) { List rIds = pushRecords.stream().map(CasesRecommendPushRecord::getRecommendId).collect(Collectors.toList()); QueryBuilder builder = QueryBuilder.from(CasesRecommend.class); - builder.addField("new CasesRecommend(id,recommendOrgName)"); List recommendFilters = new ArrayList<>(); recommendFilters.add(FieldFilters.eq("deleted", Boolean.FALSE)); recommendFilters.add(FieldFilters.in("id", rIds)); builder.addFilters(recommendFilters); List recommands = casesRecommendDao.findList(builder.builder()); if (CollUtil.isNotEmpty(recommands)) { - Map collect = recommands.stream().collect(Collectors.toMap(k -> k.getId(), v -> v.getRecommendOrgName())); + Map collect = recommands.stream().collect(Collectors.toMap(k -> k.getId(), item->item)); content.forEach(it -> { CasesRecommendPushRecord one = CollUtil.findOne(pushRecords, (a) -> StrUtil.equals(a.getCaseId(), it.getId())); if (Objects.nonNull(one)) { - String recommendOrgName = collect.get(one.getRecommendId()); + CasesRecommend recommend = collect.get(one.getRecommendId()); it.setBreCommend(1); - it.setRecommendOrgName(recommendOrgName); - } else { - it.setBreCommend(0); + it.setRecommendOrgName(recommend.getRecommendOrgName()); + it.setSysCreateTime(recommend.getRecommendTime()); } }); } From e5607e36d88ba2a3ec83b97ab924a069c441b2d2 Mon Sep 17 00:00:00 2001 From: wangwenchao Date: Fri, 30 Jun 2023 21:29:58 +0800 Subject: [PATCH 12/22] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A1=88=E4=BE=8B?= =?UTF-8?q?=E6=8E=A8=E8=8D=90=E5=88=97=E8=A1=A8=E9=87=8D=E6=96=B0=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E9=80=BB=E8=BE=91=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ICasesRecommendPushRecordService.java | 5 ++-- .../CasesRecommendPushRecordServiceImpl.java | 23 +++++++++++-------- .../impl/CasesRecommendServiceImpl.java | 7 +++--- 3 files changed, 20 insertions(+), 15 deletions(-) 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 index 4205cc26..397af1b6 100644 --- 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 @@ -1,6 +1,7 @@ package com.xboe.module.boecase.service; import com.xboe.core.CurrentUser; +import com.xboe.module.boecase.entity.CasesRecommend; import com.xboe.module.boecase.entity.CasesRecommendPushRecord; import com.xboe.module.boecase.vo.CasesRecommendLaunchVo; @@ -27,7 +28,7 @@ public interface ICasesRecommendPushRecordService { /** * 重新推送或撤回 * @param isWithdraw 是否撤回 - * @param casesRecommendId 案例推荐ID + * @param casesRecommend 案例推荐 */ - void rePushOrWithdraw(boolean isWithdraw, String casesRecommendId); + void rePushOrWithdraw(boolean isWithdraw, CasesRecommend casesRecommend); } 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 452fe0f4..900c493d 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 @@ -1,6 +1,7 @@ package com.xboe.module.boecase.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.json.JSONUtil; import com.xboe.api.ThirdApi; import com.xboe.api.vo.*; @@ -168,6 +169,7 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR private void sendCasesRecommend(CasesRecommend casesRecommend) { List pushStatusList = new ArrayList<>(); pushStatusList.add(CasesPushStatusEnum.WAIT_PUSH.getStatus()); + pushStatusList.add(CasesPushStatusEnum.PUSH_REVOKE.getStatus()); List casesRecommendPushRecords = casesRecommendPushRecordDao.getGenericDao().findList(CasesRecommendPushRecord.class, FieldFilters.in("pushStatus", pushStatusList)); if (CollectionUtils.isEmpty(casesRecommendPushRecords)) { //修改为推送完成 --- 无数据 无需推送 @@ -206,22 +208,25 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR } @Override - public void rePushOrWithdraw(boolean isWithdraw, String casesRecommendId) { - if (StringUtils.isEmpty(casesRecommendId)) { + public void rePushOrWithdraw(boolean isWithdraw, CasesRecommend casesRecommend) { + if (ObjectUtil.isEmpty(casesRecommend)) { throw new RuntimeException("缺少必要参数"); } - List recordList = findAllByRecommendId(casesRecommendId); if (isWithdraw) { + List recordList = findAllByRecommendId(casesRecommend.getId()); recordList.stream().forEach(record -> record.setPushStatus(CasesPushStatusEnum.PUSH_REVOKE.getStatus()) ); + if (CollectionUtil.isNotEmpty(recordList)) { + casesRecommendPushRecordDao.saveList(recordList); + } } else { - recordList.stream().filter(it -> CasesPushStatusEnum.PUSH_SUCCESS.getStatus() != it.getPushStatus()).forEach(record -> - record.setPushStatus(CasesPushStatusEnum.WAIT_PUSH.getStatus()) - ); - } - if (CollectionUtil.isNotEmpty(recordList)) { - casesRecommendPushRecordDao.saveList(recordList); + try { + //发送推送案例消息 + sendCasesRecommend(casesRecommend); + } catch (Exception e) { + log.error("推送失败", e); + } } } } 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 a3fa701f..8680b44e 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 @@ -66,14 +66,13 @@ public class CasesRecommendServiceImpl implements ICasesRecommendService { || CasesPushStatusEnum.PUSH_ING.getStatus().equals(db.getPushProgress()) ){ // 当为推送成功时为 - iCasesRecommendPushRecordService.rePushOrWithdraw(true, casesRecommendPushVo.getCasesRecommendId()); + iCasesRecommendPushRecordService.rePushOrWithdraw(true, db); db.setPushProgress(CasesPushStatusEnum.PUSH_REVOKE.getStatus()); + casesRecommendDao.update(db); }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()); + iCasesRecommendPushRecordService.rePushOrWithdraw(false, db); } - casesRecommendDao.update(db); } } From 4d0251ac6fd5f60d619ec4c641d4001b1a200446 Mon Sep 17 00:00:00 2001 From: Boolean Date: Sat, 1 Jul 2023 08:16:09 +0800 Subject: [PATCH 13/22] =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E6=9C=80=E6=96=B0?= =?UTF-8?q?=E6=A1=88=E4=BE=8B=E5=88=97=E8=A1=A8=E5=AF=BC=E5=87=BA=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E7=BC=96=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xboe/module/boecase/api/CasesApi.java | 30 ++++++++++++++++ .../com/xboe/module/boecase/entity/Cases.java | 4 +++ .../module/boecase/service/ICasesService.java | 2 ++ .../service/impl/CasesServiceImpl.java | 36 +++++++++++++++++++ 4 files changed, 72 insertions(+) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java index eed97624..6e1a1ea7 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java @@ -1,6 +1,7 @@ package com.xboe.module.boecase.api; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.LocalDateTimeUtil; import com.xboe.common.PageList; import com.xboe.common.Pagination; import com.xboe.common.utils.StringUtil; @@ -217,6 +218,35 @@ public class CasesApi extends ApiBaseController { } } + + /** + * 导出案例标题数据 + * */ + @PostMapping("/exportCaseTitle") + public void exportCaseTitle(CaseVo caseVo,HttpServletResponse response){ + OutputStream outputStream; + try { + outputStream = response.getOutputStream(); + LinkedHashMap map = new LinkedHashMap<>(); + map.put("标题","title"); + List list = casesService.managerCaseTitleList(caseVo); + List exportVos = new ArrayList<>(); + LocalDateTime now = LocalDateTime.now(); + for (Cases c:list){ + CaseExportVo caseExportVo = new CaseExportVo(); + caseExportVo.setTitle(c.getTitle()); + exportVos.add(caseExportVo); + } + + response.setContentType("application/octet-stream"); + String current = LocalDateTimeUtil.format(now,"yyyyMMddHHmmss"); + response.setHeader("Content-disposition", "attachment;filename=cases-title-"+current+".xls"); + ExportsExcelSenderUtil.export(map,exportVos, outputStream,"yyyy-MM-dd HH:mm:ss"); + }catch (Exception e){ + log.error("导出失败",e.getMessage()); + } + } + /** * 导出我的案例 * */ diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/Cases.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/Cases.java index a2f12514..10d21b31 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/Cases.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/entity/Cases.java @@ -361,4 +361,8 @@ public class Cases extends BaseEntity { this.favorites=favorites; super.setDeleted(deleted); } + + public Cases(String title) { + this.title = title; + } } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesService.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesService.java index 149d10f3..d03a3a41 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesService.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesService.java @@ -22,6 +22,8 @@ public interface ICasesService{ * */ PageList managerList(int pageIndex,int pageSize,CaseVo caseVo); + List managerCaseTitleList(CaseVo caseVo); + /** * 案例分页 * */ diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java index ac05f31b..698a4001 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java @@ -430,6 +430,42 @@ public class CasesServiceImpl implements ICasesService { return page; } + @Override + public List managerCaseTitleList(CaseVo caseVo) { + QueryBuilder query = QueryBuilder.from(Cases.class); + query.addFilter(FieldFilters.eq("deleted", false)); + if (StringUtils.isNotBlank(caseVo.getKeyWord())) { + query.addFilter(FieldFilters.like("title", LikeMatchMode.ANYWHERE, caseVo.getKeyWord())); + } + if (StringUtils.isNotBlank(caseVo.getOrgDomain())) { + query.addFilter(FieldFilters.eq("orgDomainParent", caseVo.getOrgDomain())); + } + if (caseVo.getExcellent() != null) { + query.addFilter(FieldFilters.eq("excellent", caseVo.getExcellent())); + } + if (caseVo.getIsTop() != null) { + query.addFilter(FieldFilters.eq("isTop", caseVo.getIsTop())); + } + if (StringUtils.isNotBlank(caseVo.getAuthorName())) { + query.addFilter(FieldFilters.like("authorName", LikeMatchMode.ANYWHERE, caseVo.getAuthorName())); + } + + OrderCondition order = null; + if (StringUtils.isNotBlank(caseVo.getOrderField())) { + if (caseVo.getOrderAsc() == null || caseVo.getOrderAsc()) { + order = OrderCondition.asc(caseVo.getOrderField()); + } else { + order = OrderCondition.desc(caseVo.getOrderField()); + } + } else { + order = OrderCondition.desc("sysCreateTime"); + } + query.addOrder(order); + query.addField("new Cases(title)"); + List result = casesDao.findList(query.builder()); + return result; + } + @Override public PageList queryList(int pageIndex, int pageSize, CaseVo caseVo) { PageList pageList = new PageList<>(); From 5aa64b9ec4917eb7dca0cfb98a008684d00fe6bc Mon Sep 17 00:00:00 2001 From: Guava Date: Sat, 1 Jul 2023 08:35:59 +0800 Subject: [PATCH 14/22] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A1=88=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CasesRecommendPushRecordServiceImpl.java | 28 ++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) 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 900c493d..d7990b8d 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 @@ -21,10 +21,11 @@ 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.MessageDao; import com.xboe.system.user.dao.UserDao; +import com.xboe.system.user.entity.Message; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -61,6 +62,9 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR @Resource private CasesRecommendPushRecordDao casesRecommendPushRecordDao; + @Resource + private MessageDao messageDao; + @Autowired(required = false) private IEventDataSender eventDataSender; @@ -184,9 +188,25 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR Integer pushStatus; try { - eventDataSender.send("案例推荐", "recommendCases", "案例推荐【" + casesRecommendPushRecord.getCaseTitle() + "】", - casesRecommendPushRecord.getCaseId(), "99", casesRecommendPushRecord.getCaseTitle(), - casesRecommendPushRecord.getSysCreateAid(), casesRecommendPushRecord.getSysCreateBy(), ""); + Message message = new Message(); + message.setMsgType(1); + message.setAcceptId(casesRecommendPushRecord.getPushUserId()); + message.setAcceptName(casesRecommendPushRecord.getPushUserName()); + message.setContent("案例推荐【" + casesRecommendPushRecord.getCaseTitle() + "】"); + message.setIsRead(false); + message.setMsgTime(LocalDateTime.now()); + message.setRefId(casesRecommendPushRecord.getCaseId()); + message.setRefType("99"); + message.setSendName(casesRecommendPushRecord.getSysCreateBy()); + message.setSendType(1); + message.setTitle("案例推荐【" + casesRecommendPushRecord.getCaseTitle() + "】"); + message.setSendAid(casesRecommendPushRecord.getSysCreateAid()); + message.setSource(1); + + messageDao.save(message); +// eventDataSender.send("案例推荐", "recommendCases", "案例推荐【" + casesRecommendPushRecord.getCaseTitle() + "】", +// casesRecommendPushRecord.getCaseId(), "99", casesRecommendPushRecord.getCaseTitle(), +// casesRecommendPushRecord.getSysCreateAid(), casesRecommendPushRecord.getSysCreateBy(), ""); pushStatus = CasesPushStatusEnum.PUSH_SUCCESS.getStatus(); } catch (Exception e) { From 68f7ad9b6940f135c804495b618d43c1938b25c8 Mon Sep 17 00:00:00 2001 From: Guava Date: Sat, 1 Jul 2023 08:44:59 +0800 Subject: [PATCH 15/22] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A1=88=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/CasesRecommendPushRecordServiceImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 d7990b8d..593cddf2 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 @@ -174,7 +174,8 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR List pushStatusList = new ArrayList<>(); pushStatusList.add(CasesPushStatusEnum.WAIT_PUSH.getStatus()); pushStatusList.add(CasesPushStatusEnum.PUSH_REVOKE.getStatus()); - List casesRecommendPushRecords = casesRecommendPushRecordDao.getGenericDao().findList(CasesRecommendPushRecord.class, FieldFilters.in("pushStatus", pushStatusList)); + List casesRecommendPushRecords = casesRecommendPushRecordDao.getGenericDao() + .findList(CasesRecommendPushRecord.class, FieldFilters.in("pushStatus", pushStatusList), FieldFilters.eqField("recommendId", casesRecommend.getId())); if (CollectionUtils.isEmpty(casesRecommendPushRecords)) { //修改为推送完成 --- 无数据 无需推送 updateProcessStatus(casesRecommend.getId(), CasesPushStatusEnum.PUSH_SUCCESS.getStatus()); From 1df60d02e379f6b9fbac96ad04929ca61f29cfda Mon Sep 17 00:00:00 2001 From: Guava Date: Sat, 1 Jul 2023 08:50:05 +0800 Subject: [PATCH 16/22] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A1=88=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/CasesRecommendPushRecordServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 593cddf2..f30f1860 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 @@ -200,7 +200,7 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR message.setRefType("99"); message.setSendName(casesRecommendPushRecord.getSysCreateBy()); message.setSendType(1); - message.setTitle("案例推荐【" + casesRecommendPushRecord.getCaseTitle() + "】"); + message.setTitle("案例推荐"); message.setSendAid(casesRecommendPushRecord.getSysCreateAid()); message.setSource(1); From 17473fbc330e627b0edee3b7a422f8277c6cddda Mon Sep 17 00:00:00 2001 From: Guava Date: Sat, 1 Jul 2023 08:53:36 +0800 Subject: [PATCH 17/22] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A1=88=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/CasesRecommendPushRecordServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 f30f1860..3139351c 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 @@ -196,7 +196,7 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR message.setContent("案例推荐【" + casesRecommendPushRecord.getCaseTitle() + "】"); message.setIsRead(false); message.setMsgTime(LocalDateTime.now()); - message.setRefId(casesRecommendPushRecord.getCaseId()); + message.setRefId(casesRecommendPushRecord.getId()); message.setRefType("99"); message.setSendName(casesRecommendPushRecord.getSysCreateBy()); message.setSendType(1); From 38c134793432d3e53c885bd7d72dbf833f4f457c Mon Sep 17 00:00:00 2001 From: Guava Date: Sat, 1 Jul 2023 09:03:24 +0800 Subject: [PATCH 18/22] =?UTF-8?q?=E6=B6=88=E6=81=AF=E8=B7=B3=E8=BD=AC?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/CasesRecommendPushRecordServiceImpl.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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 3139351c..3099499e 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 @@ -27,6 +27,7 @@ import com.xboe.system.user.entity.Message; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -72,6 +73,9 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR @Resource private ThirdApi thirdApi; + @Value("${xboe.old.base.url}") + private String domain; + @Override public boolean launchPush(CasesRecommendLaunchVo casesRecommendLaunch, CurrentUser currentUser, String token) { @@ -203,7 +207,9 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR message.setTitle("案例推荐"); message.setSendAid(casesRecommendPushRecord.getSysCreateAid()); message.setSource(1); - + message.setPageUrl(domain + "/pc/case/detail?id=" + casesRecommendPushRecord.getCaseId()); + message.setPageParams(casesRecommendPushRecord.getCaseId()); + message.setPageType(3); messageDao.save(message); // eventDataSender.send("案例推荐", "recommendCases", "案例推荐【" + casesRecommendPushRecord.getCaseTitle() + "】", // casesRecommendPushRecord.getCaseId(), "99", casesRecommendPushRecord.getCaseTitle(), From 6a86eabe7a434a55efb9f6c64bfcde1f32721240 Mon Sep 17 00:00:00 2001 From: Guava Date: Sat, 1 Jul 2023 09:15:34 +0800 Subject: [PATCH 19/22] =?UTF-8?q?=E6=B6=88=E6=81=AF=E8=B7=B3=E8=BD=AC?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E8=AF=BB=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xboe/module/boecase/api/CasesRecommendApi.java | 5 +++++ .../service/ICasesRecommendPushRecordService.java | 14 ++++++++++++-- .../impl/CasesRecommendPushRecordServiceImpl.java | 9 +++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) 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 9b8e3a49..e67453f4 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 @@ -172,6 +172,11 @@ public class CasesRecommendApi extends ApiBaseController { } + @GetMapping("/startRead") + public JsonResponse startRead(String caseRecommendId) { + return success(iCasesRecommendPushRecordService.startRead(caseRecommendId)); + } + /** * 发起推送 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 index 397af1b6..e2c4d39f 100644 --- 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 @@ -16,10 +16,11 @@ public interface ICasesRecommendPushRecordService { * @param * @return */ - boolean launchPush(CasesRecommendLaunchVo casesRecommendLaunch, CurrentUser currentUser,String token); + boolean launchPush(CasesRecommendLaunchVo casesRecommendLaunch, CurrentUser currentUser, String token); /** * 根据案例推荐ID查询案例推送列表信息 + * * @param recommendId * @return */ @@ -27,8 +28,17 @@ public interface ICasesRecommendPushRecordService { /** * 重新推送或撤回 - * @param isWithdraw 是否撤回 + * + * @param isWithdraw 是否撤回 * @param casesRecommend 案例推荐 */ void rePushOrWithdraw(boolean isWithdraw, CasesRecommend casesRecommend); + + /** + * 开始读 + * + * @param caseRecommendId + * @return + */ + boolean startRead(String caseRecommendId) } 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 3099499e..0a57645c 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 @@ -256,4 +256,13 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR } } } + + @Override + public boolean startRead(String caseRecommendId) { + return casesRecommendPushRecordDao.update(UpdateBuilder.from(CasesRecommendPushRecord.class) + .addUpdateField("readFlag", 1) + .addUpdateField("readStartTime", new Date()) + .addFilter(FieldFilters.eq("id", caseRecommendId)) + .builder()) > 0; + } } From b2c97ed9c151dd22c4671afa5ac0a0eb686cb0bd Mon Sep 17 00:00:00 2001 From: Guava Date: Sat, 1 Jul 2023 09:18:45 +0800 Subject: [PATCH 20/22] =?UTF-8?q?=E6=B3=A8=E9=94=80=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xboe/module/boecase/service/impl/CasesServiceImpl.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java index 698a4001..9257eeb0 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java @@ -3,7 +3,6 @@ package com.xboe.module.boecase.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.ListUtil; -import cn.hutool.core.text.split.SplitIter; import cn.hutool.core.util.StrUtil; import com.xboe.common.OrderCondition; import com.xboe.common.OrderDirection; @@ -31,12 +30,9 @@ import org.springframework.data.domain.PageRequest; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; import javax.transaction.Transactional; import java.time.LocalDateTime; import java.util.*; -import java.util.function.Function; import java.util.stream.Collectors; @Slf4j @@ -922,7 +918,8 @@ public class CasesServiceImpl implements ICasesService { List result = new ArrayList<>(); try { String hql = "select a.caseId FROM CasesRecommendPushRecord a left join Cases b ON a.caseId = b.id WHERE a.pushUserId=?1 and a.pushStatus=3 and b.deleted = false group by a.caseId ORDER By a.pushTime DESC"; - List listFields = casesRecommendDao.findListFields(hql, CASE_LEN, ListUtil.toList(accountId)); +// List listFields = casesRecommendDao.findListFields(hql, CASE_LEN, ListUtil.toList(accountId)); + List listFields = new ArrayList<>(); List caseIds = new ArrayList<>(); if (CollUtil.isNotEmpty(listFields)) { for (String objs : listFields) { From 91a336ca0dd72df953ad60ba19b129ed861489b9 Mon Sep 17 00:00:00 2001 From: Guava Date: Sat, 1 Jul 2023 09:19:12 +0800 Subject: [PATCH 21/22] =?UTF-8?q?=E6=B3=A8=E9=94=80=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../boecase/service/ICasesRecommendPushRecordService.java | 2 +- .../xboe/module/boecase/service/impl/CasesServiceImpl.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) 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 index e2c4d39f..ac5d6909 100644 --- 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 @@ -40,5 +40,5 @@ public interface ICasesRecommendPushRecordService { * @param caseRecommendId * @return */ - boolean startRead(String caseRecommendId) + boolean startRead(String caseRecommendId); } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java index 9257eeb0..ec2f27d3 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java @@ -918,8 +918,8 @@ public class CasesServiceImpl implements ICasesService { List result = new ArrayList<>(); try { String hql = "select a.caseId FROM CasesRecommendPushRecord a left join Cases b ON a.caseId = b.id WHERE a.pushUserId=?1 and a.pushStatus=3 and b.deleted = false group by a.caseId ORDER By a.pushTime DESC"; -// List listFields = casesRecommendDao.findListFields(hql, CASE_LEN, ListUtil.toList(accountId)); - List listFields = new ArrayList<>(); + List listFields = casesRecommendDao.findListFields(hql, CASE_LEN, ListUtil.toList(accountId)); +// List listFields = new ArrayList<>(); List caseIds = new ArrayList<>(); if (CollUtil.isNotEmpty(listFields)) { for (String objs : listFields) { From 4112b3a2681ae09d626e1eea9c6a5bcd4200c9ff Mon Sep 17 00:00:00 2001 From: Guava Date: Mon, 3 Jul 2023 10:06:41 +0800 Subject: [PATCH 22/22] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8E=A8=E8=8D=90?= =?UTF-8?q?=E6=A1=88=E4=BE=8B=E7=B1=BB=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/CasesRecommendPushRecordServiceImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 0a57645c..5cdd8e46 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 @@ -197,7 +197,7 @@ public class CasesRecommendPushRecordServiceImpl implements ICasesRecommendPushR message.setMsgType(1); message.setAcceptId(casesRecommendPushRecord.getPushUserId()); message.setAcceptName(casesRecommendPushRecord.getPushUserName()); - message.setContent("案例推荐【" + casesRecommendPushRecord.getCaseTitle() + "】"); + message.setContent("案例推荐《" + casesRecommendPushRecord.getCaseTitle() + "》"); message.setIsRead(false); message.setMsgTime(LocalDateTime.now()); message.setRefId(casesRecommendPushRecord.getId());