diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java index 404e6a30..4123186e 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/api/CasesApi.java @@ -14,6 +14,7 @@ import com.xboe.module.boecase.service.ICasesRecommendPushRecordService; import com.xboe.module.boecase.vo.CaseExportVo; import com.xboe.module.boecase.vo.CaseRankingVo; import com.xboe.module.boecase.vo.CasesQueryRecommendRankVo; +import com.xboe.module.boecase.vo.FavoriteCaseOfIndexVo; import com.xboe.module.dict.entity.DictItem; import com.xboe.module.excel.ExportsExcelSenderUtil; @@ -739,16 +740,21 @@ public class CasesApi extends ApiBaseController { /** * 查询收藏 + * @param pageIndex + * @param pageSize + * @param orderField + * @param orderAsc + * @return */ @SuppressWarnings("unchecked") @GetMapping("/queryFavoriteCaseOfIndex") - public JsonResponse> queryFavoriteCaseOfIndex(@RequestParam(required = false,defaultValue = "1") Integer pageIndex, + public JsonResponse> queryFavoriteCaseOfIndex(@RequestParam(required = false,defaultValue = "1") Integer pageIndex, @RequestParam(required = false,defaultValue = "5") Integer pageSize, @RequestParam(required = false) String orderField, @RequestParam(required = false) Boolean orderAsc) { // String accountId = this.getCurrent().getAccountId(); String accountId = "965342027497607168"; - PageList casesList = casesService.queryFavoriteCaseOfIndex(pageIndex,pageSize,accountId,orderField,orderAsc); + PageList casesList = casesService.queryFavoriteCaseOfIndex(pageIndex,pageSize,accountId,orderField,orderAsc); return success(casesList); } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesService.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesService.java index ab5bf945..8e2db196 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesService.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/ICasesService.java @@ -6,6 +6,7 @@ import com.xboe.module.boecase.dto.*; import com.xboe.module.boecase.entity.Cases; import com.xboe.module.boecase.vo.CaseRankingVo; import com.xboe.module.boecase.vo.CasesQueryRecommendRankVo; +import com.xboe.module.boecase.vo.FavoriteCaseOfIndexVo; import com.xboe.module.dict.entity.DictItem; import com.xboe.module.interaction.dto.FavoriteCaseDto; import com.xboe.school.vo.CasesVo; @@ -132,6 +133,6 @@ public interface ICasesService{ List queryPopularityOfMajor(Integer pageSize, Long majorId, LocalDateTime month, String accountId); - PageList queryFavoriteCaseOfIndex(Integer pageIndex, Integer pageSize, String accountId, String orderField, Boolean orderAsc); + PageList queryFavoriteCaseOfIndex(Integer pageIndex, Integer pageSize, String accountId, String orderField, Boolean orderAsc); } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java index 1490dd17..ba20a630 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/service/impl/CasesServiceImpl.java @@ -21,9 +21,9 @@ import com.xboe.module.boecase.service.ICasesService; import com.xboe.module.boecase.vo.CaseRankingVo; import com.xboe.module.boecase.vo.CaseViewRankingItemVo; import com.xboe.module.boecase.vo.CasesQueryRecommendRankVo; +import com.xboe.module.boecase.vo.FavoriteCaseOfIndexVo; import com.xboe.module.dict.dao.SysDictionaryDao; import com.xboe.module.dict.entity.DictItem; -import com.xboe.module.interaction.dto.FavoriteCaseDto; import com.xboe.module.interaction.entity.Favorites; import com.xboe.orm.CustomFieldInFilter; import com.xboe.school.vo.CasesVo; @@ -31,6 +31,7 @@ import com.xboe.standard.enums.BoedxResourceType; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; @@ -44,7 +45,6 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.TimeUnit; -import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -1227,7 +1227,7 @@ public class CasesServiceImpl implements ICasesService { // 缓存不存在数据,数据库中不存在数据,重建缓存 List serializedCases = casesList.stream().map(item -> JSONUtil.toJsonStr(item)).collect(Collectors.toList()); stringRedisTemplate.opsForList().rightPushAll(cacheKey, serializedCases); - stringRedisTemplate.expire(cacheKey, 10000, TimeUnit.SECONDS); + stringRedisTemplate.expire(cacheKey, 600, TimeUnit.SECONDS); return casesList; } return Collections.emptyList(); @@ -1360,7 +1360,7 @@ public class CasesServiceImpl implements ICasesService { } @Override - public PageList queryFavoriteCaseOfIndex(Integer pageIndex, Integer pageSize, String accountId, String orderField, Boolean orderAsc) { + public PageList queryFavoriteCaseOfIndex(Integer pageIndex, Integer pageSize, String accountId, String orderField, Boolean orderAsc) { String from = Favorites.class.getSimpleName()+" f,"+ Cases.class.getSimpleName()+" c"; QueryBuilder builder = QueryBuilder.from(from); builder.addFields("f.id","f.sysCreateTime","c"); @@ -1396,25 +1396,27 @@ public class CasesServiceImpl implements ICasesService { } List list = pageFields.getList(); + // 提取出 Cases 对象,添加标签 - List casesList = list.stream().map(o -> (Cases) o[2]).collect(Collectors.toList()); + List casesList = list.stream().map(o -> { + Cases cases = (Cases) o[2]; + FavoriteCaseOfIndexVo favoriteCaseOfIndexVo = new FavoriteCaseOfIndexVo(); + BeanUtils.copyProperties(cases, favoriteCaseOfIndexVo); + favoriteCaseOfIndexVo.setFavoriteId(o[0].toString()); + favoriteCaseOfIndexVo.setFavoriteTime(LocalDateTime.parse(o[1].toString())); + return favoriteCaseOfIndexVo; + }).collect(Collectors.toList()); + casesList = caseListCommonHandle(casesList, accountId); - Map caseMap = casesList.stream().collect(Collectors.toMap(Cases::getId, Function.identity())); - PageList favoriteCaseDtoPageList = new PageList<>(); - favoriteCaseDtoPageList.setList(new ArrayList<>()); - favoriteCaseDtoPageList.setPageSize(pageSize); - favoriteCaseDtoPageList.setCount(pageFields.getCount()); - for (Object[] o: list) { - FavoriteCaseDto favoriteCaseDto = new FavoriteCaseDto(); - favoriteCaseDto.setId(o[0].toString()); - favoriteCaseDto.setTime(LocalDateTime.parse(o[1].toString())); - Cases cases = caseMap.get(((Cases) o[2]).getId()); - favoriteCaseDto.setCases(cases); - favoriteCaseDtoPageList.getList().add(favoriteCaseDto); - } + List collect = casesList.stream().map(cases -> (FavoriteCaseOfIndexVo) cases).collect(Collectors.toList()); - return favoriteCaseDtoPageList; + PageList favoriteCaseOfIndexVoPageList = new PageList<>(); + favoriteCaseOfIndexVoPageList.setList(collect); + favoriteCaseOfIndexVoPageList.setPageSize(pageSize); + favoriteCaseOfIndexVoPageList.setCount(pageFields.getCount()); + + return favoriteCaseOfIndexVoPageList; } diff --git a/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/FavoriteCaseOfIndexVo.java b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/FavoriteCaseOfIndexVo.java new file mode 100644 index 00000000..54f3e052 --- /dev/null +++ b/servers/boe-server-all/src/main/java/com/xboe/module/boecase/vo/FavoriteCaseOfIndexVo.java @@ -0,0 +1,18 @@ +package com.xboe.module.boecase.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.xboe.module.boecase.entity.Cases; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class FavoriteCaseOfIndexVo extends Cases{ + + + private String favoriteId; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime favoriteTime; + +}