| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- package com.izouma.nineth.service;
- import com.izouma.nineth.config.Constants;
- import com.izouma.nineth.domain.Asset;
- import com.izouma.nineth.domain.MetaSpatialWharf;
- import com.izouma.nineth.dto.MetaBoatDTO;
- import com.izouma.nineth.dto.MetaRestResult;
- import com.izouma.nineth.dto.PageQuery;
- import com.izouma.nineth.repo.AssetRepo;
- import com.izouma.nineth.repo.MetaSpatialWharfRepo;
- import com.izouma.nineth.utils.JpaUtils;
- import com.izouma.nineth.utils.SecurityUtils;
- import lombok.AllArgsConstructor;
- import org.apache.commons.collections.CollectionUtils;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.data.domain.Page;
- import org.springframework.stereotype.Service;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Objects;
- @Service
- @AllArgsConstructor
- public class MetaSpatialWharfService {
- private MetaSpatialWharfRepo metaSpatialWharfRepo;
- private AssetRepo assetRepo;
- private final String BOAT_NAME = "%僵尸%";
- public Page<MetaSpatialWharf> all(PageQuery pageQuery) {
- return metaSpatialWharfRepo.findAll(JpaUtils.toSpecification(pageQuery, MetaSpatialWharf.class), JpaUtils.toPageRequest(pageQuery));
- }
- public MetaRestResult<MetaSpatialWharf> park(MetaSpatialWharf metaSpatialWharf) {
- if (Objects.isNull(metaSpatialWharf)) {
- return MetaRestResult.returnError("Illegal parameter : parameter can not be null");
- }
- if (Objects.isNull(metaSpatialWharf.getUserId())) {
- return MetaRestResult.returnError("Illegal parameter : userId can not be null");
- }
- if (!metaSpatialWharf.getUserId().equals(SecurityUtils.getAuthenticatedUser().getId())) {
- return MetaRestResult.returnError("当前船只不属于你!");
- }
- if (Objects.isNull(metaSpatialWharf.getBoatId())) {
- return MetaRestResult.returnError("Illegal parameter : boatId can not be null");
- }
- if (Objects.isNull(metaSpatialWharf.getIsLandId())) {
- return MetaRestResult.returnError("Illegal parameter : isLandId can not be null");
- }
- if (StringUtils.isBlank(metaSpatialWharf.getBoatType())) {
- return MetaRestResult.returnError("Illegal parameter : boatType can not be null");
- }
- if (Objects.isNull(metaSpatialWharf.getMetaBoatPositionId())) {
- return MetaRestResult.returnError("Illegal parameter : metaBoatPositionId can not be null");
- }
- MetaSpatialWharf position = metaSpatialWharfRepo.findByMetaBoatPositionIdAndDel(metaSpatialWharf.getMetaBoatPositionId(), false);
- if (Objects.nonNull(position)) {
- return MetaRestResult.returnError(String.format("该位置已被船[%S]停靠", position.getBoatId()));
- }
- MetaSpatialWharf dbMetaSpatialWharf = metaSpatialWharfRepo.findByBoatIdAndUserIdAndDel(metaSpatialWharf.getBoatId(), metaSpatialWharf.getUserId(), false);
- if (Objects.nonNull(dbMetaSpatialWharf)) {
- return MetaRestResult.returnError(String.format("该船只已经停靠在岛屿[%S]", dbMetaSpatialWharf.getIsLandId()));
- }
- Asset asset = assetRepo.findByIdAndUserIdAndDel(metaSpatialWharf.getBoatId(), metaSpatialWharf.getUserId(), false);
- if (Objects.isNull(asset)) {
- return MetaRestResult.returnError(String.format("藏品[%S]不存在", metaSpatialWharf.getBoatId()));
- }
- metaSpatialWharf.setBoatImg(asset.getPic().get(0).getUrl());
- MetaSpatialWharf save = metaSpatialWharfRepo.save(metaSpatialWharf);
- save.setMeUse(true);
- return MetaRestResult.returnSuccess("停靠成功", save);
- }
- private String getRarityType(String name) {
- if (StringUtils.isBlank(name)) {
- return null;
- }
- if (name.contains(Constants.Rarity.U) && !name.contains(Constants.Rarity.UR)) {
- return Constants.Rarity.U;
- }
- if (name.contains(Constants.Rarity.R) && !name.contains(Constants.Rarity.SR)) {
- return Constants.Rarity.R;
- }
- if (name.contains(Constants.Rarity.SR) && !name.contains(Constants.Rarity.SSR)) {
- return Constants.Rarity.SR;
- }
- if (name.contains(Constants.Rarity.SSR)) {
- return Constants.Rarity.SSR;
- }
- if (name.contains(Constants.Rarity.UR)) {
- return Constants.Rarity.UR;
- }
- return null;
- }
- public MetaRestResult<List<MetaBoatDTO>> queryBoats(List<String> boatTypes) {
- if (CollectionUtils.isEmpty(boatTypes)) {
- return MetaRestResult.returnError("船只类型为空");
- }
- List<MetaBoatDTO> metaBoatDTOS = new ArrayList<>();
- boatTypes.forEach(type -> {
- List<Long> parkingBoatIds = metaSpatialWharfRepo.findParkingBoatIds(SecurityUtils.getAuthenticatedUser().getId());
- if (CollectionUtils.isEmpty(parkingBoatIds)) {
- parkingBoatIds = new ArrayList<>();
- parkingBoatIds.add(0L);
- }
- List<Asset> assets = findAllBoatsByType(type, parkingBoatIds);
- if (CollectionUtils.isNotEmpty(assets)) {
- assets.forEach(asset -> {
- metaBoatDTOS.add(new MetaBoatDTO(asset.getId(), asset.getPic().get(0).getUrl(), type));
- });
- }
- });
- return MetaRestResult.returnSuccess(metaBoatDTOS);
- }
- private List<Asset> findAllBoatsByType(String type, List<Long> parkingBoatIds) {
- Long id = SecurityUtils.getAuthenticatedUser().getId();
- switch (type) {
- case Constants.Rarity.U:
- return assetRepo.findAllBoats(BOAT_NAME, Constants.META_NORMAL_STATUS, parkingBoatIds, Constants.Rarity.U_LIKE, Constants.Rarity.UR_LIKE, id);
- case Constants.Rarity.SR:
- return assetRepo.findAllBoats(BOAT_NAME, Constants.META_NORMAL_STATUS, parkingBoatIds, Constants.Rarity.SR_LIKE, Constants.Rarity.SSR_LIKE, id);
- case Constants.Rarity.SSR:
- return assetRepo.findAllBoats(BOAT_NAME, Constants.META_NORMAL_STATUS, parkingBoatIds, Constants.Rarity.SSR_LIKE, Constants.Rarity.U_LIKE, id);
- case Constants.Rarity.UR:
- return assetRepo.findAllBoats(BOAT_NAME, Constants.META_NORMAL_STATUS, parkingBoatIds, Constants.Rarity.UR_LIKE, Constants.Rarity.U_LIKE, id);
- default:
- return null;
- }
- }
- }
|