diff --git a/modules/boe-module-course/src/main/java/com/xboe/module/course/dto/CourseFullText.java b/modules/boe-module-course/src/main/java/com/xboe/module/course/dto/CourseFullText.java index 6a7fdc4b..209d0dcd 100644 --- a/modules/boe-module-course/src/main/java/com/xboe/module/course/dto/CourseFullText.java +++ b/modules/boe-module-course/src/main/java/com/xboe/module/course/dto/CourseFullText.java @@ -79,7 +79,10 @@ public class CourseFullText { private Integer isSetAudience; /**受众,受众的id,多个使用逗号分隔*/ - private String audience; + //private String audience; + + + private String[] audiences; /**资源归属*/ private String resOwner; diff --git a/modules/boe-module-es/src/main/java/com/xboe/module/elasticsearc/CourseElasticsearchImpl.java b/modules/boe-module-es/src/main/java/com/xboe/module/elasticsearc/CourseElasticsearchImpl.java index 640b1f57..a18d4058 100644 --- a/modules/boe-module-es/src/main/java/com/xboe/module/elasticsearc/CourseElasticsearchImpl.java +++ b/modules/boe-module-es/src/main/java/com/xboe/module/elasticsearc/CourseElasticsearchImpl.java @@ -120,7 +120,8 @@ public class CourseElasticsearchImpl implements ICourseFullTextSearch{ builder.field("isSetAudience").startObject().field("type", "keyword").endObject(); builder.field("createdAt").startObject().field("type", "integer").endObject(); builder.field("openCourse").startObject().field("type", "integer").endObject(); - builder.field("audience").startObject().field("type", "text").field("analyzer","comma").endObject(); + //builder.field("audience").startObject().field("type", "text").field("analyzer","comma").endObject(); + builder.field("audiences").startObject().field("type", "keyword").endObject(); builder.field("device").startObject().field("type", "integer").endObject(); builder.endObject(); builder.endObject(); @@ -283,26 +284,28 @@ public class CourseElasticsearchImpl implements ICourseFullTextSearch{ //加上Source判断,是为了应对后台查询,后台查询时,不需要权限,但是需要指定数据来源 if(params.getSource()==null || params.getSource()==0 ) { //受众权限条件,必须是有受众的课程并且受众条件不为空 - if(StringUtils.isNotBlank(params.getAudience())) { + if(params.getAudiences()!=null && params.getAudiences().length>0) { + //if(StringUtils.isNotBlank(params.getAudience())) { BoolQueryBuilder audience= QueryBuilders.boolQuery(); audience.should(QueryBuilders.termQuery("isSetAudience",0)); BoolQueryBuilder has= QueryBuilders.boolQuery(); - String[] ids=params.getAudience().split(","); + //String[] ids=params.getAudience().split(","); has.must(QueryBuilders.termQuery("isSetAudience",1)); - has.must(QueryBuilders.termsQuery("audience", ids)); + //has.must(QueryBuilders.termsQuery("audience", ids)); + has.must(QueryBuilders.termsQuery("audiences", params.getAudiences())); audience.should(has); audience.minimumShouldMatch(1); boolQuery.filter(audience); + //log.error("audience="+audience.toString()); }else { //如果当前用户无受众,只能查询未设置受众的课程 boolQuery.must(QueryBuilders.termQuery("isSetAudience",0)); } } - //在哪端显示 if(params.getDevice()!=null) { BoolQueryBuilder deviceQuery = QueryBuilders.boolQuery();