Forráskód Böngészése

添加查询,报名信息接口

周箭河 5 éve
szülő
commit
70d2a85b39

+ 15 - 3
edu-user/edu-user-server/src/main/java/com/keao/edu/user/entity/ExamRegistrationPayment.java

@@ -1,5 +1,6 @@
 package com.keao.edu.user.entity;
 
+import com.keao.edu.user.enums.TransStatusEnum;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 
@@ -38,11 +39,14 @@ public class ExamRegistrationPayment {
 	private java.math.BigDecimal transAmount;
 
 	@ApiModelProperty(value = "交易状态")
-	private String transStatus;
+	private TransStatusEnum transStatus;
 
 	@ApiModelProperty(value = "交易成功时间")
 	private java.util.Date transSuccessedTime;
 
+	@ApiModelProperty(value = "备注")
+	private String memo;
+
 	private java.util.Date createTime;
 
 	private java.util.Date updateTime;
@@ -113,11 +117,11 @@ public class ExamRegistrationPayment {
 		return this.transAmount;
 	}
 			
-	public void setTransStatus(String transStatus){
+	public void setTransStatus(TransStatusEnum transStatus){
 		this.transStatus = transStatus;
 	}
 	
-	public String getTransStatus(){
+	public TransStatusEnum getTransStatus(){
 		return this.transStatus;
 	}
 			
@@ -168,6 +172,14 @@ public class ExamRegistrationPayment {
 	public void setPayChannel(String payChannel) {
 		this.payChannel = payChannel;
 	}
+
+	public String getMemo() {
+		return memo;
+	}
+
+	public void setMemo(String memo) {
+		this.memo = memo;
+	}
 			
 	@Override
 	public String toString() {

+ 40 - 0
edu-user/edu-user-server/src/main/java/com/keao/edu/user/enums/TransStatusEnum.java

@@ -0,0 +1,40 @@
+package com.keao.edu.user.enums;
+
+import com.keao.edu.common.enums.BaseEnum;
+
+/**
+ * 支付状态
+ */
+public enum TransStatusEnum implements BaseEnum<String, TransStatusEnum> {
+    ING("ING", "交易中"),
+    SUCCESS("SUCCESS", "交易成功"),
+    FAILED("FAILED", "交易失败"),
+    CLOSE("REFUND", "交易关闭"),
+    REFUND("REFUND", "交易退款");
+
+    private String code;
+
+    private String msg;
+
+    TransStatusEnum(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    @Override
+    public String getCode() {
+        return this.code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+}

+ 3 - 2
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/ExamRegistrationPaymentService.java

@@ -4,6 +4,7 @@ import com.keao.edu.common.service.BaseService;
 import com.keao.edu.user.entity.ExamRegistrationPayment;
 
 import java.util.List;
+import java.util.Map;
 
 public interface ExamRegistrationPaymentService extends BaseService<Long, ExamRegistrationPayment> {
 
@@ -27,10 +28,10 @@ public interface ExamRegistrationPaymentService extends BaseService<Long, ExamRe
     /**
      * 更新订单信息
      *
-     * @param examRegistrationPayment
+     * @param rpMap
      * @return
      */
-    ExamRegistrationPayment updateOrder(ExamRegistrationPayment examRegistrationPayment);
+    ExamRegistrationPayment updateOrder(Map<String,String> rpMap);
 
 
     /**

+ 23 - 15
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/NotifyCallback.java

@@ -5,11 +5,14 @@ import com.alibaba.fastjson.JSONObject;
 import com.huifu.adapay.notify.MQTTCallbackHandler;
 import com.keao.edu.thirdparty.adapay.ConfigInit;
 import com.keao.edu.user.entity.ExamRegistrationPayment;
+import com.keao.edu.user.enums.TransStatusEnum;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.PostConstruct;
 import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
 
 
 @Service
@@ -41,14 +44,15 @@ public class NotifyCallback implements MQTTCallbackHandler {
         }
         String orderNo = dataObj.getString("order_no");
         ExamRegistrationPayment order = notifyCallback.examRegistrationPaymentService.getByOrderNo(orderNo);
-        if (order == null || !order.getTransStatus().equals("ING")) {
+        if (order == null || !order.getTransStatus().equals(TransStatusEnum.ING)) {
             return;
         }
-        order.setPayChannel(dataObj.getString("pay_channel"));
-        order.setTransStatus("SUCCESS");
-        order.setUpdateTime(new Date());
-        order.setTransSuccessedTime(new Date());
-        notifyCallback.examRegistrationPaymentService.updateOrder(order);
+        Map<String,String> rpMap = new HashMap<>();
+        rpMap.put("channelType", dataObj.getString("pay_channel"));
+        rpMap.put("transStatus","SUCCESS");
+        rpMap.put("orderNo",orderNo);
+        rpMap.put("transNo",order.getTransNo());
+        notifyCallback.examRegistrationPaymentService.updateOrder(rpMap);
     }
 
     /**
@@ -69,10 +73,12 @@ public class NotifyCallback implements MQTTCallbackHandler {
         if (order == null || !order.getTransStatus().equals("ING")) {
             return;
         }
-        order.setPayChannel(dataObj.getString("pay_channel"));
-        order.setTransStatus("FAILED");
-        order.setUpdateTime(new Date());
-        notifyCallback.examRegistrationPaymentService.updateOrder(order);
+        Map<String,String> rpMap = new HashMap<>();
+        rpMap.put("channelType", dataObj.getString("pay_channel"));
+        rpMap.put("transStatus","FAILED");
+        rpMap.put("orderNo",orderNo);
+        rpMap.put("transNo",order.getTransNo());
+        notifyCallback.examRegistrationPaymentService.updateOrder(rpMap);
     }
 
 
@@ -91,13 +97,15 @@ public class NotifyCallback implements MQTTCallbackHandler {
         }
         String orderNo = dataObj.getString("order_no");
         ExamRegistrationPayment order = notifyCallback.examRegistrationPaymentService.getByOrderNo(orderNo);
-        if (order == null || !order.getTransStatus().equals("ING")) {
+        if (order == null || !order.getTransStatus().equals(TransStatusEnum.ING)) {
             return;
         }
-        order.setPayChannel(dataObj.getString("pay_channel"));
-        order.setTransStatus("FAILED");
-        order.setUpdateTime(new Date());
-        notifyCallback.examRegistrationPaymentService.updateOrder(order);
+        Map<String,String> rpMap = new HashMap<>();
+        rpMap.put("channelType", dataObj.getString("pay_channel"));
+        rpMap.put("transStatus","FAILED");
+        rpMap.put("orderNo",orderNo);
+        rpMap.put("transNo",order.getTransNo());
+        notifyCallback.examRegistrationPaymentService.updateOrder(rpMap);
     }
 
     /**

+ 80 - 54
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRegistrationPaymentServiceImpl.java

@@ -13,6 +13,7 @@ import com.keao.edu.user.dao.ExamRegistrationPaymentDao;
 import com.keao.edu.user.entity.ExamRegistration;
 import com.keao.edu.user.entity.ExamRegistrationPayment;
 import com.keao.edu.user.enums.StudentRegistrationStatusEnum;
+import com.keao.edu.user.enums.TransStatusEnum;
 import com.keao.edu.user.service.ExamRegistrationPaymentService;
 import com.keao.edu.user.service.ExamRegistrationService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -49,76 +50,101 @@ public class ExamRegistrationPaymentServiceImpl extends BaseServiceImpl<Long, Ex
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public ExamRegistrationPayment updateOrder(ExamRegistrationPayment examRegistrationPayment) {
-        if (examRegistrationPaymentDao.update(examRegistrationPayment) <= 0) {
+    public ExamRegistrationPayment updateOrder(Map<String,String> rpMap) {
+        ExamRegistrationPayment order = examRegistrationPaymentDao.getByOrderNo(rpMap.get("orderNo"));
+        if (order == null || !order.getTransStatus().equals(TransStatusEnum.ING)) {
+            return order;
+        }
+        TransStatusEnum status = rpMap.get("transStatus").equals("SUCCESS") ? TransStatusEnum.SUCCESS : TransStatusEnum.FAILED;
+
+
+        if (status.equals(TransStatusEnum.SUCCESS)) {
+            order.setTransSuccessedTime(new Date());
+        } else {
+            order.setMemo(rpMap.get("memo"));
+        }
+        order.setTransStatus(status);
+        order.setTransNo(rpMap.get("transNo"));
+        order.setPayChannel(rpMap.get("channelType"));
+
+        if (examRegistrationPaymentDao.update(order) <= 0) {
             throw new BizException("订单更新失败");
         }
-        ExamRegistration examRegistration = examRegistrationService.get(examRegistrationPayment.getId());
+        ExamRegistration examRegistration = examRegistrationService.get(order.getExamRegistrationId());
         if (!examRegistration.getStatus().equals(StudentRegistrationStatusEnum.PAY_WAIT)) {
-            return examRegistrationPayment;
+            return order;
         }
-        if (!examRegistrationPayment.getTransStatus().equals("SUCCESS")) {
-            return examRegistrationPayment;
+        if (!order.getTransStatus().equals(TransStatusEnum.SUCCESS)) {
+            return order;
         }
         examRegistration.setStatus(StudentRegistrationStatusEnum.AUDIT_WAIT);
         examRegistration.setUpdateTime(new Date());
         if (examRegistrationService.update(examRegistration) <= 0) {
             throw new BizException("报名状态更新失败");
         }
-        return examRegistrationPayment;
+        return order;
     }
 
     @Override
     public void queryOrderStatus() throws Exception {
-        //yqPayQuery();
+        yqPayQuery();
         //adaPayQuery();
     }
-//
-//
-//    private void yqPayQuery() throws Exception {
-//        List<ExamRegistrationPayment> orders = examRegistrationPaymentDao.getOrdersByStatus("ING", "YQPAY");
-//        if (orders.size() == 0) {
-//            return;
-//        }
-//        List<String> orderNoList = orders.stream().map(ExamRegistrationPayment::getOrderNo).collect(Collectors.toList());
-//        String merOrderNos = orders.stream().map(ExamRegistrationPayment::getOrderNo).collect(Collectors.joining(","));
-//
-//        String notifyUrl = ""; //回调地址
-//        Map<String, Object> resultMap = new LinkedHashMap<>();
-//        resultMap.put("merOrderNoList", merOrderNos);
-//        Map<String, Object> requestMap = YqPayUtil.getRequestMap(notifyUrl, resultMap);
-//
-//        RsqMsg rsqMsg = new RsqMsg(requestMap);
-//
-//        Msg queryRs = yqPayFeignService.orderQuery(rsqMsg);
-//
-//        if (queryRs.getCode().equals("88")) {
-//            //更新订单状态
-//            String[] statusArr = {"0", "1", "7"};
-//            String responseParameters = queryRs.getResponseParameters();
-//            List<Map<String, String>> responseList = JSON.parseObject(responseParameters, List.class);
-//            for (Map<String, String> response : responseList) {
-//                Map<String, String> rpMap = response;
-//                String channelType = rpMap.get("channelType").equals("1") ? "WXPay" : (rpMap.get("channelType").equals("2") ? "Alipay" : "quickPay");
-//                rpMap.put("channelType", channelType);
-//
-//                if (orderNoList.contains(rpMap.get("merOrderNo"))) {
-//                    orderNoList.remove(rpMap.get("merOrderNo"));
-//                }
-//
-//                if (Arrays.asList(statusArr).contains(rpMap.get("tradeState"))) {
-//                    try {
-//                        updateOrder(rpMap); //更新订单
-//                    } catch (Exception e) {
-//                        e.printStackTrace();
-//                    }
-//                    continue;
-//                }
-//            }
-//            closeOrders(orderNoList); //关闭订单
-//        }
-//    }
-//
+
+
+    private void yqPayQuery() throws Exception {
+        List<ExamRegistrationPayment> orders = examRegistrationPaymentDao.getOrdersByStatus("ING", "YQPAY");
+        if (orders.size() == 0) {
+            return;
+        }
+        List<String> orderNoList = orders.stream().map(ExamRegistrationPayment::getOrderNo).collect(Collectors.toList());
+        String merOrderNos = orders.stream().map(ExamRegistrationPayment::getOrderNo).collect(Collectors.joining(","));
+
+        String notifyUrl = ""; //回调地址
+        Map<String, Object> resultMap = new LinkedHashMap<>();
+        resultMap.put("merOrderNoList", merOrderNos);
+        Map<String, Object> requestMap = YqPayUtil.getRequestMap(notifyUrl, resultMap);
+
+        RsqMsg rsqMsg = new RsqMsg(requestMap);
+
+        Msg queryRs = yqPayFeignService.orderQuery(rsqMsg);
+
+        if (queryRs.getCode().equals("88")) {
+            //更新订单状态
+            String[] statusArr = {"0", "1", "7"};
+            String responseParameters = queryRs.getResponseParameters();
+            List<Map<String, String>> responseList = JSON.parseObject(responseParameters, List.class);
+            for (Map<String, String> response : responseList) {
+                Map<String, String> rpMap = response;
+                String channelType = rpMap.get("channelType").equals("1") ? "WXPay" : (rpMap.get("channelType").equals("2") ? "Alipay" : "quickPay");
+                TransStatusEnum status = rpMap.get("tradeState").equals("1") ? TransStatusEnum.SUCCESS : TransStatusEnum.FAILED;
+                String memo = rpMap.get("remarks");
+                String orderNo = rpMap.get("merOrderNo");
+                String transNo = rpMap.get("orderNo");
+
+                rpMap.put("channelType", channelType);
+                rpMap.put("memo",memo);
+                rpMap.put("transStatus",status.getCode());
+                rpMap.put("orderNo",orderNo);
+                rpMap.put("transNo",transNo);
+
+                if (orderNoList.contains(orderNo)) {
+                    orderNoList.remove(orderNo);
+                }
+
+                if (Arrays.asList(statusArr).contains(rpMap.get("tradeState"))) {
+                    try {
+                        updateOrder(rpMap); //更新订单
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                    continue;
+                }
+            }
+            //closeOrders(orderNoList); //关闭订单
+        }
+    }
+
 //    private void adaPayQuery() throws Exception {
 //        List<ExamRegistrationPayment> orders = examRegistrationPaymentDao.getOrdersByStatus("ING", "ADAPAY");
 //        if (orders.size() == 0) {

+ 2 - 1
edu-user/edu-user-server/src/main/java/com/keao/edu/user/service/impl/ExamRegistrationServiceImpl.java

@@ -13,6 +13,7 @@ import com.keao.edu.user.dto.ExamRegistrationStatisticsDto;
 import com.keao.edu.user.entity.*;
 import com.keao.edu.user.enums.ExamStatusEnum;
 import com.keao.edu.user.enums.StudentRegistrationStatusEnum;
+import com.keao.edu.user.enums.TransStatusEnum;
 import com.keao.edu.user.page.ExamRecordQueryInfo;
 import com.keao.edu.user.page.ExamRegistrationQueryInfo;
 import com.keao.edu.user.service.ExamRegistrationPaymentService;
@@ -97,7 +98,7 @@ public class ExamRegistrationServiceImpl extends BaseServiceImpl<Long, ExamRegis
         examRegistrationPayment.setExaminationBasicId(examRegistration.getExaminationBasicId());
         examRegistrationPayment.setOrderNo(orderNo);
         examRegistrationPayment.setTransAmount(amount);
-        examRegistrationPayment.setTransStatus("ING");
+        examRegistrationPayment.setTransStatus(TransStatusEnum.ING);
         examRegistrationPayment.setCreateTime(nowDate);
         examRegistrationPayment.setUpdateTime(nowDate);
         examRegistrationPaymentService.insert(examRegistrationPayment);