From f766b3301ce54508369e3405121c34c3d65b4db4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E7=90=A6=E6=B6=9B?= Date: Mon, 11 Dec 2023 20:55:47 +0800 Subject: [PATCH] fix:79084 --- .../home/mapper/LawsHomeSearchMapper.java | 13 ++- .../home/mapper/xml/LawsHomeSearchMapper.xml | 14 ++- .../impl/LawsHomeSearchServiceImpl.java | 89 +++++++++++-------- .../laws/home/vo/LawsHomeNormalSearchVO.java | 9 +- 4 files changed, 79 insertions(+), 46 deletions(-) diff --git a/laws-modules/src/main/java/com/jero/modules/laws/home/mapper/LawsHomeSearchMapper.java b/laws-modules/src/main/java/com/jero/modules/laws/home/mapper/LawsHomeSearchMapper.java index a8135c97..0c843fef 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/home/mapper/LawsHomeSearchMapper.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/home/mapper/LawsHomeSearchMapper.java @@ -28,10 +28,10 @@ public interface LawsHomeSearchMapper extends BaseMapper */ - IPage getPage(Page page,@Param(Constants.WRAPPER) QueryWrapper queryWrapper,@Param("username") String username); + IPage getPage(Page page,@Param(Constants.WRAPPER) QueryWrapper queryWrapper,@Param("userId") String userId); /** * 首页-一般检索(标题)查询国内标准 @@ -69,5 +69,14 @@ public interface LawsHomeSearchMapper extends BaseMapper translateManyDict(@Param(Constants.WRAPPER) QueryWrapper queryWrapper); + /** + * 获取当前用户的动态消息 + * @author LQT + * @date 2023/12/11 20:37 + * @param userId + * @return java.util.List + */ + List getHomeSearchData(@Param("userId") String userId); + } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/home/mapper/xml/LawsHomeSearchMapper.xml b/laws-modules/src/main/java/com/jero/modules/laws/home/mapper/xml/LawsHomeSearchMapper.xml index 23c3c4c6..10b58932 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/home/mapper/xml/LawsHomeSearchMapper.xml +++ b/laws-modules/src/main/java/com/jero/modules/laws/home/mapper/xml/LawsHomeSearchMapper.xml @@ -39,10 +39,12 @@ null,null,null,null,standard_state,standard_code,grade_classification,implementation_date from laws_enterprise_standard where del_flag = 0 union all - select id,'4' as resource_type,dynamic_heading as standard_name,create_time,9 as standard_type_order, + select l1.id,'4' as resource_type,dynamic_heading as standard_name,create_time,9 as standard_type_order, null AS standard_state_order, null,null,null,null,null,null,null,null - from laws_news_feed where del_flag = 0 and (release_status = 1 or (release_status = 0 and create_by = #{username})) + from laws_news_feed l1 + left join laws_push_range l2 on l1.id = l2.unique_relation_flag + where l1.del_flag = 0 and l1.release_status = 1 and (l1.push_range_flag = 2 or (l1.push_range_flag = 1 and l2.user_id = #{userId})) ) as all_data ${ew.sqlSegment} @@ -112,6 +114,10 @@ AND sys_dict_item.del_flag = 0 AND ${ew.sqlSegment} - - + diff --git a/laws-modules/src/main/java/com/jero/modules/laws/home/service/impl/LawsHomeSearchServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/home/service/impl/LawsHomeSearchServiceImpl.java index 94622b6f..4cac8ff4 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/home/service/impl/LawsHomeSearchServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/home/service/impl/LawsHomeSearchServiceImpl.java @@ -148,7 +148,7 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { QueryWrapper queryWrapper = getQueryWrapperNormal(lawsHomeNormalSearchDTO); Page page = new Page<>(pageNo, pageSize); - IPage pageList = lawsHomeSearchMapper.getPage(page,queryWrapper,loginUser.getUsername()); + IPage pageList = lawsHomeSearchMapper.getPage(page,queryWrapper,loginUser.getId()); addContent(searchContent, pageList); return pageList; } @@ -801,16 +801,16 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { // 前缀匹配 缺点是前缀一定不能断开 //情况举例:用户只记得前面那段字 String boost = "boost"; - Map map21 = new HashMap<>(); - Map map31 = new HashMap<>(); - Map map41 = new HashMap<>(); - if(CONTENT.equals(field)){ - map31.put(boost,0.01); - } - map31.put("value", selectValue); - map21.put(field + ".keyword", map31); - map41.put("prefix", map21); - queryMapJson.add(map41); +// Map map21 = new HashMap<>(); +// Map map31 = new HashMap<>(); +// Map map41 = new HashMap<>(); +// if(CONTENT.equals(field)){ +// map31.put(boost,0.01); +// } +// map31.put("value", selectValue); +// map21.put(field + ".keyword", map31); +// map41.put("prefix", map21); +// queryMapJson.add(map41); // match_phrase_prefix 词组匹配查询,允许最后词组与文中的任意分词前缀匹配 Map map22 = new HashMap<>(); @@ -885,6 +885,7 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { jsonObject.put("aggs",map); jsonObject.put("size",0); + JSONArray queryAll = new JSONArray(); JSONArray queryMapJson = new JSONArray(); // 封装首次的条件 if (StringUtils.isNotBlank(searchContent)) { @@ -892,11 +893,13 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { } if(CollectionUtils.isNotEmpty(queryMapJson)){ JSONObject object = jeroElasticsearchTemplate.buildBoolQuery(null,null,queryMapJson); - jsonObject.put(QUERY,object); + queryAll.add(object); } LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - JSONObject jsonObjectShould = getJsonObject(loginUser); - jsonObject.put(QUERY,jsonObjectShould); + JSONObject object = getJsonObject(loginUser); + queryAll.add(object); + JSONObject objectAll = jeroElasticsearchTemplate.buildBoolQuery(queryAll,null,null); + jsonObject.put("query",objectAll); //2. 数据查询 JSONObject search = jeroElasticsearchTemplate.search(HomeSearchEnum.INDEX_NAME_DOCUMENT_ZQ.getValue(), HomeSearchEnum.TYPE_NAME_DOCUMENT_ZQ.getValue(), jsonObject); @@ -932,27 +935,41 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { } private JSONObject getJsonObject(LoginUser loginUser) { - // 查 (发布状态=1 或者 (发布状态=0 and create_by = 当前登录人)) - JSONArray queryMapShould = new JSONArray(); + // 查 (发布状态=1 & 推送范围为2全体用户的) + JSONArray queryMapMust1 = new JSONArray(); Map status1 = new HashMap<>(); Map status1Val = new HashMap<>(); status1Val.put(RELEASE_STATUS, "1"); status1.put(MATCH, status1Val); - queryMapShould.add(status1); - JSONArray queryMapMust = new JSONArray(); + queryMapMust1.add(status1); + + JSONArray queryMapShould = new JSONArray(); Map status2 = new HashMap<>(); Map status2Val = new HashMap<>(); - status2Val.put(RELEASE_STATUS, "0"); + status2Val.put("push_range_flag", 2); status2.put(MATCH, status2Val); - queryMapMust.add(status2); + queryMapShould.add(status2); + + JSONArray queryMapMust = new JSONArray(); + Map status4 = new HashMap<>(); + Map status4Val = new HashMap<>(); + status4Val.put("push_range_flag",1); + status4.put(MATCH, status4Val); + queryMapMust.add(status4); + + List listIds = lawsHomeSearchMapper.getHomeSearchData(loginUser.getId()); + if(CollectionUtils.isEmpty(listIds)){ + listIds.add(1L); + } Map status3 = new HashMap<>(); Map status3Val = new HashMap<>(); - status3Val.put("create_by", loginUser.getUsername()); - status3.put(MATCH, status3Val); + status3Val.put("id", listIds); + status3.put("terms", status3Val); queryMapMust.add(status3); JSONObject jsonObjectMust = jeroElasticsearchTemplate.buildBoolQuery(queryMapMust, null, null); queryMapShould.add(jsonObjectMust); - return jeroElasticsearchTemplate.buildBoolQuery(null, null, queryMapShould); + + return jeroElasticsearchTemplate.buildBoolQuery(queryMapMust1, null, queryMapShould); } private void addVo(JSONObject search, List list, String aggs, String fieldName) { @@ -1062,7 +1079,7 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { obj.setApplicableVehicle(lawsDomesticStandard.getApplicableVehicle()); obj.setStandardProperty(lawsDomesticStandard.getStandardProperty()); obj.setStandardState(lawsDomesticStandard.getStandardState()); - obj.setCreateBy(lawsDomesticStandard.getCreateBy()); + obj.setPushRangeFlag(2); obj.setReleaseStatus("1"); List listFile = getOssFilesLawsDomesticStandard(lawsDomesticStandard); updateES(opType, obj, listFile, lawsDomesticStandard.getId()); @@ -1157,7 +1174,7 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { obj.setStandardClass(lawsOverseasStandard.getStandardClass()); obj.setApplicableVehicle(lawsOverseasStandard.getApplicableVehicle()); obj.setStandardState(lawsOverseasStandard.getStandardState()); - obj.setCreateBy(lawsOverseasStandard.getCreateBy()); + obj.setPushRangeFlag(2); obj.setReleaseStatus("1"); List listFile = getOssFilesLawsOverseasStandard(lawsOverseasStandard); updateES(opType, obj, listFile, lawsOverseasStandard.getId()); @@ -1244,7 +1261,7 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { obj.setStandardCode(lawsEnterpriseStandard.getStandardCode()); obj.setEnterpriseStandardState(lawsEnterpriseStandard.getStandardState()); obj.setGradeClassification(lawsEnterpriseStandard.getGradeClassification()); - obj.setCreateBy(lawsEnterpriseStandard.getCreateBy()); + obj.setPushRangeFlag(2); obj.setReleaseStatus("1"); List listFile = getOssFilesLawsEnterpriseStandard(lawsEnterpriseStandard); updateES(opType, obj, listFile, lawsEnterpriseStandard.getId()); @@ -1309,7 +1326,7 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { obj.setStandardState("4"); obj.setReleaseDate(lawsNewsFeed.getReleaseTime()); obj.setCreateTime(lawsNewsFeed.getCreateTime()); - obj.setCreateBy(lawsNewsFeed.getCreateBy()); + obj.setPushRangeFlag(lawsNewsFeed.getPushRangeFlag()); obj.setReleaseStatus(String.valueOf(lawsNewsFeed.getReleaseStatus())); updateESLawsNewsFeed(opType, lawsNewsFeed, obj); }catch (Exception e){ @@ -1381,14 +1398,14 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { map.put(RESOURCE_TYPE, obj.getResourceType()); map.put("standard_type_order", obj.getStandardTypeOrder()); map.put("standard_state_order", obj.getStandardStateOrder()); - map.put(STANDARD_CLASS, obj.getStandardClass()); - map.put(DYNAMIC_TYPE, obj.getDynamicType()); - map.put(APPLICABLE_VEHICLE, obj.getApplicableVehicle()); - map.put(STANDARD_PROPERTY, obj.getStandardProperty()); - map.put(STANDARD_STATE, obj.getStandardState()); - map.put(STANDARD_CODE,obj.getStandardCode()); - map.put(ENTERPRISE_STANDARD_STATE,obj.getEnterpriseStandardState()); - map.put(GRADE_CLASSIFICATION,obj.getGradeClassification()); + map.put(STANDARD_CLASS, "," + obj.getStandardClass() + ","); + map.put(DYNAMIC_TYPE, "," + obj.getDynamicType() + ","); + map.put(APPLICABLE_VEHICLE, "," + obj.getApplicableVehicle() + ","); + map.put(STANDARD_PROPERTY, "," + obj.getStandardProperty() + ","); + map.put(STANDARD_STATE, "," + obj.getStandardState() + ","); + map.put(STANDARD_CODE,"," + obj.getStandardCode() + ","); + map.put(ENTERPRISE_STANDARD_STATE,"," + obj.getEnterpriseStandardState() + ","); + map.put(GRADE_CLASSIFICATION,"," + obj.getGradeClassification() + ","); map.put("release_date",obj.getReleaseDate()); // 没有时间 强行加入最早时间 try { @@ -1398,8 +1415,8 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService { log.error("文档库添加es失败",e); } map.put("es_create_time",new Date()); - map.put("create_by",obj.getCreateBy()); map.put(RELEASE_STATUS,obj.getReleaseStatus()); + map.put("push_range_flag",obj.getReleaseStatus()); //添加es JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(map, SerializerFeature.WriteMapNullValue)); try { diff --git a/laws-modules/src/main/java/com/jero/modules/laws/home/vo/LawsHomeNormalSearchVO.java b/laws-modules/src/main/java/com/jero/modules/laws/home/vo/LawsHomeNormalSearchVO.java index 514f8926..1b405a47 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/home/vo/LawsHomeNormalSearchVO.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/home/vo/LawsHomeNormalSearchVO.java @@ -102,12 +102,13 @@ public class LawsHomeNormalSearchVO implements Serializable { * 入库时间 */ private Date createTime; - /** - * 创建人(动态消息使用) - */ - private String createBy; /** * 发布状态(0-未发布、1-已发布)(动态消息使用) */ private String releaseStatus; + + /** + * 推送范围标识(1-指定用户、2-全体用户) + */ + private Integer pushRangeFlag; }