Skip to content

Commit

Permalink
perfect: Link random order display,listByRandom and listTeamsByRandom. (
Browse files Browse the repository at this point in the history
  • Loading branch information
cetr authored Jul 8, 2020
1 parent 65c1424 commit 8734e99
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,15 @@ public void execute(Environment env, Map params, TemplateModel[] loopVars, Templ
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;
Expand Down
16 changes: 15 additions & 1 deletion src/main/java/run/halo/app/service/LinkService.java
Original file line number Diff line number Diff line change
Expand Up @@ -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.
*
Expand All @@ -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();
}
21 changes: 19 additions & 2 deletions src/main/java/run/halo/app/service/impl/LinkServiceImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,23 @@ public List<LinkTeamVO> listTeamVos(Sort sort) {
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");
Expand Down Expand Up @@ -101,7 +118,7 @@ public List<String> listAllTeams() {
}

@Override
public List<Link> listAllByDisruption() {
public List<Link> listAllByRandom() {
List<Link> allLink = linkRepository.findAll();
Collections.shuffle(allLink);
return allLink;
Expand All @@ -114,6 +131,6 @@ private List<LinkDTO> convertTo(@Nullable List<Link> links) {
}

return links.stream().map(link -> (LinkDTO) new LinkDTO().convertFrom(link))
.collect(Collectors.toList());
.collect(Collectors.toList());
}
}

0 comments on commit 8734e99

Please sign in to comment.