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
* @param page
* @param queryWrapper
* @param username
* @param userId
* @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);
/**
* 获取当前用户的动态消息
* @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
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
<where>
${ew.sqlSegment}
@@ -112,6 +114,10 @@
AND sys_dict_item.del_flag = 0
AND ${ew.sqlSegment}
</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>
@@ -148,7 +148,7 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
QueryWrapper<LawsHomeNormalSearchDTO> queryWrapper = getQueryWrapperNormal(lawsHomeNormalSearchDTO);
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);
return pageList;
}
@@ -801,16 +801,16 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
// 前缀匹配 缺点是前缀一定不能断开
//情况举例:用户只记得前面那段字
String boost = "boost";
Map<String, Object> map21 = new HashMap<>();
Map<String, Object> map31 = new HashMap<>();
Map<String, Object> 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<String, Object> map21 = new HashMap<>();
// Map<String, Object> map31 = new HashMap<>();
// Map<String, Object> 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<String, Object> 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<String, Object> status1 = new HashMap<>();
Map<String, Object> 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<String, Object> status2 = new HashMap<>();
Map<String, Object> 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<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> 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<LawsHomeNormalSearchCountVO> 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<OSSFile> 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<OSSFile> 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<OSSFile> 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 {
@@ -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;
}