yq пре 3 година
родитељ
комит
6bca13d744

+ 2 - 0
src/main/java/com/usky/dxtop/DxtopApplication.java

@@ -3,9 +3,11 @@ package com.usky.dxtop;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableScheduling;
 
 @MapperScan(basePackages = {"com.usky.dxtop.mapper"})
 @SpringBootApplication
+@EnableScheduling
 public class DxtopApplication {
 
     public static void main(String[] args) {

+ 3 - 3
src/main/java/com/usky/dxtop/controller/web/OrderController.java

@@ -86,7 +86,7 @@ public class OrderController extends BaseController {
      * @param order
      * @return
      */
-    @GetMapping("/topScanPayQr")
+    @PostMapping("/topScanPayQr")
     public AjaxResult getTopScanPayQr(@RequestBody Order order){
         return AjaxResult.success(orderService.getTopScanPayQr(order));
     }
@@ -96,8 +96,8 @@ public class OrderController extends BaseController {
      * @param orderNumber
      * @return
      */
-    @GetMapping("/orderInfo")
-    public AjaxResult callTopFindOrderInfoApi(@RequestParam String orderNumber){
+    @GetMapping("/{orderNumber}")
+    public AjaxResult callTopFindOrderInfoApi(@PathVariable("orderNumber") String orderNumber){
         return AjaxResult.success(orderService.callTopFindOrderInfoApi(orderNumber));
     }
 }

+ 18 - 4
src/main/java/com/usky/dxtop/controller/web/QrCodeController.java

@@ -8,6 +8,7 @@ import com.usky.dxtop.common.exception.CustomException;
 import com.usky.dxtop.common.utils.QRCodeUtil;
 import com.usky.dxtop.common.utils.SecurityUtils;
 import com.usky.dxtop.common.utils.file.FileUtils;
+import com.usky.dxtop.common.utils.sign.Base64;
 import com.usky.dxtop.common.utils.spring.GlobalUtils;
 import com.usky.dxtop.controller.BaseController;
 import com.usky.dxtop.model.QrCode;
@@ -16,8 +17,12 @@ import com.usky.dxtop.service.QrCodeService;
 import com.usky.dxtop.service.TopRadioService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.util.FastByteArrayOutputStream;
 import org.springframework.web.bind.annotation.*;
 
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.io.IOException;
 import java.net.ConnectException;
 import java.util.List;
 
@@ -47,11 +52,20 @@ public class QrCodeController extends BaseController {
             return AjaxResult.error("新增二维码信息'" + qrCode.getName() + "'失败,二维码信息已存在");
         }
         try {
-            String codeName = String.format("%s-%s.jpg", qrCode.getName(), System.currentTimeMillis() + "");
-            String destPath = String.format("%s%s", GlobalUtils.getTempBaseDir(),codeName);
             //生成二维码
-            QRCodeUtil.encode("内容暂定", null, destPath, true);
-            qrCode.setQrPath(destPath);
+            BufferedImage image = QRCodeUtil.encode("内容暂定", null, true);
+            // 转换流信息写出
+            FastByteArrayOutputStream os = new FastByteArrayOutputStream();
+            try
+            {
+                ImageIO.write(image, "jpg", os);
+            }
+            catch (IOException e)
+            {
+                throw new CustomException("接口异常"+e.getMessage());
+            }
+            String encode = Base64.encode(os.toByteArray());
+            qrCode.setQrPath(encode);
             qrCode.setCreateBy(SecurityUtils.getUsername());
         }catch (Exception e){
             throw new CustomException("生成二维码图片失败");

+ 2 - 0
src/main/java/com/usky/dxtop/model/Order.java

@@ -2,6 +2,7 @@ package com.usky.dxtop.model;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.usky.dxtop.common.core.domain.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -21,6 +22,7 @@ import java.time.LocalDateTime;
 @Data
 @EqualsAndHashCode(callSuper = false)
 @Accessors(chain = true)
+@TableName("t_order")
 public class Order extends BaseEntity implements Serializable {
 
     private static final long serialVersionUID=1L;

+ 1 - 1
src/main/java/com/usky/dxtop/service/api/TopApi.java

@@ -47,7 +47,7 @@ public class TopApi {
     /**
      * 回调url
      */
-    public static final String SCAN_NOTIFY_URL = "https://wx.ewoogi.com/dxapi/test";
+    public static final String SCAN_NOTIFY_URL = "https://wx.ewoogi.com/top/notify";
 
 
 

+ 24 - 3
src/main/java/com/usky/dxtop/service/impl/OrderServiceImpl.java

@@ -7,13 +7,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.usky.dxtop.common.core.domain.AjaxResult;
 import com.usky.dxtop.common.core.page.CommonPage;
 import com.usky.dxtop.common.exception.CustomException;
 import com.usky.dxtop.common.utils.Arith;
-import com.usky.dxtop.common.utils.DateUtils;
 import com.usky.dxtop.common.utils.QRCodeUtil;
 import com.usky.dxtop.common.utils.StringUtils;
 import com.usky.dxtop.common.utils.http.HttpUtils;
+import com.usky.dxtop.common.utils.sign.Base64;
 import com.usky.dxtop.common.utils.spring.GlobalUtils;
 import com.usky.dxtop.mapper.OrderMapper;
 import com.usky.dxtop.model.CallApiLog;
@@ -29,7 +30,11 @@ import org.apache.poi.hssf.record.SSTRecord;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.FastByteArrayOutputStream;
 
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.io.IOException;
 import java.util.TreeMap;
 
 /**
@@ -57,6 +62,8 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     @Transactional(rollbackFor = Exception.class)
     @Override
     public boolean add(Order order) {
+        String orderNumber = TopApi.getOrderNumber();
+        order.setOrderNumber(orderNumber);
         order.setOrderFlag(OrderStatus.NO_PAYMENT.getCode());
         this.save(order);
         callCardTopApi(order);
@@ -125,6 +132,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
     @Override
     public String getTopScanPayQr(Order order) {
         String destPath;
+        String encode;
         try {
             //获取url
             String topScanPayApi = getTopScanPayApi(order);
@@ -132,10 +140,23 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
             destPath = String.format("%s%s", GlobalUtils.getTempBaseDir(),codeName);
             //生成二维码
             QRCodeUtil.encode(topScanPayApi, null, destPath, true);
+
+            BufferedImage image = QRCodeUtil.encode(topScanPayApi, null, true);
+            // 转换流信息写出
+            FastByteArrayOutputStream os = new FastByteArrayOutputStream();
+            try
+            {
+                ImageIO.write(image, "jpg", os);
+            }
+            catch (IOException e)
+            {
+                throw new CustomException("接口异常"+e.getMessage());
+            }
+            encode = Base64.encode(os.toByteArray());
         }catch (Exception e){
             throw new CustomException("生成二维码失败");
         }
-        return destPath;
+        return encode;
     }
 
     /**
@@ -227,7 +248,7 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
                 callCardTopApi(order);
             }
         }catch (Exception e){
-            log.error("---order---修改数据库失败"+e.getMessage());
+            log.error("---order---卡充值异常"+e.getMessage());
         }
     }
 

+ 27 - 11
src/main/java/com/usky/dxtop/service/job/OrderJob.java

@@ -1,14 +1,17 @@
 package com.usky.dxtop.service.job;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.usky.dxtop.model.Order;
 import com.usky.dxtop.service.OrderService;
 import com.usky.dxtop.service.emun.OrderStatus;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
-import org.springframework.stereotype.Controller;
 
 import java.util.List;
 
@@ -23,17 +26,30 @@ public class OrderJob {
     @Autowired
     private OrderService orderService;
 
+    @Scheduled(cron = "0 */1 * * * ?")
     public void execute(){
-        LambdaQueryWrapper<Order> queryWrapper = Wrappers.lambdaQuery();
-        queryWrapper.eq(Order::getOrderFlag, OrderStatus.NO_PAYMENT.getCode())
-                .or()
-                .eq(Order::getOrderFlag, OrderStatus.AWAIT_PAY.getCode());
-        List<Order> list = orderService.list(queryWrapper);
-        for (Order order:list) {
-            try {
-                orderService.callTopFindOrderInfoApi(order.getOrderNumber());
-            }catch (Exception e){
-                log.error("---orderJob---异常"+e.getMessage());
+        boolean isNext = true;
+        int index = 1;
+        while(isNext){
+            IPage<Order> page = new Page<>(index,20);
+            LambdaQueryWrapper<Order> queryWrapper = Wrappers.lambdaQuery();
+            queryWrapper.eq(Order::getOrderFlag, OrderStatus.NO_PAYMENT.getCode())
+                    .or()
+                    .eq(Order::getOrderFlag, OrderStatus.AWAIT_PAY.getCode());
+            page = orderService.page(page, queryWrapper);
+            List<Order> list = page.getRecords();
+            log.info("---orderJob---本次处理记录:"+ list.size());
+            if (CollectionUtils.isNotEmpty(list)){
+                for (Order order:page.getRecords()) {
+                    try {
+                        orderService.callTopFindOrderInfoApi(order.getOrderNumber());
+                    }catch (Exception e){
+                        log.error("---orderJob---异常"+e.getMessage());
+                    }
+                }
+                index++;
+            }else {
+                isNext = false;
             }
         }
         log.info("---orderJob---处理完成");

+ 1 - 1
src/main/resources/application-dev.properties

@@ -3,7 +3,7 @@ spring.main.lazy-initialization=false
 spring.main.allow-bean-definition-overriding=true
 # application
 server.port=8085
-temp.basedir=C:/Users/pc/Desktop/
+temp.basedir=C:/Users/pc/Desktop/qrcode/
 # mybatis-plus
 mybatis-plus.mapper-locations=classpath*:mapper/*.xml
 mybatis-plus.configuration.lazy-loading-enabled=true