<p>@GetMapping(&quot;/queryCoachByPageByParam&quot;)
public Result<Object> queryCoachByPageByParam(QueryRequest queryRequest, Admin admin,
String text, String drivingProjectType,
String workStatus, HttpServletRequest request) {</p>
<pre><code>//权限验证
String token = (String) request.getAttribute(&quot;claims_admin&quot;);

if (token == null || &quot;&quot;.equals(token)) {
    throw new RuntimeException(&quot;权限不足!&quot;);
}

Map&lt;String, Object&gt; map = new HashMap&lt;&gt;();

//查出当前管理员
Admin admin1 = adminService.queryOneAdminByID(admin.getAdminId());


//1.当前管理员为总管理
if (admin1.getTotalAdminId() != null &amp;&amp; admin1.getTotalAdminId() == 0) {
    //找到当前总管理名下所有管理员
    List&lt;Admin&gt; admins = adminService.queryAdminsByTotalAdminId(admin.getAdminId());

    //(1)通过姓名和电话查询-总管理
    if (!StringUtils.isEmpty(text)) {
        List&lt;CoachDto&gt; coachDtoListByText = new ArrayList&lt;&gt;();
        List&lt;Coach&gt; coachList = new ArrayList&lt;&gt;();
        for (Admin admin2 : admins) {
            coachList.addAll(adminService.queryAllCoachByAdminId(admin2.getAdminId()));
        }

        for (Coach coach : coachList) {
            if (coach.getRealName() != null) {
                if (coach.getRealName().contains(text) || coach.getCoachPhone().contains(text)) {
                    coachDtoListByText.add(createCoachDto(coach));
                }
            }
        }

        return getPageResult(coachDtoListByText, queryRequest, map);
    }

    //(2)查全部教练-总管理
    List&lt;CoachDto&gt; coachDtoListByAll = new ArrayList&lt;&gt;();
    List&lt;Coach&gt; coaches = new ArrayList&lt;&gt;();
    for (Admin admin2 : admins) {
        coaches.addAll(adminService.queryAllCoachByAdminId(admin2.getAdminId()));
    }

    for (Coach coach : coaches) {
        coachDtoListByAll.add(createCoachDto(coach));
    }

    return getPageResult(coachDtoListByAll, queryRequest, map);
}

//2.管理员不是总管理
//查询当前管理员所有教练
List&lt;Coach&gt; coaches = adminService.queryAllCoachByAdminId(admin.getAdminId());


//(1)通过姓名和电话查询-普通管理员
if (!StringUtils.isEmpty(text)) {
    List&lt;CoachDto&gt; coachDtoList = new ArrayList&lt;&gt;();


    for (Coach coach : coaches) {
        if (coach.getRealName() != null) {
            if (coach.getRealName().contains(text) || coach.getCoachPhone().contains(text)) {
                coachDtoList.add(createCoachDto(coach));
            }
        }
    }

    return getPageResult(coachDtoList, queryRequest, map);
}

//(2)查询所有教练-普通管理员
List&lt;CoachDto&gt; coachDtoList = new ArrayList&lt;&gt;();
for (Coach coach : coaches) {
    coachDtoList.add(createCoachDto(coach));
}

return getPageResult(coachDtoList, queryRequest, map);
</code></pre>
<p>}</p>
<p>private CoachDto createCoachDto(Coach coach) {
CoachDto coachDto = new CoachDto();
BeanUtils.copyProperties(coach, coachDto);
// 查询当前教练课程
List<CourseDto> courseDtoList = courseInfoService.queryCourseByCoachId(coach.getCoachId(), RcqtUtils.getDay());
boolean isWorking = courseDtoList != null &amp;&amp; courseDtoList.stream()
.anyMatch(c -&gt; {
LocalTime currentTime = LocalTime.now();
return currentTime.isAfter(c.getStartReservationTime().toLocalTime()) &amp;&amp; currentTime.isBefore(c.getEndReservationTime().toLocalTime());
});
coachDto.setWorkStatus(isWorking);
return coachDto;
}</p>
<p>private Result<Object> getPageResult(List<CoachDto> coachDtoList, QueryRequest queryRequest, Map&lt;String, Object&gt; map) {
//按照姓名与工作状态排序
Comparator<CoachDto> comparator = Comparator.comparing(CoachDto::getWorkStatus, Comparator.reverseOrder())
.thenComparing((c1, c2) -&gt; Collator.getInstance(Locale.CHINESE).compare(c1.getRealName(), c2.getRealName()));
coachDtoList.sort(comparator);</p>
<pre><code>//进行分页
List&lt;CoachDto&gt; coachDtoListByPage = coachDtoList.stream()
        .skip((long) (queryRequest.getPageNum() - 1) * queryRequest.getPageSize())
        .limit(queryRequest.getPageSize())
        .collect(Collectors.toList());

map.put(&quot;coaches&quot;, coachDtoListByPage);
map.put(&quot;total&quot;, coachDtoList.size());

return new Result&lt;&gt;(ResultCode.SUCCESS, map);
</code></pre>
<p>}</p>
教练分页查询接口 - API 文档

原文地址: https://www.cveoy.top/t/topic/qhJ5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录