Parcourir la source

Merge branch 'dev' of http://git.izouma.com/xiongzhu/raex_back into dev

panhui il y a 3 ans
Parent
commit
8a5d1d95f5

+ 1 - 1
src/main/java/com/izouma/nineth/config/RedisKeys.java

@@ -23,7 +23,7 @@ public class RedisKeys {
 
     public static final String UPDATE_SALE = "updateSale";
 
-    public static final String UPDATE_STOCK = "updateSale";
+    public static final String UPDATE_STOCK = "updateStock";
 
     public static final String LIMIT_REQ = "limitReq::";
 

+ 12 - 7
src/main/java/com/izouma/nineth/listener/UpdateSaleListener.java

@@ -13,6 +13,8 @@ import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 
+import java.util.Set;
+
 @Service
 @Slf4j
 @AllArgsConstructor
@@ -35,14 +37,17 @@ public class UpdateSaleListener implements RocketMQListener<Long> {
     @Scheduled(fixedRate = 10000)
     public void updateSale() {
         BoundHashOperations<String, String, Integer> ops = redisTemplate.boundHashOps(RedisKeys.UPDATE_SALE);
-        for (String id : ops.keys()) {
-            Long val = ops.increment(id, -1);
-            if (val <= 0) {
-                ops.delete(id);
-            } else if (val > 1) {
-                ops.put(id, 1);
+        Set<String> keys = ops.keys();
+        if (keys != null) {
+            for (String id : keys) {
+                Long val = ops.increment(id, -1);
+                if (val <= 0) {
+                    ops.delete(id);
+                } else if (val > 1) {
+                    ops.put(id, 1);
+                }
+                collectionService.syncSale(Long.parseLong(id));
             }
-            collectionService.syncSale(Long.parseLong(id));
         }
     }
 }

+ 27 - 2
src/main/java/com/izouma/nineth/listener/UpdateStockListener.java

@@ -1,5 +1,6 @@
 package com.izouma.nineth.listener;
 
+import com.izouma.nineth.config.RedisKeys;
 import com.izouma.nineth.service.CollectionService;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -7,8 +8,13 @@ import org.apache.rocketmq.spring.annotation.ConsumeMode;
 import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
 import org.apache.rocketmq.spring.core.RocketMQListener;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.data.redis.core.BoundHashOperations;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 
+import java.util.Set;
+
 @Service
 @Slf4j
 @AllArgsConstructor
@@ -19,10 +25,29 @@ import org.springframework.stereotype.Service;
 @ConditionalOnProperty(value = "general.notify-server", havingValue = "false", matchIfMissing = true)
 public class UpdateStockListener implements RocketMQListener<Long> {
 
-    private CollectionService collectionService;
+    private CollectionService             collectionService;
+    private RedisTemplate<String, Object> redisTemplate;
 
     @Override
     public void onMessage(Long id) {
-        collectionService.syncStock(id);
+        BoundHashOperations<String, String, Integer> ops = redisTemplate.boundHashOps(RedisKeys.UPDATE_STOCK);
+        ops.increment(id.toString(), 1);
+    }
+
+    @Scheduled(fixedRate = 10000)
+    public void updateSale() {
+        BoundHashOperations<String, String, Integer> ops = redisTemplate.boundHashOps(RedisKeys.UPDATE_STOCK);
+        Set<String> keys = ops.keys();
+        if (keys != null) {
+            for (String id : keys) {
+                Long val = ops.increment(id, -1);
+                if (val <= 0) {
+                    ops.delete(id);
+                } else if (val > 1) {
+                    ops.put(id, 1);
+                }
+                collectionService.syncStock(Long.parseLong(id));
+            }
+        }
     }
 }

+ 2 - 0
src/main/java/com/izouma/nineth/repo/UserRepo.java

@@ -172,6 +172,8 @@ public interface UserRepo extends JpaRepository<User, Long>, JpaSpecificationExe
 
     List<User> findAllByCreatedAtIsAfterAndAdminFalse(LocalDateTime createdAt);
 
+    List<User> findAllByCreatedAtIsAfterAndAdminFalse(LocalDateTime createdAt);
+
     List<User> findBySettleAccountIdIsNotNull();
 
     @Transactional

+ 1 - 1
src/main/java/com/izouma/nineth/service/CollectionService.java

@@ -416,7 +416,7 @@ public class CollectionService {
         return increaseSale(id, -number);
     }
 
-    @Debounce(key = "#id", delay = 500)
+//    @Debounce(key = "#id", delay = 500)
     public void syncStock(Long id) {
         Integer stock = (Integer) redisTemplate.opsForValue().get(RedisKeys.COLLECTION_STOCK + id);
         if (stock != null) {

+ 14 - 0
src/main/java/com/izouma/nineth/service/UserService.java

@@ -685,4 +685,18 @@ public class UserService {
         user.setTradeCode(null);
         return user;
     }
+
+    public Page<Minter> toMinterDTO(Page<User> users) {
+        List<User> origins = users.getContent();
+        List<Minter> minters = new ArrayList<>();
+        origins.forEach(user -> {
+            Minter minter = Minter.builder()
+                    .id(user.getId())
+                    .name(user.getNickname())
+                    .avatar(user.getAvatar())
+                    .build();
+            minters.add(minter);
+        });
+        return new PageImpl<>(minters, users.getPageable(), users.getTotalElements());
+    }
 }

+ 6 - 0
src/main/java/com/izouma/nineth/web/UserController.java

@@ -87,6 +87,12 @@ public class UserController extends BaseController {
         return userService.toDTO(userService.all(pageQuery).toPage());
     }
 
+    @PostMapping("/minterList")
+    public Page<Minter> toMinter(@RequestBody PageQuery pageQuery) {
+        pageQuery.getQuery().put("minter", true);
+        return userService.toMinterDTO(userService.all(pageQuery).toPage());
+    }
+
     //    @PreAuthorize("hasRole('ADMIN')")
     @GetMapping("/get/{id}")
     public UserDTO get(@PathVariable Long id) {

+ 7 - 7
src/main/resources/application.yaml

@@ -25,8 +25,8 @@ spring:
         max_idle: 50
         min_idle: 0
   datasource:
-    url: jdbc:mysql://rm-wz9sc79f5255780opqo.mysql.rds.aliyuncs.com/raex_test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8
-    username: raex_server
+    url: jdbc:mysql://rm-wz9q65wzuf8c56647ro.mysql.rds.aliyuncs.com/raex_test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8
+    username: raex_test
     password: tetQsjw!u4!c5$URduo7BH
     hikari:
       minimum-idle: 20
@@ -238,8 +238,8 @@ spring:
     activate:
       on-profile: test
   datasource:
-    url: jdbc:mysql://rm-wz9sc79f5255780op.mysql.rds.aliyuncs.com/raex_test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8&useLocalSessionState=true
-    username: raex_server
+    url: jdbc:mysql://rm-wz9q65wzuf8c56647.mysql.rds.aliyuncs.com/raex_test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8&useLocalSessionState=true
+    username: raex_test
     password: tetQsjw!u4!c5$URduo7BH
   redis:
     host: 127.0.0.1
@@ -438,8 +438,8 @@ spring:
     activate:
       on-profile: notifytest
   datasource:
-    url: jdbc:mysql://rm-wz9sc79f5255780opqo.mysql.rds.aliyuncs.com/raex_test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8
-    username: raex_server
+    url: jdbc:mysql://rm-wz9q65wzuf8c56647.mysql.rds.aliyuncs.com/raex_test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8
+    username: raex_test
     password: tetQsjw!u4!c5$URduo7BH
   redis:
     host: 172.31.215.239
@@ -479,7 +479,7 @@ spring:
     activate:
       on-profile: staging
   datasource:
-    url: jdbc:mysql://rm-wz9q65wzuf8c56647ro.mysql.rds.aliyuncs.com/raex_test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8
+    url: jdbc:mysql://rm-wz9q65wzuf8c56647.mysql.rds.aliyuncs.com/raex_test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&serverTimezone=GMT%2b8
     username: raex_test
     password: tetQsjw!u4!c5$URduo7BH
   redis: