MetaUserBagController.java 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package com.izouma.nineth.web;
  2. import com.izouma.nineth.config.Constants;
  3. import com.izouma.nineth.config.MetaConstants;
  4. import com.izouma.nineth.domain.Asset;
  5. import com.izouma.nineth.domain.MetaUserProp;
  6. import com.izouma.nineth.dto.MetaBagAssetDTO;
  7. import com.izouma.nineth.dto.MetaRestResult;
  8. import com.izouma.nineth.dto.MetaUserBagDTO;
  9. import com.izouma.nineth.repo.AssetRepo;
  10. import com.izouma.nineth.repo.MetaUserPropRepo;
  11. import com.izouma.nineth.service.MetaParamsConfigService;
  12. import com.izouma.nineth.utils.SecurityUtils;
  13. import lombok.AllArgsConstructor;
  14. import org.apache.commons.lang3.StringUtils;
  15. import org.springframework.web.bind.annotation.GetMapping;
  16. import org.springframework.web.bind.annotation.RequestMapping;
  17. import org.springframework.web.bind.annotation.RestController;
  18. import java.util.ArrayList;
  19. import java.util.Arrays;
  20. import java.util.List;
  21. import java.util.TreeSet;
  22. import static java.util.Comparator.comparing;
  23. import static java.util.stream.Collectors.collectingAndThen;
  24. import static java.util.stream.Collectors.toCollection;
  25. @RestController
  26. @RequestMapping("/metaUserBag")
  27. @AllArgsConstructor
  28. public class MetaUserBagController {
  29. private MetaUserPropRepo metaUserPropRepo;
  30. private MetaParamsConfigService metaParamsConfigService;
  31. private AssetRepo assetRepo;
  32. @GetMapping("/query")
  33. public MetaRestResult<MetaUserBagDTO> queryMetaBag() {
  34. Long userId = SecurityUtils.getAuthenticatedUser().getId();
  35. List<MetaUserProp> metaUserProps = metaUserPropRepo.findByUserIdAndDel(userId, false);
  36. String names = metaParamsConfigService.getString(MetaConstants.META_BAG_COLLECTION_NAME);
  37. List<MetaBagAssetDTO> metaBagAssetDTOS = queryAsset(names, userId);
  38. String id = metaParamsConfigService.getString(MetaConstants.META_CAN_USE_COLLECTION_ID);
  39. if (StringUtils.isNotBlank(id)) {
  40. List<String> ids = Arrays.asList(id.split(MetaConstants.COMMA));
  41. metaBagAssetDTOS.forEach(metaBagAssetDTO -> {
  42. metaBagAssetDTO.setCanUse(ids.contains(String.valueOf(metaBagAssetDTO.getCollectionId())));
  43. });
  44. }
  45. return MetaRestResult.returnSuccess(new MetaUserBagDTO(metaBagAssetDTOS, metaUserProps));
  46. }
  47. private List<MetaBagAssetDTO> queryAsset(String names, Long userId) {
  48. List<MetaBagAssetDTO> metaBagAssetDTOS = new ArrayList<>();
  49. if (StringUtils.isBlank(names)) {
  50. List<Asset> assets = assetRepo.findAllByUserIdAndDelAndStatusIn(userId, false, Constants.META_NORMAL_STATUS);
  51. assets.forEach(asset -> {
  52. metaBagAssetDTOS.add(MetaBagAssetDTO.create(asset));
  53. });
  54. return metaBagAssetDTOS;
  55. }
  56. List<String> nameList = Arrays.asList(names.split(MetaConstants.COMMA));
  57. nameList.forEach(
  58. name -> {
  59. List<Asset> assets = assetRepo.findAllByUserIdAndStatusInAndNameLike(userId, Constants.META_NORMAL_STATUS, MetaConstants.LIKE.concat(name).concat(MetaConstants.LIKE));
  60. assets.forEach(asset -> {
  61. metaBagAssetDTOS.add(MetaBagAssetDTO.create(asset));
  62. });
  63. }
  64. );
  65. return metaBagAssetDTOS.stream().collect(
  66. collectingAndThen(
  67. toCollection(
  68. () -> new TreeSet<>(comparing(MetaBagAssetDTO::getId))
  69. ),
  70. ArrayList::new
  71. )
  72. );
  73. }
  74. }