MetaBoatPositionService.java 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package com.izouma.nineth.service;
  2. import com.izouma.nineth.domain.MetaBoatPosition;
  3. import com.izouma.nineth.domain.MetaSpatialInfo;
  4. import com.izouma.nineth.domain.MetaSpatialWharf;
  5. import com.izouma.nineth.dto.MetaRestResult;
  6. import com.izouma.nineth.dto.PageQuery;
  7. import com.izouma.nineth.enums.MetaIsLandTypeEnum;
  8. import com.izouma.nineth.repo.MetaBoatPositionRepo;
  9. import com.izouma.nineth.repo.MetaSpatialInfoRepo;
  10. import com.izouma.nineth.repo.MetaSpatialWharfRepo;
  11. import com.izouma.nineth.utils.JpaUtils;
  12. import com.izouma.nineth.utils.SecurityUtils;
  13. import lombok.AllArgsConstructor;
  14. import org.springframework.data.domain.Page;
  15. import org.springframework.stereotype.Service;
  16. import java.util.List;
  17. import java.util.Objects;
  18. @Service
  19. @AllArgsConstructor
  20. public class MetaBoatPositionService {
  21. private MetaBoatPositionRepo metaBoatPositionRepo;
  22. private MetaSpatialInfoRepo metaSpatialInfoRepo;
  23. private MetaSpatialWharfRepo metaSpatialWharfRepo;
  24. public Page<MetaBoatPosition> all(PageQuery pageQuery) {
  25. return metaBoatPositionRepo.findAll(JpaUtils.toSpecification(pageQuery, MetaBoatPosition.class), JpaUtils.toPageRequest(pageQuery));
  26. }
  27. public MetaRestResult<List<MetaBoatPosition>> queryBoatPosition(Long spaceInfoId) {
  28. Long userId = SecurityUtils.getAuthenticatedUser().getId();
  29. MetaSpatialInfo metaSpatialInfo = metaSpatialInfoRepo.findByIdAndDel(spaceInfoId, false);
  30. if (Objects.isNull(metaSpatialInfo)) {
  31. return MetaRestResult.returnError("查询不到空间信息");
  32. }
  33. if (!metaSpatialInfo.getUserId().equals(userId)) {
  34. return MetaRestResult.returnError("该空间不属于你");
  35. }
  36. if (metaSpatialInfo.getType() != 2) {
  37. return MetaRestResult.returnError("该空间不属于万岛空间");
  38. }
  39. MetaIsLandTypeEnum metaIsLandTypeEnum = queryIsLandType(metaSpatialInfo.getSize());
  40. if (Objects.isNull(metaIsLandTypeEnum)) {
  41. return MetaRestResult.returnError("该空间大小不合法");
  42. }
  43. List<MetaBoatPosition> metaBoatPositions = metaBoatPositionRepo.findAllByTypeAndDel(metaIsLandTypeEnum, false);
  44. metaBoatPositions.forEach(metaBoatPosition -> {
  45. MetaSpatialWharf metaSpatialWharf = metaSpatialWharfRepo.findAllByIsLandIdAndMetaBoatPositionIdAndDel(spaceInfoId, metaBoatPosition.getId(), false);
  46. if (Objects.nonNull(metaSpatialWharf)) {
  47. metaSpatialWharf.setMeUse(metaSpatialWharf.getUserId().equals(userId));
  48. metaBoatPosition.setBoatInfo(metaSpatialWharf);
  49. }
  50. });
  51. return MetaRestResult.returnSuccess(metaBoatPositions);
  52. }
  53. private MetaIsLandTypeEnum queryIsLandType(int size) {
  54. switch (size) {
  55. case 10000:
  56. return MetaIsLandTypeEnum.TEN_THOUSAND;
  57. case 60000:
  58. return MetaIsLandTypeEnum.SIXTY_THOUSAND;
  59. case 90000:
  60. return MetaIsLandTypeEnum.NINETY_THOUSAND;
  61. default:
  62. return null;
  63. }
  64. }
  65. }