| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package com.izouma.nineth.web;
- import com.izouma.nineth.config.Constants;
- import com.izouma.nineth.config.MetaConstants;
- import com.izouma.nineth.domain.Asset;
- import com.izouma.nineth.domain.MetaUserProp;
- import com.izouma.nineth.dto.MetaBagAssetDTO;
- import com.izouma.nineth.dto.MetaRestResult;
- import com.izouma.nineth.dto.MetaUserBagDTO;
- import com.izouma.nineth.repo.AssetRepo;
- import com.izouma.nineth.repo.MetaUserPropRepo;
- import com.izouma.nineth.service.MetaParamsConfigService;
- import com.izouma.nineth.utils.SecurityUtils;
- import lombok.AllArgsConstructor;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- import java.util.TreeSet;
- import static java.util.Comparator.comparing;
- import static java.util.stream.Collectors.collectingAndThen;
- import static java.util.stream.Collectors.toCollection;
- @RestController
- @RequestMapping("/metaUserBag")
- @AllArgsConstructor
- public class MetaUserBagController {
- private MetaUserPropRepo metaUserPropRepo;
- private MetaParamsConfigService metaParamsConfigService;
- private AssetRepo assetRepo;
- @GetMapping("/query")
- public MetaRestResult<MetaUserBagDTO> queryMetaBag() {
- Long userId = SecurityUtils.getAuthenticatedUser().getId();
- List<MetaUserProp> metaUserProps = metaUserPropRepo.findByUserIdAndDel(userId, false);
- String names = metaParamsConfigService.getString(MetaConstants.META_BAG_COLLECTION_NAME);
- List<MetaBagAssetDTO> metaBagAssetDTOS = queryAsset(names, userId);
- String id = metaParamsConfigService.getString(MetaConstants.META_CAN_USE_COLLECTION_ID);
- if (StringUtils.isNotBlank(id)) {
- List<String> ids = Arrays.asList(id.split(MetaConstants.COMMA));
- metaBagAssetDTOS.forEach(metaBagAssetDTO -> {
- metaBagAssetDTO.setCanUse(ids.contains(String.valueOf(metaBagAssetDTO.getCollectionId())));
- });
- }
- return MetaRestResult.returnSuccess(new MetaUserBagDTO(metaBagAssetDTOS, metaUserProps));
- }
- private List<MetaBagAssetDTO> queryAsset(String names, Long userId) {
- List<MetaBagAssetDTO> metaBagAssetDTOS = new ArrayList<>();
- if (StringUtils.isBlank(names)) {
- List<Asset> assets = assetRepo.findAllByUserIdAndDelAndStatusIn(userId, false, Constants.META_NORMAL_STATUS);
- assets.forEach(asset -> {
- metaBagAssetDTOS.add(MetaBagAssetDTO.create(asset));
- });
- return metaBagAssetDTOS;
- }
- List<String> nameList = Arrays.asList(names.split(MetaConstants.COMMA));
- nameList.forEach(
- name -> {
- List<Asset> assets = assetRepo.findAllByUserIdAndStatusInAndNameLike(userId, Constants.META_NORMAL_STATUS, MetaConstants.LIKE.concat(name).concat(MetaConstants.LIKE));
- assets.forEach(asset -> {
- metaBagAssetDTOS.add(MetaBagAssetDTO.create(asset));
- });
- }
- );
- return metaBagAssetDTOS.stream().collect(
- collectingAndThen(
- toCollection(
- () -> new TreeSet<>(comparing(MetaBagAssetDTO::getId))
- ),
- ArrayList::new
- )
- );
- }
- }
|