소스 검색

微信支付 监听订单状态

zhs 3 년 전
부모
커밋
979fbc9370

+ 38 - 5
src/main/java/com/travel/config/SaticScheduleTask.java

@@ -1,17 +1,17 @@
 package com.travel.config;
 
-import com.travel.model.OrderingConllection;
-import com.travel.model.PrivateOrder;
-import com.travel.model.Release;
-import com.travel.model.User;
+import com.travel.model.*;
 import com.travel.service.LoginService;
 import com.travel.service.PrivateOrderService;
+import com.travel.service.SupplierService;
+import com.travel.service.WxPayService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.annotation.EnableScheduling;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 定时任务
@@ -26,6 +26,12 @@ public class SaticScheduleTask {
     //私人订制
     @Autowired
     private PrivateOrderService privateOrderService;
+    //订单
+    @Autowired
+    private WxPayService wxPayService;
+    //供应商
+    @Autowired
+    private SupplierService supplierService;
 
     /**
      * 定时删除无效用户  每月底23:59触发方法
@@ -80,7 +86,7 @@ public class SaticScheduleTask {
     @Scheduled(cron = "0 01 0 * * ?")
     public void updatePrivateThree(){
         try{
-            //查询有多少个超时定制单
+            //查询有多少个付过费且到达开始时间的定制单
             List<PrivateOrder> list = privateOrderService.updatePrivateThree();
             //循环修改
             for(PrivateOrder privateOrder : list){
@@ -92,4 +98,31 @@ public class SaticScheduleTask {
             e.printStackTrace();
         }
     }
+
+    /**
+     * 判断哪些行程开始的订单已经结束
+     */
+    @Scheduled(cron = "0 01 0 * * ?")
+    public void updatePrivateFour(){
+        try{
+            //查询有多少个行程开始且已经到达结束时间的订制单
+            List<PrivateOrder> list = privateOrderService.updatePrivateFour();
+            for(PrivateOrder privateOrder : list){
+                PrivateOrder privateOrder1 = new PrivateOrder().setUuid(privateOrder.getUuid()).setSupplieName(privateOrder.getSupplieName());
+                privateOrder1.setOrderType(4);
+                privateOrderService.updatePrivateType(privateOrder1);
+                Release release = privateOrderService.getReleaseVal(privateOrder1);//查询报价单编号
+                Map<String, Object> mapPay = wxPayService.getPay(release.getUuid());//查询付款信息
+                Map<String, Object> mapRefund = wxPayService.getRefund(release.getUuid());//查询退款信息
+                //支付金额 - 退款金额
+                Double price = Double.parseDouble((String) mapPay.get("totalFee")) - Double.parseDouble((String) mapRefund.get("refundFee"));
+                Supplier supplier = new Supplier()
+                        .setBalanceOf(price + "")
+                        .setCode(privateOrder.getSupplieName());
+                supplierService.setSupplierBalanceOf(supplier); //订单金额存入余额供应商余额
+            }
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+    }
 }

+ 1 - 1
src/main/java/com/travel/controller/PrivateOrderController.java

@@ -41,7 +41,7 @@ public class PrivateOrderController {
             //单号
             privateOrder.setOrderNo("RQ" + privateOrder.getCode().substring(length - 7, length) + simpleDateFormat.format(DateUtil.date()));
             privateOrderService.insertPrivate(privateOrder);//新增定制单
-//            privateOrderService.addPrivateType(privateOrder);//新增定制单状态
+            privateOrderService.addPrivateType(privateOrder);//新增定制单状态
             map.put("msg", "200");
         }catch (Exception e){
             map.put("msg", "500");

+ 4 - 0
src/main/java/com/travel/mapper/PrivateOrderMapper.java

@@ -69,4 +69,8 @@ public interface PrivateOrderMapper {
     void reviewRelese(Release release);
 
     List<PrivateOrder> updatePrivateThree();
+
+    List<PrivateOrder> updatePrivateFour();
+
+    Release getReleaseVal(PrivateOrder privateOrder1);
 }

+ 2 - 0
src/main/java/com/travel/mapper/SupplierMapper.java

@@ -28,4 +28,6 @@ public interface SupplierMapper {
     void updateCaptchaCode(Supplier supplier);
 
     ConfirmOrdering getSupplierDestination(ConfirmOrdering confirmOrdering);
+
+    void setSupplierBalanceOf(Supplier supplier);
 }

+ 12 - 0
src/main/java/com/travel/mapper/WxPayMapper.java

@@ -0,0 +1,12 @@
+package com.travel.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.Map;
+
+@Mapper
+public interface WxPayMapper {
+    Map<String, Object> getPay(String uuid);
+
+    Map<String, Object> getRefund(String uuid);
+}

+ 4 - 0
src/main/java/com/travel/model/Supplier.java

@@ -79,4 +79,8 @@ public class Supplier implements Serializable {
      * 密码
      */
     private String pass;
+    /**
+     * 余额
+     */
+    private String balanceOf;
 }

+ 31 - 0
src/main/java/com/travel/model/WxPay.java

@@ -0,0 +1,31 @@
+package com.travel.model;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 订单
+ */
+@Data
+@Accessors(chain = true)
+@SuppressWarnings("serial")
+public class WxPay implements Serializable {
+    /**
+     * 主键id
+     */
+    private String id;
+    /**
+     * 报价单编号
+     */
+    private String releaseUuid;
+    /**
+     * 付款金额
+     */
+    private String totalFee;
+    /**
+     * 退款金额
+     */
+    private String refundFee;
+}

+ 4 - 0
src/main/java/com/travel/service/PrivateOrderService.java

@@ -67,4 +67,8 @@ public interface PrivateOrderService {
     void reviewRelese(Release release);
 
     List<PrivateOrder> updatePrivateThree();
+
+    List<PrivateOrder> updatePrivateFour();
+
+    Release getReleaseVal(PrivateOrder privateOrder1);
 }

+ 2 - 0
src/main/java/com/travel/service/SupplierService.java

@@ -24,4 +24,6 @@ public interface SupplierService {
     void updateCaptchaCode(Supplier supplier);
 
     ConfirmOrdering getSupplierDestination(ConfirmOrdering confirmOrdering);
+
+    void setSupplierBalanceOf(Supplier supplier);
 }

+ 9 - 0
src/main/java/com/travel/service/WxPayService.java

@@ -0,0 +1,9 @@
+package com.travel.service;
+
+import java.util.Map;
+
+public interface WxPayService {
+    Map<String, Object> getPay(String uuid);
+
+    Map<String, Object> getRefund(String uuid);
+}

+ 10 - 0
src/main/java/com/travel/service/impl/PrivateOrderServiceImpl.java

@@ -183,4 +183,14 @@ public class PrivateOrderServiceImpl implements PrivateOrderService {
     public List<PrivateOrder> updatePrivateThree() {
         return privateOrderMapper.updatePrivateThree();
     }
+
+    @Override
+    public List<PrivateOrder> updatePrivateFour() {
+        return privateOrderMapper.updatePrivateFour();
+    }
+
+    @Override
+    public Release getReleaseVal(PrivateOrder privateOrder1) {
+        return privateOrderMapper.getReleaseVal(privateOrder1);
+    }
 }

+ 6 - 0
src/main/java/com/travel/service/impl/SupplierServiceImpl.java

@@ -66,4 +66,10 @@ public class SupplierServiceImpl implements SupplierService {
     public ConfirmOrdering getSupplierDestination(ConfirmOrdering confirmOrdering) {
         return supplierMapper.getSupplierDestination(confirmOrdering);
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void setSupplierBalanceOf(Supplier supplier) {
+        supplierMapper.setSupplierBalanceOf(supplier);
+    }
 }

+ 24 - 0
src/main/java/com/travel/service/impl/WxPayServiceImpl.java

@@ -0,0 +1,24 @@
+package com.travel.service.impl;
+
+import com.travel.mapper.WxPayMapper;
+import com.travel.service.WxPayService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+@Service
+public class WxPayServiceImpl implements WxPayService {
+    @Autowired
+    private WxPayMapper wxPayMapper;
+
+    @Override
+    public Map<String, Object> getPay(String uuid) {
+        return wxPayMapper.getPay(uuid);
+    }
+
+    @Override
+    public Map<String, Object> getRefund(String uuid) {
+        return wxPayMapper.getRefund(uuid);
+    }
+}

+ 14 - 1
src/main/resources/config/mapping/PrivateOrderMapper.xml

@@ -125,7 +125,16 @@
         FROM
             bus_private_ordering a
             JOIN ( SELECT demand_uuid FROM bus_private_ordering_type WHERE order_type = '2') b ON a.uuid = b.demand_uuid
-        WHERE a.start_time <![CDATA[ = ]]> SYSDATETIME()
+        WHERE a.start_time <![CDATA[ <= ]]> SYSDATETIME()
+    </select>
+    <!-- 查询有多少个行程开始且已经到达结束时间的订制单 -->
+    <select id="updatePrivateFour" parameterType="PrivateOrder" resultType="PrivateOrder">
+        SELECT
+            a.*,b.code as supplieName
+        FROM
+            bus_private_ordering a
+            JOIN ( SELECT demand_uuid,code FROM bus_private_ordering_type WHERE order_type = '3') b ON a.uuid = b.demand_uuid
+        WHERE DateAdd(Day, 7 , a.end_time) >= SYSDATETIME()
     </select>
     <!-- 查询定制单状态里是否存在这一项 -->
     <select id="getPrivateType" parameterType="PrivateOrder" resultType="int">
@@ -378,4 +387,8 @@
         set score = #{score},score_content = #{scoreContent},score_label=#{scoreLabel},public_is_no=#{publicIsNo}
         where uuid = #{uuid};
     </update>
+    <!-- 查询指定供应商定制单的报价单 -->
+    <select id="getReleaseVal" resultType="Release">
+        select * from bus_supplier_release where code = #{supplieName} and demand_uuid = #{uuid}
+    </select>
 </mapper>

+ 8 - 0
src/main/resources/config/mapping/SupplierMapper.xml

@@ -100,4 +100,12 @@
             ) - 1
         ) AS destination
     </select>
+
+    <!-- 用户删除定制返回供应商报价单次数 -->
+    <update id="setSupplierBalanceOf" parameterType="Release">
+        UPDATE sys_supplier
+        SET balance_of = (SELECT balance_of + ${balanceOf} FROM sys_supplier WHERE code = #{code})
+        WHERE
+            code = #{code}
+    </update>
 </mapper>

+ 13 - 0
src/main/resources/config/mapping/WxPayMapper.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.travel.mapper.WxPayMapper">
+    <!-- 查询付款信息 -->
+    <select id="getPay" resultType="Map" parameterType="String">
+        select * from bus_pay where release_uuid = #{uuid}
+    </select>
+    <!-- 查询退款信息 -->
+    <select id="getRefund" resultType="Map" parameterType="String">
+        select * from bus_refund where release_uuid = #{uuid}
+    </select>
+</mapper>