xiongzhu пре 4 година
родитељ
комит
d5e18e2d10

+ 13 - 1
pom.xml

@@ -404,7 +404,19 @@
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>druid-spring-boot-starter</artifactId>
-            <version>1.1.21</version>
+            <version>1.2.8</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.rocketmq</groupId>
+            <artifactId>rocketmq-spring-boot-starter</artifactId>
+            <version>2.2.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-validator</groupId>
+            <artifactId>commons-validator</artifactId>
+            <version>1.7</version>
         </dependency>
     </dependencies>
 

+ 13 - 0
src/main/java/com/izouma/nineth/event/CreateOrderEvent.java

@@ -0,0 +1,13 @@
+package com.izouma.nineth.event;
+
+import lombok.Data;
+
+@Data
+public class CreateOrderEvent {
+    private Long userId;
+    private Long collectionId;
+    private int  qty;
+    private Long addressId;
+    private Long userCouponId;
+    private Long invitor;
+}

+ 12 - 0
src/main/java/com/izouma/nineth/event/MyMqEvent.java

@@ -0,0 +1,12 @@
+package com.izouma.nineth.event;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class MyMqEvent {
+    private String data;
+}

+ 1 - 2
src/main/java/com/izouma/nineth/security/JwtAuthorizationTokenFilter.java

@@ -1,6 +1,5 @@
 package com.izouma.nineth.security;
 
-import com.izouma.nineth.repo.UserTokenRepo;
 import io.jsonwebtoken.ExpiredJwtException;
 import io.jsonwebtoken.SignatureException;
 import lombok.extern.slf4j.Slf4j;
@@ -54,7 +53,7 @@ public class JwtAuthorizationTokenFilter extends OncePerRequestFilter {
                 log.error(e.getMessage());
             }
         } else {
-            log.warn("couldn't find bearer string, will ignore the header");
+            // log.warn("couldn't find bearer string, will ignore the header");
         }
 
         log.debug("checking authentication for user '{}'", username);

+ 1 - 0
src/main/java/com/izouma/nineth/security/WebSecurityConfig.java

@@ -98,6 +98,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
                 .antMatchers("/activity/get/*").permitAll()
                 .antMatchers("/appVersion/checkIosReview").permitAll()
                 .antMatchers("/druid/**").permitAll()
+                .antMatchers("/testmq/**").permitAll()
                 // all other requests need to be authenticated
                 .anyRequest().authenticated().and()
                 // make sure we use stateless session; session won't be used to

+ 22 - 0
src/main/java/com/izouma/nineth/service/CreateOrderListener.java

@@ -0,0 +1,22 @@
+package com.izouma.nineth.service;
+
+import com.izouma.nineth.event.CreateOrderEvent;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.rocketmq.spring.core.RocketMQListener;
+import org.springframework.stereotype.Service;
+
+@Service
+@Slf4j
+@AllArgsConstructor
+//@RocketMQMessageListener(
+//        consumerGroup = "${rocketmq.consumer.group}", topic = "test-add-topic", consumeMode = ConsumeMode.ORDERLY)
+public class CreateOrderListener implements RocketMQListener<CreateOrderEvent> {
+    private OrderService orderService;
+
+    @Override
+    public void onMessage(CreateOrderEvent createOrderEvent) {
+        orderService.create(createOrderEvent.getUserId(), createOrderEvent.getCollectionId(), createOrderEvent.getQty(),
+                createOrderEvent.getAddressId(), createOrderEvent.getUserCouponId(), createOrderEvent.getInvitor());
+    }
+}

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

@@ -83,7 +83,6 @@ public class OrderService {
     @Transactional
     public Order create(Long userId, Long collectionId, int qty, Long addressId, Long userCouponId, Long invitor) {
         if (qty <= 0) throw new BusinessException("数量必须大于0");
-        User user = userRepo.findByIdAndDelFalse(userId).orElseThrow(new BusinessException("用户不存在"));
         Collection collection = collectionRepo.findById(collectionId).orElseThrow(new BusinessException("藏品不存在"));
         User minter = userRepo.findById(collection.getMinterId()).orElseThrow(new BusinessException("铸造者不存在"));
         UserCoupon coupon = null;

+ 24 - 0
src/main/java/com/izouma/nineth/service/TestConsumer.java

@@ -0,0 +1,24 @@
+package com.izouma.nineth.service;
+
+import com.izouma.nineth.event.MyMqEvent;
+import lombok.AllArgsConstructor;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.rocketmq.spring.annotation.ConsumeMode;
+import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
+import org.apache.rocketmq.spring.core.RocketMQListener;
+import org.springframework.stereotype.Service;
+
+@Service
+@Slf4j
+@AllArgsConstructor
+@RocketMQMessageListener(
+        consumerGroup = "${rocketmq.consumer.group}", topic = "test-add-topic", consumeMode = ConsumeMode.CONCURRENTLY)
+public class TestConsumer implements RocketMQListener<MyMqEvent> {
+
+    @SneakyThrows
+    public void onMessage(MyMqEvent event) {
+        Thread.sleep((long) (Math.random() * 200));
+        log.info("receive message: {}", event.getData());
+    }
+}

+ 1 - 1
src/main/java/com/izouma/nineth/utils/JpaUtils.java

@@ -186,7 +186,7 @@ public class JpaUtils {
             }
             clazz = clazz.getSuperclass();
         }
-        log.error("no such field [{}] in class [{}]", property, className);
+        //log.error("no such field [{}] in class [{}]", property, className);
         return null;
     }
 }

+ 23 - 0
src/main/java/com/izouma/nineth/web/RocketMqController.java

@@ -0,0 +1,23 @@
+package com.izouma.nineth.web;
+
+import com.izouma.nineth.event.MyMqEvent;
+import lombok.AllArgsConstructor;
+import org.apache.rocketmq.spring.core.RocketMQTemplate;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/testmq")
+@AllArgsConstructor
+public class RocketMqController {
+
+    private RocketMQTemplate rocketMQTemplate;
+
+    @GetMapping("/send")
+    public String send(String data) {
+        rocketMQTemplate.syncSend("test-add-topic", new MyMqEvent(data));
+        return "ok";
+    }
+
+}

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

@@ -135,7 +135,7 @@ aliyun:
 general:
   host: https://test.raex.vip
   contract-name: raex_new
-  name: 绿洲数字藏品中心
+  name: 绿洲宇宙
   org: 华储艺术品中心(深圳)有限公司
   short-name: 华储
 mychain:
@@ -172,6 +172,12 @@ adapay:
   app-public-key: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwN6xgd6Ad8v2hIIsQVnbt8a3JituR8o4Tc3B5WlcFR55bz4OMqrG/356Ur3cPbc2Fe8ArNd/0gZbC9q56Eb16JTkVNA/fye4SXznWxdyBPR7+guuJZHc/VW2fKH2lfZ2P3Tt0QkKZZoawYOGSMdIvO+WqK44updyax0ikK6JlNQIDAQAB
   wx-app-id:
   notify-url: https://test.raex.vip/notify/adapay
+rocketmq:
+  name-server: 120.24.204.226:9876
+  producer:
+    group: raex-dev-producer-group
+  consumer:
+    group: raex-dev-consumer-group
 ---
 
 spring:

+ 8 - 1
src/test/java/com/izouma/nineth/service/AdapayTest.java

@@ -21,7 +21,6 @@ import org.apache.commons.lang3.StringUtils;
 import org.junit.Test;
 
 import java.math.BigDecimal;
-import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.util.ArrayList;
@@ -198,4 +197,12 @@ public class AdapayTest {
         }
         System.out.println(list);
     }
+
+    @Test
+    public void rrr() throws BaseAdaPayException {
+        Map<String, Object> queryParams = new HashMap<>();
+        queryParams.put("payment_id", "002112022011117055410326902706185465856");
+        Map<String, Object> refund = Refund.query(queryParams);
+        System.out.println(JSON.toJSONString(refund, SerializerFeature.PrettyFormat));
+    }
 }

+ 5 - 5
src/test/java/com/izouma/nineth/service/CollectionServiceTest.java

@@ -50,10 +50,10 @@ class CollectionServiceTest extends ApplicationTests {
 
     @Test
     public void batchUpload() throws IOException {
-        AtomicInteger num = new AtomicInteger(3001);
+        AtomicInteger num = new AtomicInteger(4001);
         List<BlindBoxItem> items = new ArrayList<>();
         String jsonStr = FileUtils.readFileToString(new File("/Users/drew/Downloads/003.json"), "UTF-8");
-        Arrays.stream(new File("/Users/drew/Downloads/s4-1000").listFiles())
+        Arrays.stream(new File("/Users/drew/Downloads/s5-1000").listFiles())
                 .filter(f -> Pattern.matches("^BJ.*\\.png$", f.getName()))
                 .parallel().forEach(file -> {
                     try {
@@ -66,7 +66,7 @@ class CollectionServiceTest extends ApplicationTests {
                         collection.setMinterId(8666L);
                         collection.setOnShelf(false);
                         collection.setSalable(false);
-                        collection.setPic(Collections.singletonList(new FileObject("", "https://raex-meta.oss-cn-shenzhen.aliyuncs.com/image/s4/" + file.getName(), null, "png")));
+                        collection.setPic(Collections.singletonList(new FileObject("", "https://raex-meta.oss-cn-shenzhen.aliyuncs.com/image/s5/" + file.getName(), null, "png")));
 
                         collectionRepo.save(collection);
                         System.out.println("保存成功" + collection.getId());
@@ -89,7 +89,7 @@ class CollectionServiceTest extends ApplicationTests {
     public void createBlindBox() throws IOException {
         List<Collection> items = collectionRepo.findByNameLike("MAYBEMAN #%").stream().filter(i -> {
             int num = Integer.parseInt(i.getName().substring("MAYBEMAN #".length()));
-            return num > 3000 && num <= 4000;
+            return num > 4000 && num <= 5000;
         }).collect(Collectors.toList());
 
         String jsonStr = FileUtils.readFileToString(new File("/Users/drew/Downloads/003.json"), "UTF-8");
@@ -99,7 +99,7 @@ class CollectionServiceTest extends ApplicationTests {
         blindBox.setOnShelf(false);
         blindBox.setSalable(false);
         blindBox.setMinterId(8666L);
-        blindBox.setName("MAYBEMAN潮流艺术限定盲盒S4");
+        blindBox.setName("MAYBEMAN潮流艺术限定盲盒S5");
         blindBox.setPic(Arrays.asList(new FileObject(null, "https://raex-meta.oss-cn-shenzhen.aliyuncs.com/nft/2022-01-07-10-08-30DpIYYBOv.jpg", null, null)));
         collectionService.createBlindBox(new CreateBlindBox(blindBox, items.stream().map(i -> {
             BlindBoxItem item = new BlindBoxItem();