xiongzhu 6 vuotta sitten
vanhempi
commit
f20522139a

+ 4 - 0
src/main/java/com/izouma/walkchina/repo/StageAwardRepository.java

@@ -2,6 +2,7 @@ package com.izouma.walkchina.repo;
 
 import com.izouma.walkchina.domain.StageAward;
 import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
 
 import java.util.List;
 
@@ -12,5 +13,8 @@ public interface StageAwardRepository extends JpaRepository<StageAward, Long> {
 
     List<StageAward> findAllByUserIdAndReceivedFalse(Long userId );
 
+    @Query("select s from StageAward s where s.userId = ?1 and (s.received = false or (s.arrival = 1 and s.stageId = ?2))")
+    List<StageAward> findUserStageAward(Long userId,Long stageId);
+
     StageAward findFirstByUserIdAndStageIdAndArrivalIsFalseOrderByCreatedAtDesc(Long userId, Long stageId);
 }

+ 20 - 20
src/main/java/com/izouma/walkchina/service/MapService.java

@@ -33,26 +33,26 @@ import static java.time.temporal.ChronoUnit.DAYS;
 @Slf4j
 public class MapService {
     @Autowired
-    private CityRepository         cityRepository;
+    private CityRepository cityRepository;
     @Autowired
-    private UserJourneyRepository  userJourneyRepository;
+    private UserJourneyRepository userJourneyRepository;
     @Autowired
     private JourneyStageRepository journeyStageRepository;
     @Autowired
-    private UserInfoRepository     userInfoRepository;
+    private UserInfoRepository userInfoRepository;
     @Autowired
-    private StageAwardRepository   stageAwardRepository;
+    private StageAwardRepository stageAwardRepository;
     @Value("${aliyun.oss_domain}")
-    private String                 ossDomain;
+    private String ossDomain;
 
     public List<City> citiesInRegion(MapRegion mapRegion) {
         Specification<City> specification = (Specification<City>) (root, criteriaQuery, criteriaBuilder) -> {
             return criteriaBuilder.and(criteriaBuilder.between(root.get("longitude"),
-                                                               mapRegion.getSouthwest().getLongitude(),
-                                                               mapRegion.getNortheast().getLongitude()),
-                                       criteriaBuilder.between(root.get("latitude"),
-                                                               mapRegion.getSouthwest().getLatitude(),
-                                                               mapRegion.getNortheast().getLatitude()));
+                mapRegion.getSouthwest().getLongitude(),
+                mapRegion.getNortheast().getLongitude()),
+                criteriaBuilder.between(root.get("latitude"),
+                    mapRegion.getSouthwest().getLatitude(),
+                    mapRegion.getNortheast().getLatitude()));
         };
         return cityRepository.findAll(specification);
     }
@@ -74,7 +74,7 @@ public class MapService {
         southwest.setLongitude(southwest.getLongitude() - dLng);
 
         List<UserMarker> list = userInfoRepository.findInRegion(userId, mapRegion.getSouthwest().getLatitude(), mapRegion.getSouthwest().getLongitude(),
-                                                                mapRegion.getNortheast().getLongitude(), mapRegion.getNortheast().getLongitude(), PageRequest.of(0, 50));
+            mapRegion.getNortheast().getLongitude(), mapRegion.getNortheast().getLongitude(), PageRequest.of(0, 50));
         for (UserMarker userMarker : list) {
             userMarker.setIcon(userMarker.getUserIcon());
             JourneyStage journeyStage = journeyStageRepository.findFirstByUserIdOrderByCreatedAtDesc(userMarker.getUserId()).orElse(null);
@@ -82,9 +82,9 @@ public class MapService {
                 List<StageAward> stageAwards = stageAwardRepository.findAllByUserIdAndNeedProgressLessThanAndReceivedEquals(userMarker.getUserId(), journeyStage.getProgress(), false);
                 userMarker.setCanSteal(stageAwards.stream()
                                                   .anyMatch(stageAward -> (stageAward.getArrival() ? stageAward.getReceiveRecords().size() < 10 : stageAward.getReceiveRecords().size() < 3)
-                                                                          && stageAward.getReceiveRecords().stream()
-                                                                                       .noneMatch(stageAwardRecord -> stageAwardRecord.getUserId().equals(userId))
-                                                                          && stageAward.getCoin().compareTo(BigDecimal.valueOf(0.01)) > 0));
+                                                      && stageAward.getReceiveRecords().stream()
+                                                                   .noneMatch(stageAwardRecord -> stageAwardRecord.getUserId().equals(userId))
+                                                      && stageAward.getCoin().compareTo(BigDecimal.valueOf(0.01)) > 0));
             } else {
                 userMarker.setCanSteal(false);
             }
@@ -132,14 +132,14 @@ public class MapService {
         userMap.setNearOrigin(latestStage.getOrigin());
         userMap.setProgress(latestStage.getProgress());
         userMap.setCurrentSteps(latestStage.getCurrentSteps());
-        List<StageAward> stageAwards = stageAwardRepository.findAllByUserIdAndReceivedFalse(userId);
+        List<StageAward> stageAwards = stageAwardRepository.findUserStageAward(userId, latestStage.getId());
         if (!userId.equals(SecurityUtils.getAuthenticatedUser().getId())) {
             stageAwards = stageAwards.stream()
                                      .filter(stageAward -> stageAward.getCoin().compareTo(BigDecimal.valueOf(0.01)) > 0
-                                                           && stageAward.getReceiveRecords().size() < 3
-                                                           && stageAward.getReceiveRecords()
-                                                                        .stream()
-                                                                        .noneMatch(stageAwardRecord -> stageAwardRecord.getUserId().equals(SecurityUtils.getAuthenticatedUser().getId())))
+                                         && stageAward.getReceiveRecords().size() < 3
+                                         && stageAward.getReceiveRecords()
+                                                      .stream()
+                                                      .noneMatch(stageAwardRecord -> stageAwardRecord.getUserId().equals(SecurityUtils.getAuthenticatedUser().getId())))
                                      .collect(Collectors.toList());
         }
         for (StageAward stageAward : stageAwards) {
@@ -445,7 +445,7 @@ public class MapService {
     private double lineSpace(double x1, double y1, double x2, double y2) {
         double lineLength = 0;
         lineLength = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2)
-                                                       * (y1 - y2));
+            * (y1 - y2));
         return lineLength;
     }
 }

+ 6 - 12
src/test/java/com/izouma/walkchina/repo/StageAwardRepositoryTest.java

@@ -1,11 +1,14 @@
 package com.izouma.walkchina.repo;
 
+import com.izouma.walkchina.domain.StageAward;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
+import java.util.List;
+
 @RunWith(SpringRunner.class)
 @SpringBootTest
 public class StageAwardRepositoryTest {
@@ -13,18 +16,9 @@ public class StageAwardRepositoryTest {
     private StageAwardRepository stageAwardRepository;
 
     @Test
-    public void countAllByUserIdAndReceivedEquals() {
+    public void findAllByUserIdAndReceivedFalse() {
+        List<StageAward> list = stageAwardRepository.findAllByUserIdAndReceivedFalse(1039L);
+        System.out.println(list);
     }
 
-    @Test
-    public void countAllByUserIdAndNeedProgressLessThanAndReceivedEquals() {
-    }
-
-    @Test
-    public void findAllByUserIdAndStageId() {
-    }
-
-    @Test
-    public void findFirstByUserIdAndStageIdOrderByCreatedAtDesc() {
-    }
 }