| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- package com.izouma.nineth.service;
- import cn.hutool.core.convert.Convert;
- import com.alibaba.fastjson.JSONArray;
- import com.izouma.nineth.config.MetaConstants;
- import com.izouma.nineth.domain.MetaRank;
- import com.izouma.nineth.dto.MetaRankDTO;
- import com.izouma.nineth.dto.MetaRestResult;
- import com.izouma.nineth.dto.PageQuery;
- import com.izouma.nineth.dto.PageWrapper;
- import com.izouma.nineth.exception.BusinessException;
- import com.izouma.nineth.repo.MetaRankRepo;
- import com.izouma.nineth.utils.JpaUtils;
- import lombok.AllArgsConstructor;
- import org.apache.commons.collections.CollectionUtils;
- import org.springframework.data.domain.Page;
- import org.springframework.stereotype.Service;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Map;
- @Service
- @AllArgsConstructor
- public class MetaRankService {
- private MetaRankRepo metaRankRepo;
- private MetaUserGoldRecordService metaUserGoldRecordService;
- public Page<MetaRank> all(PageQuery pageQuery) {
- return metaRankRepo.findAll(JpaUtils.toSpecification(pageQuery, MetaRank.class), JpaUtils.toPageRequest(pageQuery));
- }
- public Page<MetaRankDTO> rank(PageQuery pageQuery) {
- Map<String, Object> query = pageQuery.getQuery();
- if (!query.containsKey("id")) {
- throw new BusinessException("排行榜id不存在!");
- }
- Long id = Convert.toLong(query.get("id"));
- if (id.equals(MetaConstants.META_GOLD_RECEIVED_RANK_ID)) {
- return buildPage(pageQuery, metaUserGoldRecordService.rank());
- }
- // ...
- throw new BusinessException("非法排行榜id");
- }
- public MetaRestResult<List<MetaRankDTO>> metaQuery() {
- List<Map<String, String>> rank = metaUserGoldRecordService.rank();
- if (CollectionUtils.isEmpty(rank)) {
- return MetaRestResult.returnSuccess(new ArrayList<>());
- }
- return MetaRestResult.returnSuccess(convertMapToJavaList(rank));
- }
- private Page<MetaRankDTO> buildPage(PageQuery pageQuery, List<Map<String, String>> rank) {
- if (CollectionUtils.isEmpty(rank)) {
- return null;
- }
- List<MetaRankDTO> metaRankDTOS = convertMapToJavaList(rank);
- int page = pageQuery.getPage();
- int size = pageQuery.getSize();
- int start = page * size;
- int totalElements = 0;
- if (CollectionUtils.isEmpty(metaRankDTOS)) {
- return new PageWrapper<>(new ArrayList<MetaRankDTO>(), page,
- size, totalElements).toPage();
- }
- totalElements = metaRankDTOS.size();
- List<MetaRankDTO> newMetaRankDTOS;
- if (metaRankDTOS.size() < start + size) {
- newMetaRankDTOS = metaRankDTOS.subList(start, metaRankDTOS.size());
- return new PageWrapper<>(newMetaRankDTOS, page,
- size, totalElements).toPage();
- }
- newMetaRankDTOS = metaRankDTOS.subList(start, start + size);
- return new PageWrapper<>(newMetaRankDTOS, page,
- size, totalElements).toPage();
- }
- private List<MetaRankDTO> convertMapToJavaList(List<Map<String, String>> map) {
- JSONArray jsonArray = new JSONArray();
- jsonArray.addAll(map);
- return jsonArray.toJavaList(MetaRankDTO.class);
- }
- }
|