|
@@ -1,20 +1,29 @@
|
|
|
package com.izouma.nineth.web;
|
|
package com.izouma.nineth.web;
|
|
|
|
|
|
|
|
|
|
+import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
+import com.izouma.nineth.domain.NewsLike;
|
|
|
|
|
+import com.izouma.nineth.domain.ShowCollection;
|
|
|
import com.izouma.nineth.domain.Showroom;
|
|
import com.izouma.nineth.domain.Showroom;
|
|
|
|
|
+import com.izouma.nineth.domain.User;
|
|
|
import com.izouma.nineth.dto.PageQuery;
|
|
import com.izouma.nineth.dto.PageQuery;
|
|
|
import com.izouma.nineth.exception.BusinessException;
|
|
import com.izouma.nineth.exception.BusinessException;
|
|
|
|
|
+import com.izouma.nineth.repo.NewsLikeRepo;
|
|
|
import com.izouma.nineth.repo.ShowCollectionRepo;
|
|
import com.izouma.nineth.repo.ShowCollectionRepo;
|
|
|
import com.izouma.nineth.repo.ShowroomRepo;
|
|
import com.izouma.nineth.repo.ShowroomRepo;
|
|
|
import com.izouma.nineth.service.ShowroomService;
|
|
import com.izouma.nineth.service.ShowroomService;
|
|
|
import com.izouma.nineth.utils.SecurityUtils;
|
|
import com.izouma.nineth.utils.SecurityUtils;
|
|
|
import com.izouma.nineth.utils.excel.ExcelUtils;
|
|
import com.izouma.nineth.utils.excel.ExcelUtils;
|
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
|
|
|
+import org.apache.commons.lang3.ObjectUtils;
|
|
|
import org.springframework.data.domain.Page;
|
|
import org.springframework.data.domain.Page;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
+import java.util.Map;
|
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
@RestController
|
|
@RestController
|
|
|
@RequestMapping("/showroom")
|
|
@RequestMapping("/showroom")
|
|
@@ -23,6 +32,7 @@ public class ShowroomController extends BaseController {
|
|
|
private ShowroomService showroomService;
|
|
private ShowroomService showroomService;
|
|
|
private ShowroomRepo showroomRepo;
|
|
private ShowroomRepo showroomRepo;
|
|
|
private ShowCollectionRepo showCollectionRepo;
|
|
private ShowCollectionRepo showCollectionRepo;
|
|
|
|
|
+ private NewsLikeRepo newsLikeRepo;
|
|
|
|
|
|
|
|
@PostMapping("/save")
|
|
@PostMapping("/save")
|
|
|
public Showroom save(@RequestBody Showroom record) {
|
|
public Showroom save(@RequestBody Showroom record) {
|
|
@@ -36,13 +46,42 @@ public class ShowroomController extends BaseController {
|
|
|
|
|
|
|
|
@PostMapping("/all")
|
|
@PostMapping("/all")
|
|
|
public Page<Showroom> all(@RequestBody PageQuery pageQuery) {
|
|
public Page<Showroom> all(@RequestBody PageQuery pageQuery) {
|
|
|
- return showroomService.all(pageQuery);
|
|
|
|
|
|
|
+ Page<Showroom> all = showroomService.all(pageQuery);
|
|
|
|
|
+ List<Long> ids = all.map(Showroom::getId).getContent();
|
|
|
|
|
+ Map<Long, List<ShowCollection>> collect = showCollectionRepo.findAllByShowroomIdIn(ids)
|
|
|
|
|
+ .stream()
|
|
|
|
|
+ .collect(Collectors.groupingBy(ShowCollection::getShowroomId));
|
|
|
|
|
+ showroomService.all(pageQuery);
|
|
|
|
|
+
|
|
|
|
|
+ User user = SecurityUtils.getAuthenticatedUser();
|
|
|
|
|
+ Map<Long, Long> likesMap = new HashMap<>();
|
|
|
|
|
+ if (user != null && !user.isAdmin() && CollUtil.isNotEmpty(ids)) {
|
|
|
|
|
+ List<NewsLike> likes = newsLikeRepo.findByUserIdAndShowroomIdIn(user
|
|
|
|
|
+ .getId(), ids);
|
|
|
|
|
+ likesMap = likes.stream()
|
|
|
|
|
+ .collect(Collectors.groupingBy(NewsLike::getShowroomId, Collectors.counting()));
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ Map<Long, Long> finalLikesMap = likesMap;
|
|
|
|
|
+ return all.map(showroom -> {
|
|
|
|
|
+ showroom.setCollections(collect.get(showroom.getId()));
|
|
|
|
|
+ showroom.setLiked(ObjectUtils.isNotEmpty(finalLikesMap.get(showroom.getId())));
|
|
|
|
|
+ return showroom;
|
|
|
|
|
+ });
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@GetMapping("/get/{id}")
|
|
@GetMapping("/get/{id}")
|
|
|
public Showroom get(@PathVariable Long id) {
|
|
public Showroom get(@PathVariable Long id) {
|
|
|
Showroom showroom = showroomRepo.findById(id).orElseThrow(new BusinessException("无记录"));
|
|
Showroom showroom = showroomRepo.findById(id).orElseThrow(new BusinessException("无记录"));
|
|
|
showroom.setCollections(showCollectionRepo.findAllByShowroomId(id));
|
|
showroom.setCollections(showCollectionRepo.findAllByShowroomId(id));
|
|
|
|
|
+ User user = SecurityUtils.getAuthenticatedUser();
|
|
|
|
|
+
|
|
|
|
|
+ if (user != null && !user.isAdmin()) {
|
|
|
|
|
+ List<NewsLike> likes = newsLikeRepo.findByUserIdAndShowroomId(user
|
|
|
|
|
+ .getId(), id);
|
|
|
|
|
+ showroom.setLiked(CollUtil.isNotEmpty(likes));
|
|
|
|
|
+ }
|
|
|
return showroom;
|
|
return showroom;
|
|
|
}
|
|
}
|
|
|
|
|
|