mirror of https://github.com/halo-dev/halo
perfect: Link random order display,listByRandom and listTeamsByRandom. (#952)
parent
65c1424086
commit
8734e99445
|
@ -38,12 +38,15 @@ public class LinkTagDirective implements TemplateDirectiveModel {
|
|||
case "list":
|
||||
env.setVariable("links", builder.build().wrap(linkService.listAll()));
|
||||
break;
|
||||
case "listByDisruption":
|
||||
env.setVariable("links", builder.build().wrap(linkService.listAllByDisruption()));
|
||||
case "listByRandom":
|
||||
env.setVariable("links", builder.build().wrap(linkService.listAllByRandom()));
|
||||
break;
|
||||
case "listTeams":
|
||||
env.setVariable("teams", builder.build().wrap(linkService.listTeamVos(Sort.by(DESC, "createTime"))));
|
||||
break;
|
||||
case "listTeamsByRandom":
|
||||
env.setVariable("teams", builder.build().wrap(linkService.listTeamVosByRandom(Sort.by(DESC, "createTime"))));
|
||||
break;
|
||||
case "count":
|
||||
env.setVariable("count", builder.build().wrap(linkService.count()));
|
||||
break;
|
||||
|
|
|
@ -37,6 +37,15 @@ public interface LinkService extends CrudService<Link, Integer> {
|
|||
@NonNull
|
||||
List<LinkTeamVO> listTeamVos(@NonNull Sort sort);
|
||||
|
||||
/**
|
||||
* Lists link team vos by random
|
||||
*
|
||||
* @param sort
|
||||
* @return a list of link team vo by random
|
||||
*/
|
||||
@NonNull
|
||||
List<LinkTeamVO> listTeamVosByRandom(@NonNull Sort sort);
|
||||
|
||||
/**
|
||||
* Creates link by link param.
|
||||
*
|
||||
|
@ -61,6 +70,11 @@ public interface LinkService extends CrudService<Link, Integer> {
|
|||
*/
|
||||
List<String> listAllTeams();
|
||||
|
||||
/**
|
||||
* List all link teams by random
|
||||
*
|
||||
* @return a list of teams by random
|
||||
*/
|
||||
@NonNull
|
||||
List<Link> listAllByDisruption();
|
||||
List<Link> listAllByRandom();
|
||||
}
|
||||
|
|
|
@ -72,6 +72,23 @@ public class LinkServiceImpl extends AbstractCrudService<Link, Integer> implemen
|
|||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<LinkTeamVO> listTeamVosByRandom(Sort sort) {
|
||||
Assert.notNull(sort, "Sort info must not be null");
|
||||
List<LinkDTO> links = listDtos(sort);
|
||||
Set<String> teams = ServiceUtils.fetchProperty(links, LinkDTO::getTeam);
|
||||
Map<String, List<LinkDTO>> teamLinkListMap = ServiceUtils.convertToListMap(teams, links, LinkDTO::getTeam);
|
||||
List<LinkTeamVO> result = new LinkedList<>();
|
||||
teamLinkListMap.forEach((team, linkList) -> {
|
||||
LinkTeamVO linkTeamVO = new LinkTeamVO();
|
||||
linkTeamVO.setTeam(team);
|
||||
Collections.shuffle(linkList);
|
||||
linkTeamVO.setLinks(linkList);
|
||||
result.add(linkTeamVO);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Link createBy(LinkParam linkParam) {
|
||||
Assert.notNull(linkParam, "Link param must not be null");
|
||||
|
@ -101,7 +118,7 @@ public class LinkServiceImpl extends AbstractCrudService<Link, Integer> implemen
|
|||
}
|
||||
|
||||
@Override
|
||||
public List<Link> listAllByDisruption() {
|
||||
public List<Link> listAllByRandom() {
|
||||
List<Link> allLink = linkRepository.findAll();
|
||||
Collections.shuffle(allLink);
|
||||
return allLink;
|
||||
|
@ -114,6 +131,6 @@ public class LinkServiceImpl extends AbstractCrudService<Link, Integer> implemen
|
|||
}
|
||||
|
||||
return links.stream().map(link -> (LinkDTO) new LinkDTO().convertFrom(link))
|
||||
.collect(Collectors.toList());
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue