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 d375102f..efe63344 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 @@ -126,4 +126,19 @@ public class CourseFullText { */ private List keywordsList; + + /** + * 课程创建人id + */ + private String sysCreateAid; + + /** + * 课程创建人id + */ + private String[] sysCreateAids; + + /** + * 受众 + */ + private String audience; } 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 c6534d49..0d371060 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 @@ -354,31 +354,31 @@ public class CourseElasticsearchImpl implements ICourseFullTextSearch{ } - /* 2023-08-08 不管是否是此课程受众 ,都可以搜索到 但点进课程详情提示无权限 + /* 2023-08-08 不管是否是此课程受众 ,都可以搜索到 但点进课程详情提示无权限*/ //加上Source判断,是为了应对后台查询,后台查询时,不需要权限,但是需要指定数据来源 if(params.getSource()==null || params.getSource()==0 ) { //受众权限条件,必须是有受众的课程并且受众条件不为空 if(params.getAudiences()!=null && params.getAudiences().length>0) { //if(StringUtils.isNotBlank(params.getAudience())) { BoolQueryBuilder audience= QueryBuilders.boolQuery(); - audience.should(QueryBuilders.termQuery("isSetAudience",0)); - +// audience.should(QueryBuilders.termQuery("isSetAudience",0)); + BoolQueryBuilder has= QueryBuilders.boolQuery(); //String[] ids=params.getAudience().split(","); has.must(QueryBuilders.termQuery("isSetAudience",1)); //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)); +// boolQuery.must(QueryBuilders.termQuery("isSetAudience",0)); } - }*/ + } //在哪端显示 if(params.getDevice()!=null) { @@ -611,6 +611,11 @@ public class CourseElasticsearchImpl implements ICourseFullTextSearch{ if(boolQuery.hasClauses()) { sourceBuilder.query(boolQuery); } +// 查出例外人员 + BoolQueryBuilder builder= QueryBuilders.boolQuery(); + builder.should(QueryBuilders.termsQuery("sysCreateAid",paras.getSysCreateAids())); + sourceBuilder.query(builder); + //排序 if(StringUtils.isBlank(paras.getKeywords()) && paras.getOrderType()!=3) { 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 f7fd5168..2863e43d 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 @@ -5,14 +5,20 @@ import cn.hutool.core.lang.Opt; import cn.hutool.http.HttpRequest; import cn.hutool.json.JSONUtil; import com.xboe.api.vo.*; +import com.xboe.module.dict.entity.DictDto; +import com.xboe.system.user.dao.UserDao; +import com.xboe.system.user.entity.User; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Optional; import java.util.concurrent.ForkJoinPool; +import java.util.stream.Collectors; import java.util.stream.IntStream; @Service @@ -34,6 +40,27 @@ public class ThirdApi { @Value("${statApi.userdynamicList}") private String userdynamicListUrl; + @Autowired + UserDao userDao; + + @Value("${infrasApi.dict}") + private String infarasApiUrl; + + + + //获取例外人员的id + public List getUserId(){ + log.info("正在获取例外人员工号"); +// String s ="{\"show\":false,\"version\":\"1.1.0\",\"code\":200,\"msg\":\"请求成功!\",\"data\":{\"records\":[{\"id\":129,\"deleted\":null,\"createTime\":\"2023-10-16T10:03:25\",\"createId\":0,\"createName\":\"管理员\",\"updateTime\":\"2023-10-16T10:03:25\",\"updateId\":0,\"updateName\":\"管理员\",\"name\":\"李玉冰\",\"pid\":128,\"code\":\"00004409\",\"description\":null,\"value\":\"00004409\",\"img\":null,\"type\":1,\"level\":0,\"status\":0,\"sort\":0,\"children\":[]}],\"total\":0,\"size\":10,\"current\":1,\"orders\":[],\"id\":null,\"pid\":128,\"type\":1,\"status\":null,\"code\":null,\"name\":null,\"searchCount\":true,\"pages\":0},\"success\":true}"; + String s = Optional.ofNullable(HttpRequest.get(infarasApiUrl).execute() //"current",1,"type",1,"pid",128) + .body()).orElseThrow(() -> new RuntimeException("token校验失败")); + List dictDtos = Opt.ofBlankAble(s).map(t -> JSONUtil.toBean(t, DictResult.class)).map(DictResult::getData).orElseThrow(); + ListuserNo=new ArrayList<>(); + for (DictDto dictDto : dictDtos) { + userNo.add(dictDto.getValue()); + } + return userDao.getListByUserNos(userNo).stream().map(User::getId).collect(Collectors.toList()); + } @Value("${audience.getOrgUsers}") private String searchOrgUsersUrl; diff --git a/servers/boe-server-all/src/main/java/com/xboe/api/vo/DictResult.java b/servers/boe-server-all/src/main/java/com/xboe/api/vo/DictResult.java new file mode 100644 index 00000000..96a2febd --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/api/vo/DictResult.java @@ -0,0 +1,16 @@ +package com.xboe.api.vo; + +import com.xboe.module.dict.entity.DictDto; +import lombok.Data; + +import java.util.List; + +@Data +public class DictResult { + private Boolean show; + private String version; + private String code; + private String msg; + private List data; + private String success; +} diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseFullTextApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseFullTextApi.java index 33de5947..3390e9c0 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseFullTextApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CourseFullTextApi.java @@ -3,7 +3,17 @@ package com.xboe.module.course.api; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; +import com.xboe.api.ThirdApi; +import com.xboe.common.utils.StringUtil; +import com.xboe.module.boecase.dao.CasesRecordDao; +import com.xboe.old.dto.OrganizationDto; +import com.xboe.system.organization.api.OrganizationApi; +import com.xboe.system.organization.entity.Organization; +import com.xboe.system.organization.service.IOrganizationService; +import com.xboe.system.organization.service.impl.OrganizationServiceImpl; +import com.xboe.system.user.dao.UserDao; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -29,6 +39,8 @@ import com.xboe.module.course.service.ICourseTeacherService; import lombok.extern.slf4j.Slf4j; +import javax.annotation.Resource; + @Slf4j @RestController @RequestMapping(value="/xboe/m/course/fulltext") @@ -45,6 +57,11 @@ public class CourseFullTextApi extends ApiBaseController{ @Autowired(required = false) ICourseFullTextSearch fullTextSearch; + @Resource + IOrganizationService organizationService; + + @Autowired + ThirdApi thirdApi; /** * 课程的初始化 @@ -67,6 +84,8 @@ public class CourseFullTextApi extends ApiBaseController{ for(Course c:clist) { CourseFullText cft=CourseToCourseFullText.convert(c); try { + //添加创建人Id + cft.setSysCreateAid(c.getSysCreateAid()); //计算课程时长 int duration=ccourseService.sumDurationByCourseId(c.getId()); cft.setDuration(duration); @@ -193,7 +212,9 @@ public class CourseFullTextApi extends ApiBaseController{ */ @PostMapping("/search") public JsonResponse> search(Pagination pager,CourseQueryDto dto,Integer minDuration,Integer maxDuration){ - + //获取例外人员id + List userId = thirdApi.getUserId(); + String userIds = String.join(",", userId); //只是查询已发布的 dto.setPublish(true); if(this.fullTextSearch==null) { @@ -214,10 +235,12 @@ public class CourseFullTextApi extends ApiBaseController{ paras.setTypes(dto.getTypes());//多个分类的情况 //用户的companyId paras.setCompanyId(dto.getCompanyId()); - //paras.setAudience(dto.getAudiences()); if(StringUtils.isNotBlank(dto.getAudiences())) { paras.setAudiences(dto.getAudiences().split(",")); } + if(StringUtils.isNotBlank(userIds)) { + paras.setSysCreateAids(userIds.split(",")); + } paras.setOpenCourse(dto.getOpenCourse()); if(StringUtils.isNotBlank(dto.getOrderField())) { diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CoursePortalApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CoursePortalApi.java index 4a7c940c..fbf593ae 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CoursePortalApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/api/CoursePortalApi.java @@ -305,7 +305,7 @@ public class CoursePortalApi extends ApiBaseController{ } rs.put("isCrowd",pass); - rs.put("contents",cclist); + rs.put("contents", cclist); rs.put("sections",sectionlist); rs.put("teachers",teachers); //查询课程 diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/dto/CourseQueryDto.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/dto/CourseQueryDto.java index bfb5b470..abef7f5d 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/dto/CourseQueryDto.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/dto/CourseQueryDto.java @@ -114,4 +114,9 @@ public class CourseQueryDto { private String refId; private String refType; + + /** + * 创建人id + */ + private String sysCreateAids; } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/PublishCourseUtil.java b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/PublishCourseUtil.java index 117b013e..bed3b979 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/PublishCourseUtil.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/course/service/impl/PublishCourseUtil.java @@ -96,8 +96,9 @@ public class PublishCourseUtil { }else { cft.setIsSetAudience(0);//无受众 } - - //String fullTextId="";//全文检索返回的id,用于移除时处理 +// 添加课程创建人Id + cft.setSysCreateAid(c.getSysCreateAid()); + String fullTextId="";//全文检索返回的id,用于移除时处理 String newFullId=fullTextSearch.republish(ICourseFullTextSearch.DEFAULT_INDEX_NAME, cft, c.getFullTextId()); if(StringUtils.isNotBlank(c.getFullTextId())) { if(StringUtils.isNotBlank(newFullId) && !c.getFullTextId().equals(newFullId)) { diff --git a/servers/boe-server-all/src/main/resources/application.properties b/servers/boe-server-all/src/main/resources/application.properties index 7dccb218..1199f6af 100644 --- a/servers/boe-server-all/src/main/resources/application.properties +++ b/servers/boe-server-all/src/main/resources/application.properties @@ -1,5 +1,4 @@ -spring.profiles.active= @profileActive@ - +spring.profiles.active=@profileActive@ spring.application.name=boe-server-all server.port=9090 server.servlet.session.timeout=30m @@ -66,4 +65,6 @@ audience.usersByAudienceList=${boe.domain}/userbasic/audience/memberList #获取用户学习课程数据 statApi.userdynamicList=${boe.domain}/statApi/xboe/m/stat/userdynamic/list #用户中心根据组织id查询用户信息接口(递归子组织) -audience.getOrgUsers=${boe.domain}/userbasic/user/getOrgUsers \ No newline at end of file +audience.getOrgUsers=${boe.domain}/userbasic/user/getOrgUsers +#获取工号 +infrasApi.dict=${boe.domain}/infrasApi/dict/getCourseException \ No newline at end of file