浏览代码

订单定时任务

litianbiao 2 年之前
父节点
当前提交
de09a3fd4b
共有 25 个文件被更改,包括 748 次插入16 次删除
  1. 16 0
      pom.xml
  2. 46 0
      src/main/java/com/szwl/controller/AirwallexPayController.java
  3. 1 0
      src/main/java/com/szwl/controller/TCoinOrderController.java
  4. 25 3
      src/main/java/com/szwl/controller/TOrderController.java
  5. 21 0
      src/main/java/com/szwl/controller/TOrderTaskController.java
  6. 16 0
      src/main/java/com/szwl/mapper/TOrderTaskMapper.java
  7. 53 0
      src/main/java/com/szwl/mapper/xml/TOrderTaskMapper.xml
  8. 9 0
      src/main/java/com/szwl/model/bean/CoinOrderVo.java
  9. 1 0
      src/main/java/com/szwl/model/entity/TCoinOrder.java
  10. 3 1
      src/main/java/com/szwl/model/entity/TOrder.java
  11. 113 0
      src/main/java/com/szwl/model/entity/TOrderTask.java
  12. 11 0
      src/main/java/com/szwl/model/entity/TemplateData.java
  13. 277 0
      src/main/java/com/szwl/model/utils/AirwallexConstant.java
  14. 1 1
      src/main/java/com/szwl/model/utils/HttpClientSslUtils.java
  15. 22 0
      src/main/java/com/szwl/service/TAirwallexService.java
  16. 16 0
      src/main/java/com/szwl/service/TOrderTaskService.java
  17. 1 0
      src/main/java/com/szwl/service/TSzsmWxService.java
  18. 2 1
      src/main/java/com/szwl/service/es/EsTCoinOrderService.java
  19. 1 1
      src/main/java/com/szwl/service/es/EsTEquipmentService.java
  20. 4 3
      src/main/java/com/szwl/service/es/EsTOrderService.java
  21. 63 0
      src/main/java/com/szwl/service/impl/TAirwallexServiceImpl.java
  22. 20 0
      src/main/java/com/szwl/service/impl/TOrderTaskServiceImpl.java
  23. 24 4
      src/main/java/com/szwl/service/impl/TSzsmWxServiceImpl.java
  24. 1 1
      src/main/resources/bootstrap.yml
  25. 1 1
      src/test/java/com/szwl/AutoGeneratorTests.java

+ 16 - 0
pom.xml

@@ -215,6 +215,22 @@
 			<artifactId>gexin-rp-sdk-http</artifactId>
 			<version>4.0.1.9</version>
 		</dependency>
+		<!--elasticsearch-->
+		<dependency>
+			<groupId>org.elasticsearch</groupId>
+			<artifactId>elasticsearch</artifactId>
+			<version>7.6.2</version>
+		</dependency>
+		<dependency>
+			<groupId>org.elasticsearch.client</groupId>
+			<artifactId>elasticsearch-rest-high-level-client</artifactId>
+			<version>7.6.2</version>
+		</dependency>
+		<dependency>
+			<groupId>org.elasticsearch.client</groupId>
+			<artifactId>elasticsearch-rest-client</artifactId>
+			<version>7.6.2</version>
+		</dependency>
 	</dependencies>
 
 	<build>

+ 46 - 0
src/main/java/com/szwl/controller/AirwallexPayController.java

@@ -0,0 +1,46 @@
+package com.szwl.controller;
+
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.szwl.constant.ResponseCodesEnum;
+import com.szwl.model.bo.R;
+import com.szwl.model.bo.ResponseModel;
+import com.szwl.model.entity.TAdmin;
+import com.szwl.model.query.TAdminParam;
+import com.szwl.service.TAdminService;
+import com.szwl.service.TAirwallexService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+
+@Api(value = "/api/airwallexPay", tags = {"空中云汇"})
+@RestController
+@RequestMapping("/api/airwallexPay")
+public class AirwallexPayController {
+    @Value("${test.value:bbb}")
+    private String testValue;
+    @Autowired
+    TAdminService tAdminService;
+    @Autowired
+    TAirwallexService airwallexService;
+    @ApiOperation(value = "请求支付")
+    @GetMapping("/getAccessToken")
+    public ResponseModel<?> getAccessToken(String id) {
+        String accessToken = airwallexService.getAccessToken();
+        return R.ok(accessToken);
+    }
+
+}
+

+ 1 - 0
src/main/java/com/szwl/controller/TCoinOrderController.java

@@ -73,6 +73,7 @@ public class TCoinOrderController {
         coinOrder.setPrice(price);
         coinOrder.setProductNo(coinOrderVo.getNo());
         coinOrder.setSn(sn);
+        coinOrder.setProductNumber(coinOrderVo.getProductNumber());
         if(StringUtils.isNotEmpty(coinOrderVo.getCreateDate())){
             java.text.SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss");
             Date date1 = null;

+ 25 - 3
src/main/java/com/szwl/controller/TOrderController.java

@@ -1,6 +1,7 @@
 package com.szwl.controller;
 
 
+import cn.com.crbank.ommo.esUtil.BeanUtils;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -60,6 +61,8 @@ public class TOrderController {
     @Autowired
     TOrderService orderService;
     @Autowired
+    TOrderTaskService orderTaskService;
+    @Autowired
     TJoinpayMchService joinpayMchService;
     @Autowired
     TShandeMchService shandeMchService;
@@ -1693,7 +1696,7 @@ public class TOrderController {
                 adminProportion = proportion.getAdminProportion();
                 merchantProportion = proportion.getMerchantProportion();
                 personageProportion = proportion.getPersonageProportion();
-
+                selfProportion = proportion.getProportion();
                 orderType = "3";
                 BigDecimal refuseAmount1 = new BigDecimal(0.00);
                 if(agencyProportion.compareTo(refuseAmount1) == 0||agencyProportion==null){
@@ -2550,11 +2553,11 @@ public class TOrderController {
                     s = s.substring(s.length()-6,s.length());
                 }
                 kindData1.put("mealCode", s);
-                order.setOrderStatus("0");
+                order.setOrderStatus("-1");
                 equipmentService.sentMessage(byClientId.getClientId(), PushUtils.buildJson("cardPayXCX", kindData1.toString()).toString());
                 if(StringUtils.isNotEmpty(byClientId.getApkVersion())){
                     //发送两次mq
-                    if(byClientId.getApkVersion().equals("1.0.131-jz11")||byClientId.getApkVersion().equals("1.0.131-jz12")||byClientId.getApkVersion().equals("1.0.131-jz13")){
+                    if(byClientId.getApkVersion().equals("1.0.131-jz11")||byClientId.getApkVersion().equals("1.0.131-jz12")||byClientId.getApkVersion().equals("1.0.131-jz13")||byClientId.getApkVersion().equals("1.0.131-jz14")||byClientId.getApkVersion().equals("1.0.131-jz15")){
                         sendMqTwo(byClientId.getClientId(),kindData1.toString());
                     }
                 }
@@ -2590,6 +2593,14 @@ public class TOrderController {
             }catch (Exception e) {
                 e.printStackTrace();
             }
+            try {
+                TOrderTask orderTask = new TOrderTask();
+                BeanUtils.copyPropertiesIgnoreNull(order, orderTask, true);
+                orderTask.setAgencyId(order.getId());
+                orderTaskService.save(orderTask);
+            }catch (Exception e) {
+                e.printStackTrace();
+            }
             return "success";
         } else {
             TEquipment byClientId = R.getDataIfSuccess(szwlFeign.findEquipmentByClientId(order.getClientId()));
@@ -3098,6 +3109,12 @@ public class TOrderController {
     @PostMapping("/updateOrder")
     public ResponseModel<?> updateOrder(@RequestBody TOrder order) {
         orderService.updateById(order);
+        LambdaQueryWrapper<TOrderTask> query = Wrappers.lambdaQuery();
+        query.eq(TOrderTask::getSn,order.getSn());
+        TOrderTask orderTask = orderTaskService.getOne(query);
+//        TOrderTask orderTask = orderTaskService.getById(order.getId());
+        orderTask.setStatus(order.getStatus());
+        orderTaskService.updateById(orderTask);
         return R.ok();
     }
 
@@ -3253,6 +3270,11 @@ public class TOrderController {
             String clientId = order.getClientId();
             szsmWxService.subscribeMessage(order.getWxId(),s.substring(s.length()-6,s.length()),clientId.substring(clientId.length()-6,clientId.length()));
         }
+        LambdaQueryWrapper<TOrderTask> query1 = Wrappers.lambdaQuery();
+        query1.eq(TOrderTask::getSn,sn);
+        TOrderTask orderTask = orderTaskService.getOne(query1);
+        orderTask.setOrderStatus(orderStatus);
+        orderTaskService.updateById(orderTask);
         return JsonMessage.success("success");
     }
     /**

+ 21 - 0
src/main/java/com/szwl/controller/TOrderTaskController.java

@@ -0,0 +1,21 @@
+package com.szwl.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author wuhs
+ * @since 2023-02-27
+ */
+@RestController
+@RequestMapping("/tOrderTask")
+public class TOrderTaskController {
+
+}
+

+ 16 - 0
src/main/java/com/szwl/mapper/TOrderTaskMapper.java

@@ -0,0 +1,16 @@
+package com.szwl.mapper;
+
+import com.szwl.model.entity.TOrderTask;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author wuhs
+ * @since 2023-02-27
+ */
+public interface TOrderTaskMapper extends BaseMapper<TOrderTask> {
+
+}

+ 53 - 0
src/main/java/com/szwl/mapper/xml/TOrderTaskMapper.xml

@@ -0,0 +1,53 @@
+<?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.szwl.mapper.TOrderTaskMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.szwl.model.entity.TOrderTask">
+        <id column="id" property="id" />
+        <result column="create_date" property="createDate" />
+        <result column="modify_date" property="modifyDate" />
+        <result column="admin_id" property="adminId" />
+        <result column="admin_proportion" property="adminProportion" />
+        <result column="agency_id" property="agencyId" />
+        <result column="agency_proportion" property="agencyProportion" />
+        <result column="alt_info" property="altInfo" />
+        <result column="client_id" property="clientId" />
+        <result column="equipment_id" property="equipmentId" />
+        <result column="frp_code" property="frpCode" />
+        <result column="merchant_id" property="merchantId" />
+        <result column="merchant_proportion" property="merchantProportion" />
+        <result column="pay_date" property="payDate" />
+        <result column="personage_id" property="personageId" />
+        <result column="personage_proportion" property="personageProportion" />
+        <result column="price" property="price" />
+        <result column="product_id" property="productId" />
+        <result column="product_desc" property="productDesc" />
+        <result column="product_name" property="productName" />
+        <result column="product_no" property="productNo" />
+        <result column="refund_date" property="refundDate" />
+        <result column="sn" property="sn" />
+        <result column="status" property="status" />
+        <result column="type" property="type" />
+        <result column="trx_no" property="trxNo" />
+        <result column="refund_trx_no" property="refundTrxNo" />
+        <result column="es" property="es" />
+        <result column="refund_amount" property="refundAmount" />
+        <result column="note" property="note" />
+        <result column="pay_platform" property="payPlatform" />
+        <result column="is_settlement" property="isSettlement" />
+        <result column="wx_id" property="wxId" />
+        <result column="proportion_desc" property="proportionDesc" />
+        <result column="marketing_amount" property="marketingAmount" />
+        <result column="coupons" property="coupons" />
+        <result column="refund_marketing_amount" property="refundMarketingAmount" />
+        <result column="order_status" property="orderStatus" />
+        <result column="product_number" property="productNumber" />
+    </resultMap>
+
+    <!-- 通用查询结果列 -->
+    <sql id="Base_Column_List">
+        id, create_date, modify_date, admin_id, admin_proportion, agency_id, agency_proportion, alt_info, client_id, equipment_id, frp_code, merchant_id, merchant_proportion, pay_date, personage_id, personage_proportion, price, product_id, product_desc, product_name, product_no, refund_date, sn, status, type, trx_no, refund_trx_no, es, refund_amount, note, pay_platform, is_settlement, wx_id, proportion_desc, marketing_amount, coupons, refund_marketing_amount, order_status, product_number
+    </sql>
+
+</mapper>

+ 9 - 0
src/main/java/com/szwl/model/bean/CoinOrderVo.java

@@ -34,6 +34,15 @@ public class CoinOrderVo {
 
     private Integer payType;
 
+    private Integer productNumber = 1;
+
+    public Integer getProductNumber() {
+        return productNumber;
+    }
+
+    public void setProductNumber(Integer productNumber) {
+        this.productNumber = productNumber;
+    }
 
     public String getNo() {
         return no;

+ 1 - 0
src/main/java/com/szwl/model/entity/TCoinOrder.java

@@ -49,5 +49,6 @@ public class TCoinOrder implements Serializable {
 
     private Date payDate;
 
+    private Integer productNumber = 1;
 
 }

+ 3 - 1
src/main/java/com/szwl/model/entity/TOrder.java

@@ -75,7 +75,7 @@ public class TOrder implements Serializable {
 
     private String trxNo;
 
-    //'订单状态;0:排队中,1:正在制作,2:已制作',
+    //'订单状态;0:排队中(机器上传的,代表机器已收到订单),-1:排队中(默认),1:正在制作,2:已制作',
     private String orderStatus;
 
     private String refundTrxNo;
@@ -99,4 +99,6 @@ public class TOrder implements Serializable {
     private BigDecimal refundMarketingAmount;
 
     private String coupons;
+
+    private Integer productNumber = 1;
 }

+ 113 - 0
src/main/java/com/szwl/model/entity/TOrderTask.java

@@ -0,0 +1,113 @@
+package com.szwl.model.entity;
+
+import java.math.BigDecimal;
+import com.baomidou.mybatisplus.annotation.IdType;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author wuhs
+ * @since 2023-02-27
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value="TOrderTask对象", description="")
+public class TOrderTask implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    private Date createDate;
+
+    private Date modifyDate;
+
+    private Long adminId;
+
+    private BigDecimal adminProportion;
+
+    private Long agencyId;
+
+    private BigDecimal agencyProportion;
+
+    private String altInfo;
+
+    private String clientId;
+
+    private Long equipmentId;
+
+    private String frpCode;
+
+    private Long merchantId;
+
+    private BigDecimal merchantProportion;
+
+    private Date payDate;
+
+    private Long personageId;
+
+    private BigDecimal personageProportion;
+
+    private BigDecimal price;
+
+    private Long productId;
+
+    private String productDesc;
+
+    private String productName;
+
+    private String productNo;
+
+    private Date refundDate;
+
+    private String sn;
+
+    private Integer status;
+
+    private Integer type;
+
+    private String trxNo;
+
+    private String refundTrxNo;
+
+    private String es;
+
+    private BigDecimal refundAmount;
+
+    private String note;
+
+    @ApiModelProperty(value = "支付平台  0或null为汇聚,1为杉德支付")
+    private String payPlatform;
+
+    @ApiModelProperty(value = "是否结算 0或null为未结算,1已结算。仅杉德支付有这个")
+    private String isSettlement;
+
+    private Long wxId;
+
+    private String proportionDesc;
+
+    private BigDecimal marketingAmount;
+
+    private String coupons;
+
+    @ApiModelProperty(value = "退款营销金额")
+    private BigDecimal refundMarketingAmount;
+
+    @ApiModelProperty(value = "订单状态;0:排队中,1:正在制作,2:已制作")
+    private String orderStatus;
+
+    @ApiModelProperty(value = "商品数量")
+    private Integer productNumber;
+
+
+}

+ 11 - 0
src/main/java/com/szwl/model/entity/TemplateData.java

@@ -0,0 +1,11 @@
+package com.szwl.model.entity;
+
+import lombok.Data;
+
+/**
+ * 设置具体需要发的消息的 类
+ */
+@Data
+public class TemplateData {
+    private String value;
+}

+ 277 - 0
src/main/java/com/szwl/model/utils/AirwallexConstant.java

@@ -0,0 +1,277 @@
+package com.szwl.model.utils;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 汇聚支付 常量
+ */
+public class AirwallexConstant {
+
+    /**
+     * 商户密钥
+     */
+    public final static String apiKey = "7eb2be388987ae27ae80c904bed93f89ddd08437debb2692c364da07deba1502a279e388d0c3e732f16ebbb8787d1a14";
+    /**
+     *
+     */
+    public final static String clientid = "IBi-pVO4SSGzXIDHRYfVOA";
+
+    /**
+     *
+     */
+    public final static String url = "https://api-demo.airwallex.com";
+    /**
+     * 商户密钥 : MD5
+     */
+    public final static String key = "8cb1d25eba7d4f3caecf1f0569150e04";
+
+
+    /**
+     * 汇聚公钥
+     */
+    public final static String publickey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCLgawJlQ3O8/O9YmJt6mi0pzh9JiDGp2G6IW3p8NTZXE5tIBZRbQAkHnr/zaLh0kDHMtIGAcGUtgXilRxXeUIuc0/j561YLsxAORma2XerniRCLWrXS4yM8F1/813Rv21JoNFkDZWHdTgEpKTH8GaGYOHiEytIN0LvPzEvNsimWQIDAQAB";
+
+    /**
+     * >>>>>>>>>>>>> 币种 >>>>>>>>>>>>>
+     *
+     */
+    /**
+     * 人民币
+     */
+    public final static String Cur_RMB = "1";
+
+
+    /**
+     *  支付成功回调
+     */
+//    public final static String Notify_Url = "http://pay.sunzee.com.cn:49013/tOrder/notify";
+    public final static String Notify_Url = "https://sz.sunzee.com.cn/PAY-SERVER/tOrder/notify";
+//    public final static String Notify_Url = "http://szwltest.sunzee.com.cn:49002/PAY-SERVER/tOrder/notify";
+//    public final static String Notify_Url = "http://slb.sunzee.com.cn/api/order/notify.htm";
+
+    public final static String mg280Notify_Url = "https://sz.sunzee.com.cn/PAY-SERVER/tOrder/mg280Notify";
+//    public final static String mg280Notify_Url = "http://slb.sunzee.com.cn/api/order/mg280Notify.htm";
+
+    public final static String Notify_Url_PromoCode = "https://sz.sunzee.com.cn/PAY-SERVER/tOrder/promoCodeNotify";
+//    public final static String Notify_Url_PromoCode = "http://slb.sunzee.com.cn/api/order/promoCodeNotify.htm";
+
+    public final static String Jiesuan_Url = "https://sz.sunzee.com.cn/PAY-SERVER/api/order/jiesuan";
+//    public final static String Jiesuan_Url = "http://slb.sunzee.com.cn/api/order/jiesuan.htm";
+
+    public final static Map<String,String> Result_status = new HashMap<>();
+    /**
+     *  退款成功回调
+     */
+    public final static String Notify_Refund_Url = "http://app.sunzee.com.cn/api/order/notifyRefund";
+    public final static String Admin_Notify_Refund_Url = "http://app.sunzee.com.cn/api/order/adminNotifyRefund";
+
+
+    /**
+     * 支付回调支付状态代码
+     */
+    public final static String r6_Status_100 = "100";
+    public final static String r6_Status_101 = "101";
+
+    /**
+     * >>>>>>>>>>>>> 签名类型 >>>>>>>>>>>>>
+     * 1=MD5,2=RSA
+     */
+    public final static String sign_type_MD5 = "1";
+    public final static String sign_type_RSA = "2";
+
+
+    /**
+     * >>>>>>>>>>>>> 分账方商户类型 >>>>>>>>>>>>>
+     * 10:个人,11:个体工商户,12:企业
+     */
+    public final static Integer alt_merchant_type1 = 10;
+    public final static Integer alt_merchant_type2 = 11;
+    public final static Integer alt_merchant_type3 = 12;
+
+    /**
+     * >>>>>>>>>>>>> 分账方结算方式 >>>>>>>>>>>>>
+     * 1 由汇聚自动结算
+     * 2 由商户平台手工结算(结算接口)
+     */
+    public final static Integer sett_mode1 = 1;
+    public final static Integer sett_mode2 = 2;
+
+
+    /**
+     * >>>>>>>>>>>>> 结算周期类型 >>>>>>>>>>>>>
+     * 1 工作日,2 自然日,3 月结日
+     */
+    public final static Integer sett_date_type1 = 1;
+    public final static Integer sett_date_type2 = 2;
+    public final static Integer sett_date_type3 = 3;
+
+
+    /**
+     * >>>>>>>>>>>>> 账户类型 >>>>>>>>>>>>>
+     * 1 借记卡,4 对公账户
+     */
+    public final static Integer bank_account_type1 = 1;
+    public final static Integer bank_account_type4 = 4;
+
+
+    /**
+     *
+     *
+     *  >>>>>>>>>>>>> 响应码 >>>>>>>>>>>>>
+     *
+     *
+     */
+
+    /**
+     * 受理响应码
+     */
+    public static final Map<String, String> resp_code = new HashMap<>();
+    public static final String resp_code1 = "A1000";
+    public static final String resp_code2 = "A2000";
+    public static final String resp_code3 = "A3000";
+
+    static {
+        resp_code.put(resp_code1, "受理成功");
+        resp_code.put(resp_code2, "受理失败,具体失败原因查看业务响应码");
+        resp_code.put(resp_code3, "受理未知(如:接口调用超时)");
+    }
+
+    /**
+     * 商户状态
+     */
+    public static final Map<String, String> order_status = new HashMap<>();
+    public static final String order_status1 = "P0001";
+    public static final String order_status2 = "P1000";
+    public static final String order_status3 = "P2000";
+    public static final String order_status4 = "P3000";
+    public static final String order_status5 = "P3001";
+    public static final String order_status6 = "P3002";
+    public static final String order_status7 = "P3003";
+
+    static {
+        order_status.put(order_status1, "待处理中(受理中)");
+        order_status.put(order_status2, "交易成功");
+        order_status.put(order_status3, "交易失败");
+        order_status.put(order_status4, "结果未知");
+        order_status.put(order_status5, "处理中");
+        order_status.put(order_status6, "激活");
+        order_status.put(order_status7, "冻结");
+    }
+
+    /**
+     * 业务响应码
+     */
+    public static final Map<String, String> biz_code = new HashMap<>();
+    public static final String biz_code1 = "B100000";
+    public static final String biz_code2 = "B100001";
+    public static final String biz_code3 = "B100002";
+    public static final String biz_code4 = "B100003";
+    public static final String biz_code5 = "B101001";
+    public static final String biz_code6 = "B101002";
+    public static final String biz_code7 = "B101003";
+    public static final String biz_code8 = "B101004";
+    public static final String biz_code9 = "B101005";
+    public static final String biz_code10 = "B103012";
+    public static final String biz_code11 = "B103013";
+    public static final String biz_code12 = "B102001";
+
+    static {
+        biz_code.put(biz_code1, "受理成功");
+        biz_code.put(biz_code2, "验签失败");
+        biz_code.put(biz_code3, "验参失败");
+        biz_code.put(biz_code4, "结果未知,SYS_ERROR");
+        biz_code.put(biz_code5, "登录名已存在");
+        biz_code.put(biz_code6, "找不到卡bin");
+        biz_code.put(biz_code7, "联行号有误");
+        biz_code.put(biz_code8, "查找不到银行信息");
+        biz_code.put(biz_code9, "不支持的结算卡类型");
+        biz_code.put(biz_code10, "担保账户不存在");
+        biz_code.put(biz_code11, "担保账户余额不足");
+        biz_code.put(biz_code12, "分账方不存在");
+    }
+
+
+    /**
+     * >>>>>>>>>>>>> 支付交易类型 >>>>>>>>>>>>>
+     */
+    public static final Map<String, String> frp_code = new HashMap<>();
+    public static final String frp_code_ALIPAY_NATIVE = "ALIPAY_NATIVE";
+    public static final String frp_code_ALIPAY_CARD = "ALIPAY_CARD";
+    public static final String frp_code_ALIPAY_APP = "ALIPAY_APP";
+    public static final String frp_code_ALIPAY_H5 = "ALIPAY_H5";
+    public static final String frp_code_ALIPAY_FWC = "ALIPAY_FWC";
+    public static final String frp_code_ALIPAY_SYT = "ALIPAY_SYT";
+    public static final String frp_code_WEIXIN_NATIVE = "WEIXIN_NATIVE";
+    public static final String frp_code_WEIXIN_CARD = "WEIXIN_CARD";
+    public static final String frp_code_WEIXIN_APP = "WEIXIN_APP";
+    public static final String frp_code_WEIXIN_APP2 = "WEIXIN_APP2";
+    public static final String frp_code_WEIXIN_H5 = "WEIXIN_H5";
+    public static final String frp_code_WEIXIN_GZH = "WEIXIN_GZH";
+    public static final String frp_code_WEIXIN_XCX = "WEIXIN_XCX";
+    public static final String frp_code_JD_NATIVE = "JD_NATIVE";
+    public static final String frp_code_JD_CARD = "JD_CARD";
+    public static final String frp_code_JD_APP = "JD_APP";
+    public static final String frp_code_JD_H5 = "JD_H5";
+    public static final String frp_code_QQ_NATIVE = "QQ_NATIVE";
+    public static final String frp_code_QQ_CARD = "QQ_CARD";
+    public static final String frp_code_QQ_APP = "QQ_APP";
+    public static final String frp_code_QQ_H5 = "QQ_H5";
+    public static final String frp_code_QQ_GZH = "QQ_GZH";
+    public static final String frp_code_UNIONPAY_NATIVE = "UNIONPAY_NATIVE";
+    public static final String frp_code_UNIONPAY_CARD = "UNIONPAY_CARD";
+    public static final String frp_code_UNIONPAY_APP = "UNIONPAY_APP";
+    public static final String frp_code_UNIONPAY_H5 = "UNIONPAY_H5";
+    public static final String frp_code_BAIDU_NATIVE = "BAIDU_NATIVE";
+    public static final String frp_code_SUNING_NATIVE = "SUNING_NATIVE";
+
+
+    static {
+        biz_code.put(frp_code_ALIPAY_NATIVE, "支付宝扫码(主扫)");
+        biz_code.put(frp_code_ALIPAY_CARD, "支付宝刷卡(被扫)");
+        biz_code.put(frp_code_ALIPAY_APP, "支付宝APP 支付");
+        biz_code.put(frp_code_ALIPAY_H5, "支付宝H5");
+        biz_code.put(frp_code_ALIPAY_FWC, "支付宝服务窗");
+        biz_code.put(frp_code_ALIPAY_SYT, "支付宝收银台");
+        biz_code.put(frp_code_WEIXIN_NATIVE, "微信扫码(主扫)");
+        biz_code.put(frp_code_WEIXIN_CARD, "微信刷卡(被扫)");
+        biz_code.put(frp_code_WEIXIN_APP, "微信APP 支付");
+        biz_code.put(frp_code_WEIXIN_APP2, "微信APP2 支付");
+        biz_code.put(frp_code_WEIXIN_H5, "微信H5 支付");
+        biz_code.put(frp_code_WEIXIN_GZH, "微信公众号支付");
+        biz_code.put(frp_code_WEIXIN_XCX, "微信小程序支付");
+        biz_code.put(frp_code_JD_NATIVE, "京东扫码(主扫)");
+        biz_code.put(frp_code_JD_CARD, "京东刷卡(被扫)");
+        biz_code.put(frp_code_JD_APP, "京东APP 支付");
+        biz_code.put(frp_code_JD_H5, "京东H5 支付");
+        biz_code.put(frp_code_QQ_NATIVE, "QQ 扫码(主扫)");
+        biz_code.put(frp_code_QQ_CARD, "QQ 刷卡(被扫)");
+        biz_code.put(frp_code_QQ_APP, "QQ APP 支付");
+        biz_code.put(frp_code_QQ_H5, "QQH5 支付");
+        biz_code.put(frp_code_QQ_GZH, "QQ 公众号支付");
+        biz_code.put(frp_code_UNIONPAY_NATIVE, "银联扫码(主扫)");
+        biz_code.put(frp_code_UNIONPAY_CARD, "银联刷卡(被扫)");
+        biz_code.put(frp_code_UNIONPAY_APP, "银联APP 支付");
+        biz_code.put(frp_code_UNIONPAY_H5, "银联H5");
+        biz_code.put(frp_code_BAIDU_NATIVE, "百度扫码(主扫)");
+        biz_code.put(frp_code_SUNING_NATIVE, "苏宁扫码(主扫)");
+    }
+
+
+    /**
+     *
+     *
+     *  >>>>>>>>>>>>> 汇聚支付接口 >>>>>>>>>>>>>
+     *
+     *
+     */
+
+    /**
+     * 版本
+     */
+    public static final String pay_version = "2.1";
+
+
+
+
+}

+ 1 - 1
src/main/java/com/szwl/model/utils/HttpClientSslUtils.java

@@ -126,7 +126,7 @@ public class HttpClientSslUtils {
                     new StringEntity(requestBody, ContentType.create(contentType.getMimeType(), DEFAULT_CHAR_SET));
             post.setEntity(entity);
             response = client.execute(post);
-            if (response.getStatusLine().getStatusCode() != HttpStatus.OK.value()) {
+            if (response.getStatusLine().getStatusCode() != HttpStatus.OK.value()&&response.getStatusLine().getStatusCode() != HttpStatus.CREATED.value()) {
                 log.error("业务请求返回失败:{}", EntityUtils.toString(response.getEntity()));
                 throw new Exception();
             }

+ 22 - 0
src/main/java/com/szwl/service/TAirwallexService.java

@@ -0,0 +1,22 @@
+package com.szwl.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.szwl.model.entity.TOrder;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author
+ * @since 2022-06-17
+ */
+public interface TAirwallexService  {
+
+    /**
+     * 获取 access token
+     * 30分钟过期
+     */
+    String getAccessToken();
+
+}

+ 16 - 0
src/main/java/com/szwl/service/TOrderTaskService.java

@@ -0,0 +1,16 @@
+package com.szwl.service;
+
+import com.szwl.model.entity.TOrderTask;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author wuhs
+ * @since 2023-02-27
+ */
+public interface TOrderTaskService extends IService<TOrderTask> {
+
+}

+ 1 - 0
src/main/java/com/szwl/service/TSzsmWxService.java

@@ -12,5 +12,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @since 2022-10-23
  */
 public interface TSzsmWxService extends IService<TSzsmWx> {
+    //发送订阅消息
     public String subscribeMessage(Long id,String code,String clientId);
 }

+ 2 - 1
src/main/java/com/szwl/service/es/EsTCoinOrderService.java

@@ -4,6 +4,7 @@ import cn.com.crbank.ommo.esclient.EsBaseService;
 import cn.com.crbank.ommo.exception.MyException;
 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.szwl.model.entity.TCoinOrder;
@@ -11,7 +12,7 @@ import com.szwl.model.query.TCoinOrderParam;
 import com.szwl.model.utils.DateUtils;
 import com.szwl.service.TCoinOrderService;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.collections4.CollectionUtils;
+//import org.apache.commons.collections4.CollectionUtils;
 import org.elasticsearch.client.RequestOptions;
 import org.elasticsearch.client.indices.GetIndexRequest;
 import org.springframework.beans.factory.annotation.Autowired;

+ 1 - 1
src/main/java/com/szwl/service/es/EsTEquipmentService.java

@@ -16,7 +16,7 @@ import com.szwl.model.query.TOrderParam;
 import com.szwl.model.utils.DateUtils;
 import com.szwl.service.TEquipmentService;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.collections4.CollectionUtils;
+//import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.elasticsearch.action.search.SearchRequest;
 import org.elasticsearch.action.search.SearchResponse;

+ 4 - 3
src/main/java/com/szwl/service/es/EsTOrderService.java

@@ -4,6 +4,7 @@ import cn.com.crbank.ommo.esclient.EsBaseService;
 import cn.com.crbank.ommo.exception.MyException;
 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.szwl.model.bean.ChartBean;
@@ -18,7 +19,7 @@ import com.szwl.model.query.TOrderParam;
 import com.szwl.model.utils.DateUtils;
 import com.szwl.service.TOrderService;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.collections4.CollectionUtils;
+//import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.elasticsearch.action.search.SearchRequest;
 import org.elasticsearch.action.search.SearchResponse;
@@ -104,10 +105,10 @@ public class EsTOrderService extends EsBaseService<TOrder, TOrderParam> {
 //                    List<TOrder> list = tOrderService.selectByOption(example);
                     LambdaQueryWrapper<TOrder> query = Wrappers.lambdaQuery();
                     SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-                    String time = "2022-06-01 00:00:00";
+                    String time = "2022-07-01 00:00:00";
                     Date date = ft.parse(time);
                     query.gt(TOrder::getCreateDate,date);
-                    query.ne(TOrder::getStatus,"0");
+//                    query.eq(TOrder::getStatus,"1");
                     Page<TOrder> page = new Page<>(offset, limit, true);
                     IPage<TOrder> iPage = tOrderService.page(page, query);
                     List<TOrder> list = iPage.getRecords();

+ 63 - 0
src/main/java/com/szwl/service/impl/TAirwallexServiceImpl.java

@@ -0,0 +1,63 @@
+package com.szwl.service.impl;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.szwl.mapper.TAreaMapper;
+import com.szwl.model.entity.TArea;
+import com.szwl.model.utils.AirwallexConstant;
+import com.szwl.model.utils.HttpClientSslUtils;
+import com.szwl.service.TAirwallexService;
+import com.szwl.service.TAreaService;
+import org.apache.commons.lang.StringUtils;
+import org.apache.http.entity.ContentType;
+import org.apache.http.message.BasicHeader;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author wuhs
+ * @since 2022-07-12
+ */
+@Service
+public class TAirwallexServiceImpl implements TAirwallexService {
+
+    @Override
+    public String getAccessToken() {
+//        HttpResponse<String> response = Unirest.post("https://api-demo.airwallex.com/api/v1/authentication/login")
+//                .header("Content-Type", "application/json")
+//                .header("x-client-id", "W_ORsgAFTiuA9k2KuqZt8A")
+//                .header("x-api-key", "8ac97c856c6d6cae7eb8fd05511f7a165be798d032381cb8026de7b4aa9aaee2e6312a8888a3474d783a40913ab6b55d")
+//                .body("{
+//    }").asString();
+        String url = AirwallexConstant.url+"/api/v1/authentication/login";
+        List<BasicHeader> headers = new ArrayList<>();
+        BasicHeader header1 = new BasicHeader("x-client-id",AirwallexConstant.clientid);
+        BasicHeader header2 = new BasicHeader("x-api-key",AirwallexConstant.apiKey);
+        headers.add(header1);
+        headers.add(header2);
+        Map<String,String> map = new HashMap<>();
+        String data = JSON.toJSONString(map);
+        String response=null;
+        try {
+            response = HttpClientSslUtils.doPost(url, data,ContentType.APPLICATION_JSON,headers);
+            JSONObject resultJson = JSONObject.parseObject(response);
+            String token = resultJson.getString("token");
+            if(StringUtils.isNotEmpty(token)){
+                System.out.println("token="+token);
+                return token;
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return response;
+    }
+}

+ 20 - 0
src/main/java/com/szwl/service/impl/TOrderTaskServiceImpl.java

@@ -0,0 +1,20 @@
+package com.szwl.service.impl;
+
+import com.szwl.model.entity.TOrderTask;
+import com.szwl.mapper.TOrderTaskMapper;
+import com.szwl.service.TOrderTaskService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author wuhs
+ * @since 2023-02-27
+ */
+@Service
+public class TOrderTaskServiceImpl extends ServiceImpl<TOrderTaskMapper, TOrderTask> implements TOrderTaskService {
+
+}

+ 24 - 4
src/main/java/com/szwl/service/impl/TSzsmWxServiceImpl.java

@@ -4,13 +4,16 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.szwl.model.entity.TSzsmWx;
 import com.szwl.mapper.TSzsmWxMapper;
+import com.szwl.model.entity.TemplateData;
 import com.szwl.model.utils.HttpClientSslUtils;
 import com.szwl.model.utils.JsonUtil;
 import com.szwl.service.TSzsmWxService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -37,13 +40,30 @@ public class TSzsmWxServiceImpl extends ServiceImpl<TSzsmWxMapper, TSzsmWx> impl
         JSONObject jsonObject = new JSONObject();
         jsonObject.put("template_id", "NVmdaK4MwygT63ME830pwM6wZt4eufxhBr6jlQ2XXJ4");
         jsonObject.put("touser", szsmWx.getOpenId());
-        Map<String,String> map = new HashMap<>();
+//        Map<String,String> map = new HashMap<>();
+        Map<String, TemplateData> map = new HashMap<>();
+        Map<String,String> map1 = new HashMap<>();
+        TemplateData key1 = new TemplateData();
+        TemplateData key2 = new TemplateData();
+        TemplateData key3 = new TemplateData();
+//        //取货码 code
+//        map.put("character_string1",code);
+//        //取货点 clientId
+//        map.put("thing2","设备编号"+clientId);
+//        //温馨提示
+//        map.put("thing5","您的商品正在制作中,制作过程大概需要2分钟,请及时取走。");
         //取货码 code
-        map.put("character_string1",code);
+        map1.put("value",code);
+        key1.setValue(code);
+        map.put("character_string1",key1);
         //取货点 clientId
-        map.put("thing2","设备编号:"+clientId);
+        key2.setValue("设备编号:"+clientId);
+//        map1.put("value","设备编号:"+clientId);
+        map.put("thing2",key2);
         //温馨提示
-        map.put("thing5","您的商品正在制作中,制作过程大概需要2分钟,请及时取走。");
+        map1.put("value","您的商品正在制作中,制作过程大概需要2分钟,请及时取走。");
+        key3.setValue("您的商品正在制作中,请及时取走。");
+        map.put("thing5",key3);
         jsonObject.put("data", map);
         jsonObject.put("miniprogram_state","formal");
         jsonObject.put("lang","zh_CN");

+ 1 - 1
src/main/resources/bootstrap.yml

@@ -3,7 +3,7 @@ spring:
     name: pay-server
   profiles:
     # 打包或运行时,换这里:sit测试,prod正式
-    active: sit
+    active: prod
   cloud:
     config:
       name: pay-server

+ 1 - 1
src/test/java/com/szwl/AutoGeneratorTests.java

@@ -39,7 +39,7 @@ class AutoGeneratorTests {
 		//配置数据源
 		DataSourceConfig dataSourceConfig = new DataSourceConfig();
 		dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver")
-				.setUrl("jdbc:mysql://rm-wz995mu26a1479kz0so.mysql.rds.aliyuncs.com:3306/orderdb-test")
+				.setUrl("jdbc:mysql://rm-wz995mu26a1479kz0so.mysql.rds.aliyuncs.com:3306/orderdb")
 				.setUsername("root").setPassword("sunzee@020");
 
 		//策略配置