fix:79084

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