From 89c1c5d8ddca497df3094d84d307322e3a685bfd Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期四, 20 六月 2024 18:56:44 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/PaylogServiceImpl.java                    |  170 ++++++++++------
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/apiclient_key.pem           |   52 ++--
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomGoodsServiceImpl.java |    7 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/config/AppConfig.java                                |    4 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/apiclient_cert.pem          |   42 ++--
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/AuctionClient.java                   |    4 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderAuctionBondServiceImpl.java          |    4 
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/AuctionFallbackFactory.java              |    6 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/apiclient_cert.pem            |   47 ++--
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java      |   65 ++++++
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/apiclient_cert.p12            |    0 
 ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/config/AppConfig.java                              |    4 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/apiclient_key.pem             |   52 ++--
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/apiclient_cert.p12          |    0 
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java                  |    4 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/LogisticsServiceImpl.java                 |   89 ++++++--
 16 files changed, 348 insertions(+), 202 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/AuctionFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/AuctionFallbackFactory.java
index eeb64e1..38b7f0a 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/AuctionFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/AuctionFallbackFactory.java
@@ -4,6 +4,7 @@
 import com.ruoyi.system.api.domain.AppMiniLoginVO;
 import com.ruoyi.system.api.domain.AuctionGoods;
 import com.ruoyi.system.api.domain.AuctionSalesroom;
+import com.ruoyi.system.api.domain.OrderAuctionBond;
 import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
 import com.ruoyi.system.api.domain.dto.BondDTO;
 import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomBondDTO;
@@ -52,6 +53,11 @@
             }
 
             @Override
+            public R<OrderAuctionBond> getBond(BondDTO BondVO, String source) {
+                return R.fail("获取保证金支付状态失败" + cause.getMessage());
+            }
+
+            @Override
             public R<List<AuctionSalesroom>> getAuctionSalesroomByIds(
                     Collection<Long> auctionSalesroomGoodsIdSet, String source) {
                 return R.fail("获取拍卖场列表失败" + cause.getMessage());
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/AuctionClient.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/AuctionClient.java
index de72fdc..c605b46 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/AuctionClient.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/AuctionClient.java
@@ -6,6 +6,7 @@
 import com.ruoyi.system.api.domain.AppMiniLoginVO;
 import com.ruoyi.system.api.domain.AuctionGoods;
 import com.ruoyi.system.api.domain.AuctionSalesroom;
+import com.ruoyi.system.api.domain.OrderAuctionBond;
 import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO;
 import com.ruoyi.system.api.domain.dto.BondDTO;
 import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomBondDTO;
@@ -43,6 +44,9 @@
     @PostMapping("/order-auction-bond/UpdateBond")
     R<?> UpdateBond(@RequestBody BondDTO BondVO, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 
+    @PostMapping("/order-auction-bond/getBond")
+    R<OrderAuctionBond> getBond(@RequestBody BondDTO BondVO, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
     @PostMapping("/auction-salesroom/list-by-ids")
     R<List<AuctionSalesroom>> getAuctionSalesroomByIds(
             @RequestBody Collection<Long> auctionSalesroomGoodsIdSet,
diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/config/AppConfig.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/config/AppConfig.java
index 89fbd2a..8798df4 100644
--- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/config/AppConfig.java
+++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/config/AppConfig.java
@@ -28,8 +28,8 @@
     @Bean
     public WxMaConfig memberWxMaConfig(){
         WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl();
-        config.setAppid("wxe91f1af7638aa5dd");
-        config.setSecret("a787e1a462715604e0c9528b6d8960d1");
+        config.setAppid("wx69e3ac6e13a889b7");
+        config.setSecret("1b8bcfcb681524ac553e72054e5271ef");
         return config;
     }
 }
diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomGoodsServiceImpl.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomGoodsServiceImpl.java
index e302efe..8e7431f 100644
--- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomGoodsServiceImpl.java
+++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomGoodsServiceImpl.java
@@ -248,9 +248,11 @@
                     currentAuctionSalesroomGoods.setGoodsSkustatus(auctionSalesroomGoodss.getStatus());
                     currentAuctionSalesroomGoods.setListingDuration(auctionSalesroomGoodss.getListingDuration());
                     auctionSalesroomVO.setCurrentAuctionSalesroomGoods(currentAuctionSalesroomGoods);
+                    wrappers.eq(AuctionSalesroomGoods::getSortNum, auctionSalesroomGoodss.getSortNum());
+                    list.add(auctionSalesroomGoodss.getSortNum());
                 }
-                wrappers.eq(AuctionSalesroomGoods::getSortNum, auctionSalesroomGoodss.getSortNum());
-                list.add(auctionSalesroomGoodss.getSortNum());
+
+
             }
             wrapper1.last("limit 1");
             AuctionSalesroomGoods auctionSalesroomGoods1 = this.getOne(wrapper1);
@@ -267,7 +269,6 @@
                 auctionSalesroomVO.setNextAuctionSalesroomGoods(nextAuctionSalesroomGoods);
             }
             LambdaQueryWrapper<AuctionSalesroomGoods> wrapper2=Wrappers.lambdaQuery();
-            wrapper2.notIn(AuctionSalesroomGoods::getSortNum,list);
             wrapper2.notIn(AuctionSalesroomGoods::getSortNum,list);
             wrapper2.eq(AuctionSalesroomGoods::getDelFlag,0);
             wrapper2.eq(AuctionSalesroomGoods::getAuctionSalesroomId,ationSalesroomGoodsDTO.getAuctionSalesroomId());
diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java
index dcb1616..946cee3 100644
--- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java
+++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java
@@ -103,6 +103,8 @@
 import java.util.function.Function;
 import java.util.stream.Collectors;
 import javax.annotation.Resource;
+
+import lombok.Data;
 import org.apache.http.HttpResponse;
 import org.apache.http.client.config.RequestConfig;
 import org.apache.http.util.EntityUtils;
@@ -205,6 +207,7 @@
     private static final String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAlW2RMACojdqTa8H+j6411Lm5UipGXXbQiswq50rUflwjTj843zNVaVpk8uJmbdmtUBJlmblgBS/a31O4L4LrHB8WxJ+w0f9DBNTq9T6b80MiAVnU/3gXK365DmbzPWS5pR9wEgJVHnfOFUbsB5AVFHV0m9hUZcPv7xveuEp3BEoD5smaDJByR+KgFw0Q0JgINhhE6bsEa3UgJ198af269LtQ5HJl1TWLI8aeqW14HrxyADIt49NB9KZ8MOdKP+66HWcrXlipKFHtccy3dff72DqPmFdESoXfLXKZyhU5w9v4Q5F6UoAGTPwl9KQwikTobNeJ/7su7X3AB6+C14J4sQIDAQAB";
 
     private static final ObjectMapper objectMapper = new ObjectMapper();
+
 
     @Override
     public List<AuctionSalesroom> getAuctionBidRecordList(AuctionSalesroomDTO ationSalesroomGoodsDTO) {
@@ -348,7 +351,7 @@
         R<SysUser> sysUserR = sysUserClient.queryUserByPhone(appMiniLoginDto.getPhone());
         SysUser data = sysUserR.getData();
         appMiniLoginVo.setSysUser(data);
-        appMiniLoginVo.setPhone(appMiniLoginDto.getAuth_code());
+        appMiniLoginVo.setPhone(appMiniLoginDto.getPhone());
             return appMiniLoginVo;
 
     }
@@ -629,6 +632,36 @@
             }
 
 
+            LambdaQueryWrapper<AuctionBidRecord> wrapper2=Wrappers.lambdaQuery();
+            wrapper2.eq(AuctionBidRecord::getAuctionSalesroomId,bidVO.getAuctionSalesroomId());
+            wrapper2.eq(AuctionBidRecord::getTargetId,bidVO.getTargetId());
+            wrapper2.eq(AuctionBidRecord::getDelFlag,0);
+            wrapper2.orderByDesc(AuctionBidRecord::getLastBidAmount);
+            AuctionBidRecord one2 = auctionBidRecordService.getOne(wrapper1);
+
+            Map<String, Object> map = new ConcurrentHashMap<>();
+            map.put("notification_type", NotificationTypeConstant.AUCTION_SALESROOM);
+            map.put("auctionSalesroomId", bidVO.getAuctionSalesroomId());
+            map.put("byId", byId.getStatus());
+            map.put("lastBidAmount",one2.getLastBidAmount());
+            map.put("message_type", "start");
+            String msg = null;
+            try {
+                msg = objectMapper.writeValueAsString(map);
+            } catch (JsonProcessingException e) {
+            }
+            String finalMsg = msg;
+            Thread socketSender=new Thread(()->{
+                try {
+                    Thread.sleep(1000);//先休眠1秒
+                    WebSocketUsers.sendMessageToUsersByType(ClientTypeEnum.MEMBER.getCode(), finalMsg);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            });
+
+
+
         }else {
             AuctionGoods byId = auctionGoodsService.getById(bidVO.getTargetId());
             if (byId.getStartingPrice().doubleValue()>bidVO.getLastBidAmount().doubleValue()){
@@ -652,6 +685,8 @@
                 one.setLastBidTime(LocalDateTime.now());
                 one.setBidCount(one.getBidCount()+1);
                 auctionBidRecordService.updateById(one);
+
+
             }else{
                 one=new AuctionBidRecord();
                 one.setAuctionSalesroomId(bidVO.getAuctionSalesroomId());
@@ -664,6 +699,34 @@
                 one.setLastBidAmount(bidVO.getLastBidAmount());
                 auctionBidRecordService.save(one);
             }
+
+            LambdaQueryWrapper<AuctionBidRecord> wrapper2=Wrappers.lambdaQuery();
+            wrapper2.eq(AuctionBidRecord::getAuctionSalesroomId,bidVO.getAuctionSalesroomId());
+            wrapper2.eq(AuctionBidRecord::getTargetId,bidVO.getTargetId());
+            wrapper2.eq(AuctionBidRecord::getDelFlag,0);
+            wrapper2.orderByDesc(AuctionBidRecord::getLastBidAmount);
+            AuctionBidRecord one2 = auctionBidRecordService.getOne(wrapper1);
+
+            Map<String, Object> map = new ConcurrentHashMap<>();
+            map.put("notification_type", NotificationTypeConstant.AUCTION_SALESROOM);
+            map.put("auctionSalesroomId", bidVO.getAuctionSalesroomId());
+            map.put("byId", byId.getStartStatus());
+            map.put("lastBidAmount",one2.getLastBidAmount());
+            map.put("message_type", "start");
+            String msg = null;
+            try {
+                msg = objectMapper.writeValueAsString(map);
+            } catch (JsonProcessingException e) {
+            }
+            String finalMsg = msg;
+            Thread socketSender=new Thread(()->{
+                try {
+                    Thread.sleep(1000);//先休眠1秒
+                    WebSocketUsers.sendMessageToUsersByType(ClientTypeEnum.MEMBER.getCode(), finalMsg);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            });
         }
     }
 
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/config/AppConfig.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/config/AppConfig.java
index a2b8102..e577a07 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/config/AppConfig.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/config/AppConfig.java
@@ -27,8 +27,8 @@
     @Bean
     public WxMaConfig memberWxMaConfig(){
         WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl();
-        config.setAppid("wxe91f1af7638aa5dd");
-        config.setSecret("a787e1a462715604e0c9528b6d8960d1");
+        config.setAppid("wx69e3ac6e13a889b7");
+        config.setSecret("1b8bcfcb681524ac553e72054e5271ef");
         return config;
     }
 }
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java
index 55a5eb0..f7481de 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java
@@ -89,9 +89,9 @@
     //微信
     private static final String ACCESS_TOKEN_HOST = "https://api.weixin.qq.com/cgi-bin/token";
 
-    private static final String WX_APPID = "wxe91f1af7638aa5dd";
+    private static final String WX_APPID = "wx69e3ac6e13a889b7";
 
-    private static final String WX_SECRET = "a787e1a462715604e0c9528b6d8960d1";
+    private static final String WX_SECRET = "1b8bcfcb681524ac553e72054e5271ef";
 
     //支付寶
     /**
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/LogisticsServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/LogisticsServiceImpl.java
index c789080..3b26cd7 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/LogisticsServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/LogisticsServiceImpl.java
@@ -1,6 +1,7 @@
 package com.ruoyi.order.service.impl;
 
-import com.alibaba.fastjson.JSON;
+
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.nacos.shaded.com.google.gson.Gson;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -18,6 +19,7 @@
 import com.ruoyi.system.api.domain.Logistics;
 import com.ruoyi.system.api.domain.dto.LogisticsDTO;
 import com.ruoyi.system.api.domain.vo.Express100VO;
+import net.sf.json.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
@@ -29,10 +31,13 @@
 
 import javax.annotation.Resource;
 import java.io.BufferedReader;
+import java.io.IOException;
 import java.io.InputStreamReader;
 import java.net.HttpURLConnection;
 import java.net.URL;
+import java.net.URLEncoder;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -49,6 +54,8 @@
         ILogisticsService {
 
     private String key="BltjQodT7186";
+
+    private String kye1="GMtjjhxp9pdEpfz37M";
     private String customer="56DE8E9E3D58CE73C60755C8B7483043";
 
     private static final String AUTONUMBER_AUTO_URL = "http://www.kuaidi100.com/autonumber/auto?num=NUM&key=KEY";
@@ -89,37 +96,65 @@
 
     @Override
     public Boolean isLogisticsOne(LogisticsDTO logisticsDTO) {
-        List<KuaiDiCode> m=findKuaiDiCode(logisticsDTO.getPostid());
         Boolean b=false;
-        if (m.size()>0){
-            for (KuaiDiCode k:m){
-               if (k.getComCode().equals(logisticsDTO.getCompany())){
-                   b=true;
-               }
+
+
+
+        Map<String,String> params=new HashMap();
+        params.put("secret_key", "GMtjjhxp9pdEpfz37M");
+        params.put("secret_code", "53514ac63f0447d188423221550b0c3e");
+        params.put("secret_sign", "8265A3C04DDA73E5B899F7F750099BB0");
+        params.put("num", logisticsDTO.getPostid());
+        String string=post(params);
+        if (string.equals("[]")){
+            return b;
+        }else{
+                return b=true;
             }
 
-        }
-
-        return b;
     }
 
-    public List<KuaiDiCode> findKuaiDiCode(String orderId) {
-        String url = AUTONUMBER_AUTO_URL.replace("NUM", orderId).replace("KEY", key);
-        // 发送快递参数处理
-        MultiValueMap<String, Object> sendBody = new LinkedMultiValueMap<>();
-        sendBody.add("num", orderId);
-        sendBody.add("key", key);
-        //设置请求头参数
-        HttpHeaders headers = new HttpHeaders();
-        headers.add("Content-type", "application/x-www-form-urlencoded");
-        HttpEntity<MultiValueMap<String, Object>> formEntity = new HttpEntity<>(sendBody, headers);
-        ResponseEntity<String> result = restTemplate.postForEntity(url, formEntity, String.class);
-        List<KuaiDiCode> kuaiDiCode = new ArrayList<>();
-        if (result.getBody() != null && result.getBody().length() > 0) {
-            ArrayList body = JSON.parseObject(result.getBody(), ArrayList.class);
-            body.forEach(i -> kuaiDiCode.add(JSON.parseObject(JSON.toJSONString(i), KuaiDiCode.class)));
+    public String post(Map<String,String> params){
+        StringBuilder response=new StringBuilder("");
+        BufferedReader reader = null;
+        try {
+            StringBuilder builder =new StringBuilder();
+            for(Map.Entry param:params.entrySet()){
+                if(builder.length()>0){
+                    builder.append('&');
+                }
+                builder.append(URLEncoder.encode(param.getKey().toString(),"UTF-8"));
+                builder.append('=');
+                builder.append(URLEncoder.encode(String.valueOf(param.getValue()),"UTF-8"));
+            }
+            byte[]bytes=builder.toString().getBytes("UTF-8");
+            URL url=new URL("http://cloud.kuaidi100.com/api");
+            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+            conn.setConnectTimeout(5000);
+            conn.setReadTimeout(5000);
+            conn.setRequestMethod("POST");
+            conn.setRequestProperty("accept","*/*");
+            conn.setRequestProperty("connection","Keep-Alive");
+            conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
+            conn.setRequestProperty("Content-Length",String.valueOf(bytes.length));
+            conn.setDoOutput(true);
+            conn.getOutputStream().write(bytes);
+            reader=new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
+            String line = "";
+            while ((line =reader.readLine())!=null){
+                response.append(line);
+            }
+        }catch(Exception e){
+            e.printStackTrace();
+        }finally{
+            try{
+                if (null!=reader){
+                    reader.close();
+                }
+            }catch(IOException e){
+                e.printStackTrace();
+            }
         }
-        return kuaiDiCode;
+        return response.toString();
     }
-
 }
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderAuctionBondServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderAuctionBondServiceImpl.java
index 9ec9827..c99179a 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderAuctionBondServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderAuctionBondServiceImpl.java
@@ -157,15 +157,14 @@
                 } else {
                     orderAuctionBond.setPaymentMethod(PaymentMethodEnum.ALIPAY);
                 }
-
                 this.save(orderAuctionBond);
-
                 payInfoVO.setOrderNO(orderAuctionBond.getOrderNo());
                 if (memberAuctionSalesroomBondDTO.getPaymentMethod() == 1) {
                     payInfoVO.setType(2);
                 } else {
                     payInfoVO.setType(1);
                 }
+                payInfoVO.setOrderNO(orderAuctionBond.getOrderNo());
                 payInfoVO.setSubject("保证金");
                 payInfoVO.setMemberId(memberAuctionSalesroomBondDTO.getMemberId());
                 payInfoVO.setBody("保证金");
@@ -207,6 +206,7 @@
                 } else {
                     payInfoVO.setType(1);
                 }
+                payInfoVO.setOrderNO(orderAuctionBond.getOrderNo());
                 payInfoVO.setSubject("保证金");
                 payInfoVO.setMemberId(memberAuctionSalesroomBondDTO.getMemberId());
                 payInfoVO.setBody("保证金");
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/PaylogServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/PaylogServiceImpl.java
index e6be77b..e585bc1 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/PaylogServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/PaylogServiceImpl.java
@@ -14,12 +14,15 @@
 import com.jpay.weixin.api.WxPayApi;
 import com.ruoyi.common.core.constant.SecurityConstants;
 import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.enums.BondStatusEnum;
 import com.ruoyi.common.core.enums.OrderStatusEnum;
 import com.ruoyi.common.core.enums.PointStatusEnum;
 import com.ruoyi.common.core.utils.StringUtils;
 import com.ruoyi.order.domain.Paylog;
+import com.ruoyi.order.mapper.OrderAuctionBondMapper;
 import com.ruoyi.order.mapper.OrderMapper;
 import com.ruoyi.order.mapper.PaylogMapper;
+import com.ruoyi.order.service.IOrderAuctionBondService;
 import com.ruoyi.order.service.IPaylogService;
 import com.ruoyi.order.util.MD5AndKL;
 import com.ruoyi.order.util.SinataUtil;
@@ -31,6 +34,7 @@
 import com.ruoyi.order.util.tencent.protocol.AppPayReqData;
 import com.ruoyi.order.util.tencent.protocol.UnifiedorderReqData;
 import com.ruoyi.system.api.domain.Order;
+import com.ruoyi.system.api.domain.OrderAuctionBond;
 import com.ruoyi.system.api.domain.dto.BondDTO;
 import com.ruoyi.system.api.domain.dto.MemberPointsDTO;
 import com.ruoyi.system.api.domain.dto.RefundDTO;
@@ -50,6 +54,8 @@
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.system.api.feignClient.OrderClient;
 import org.springframework.stereotype.Service;
 import org.springframework.util.Assert;
 
@@ -71,8 +77,12 @@
     @Resource
     private AuctionClient auctionClient;
 
+
     @Resource
     private MemberClient memberClient;
+
+    @Resource
+    private OrderAuctionBondMapper orderAuctionBondMapper;
 
     @Override
     public R<Map<String, Object>> getPayInfo(Integer uid, Integer type, String orderNO,String openId, HttpServletRequest request) {
@@ -81,21 +91,39 @@
         String body;
         try {
             if(judgeContainsStr(orderNO)){
-                LambdaQueryWrapper<Order> wrapper1= Wrappers.lambdaQuery();
-                wrapper1.eq(Order::getOrderNo,orderNO);
-                wrapper1.eq(Order::getDelFlag,0);
-                Order page1 = OrderMapper.selectOne(wrapper1);
-                price=page1.getTotalAmount().doubleValue();
-                body = " 订单支付";
-                subject = " 订单支付";
-                Map<String, Object> map = new HashMap<String, Object>();
-                if (type == 1) {
-                    // 支付宝预下单
-                    return this.alipay(orderNO, subject, body, price, request);
-                } else {
-                    // 微信预下单
-                    return this.wxpay(2, orderNO, body,openId, price, request);
+                if (orderNO.contains("BO")) {
+                    LambdaQueryWrapper<OrderAuctionBond> wrapper1= Wrappers.lambdaQuery();
+                    wrapper1.eq(OrderAuctionBond::getOrderNo,orderNO);
+                    wrapper1.eq(OrderAuctionBond::getDelFlag,0);
+                    OrderAuctionBond one = orderAuctionBondMapper.selectOne(wrapper1);
+                    price=one.getBond().doubleValue();
+                    body = " 订单支付";
+                    subject = " 订单支付";
+                    if (type == 1) {
+                        // 支付宝预下单
+                        return this.alipay(orderNO, subject, body, price, request);
+                    } else {
+                        // 微信预下单
+                        return this.wxpay(2, orderNO, body,openId, price, request);
+                    }
+                }else{
+                    LambdaQueryWrapper<Order> wrapper1= Wrappers.lambdaQuery();
+                    wrapper1.eq(Order::getOrderNo,orderNO);
+                    wrapper1.eq(Order::getDelFlag,0);
+                    Order page1 = OrderMapper.selectOne(wrapper1);
+                    price=page1.getTotalAmount().doubleValue();
+                    body = " 订单支付";
+                    subject = " 订单支付";
+                    Map<String, Object> map = new HashMap<String, Object>();
+                    if (type == 1) {
+                        // 支付宝预下单
+                        return this.alipay(orderNO, subject, body, price, request);
+                    } else {
+                        // 微信预下单
+                        return this.wxpay(2, orderNO, body,openId, price, request);
+                    }
                 }
+
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -147,10 +175,15 @@
                     Paylog one = this.getOne(wrapper);
                     if(SinataUtil.isEmpty(one)) {
                         this.save(paylog1);
-                            BondDTO bondVO=new BondDTO();
-                            bondVO.setOrderNO(paylog1.getOutTradeNo());
-                            auctionClient.UpdateBond(bondVO, SecurityConstants.INNER);
 
+                        if (paylog1.getOutTradeNo().contains("BO")) {
+                            LambdaQueryWrapper<OrderAuctionBond> wrapper1= Wrappers.lambdaQuery();
+                            wrapper1.eq(OrderAuctionBond::getOrderNo,paylog1.getOutTradeNo());
+                            wrapper1.eq(OrderAuctionBond::getDelFlag,0);
+                            OrderAuctionBond one1 = orderAuctionBondMapper.selectOne(wrapper1);
+                            one1.setBoundStatus(BondStatusEnum.PAID);
+
+                        }else{
                             LambdaQueryWrapper<Order> wrapper1= Wrappers.lambdaQuery();
                             wrapper1.eq(Order::getOrderNo,paylog1.getOutTradeNo());
                             wrapper1.eq(Order::getDelFlag,0);
@@ -159,19 +192,19 @@
                             page1.setPayTime(LocalDateTime.now());
                             OrderMapper.updateById(page1);
 
-                           MemberPointsDTO memberPointsDTO=new MemberPointsDTO();
-                           memberPointsDTO.setMemberId(page1.getMemberId());
-                           memberPointsDTO.setPointsType(1);
-                           memberPointsDTO.setPointsStatus(PointStatusEnum.INCREASE);
-                           memberPointsDTO.setPoints(page1.getPoints());
-                           memberClient.addMemberPoints(memberPointsDTO);
-                          updMembeOneDTO MembeOneDTO=new updMembeOneDTO();
-                        MembeOneDTO.setType(1);
-                        MembeOneDTO.setMemberId(page1.getMemberId());
-                        MembeOneDTO.setMoney(page1.getTotalAmount());
-                        MembeOneDTO.setTotalPoints(page1.getPoints());
-                        memberClient.updMembeOne(MembeOneDTO);
-
+                            MemberPointsDTO memberPointsDTO=new MemberPointsDTO();
+                            memberPointsDTO.setMemberId(page1.getMemberId());
+                            memberPointsDTO.setPointsType(1);
+                            memberPointsDTO.setPointsStatus(PointStatusEnum.INCREASE);
+                            memberPointsDTO.setPoints(page1.getPoints());
+                            memberClient.addMemberPoints(memberPointsDTO);
+                            updMembeOneDTO MembeOneDTO=new updMembeOneDTO();
+                            MembeOneDTO.setType(1);
+                            MembeOneDTO.setMemberId(page1.getMemberId());
+                            MembeOneDTO.setMoney(page1.getTotalAmount());
+                            MembeOneDTO.setTotalPoints(page1.getPoints());
+                            memberClient.updMembeOne(MembeOneDTO);
+                        }
 
                     }
 
@@ -261,32 +294,35 @@
                         System.out.println("支付完成时间" + time_end);
                         paylog.setAddTime(LocalDateTime.now());
                         this.save(paylog);
-                        BondDTO bondVO=new BondDTO();
+                        if (paylog.getOutTradeNo().contains("BO")) {
+                            LambdaQueryWrapper<OrderAuctionBond> wrapper1= Wrappers.lambdaQuery();
+                            wrapper1.eq(OrderAuctionBond::getOrderNo,paylog.getOutTradeNo());
+                            wrapper1.eq(OrderAuctionBond::getDelFlag,0);
+                            OrderAuctionBond one1 = orderAuctionBondMapper.selectOne(wrapper1);
+                            one1.setBoundStatus(BondStatusEnum.PAID);
 
-                        bondVO.setOrderNO(paylog.getOutTradeNo());
-                        auctionClient.UpdateBond(bondVO, SecurityConstants.INNER);
+                        }else{
+                            LambdaQueryWrapper<Order> wrapper1= Wrappers.lambdaQuery();
+                            wrapper1.eq(Order::getOrderNo,paylog.getOutTradeNo());
+                            wrapper1.eq(Order::getDelFlag,0);
+                            Order page1 = OrderMapper.selectOne(wrapper1);
+                            page1.setOrderStatus(OrderStatusEnum.GOODS_TO_BE_RECEIVED);
+                            page1.setPayTime(LocalDateTime.now());
+                            OrderMapper.updateById(page1);
 
-                        LambdaQueryWrapper<Order> wrapper1= Wrappers.lambdaQuery();
-                        wrapper1.eq(Order::getOrderNo,paylog.getOutTradeNo());
-                        wrapper1.eq(Order::getDelFlag,0);
-                        Order page1 = OrderMapper.selectOne(wrapper1);
-                        page1.setOrderStatus(OrderStatusEnum.GOODS_TO_BE_RECEIVED);
-                        page1.setPayTime(LocalDateTime.now());
-                        OrderMapper.updateById(page1);
-
-                        MemberPointsDTO memberPointsDTO=new MemberPointsDTO();
-                        memberPointsDTO.setMemberId(page1.getMemberId());
-                        memberPointsDTO.setPointsType(1);
-                        memberPointsDTO.setPointsStatus(PointStatusEnum.INCREASE);
-                        memberPointsDTO.setPoints(page1.getPoints());
-                        memberClient.addMemberPoints(memberPointsDTO);
-
-                        updMembeOneDTO MembeOneDTO=new updMembeOneDTO();
-                        MembeOneDTO.setType(1);
-                        MembeOneDTO.setMemberId(page1.getMemberId());
-                        MembeOneDTO.setMoney(page1.getTotalAmount());
-                        MembeOneDTO.setTotalPoints(page1.getPoints());
-                        memberClient.updMembeOne(MembeOneDTO);
+                            MemberPointsDTO memberPointsDTO=new MemberPointsDTO();
+                            memberPointsDTO.setMemberId(page1.getMemberId());
+                            memberPointsDTO.setPointsType(1);
+                            memberPointsDTO.setPointsStatus(PointStatusEnum.INCREASE);
+                            memberPointsDTO.setPoints(page1.getPoints());
+                            memberClient.addMemberPoints(memberPointsDTO);
+                            updMembeOneDTO MembeOneDTO=new updMembeOneDTO();
+                            MembeOneDTO.setType(1);
+                            MembeOneDTO.setMemberId(page1.getMemberId());
+                            MembeOneDTO.setMoney(page1.getTotalAmount());
+                            MembeOneDTO.setTotalPoints(page1.getPoints());
+                            memberClient.updMembeOne(MembeOneDTO);
+                        }
 
                         log.debug("WxpayController.notify__回调处理成功:SUCCESS");
                         response.getOutputStream().print("success");
@@ -391,7 +427,7 @@
         Map<String, Object> map1 = new HashMap<String, Object>();
         Map<String, Object> appPayMap = new HashMap<String, Object>();
         try {
-            // 构建接口请求参数
+           /*  // 构建接口请求参数
             UnifiedorderReqData unifiedorderReqData = new UnifiedorderReqData(outTradeNo, body, price, Configure.wx_notify_url,
                     "JSAPI", openId);
             // 请求接口获取返回接口
@@ -404,7 +440,7 @@
             // 捕获预支付接口错误提示
             if ("FAIL".equals(map1.get("result_code")) || "FAIL".equals(map1.get("return_code"))) {
                 return R.fail(String.valueOf(map1.get("return_msg")));
-            }
+            }*/
 
       /*      // 对获取预支付返回接口参数进行封装(生成支付订单接口数据)
             AppPayReqData appPay = new AppPayReqData(apptype, (String) map.get("appid"), (String) map.get("mch_id"),
@@ -416,27 +452,30 @@
             // 创建hashmap(用户获得签名)
             SortedMap<String, String> paraMap = new TreeMap<>();
             //设置请求参数(小程序ID)
-            paraMap.put("appid", unifiedorderReqData.getAppid());
+            paraMap.put("appid", Configure.getAppid());
             //设置请求参数(商户号)
-            paraMap.put("mch_id", unifiedorderReqData.getMch_id());
+            paraMap.put("mch_id", Configure.getMchid());
             //设置请求参数(随机字符串)
             paraMap.put("nonce_str", nonceStr);
             //设置请求参数(商品描述)
-            paraMap.put("body", unifiedorderReqData.getBody());
+            paraMap.put("body", body);
             //设置请求参数(商户订单号)
-            paraMap.put("out_trade_no", unifiedorderReqData.getOut_trade_no());
+            paraMap.put("out_trade_no", outTradeNo);
             //设置请求参数(总金额)
-            paraMap.put("total_fee", unifiedorderReqData.getTotal_fee().toString());
+
+            String money=SinataUtil.doubleRetainTwo(price*100d);
+           Integer price1 = Integer.parseInt(money.substring(0,money.length()-3));
+            paraMap.put("total_fee", price1.toString());
             //设置请求参数(通知地址)
-            paraMap.put("notify_url", unifiedorderReqData.getNotify_url());
+            paraMap.put("notify_url", Configure.wx_notify_url);
             //设置请求参数(交易类型)
             paraMap.put("trade_type", String.valueOf(WxPayApi.TradeType.JSAPI));
 
-            paraMap.put("openid", unifiedorderReqData.getOpenid());
+            paraMap.put("openid",openId);
 
             //设置请求参数(openid)(在接口文档中 该参数 是否必填项 但是一定要注意 如果交易类型设置成'JSAPI'则必须传入openid)
             //MD5运算生成签名,这里是第一次签名,用于调用统一下单接口
-            String sign = PaymentKit.createSign(paraMap, "E10ADC3949BA59ABBE56E057F20F883E");
+            String sign = PaymentKit.createSign(paraMap, "HSCEWrfSYiwxR6sesZ6De91Xh3m447sh");
             paraMap.put("sign", sign);
             //统一下单,向微信api发送数据
             //转成xml
@@ -448,7 +487,6 @@
 
             //返回给小程序端需要的参数
             Map<String, Object> returnMap = new HashMap<>(20);
-
             String prepay_id = map.get("prepay_id");
             //重新进行签名后返回给前端
             returnMap.put("appId", map.get("appid"));
@@ -456,7 +494,7 @@
             returnMap.put("package", "prepay_id=" + prepay_id);
             returnMap.put("timeStamp", new Date().getTime() + "");
             returnMap.put("signType", "MD5");
-            String signature = weixinSignature(returnMap, "E10ADC3949BA59ABBE56E057F20F883E");
+            String signature = weixinSignature(returnMap, "HSCEWrfSYiwxR6sesZ6De91Xh3m447sh");
 
             returnMap.put("prepay_id", prepay_id);
             returnMap.put("mch_id", map.get("mch_id"));
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/apiclient_cert.p12 b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/apiclient_cert.p12
index 07690fc..894c7b2 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/apiclient_cert.p12
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/apiclient_cert.p12
Binary files differ
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/apiclient_cert.pem b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/apiclient_cert.pem
index 5435148..016a9a7 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/apiclient_cert.pem
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/apiclient_cert.pem
@@ -1,26 +1,25 @@
 -----BEGIN CERTIFICATE-----
-MIIEbzCCA9igAwIBAgIEAapJajANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMC
-Q04xEjAQBgNVBAgTCUd1YW5nZG9uZzERMA8GA1UEBxMIU2hlbnpoZW4xEDAOBgNV
-BAoTB1RlbmNlbnQxDDAKBgNVBAsTA1dYRzETMBEGA1UEAxMKTW1wYXltY2hDQTEf
-MB0GCSqGSIb3DQEJARYQbW1wYXltY2hAdGVuY2VudDAeFw0xODAyMDIxMTA3NDRa
-Fw0yODAxMzExMTA3NDRaMIGeMQswCQYDVQQGEwJDTjESMBAGA1UECBMJR3Vhbmdk
-b25nMREwDwYDVQQHEwhTaGVuemhlbjEQMA4GA1UEChMHVGVuY2VudDEOMAwGA1UE
-CxMFTU1QYXkxMzAxBgNVBAMUKuaIkOmDvemprOWPr+aXtuWwmue9kee7nOenkeaK
-gOaciemZkOWFrOWPuDERMA8GA1UEBBMIOTM1NTUzMzUwggEiMA0GCSqGSIb3DQEB
-AQUAA4IBDwAwggEKAoIBAQDF+apUVzPxdAF2FA8r2kg6aPeLynMRsUE17eW+wPZS
-q8mVMrwACzYePbL5003/snEsEU936qnEiu8t5J6w+74dc3mQMr88FW29jD9MQOYR
-yOeWz+LVKFXqA7sm9Aj+7hFrcjxdjl2FvKoITTSXNbtM71FrhsGXsnW/1Zjl3sSy
-cu2qBq40QNqpefzz2gJ+vbtROy+ZynK7QaSwOtiFZuIbPgYv6W18wmigss6JuVkM
-MZUquK4yDIPhwJ4Dk4lLXak1qqNfplfVKQtOo+MHdfIHnG9Z9q+R4iEvAGF4oxaR
-zeKFk+zir8E8xEngmnH0ESue7fn9qh6q0mO7xTaYaG0HAgMBAAGjggFGMIIBQjAJ
-BgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh0iQ0VTLUNBIEdlbmVyYXRlIENlcnRp
-ZmljYXRlIjAdBgNVHQ4EFgQUYkOGN8XaKFwFtBCoEBKwGCnBbtYwgb8GA1UdIwSB
-tzCBtIAUPgUm9iJitBVbiM1kfrDUYqflhnShgZCkgY0wgYoxCzAJBgNVBAYTAkNO
-MRIwEAYDVQQIEwlHdWFuZ2RvbmcxETAPBgNVBAcTCFNoZW56aGVuMRAwDgYDVQQK
-EwdUZW5jZW50MQwwCgYDVQQLEwNXWEcxEzARBgNVBAMTCk1tcGF5bWNoQ0ExHzAd
-BgkqhkiG9w0BCQEWEG1tcGF5bWNoQHRlbmNlbnSCCQC7VJcrvADoVzAOBgNVHQ8B
-Af8EBAMCBsAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwIwDQYJKoZIhvcNAQEFBQAD
-gYEARXIWwdW50A3JM8BIC94argtpvZXqTj5hWeheeJSDBxNVFv/WzdahqZx7Yokn
-DP/Ac6dekFfvvXR6ujwevEUTFbpSac1h7k7u/URmwH/R2URTevPTrMeg5D+gLeYP
-nEJ+GhyRRAFOoGbN1SoK4f1j6pExpl2GaQ0PVNv7NRVW1tI=
+MIIENDCCAxygAwIBAgIUGVH+OUAuVOxChlw+8HWJAdKov00wDQYJKoZIhvcNAQEL
+BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
+FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
+Q0EwHhcNMjQwNjIwMDIxODAwWhcNMjkwNjE5MDIxODAwWjCBjTETMBEGA1UEAwwK
+MTIyMDU0MDAwMTEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTkwNwYDVQQL
+DDDlm5vlt53kuK3lm73nmb3phZLkuqflk4HkuqTmmJPkuK3lv4PmnInpmZDlhazl
+j7gxCzAJBgNVBAYTAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcN
+AQEBBQADggEPADCCAQoCggEBALTOOuM7h0rT5KwRRWc2nerxGCWZNz3UT7gRZEW/
+IHCVULYU1MtqRSvrVen0PVhDT8Bkt5tQdrv7RLRm2w8mhM/DIPi+EaTaGQmt911G
+Va02fcRRHUWT4skNN1NiNIZIz3XGTCSGIFrYREAZ0PLewE7dwmfsPC64wXRWRnv0
+G+1bdRNYeI5n4BdVbCaDWCJ8YiYNR8rusa1CazFGwp1y5XEBidsO+C0QvsNqv0RS
+OgnO/izbqubnqyaTdsYT5o+W8cePD14Vml8nLJvPruoV8Mw3MJei+Xj5L4Qm3mNU
+tqORU7Ghk7l0nrGhgH+xxqeZuQ3rmi+1DYW5rWeCmBvL+b8CAwEAAaOBuTCBtjAJ
+BgNVHRMEAjAAMAsGA1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGE
+aHR0cDovL2V2Y2EuaXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0
+MjIwRTUwREJDMDRCMDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFC
+NjU0MjJFMTJCMjdBOUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEB
+CwUAA4IBAQCcL4hdeAsHMbE5A9AXgNL+LjFJwtCUEdR/fnalqOh8TtHkySfrntTs
+SvSka+OBWlaSe/6TOBUJy4gY1V2ESHb0JMhbFim5OXPBqXUDshJwDFF3hlpCLrmQ
+Y8ABrEik3nmx+y4DPmDj+38FTHJUIzzlChR5QWKilBgU2yqJBYrwK8pwoELUMiAv
+58pUIBxpiaFqW146vKUDhV+xKI0mHMeGlA5UNkCG/JQLHAdrUXyi8RT3Yl/kvHqW
+EK/pUiThB/WFCLMGKvF4ahoHZFWuCm/BhCHDpdSh661Ivf9RqsvnPffBUjJ+ZIIk
+metUnaCMi8qNzcV7ohlfeXfjikzEVf+O
 -----END CERTIFICATE-----
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/apiclient_key.pem b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/apiclient_key.pem
index 680a521..34f6108 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/apiclient_key.pem
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert/apiclient_key.pem
@@ -1,28 +1,28 @@
 -----BEGIN PRIVATE KEY-----
-MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDF+apUVzPxdAF2
-FA8r2kg6aPeLynMRsUE17eW+wPZSq8mVMrwACzYePbL5003/snEsEU936qnEiu8t
-5J6w+74dc3mQMr88FW29jD9MQOYRyOeWz+LVKFXqA7sm9Aj+7hFrcjxdjl2FvKoI
-TTSXNbtM71FrhsGXsnW/1Zjl3sSycu2qBq40QNqpefzz2gJ+vbtROy+ZynK7QaSw
-OtiFZuIbPgYv6W18wmigss6JuVkMMZUquK4yDIPhwJ4Dk4lLXak1qqNfplfVKQtO
-o+MHdfIHnG9Z9q+R4iEvAGF4oxaRzeKFk+zir8E8xEngmnH0ESue7fn9qh6q0mO7
-xTaYaG0HAgMBAAECggEBAL1yjrYqxIAX3JYb1/DE7z1F2S0iTD7v+lEbGDEUAiNW
-VI67gAAiumTx8eTzeb5oCbh70CoWmuKDeSHXlqwSGvmf2QJOLYXXk65BGQllSURX
-lpZQ1OXZtW08qMk72afqNS02oeF9LK2fvq43A053koaqtKVKzNLXaaprQecm599C
-P+BdahdKk6SE39cOB9fMfX1s5BZRJUhIKNBmcEBsgo9xtKTvgvbgBkSvFBd2ycMo
-5KRUbquytqIfwDJTETn7FZqh86+BgLOsWEQZ+1ByEJkFNdOGfjz0HVxNMY60j42D
-u9fsIMFup+a/oP190atMSt+GE6ZjgQit/LsF7BrPaiECgYEA7uUDZIpQ1j07MZP+
-CFMGIE8aTlhvbWho67HCCLDAAv2ZdOSusV66iMzEfDkfOcj9fp8OlfbK2ocUCkS5
-5hQAuAk4O8KTmbGgf71gyFZzddZkilc1UAgHVMj9wVp2PfLmpb6iFhazd4enwTPs
-TKxogxfXWRQKQqkCnunOSS7m7V8CgYEA1CaXqMWm2v52FHN8dl8AnH6YjwOQpNXI
-qNOyA8Af03dEQ5w/sNlusiF73/FIgErb0be4rgIvJOW0ziBU9RKn/vB5wl4IpJjM
-JuL3hh7RlAbfSWaqaKCZKIDolS2vtvwKp9mZgmxWgvKx3Q/L8I1MXPIZTTRpGwIe
-HyBxYBTSeVkCgYEAuRHbzgDFXSN0fxUKYMKI5XDCjV0/fX+8gJNmITtklSyHvKII
-n8omMiKIOUA7a5XEpFpuf0kAn8izgrz5Uz+9ytUBpnI3zIJqN2ur1af7rJdZrj6f
-Q4/ktg87XpZJMfbCLjb/9KLDh98k26zw6/lIwf4vS4gV5sxuBlRVBib6qXsCgYA9
-2f6PWwi5gkSk08KutCX2ekY6M9zg4d89sXKN+16MBZKmb5B2G/5U+sQl1y+/D5Ql
-AX5bZRGfnUTob661QLov7qZhD49PhajHkZZ+yM9ra9F/keoO1PuyPlsQ2yAGplbo
-9tz1lGZoiR9oBun7eQaRdpf/1U7ra+OiSZAkZg2zCQKBgQCl+bszQ202CkLchQ1R
-Mu2svFFi+BeVvtA8yp4Il3bznxkgBZJ1/4gB+u84f9ybfpKHok7+f+iHVGJSNiay
-Uw5ouE6oNEJODsvWDDliCjrckGUBDmJ8XOHEkm3MPOmEov8UJ6twev/QWhEfEUZk
-fclCYjgt3YJ3XW9hXgORWhJj9g==
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC0zjrjO4dK0+Ss
+EUVnNp3q8RglmTc91E+4EWRFvyBwlVC2FNTLakUr61Xp9D1YQ0/AZLebUHa7+0S0
+ZtsPJoTPwyD4vhGk2hkJrfddRlWtNn3EUR1Fk+LJDTdTYjSGSM91xkwkhiBa2ERA
+GdDy3sBO3cJn7DwuuMF0VkZ79BvtW3UTWHiOZ+AXVWwmg1gifGImDUfK7rGtQmsx
+RsKdcuVxAYnbDvgtEL7Dar9EUjoJzv4s26rm56smk3bGE+aPlvHHjw9eFZpfJyyb
+z67qFfDMNzCXovl4+S+EJt5jVLajkVOxoZO5dJ6xoYB/scanmbkN65ovtQ2Fua1n
+gpgby/m/AgMBAAECggEAL3RlblikdNZSkXri/WkPX6exz8R8BEViOwyNheTZLdNy
+4KdtBoq45wMYhJQvOahJGVUV/7TJxSL48GSCoGJav3EWiVLRrLP1mF3Jq/iW6iSA
+M/OaPDXJcz19xOvkn04i7WWDfJ6bhVx35V8hQW2HieuYZ9BQJ28kj1VJoKT8Y3qJ
+N93e2q+fcAnB8tqkgcHlaeEItoUwS3QEhLng1EOyE2s/XBVKM+AV7XSJhbDSJ9s3
+trUghmRSjJ/GhvQEOjq8LOHeDR0azOqgmIkg7viKUyTl7lBuIN9ZPgSGQbv4XNcP
+oGbF3dokrjPBsQar5+O9QDvGk3pJXo6PIXRVIq7BsQKBgQDsrOl2Snnt5FtTfNNd
+n+ajsV8+S0HoimV7g05gxGvSc6po3vuBPZKWRsjtXNaSRKdXFvF1v8uAnNlQk0b+
+wjyUn0r9x6KF8tj+s4qjyzwkg0Vy1A9/goDKD93HG1C9aieulrBepEmzkfiiD5W2
+hJzphvBf+lTUNcJXOllxiDQzyQKBgQDDkYDXuMwlMV3fBv5+wNGsuADSVal/1Bz6
+Q91NUnqTMFbOAgEvJy4e/5gle6MCBkqmD08rYcQAQbB1Tgr23CWoXbWn2GSlChoY
+ugDEz/q+heLjFkZU/T/xpTGtFpnfSUlP+7oXlyeEaXUMYnEW/UPI70AQPC3sDsuS
+H9VtBFE1RwKBgQCjsqEzqSWWbhjgsPi8zAlJdTgsLP9kKL0yZcqDUbhF8qyOJpSM
+epr2B/WXf1wGBSg9K2hNCiBmT5ZbjdJQCOa/4UGMMFVwEl0WJfahfcOWeZlCZ/xk
+NE6B8+Fwgqsgp9jUf/NzMmyroC35YZAqkqS5PRTrPYkI0jod/QS6avu4SQKBgGpe
+89NhwjfgmAw8w6OxwNnO4zOEQEM03eYJj48E84KnYi9+y6IYD2/w2ZJZoxnwzh1w
+akFQVclF8XJ8Vl5a82iWP73hZyyVSAh28wAZl2qVbAjUDsEfVe5bSZ+5kUvvkp6c
+bmVyY54TtgRcbuJwMrRR3Wh3MwsYKQV7pxw6ouj1AoGANuZe1rxkCGZbUTrhtuma
+ZxI0NTZjEBVL69m9nlGggEq8tn2j18gaXWq0aEkqIo4/AEHWDyageBAFixTfq+qe
+vDHlzeSaTD3I2NCNk0+W6QWU8duel6byeoLyb5fhVeRxddg6ZuzjC5pSC9XVIxDR
+wwFKsfxWpJ2tHMOiif2plww=
 -----END PRIVATE KEY-----
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/apiclient_cert.p12 b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/apiclient_cert.p12
index e077620..894c7b2 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/apiclient_cert.p12
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/apiclient_cert.p12
Binary files differ
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/apiclient_cert.pem b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/apiclient_cert.pem
index cf1136a..016a9a7 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/apiclient_cert.pem
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/apiclient_cert.pem
@@ -1,25 +1,25 @@
 -----BEGIN CERTIFICATE-----
-MIIEITCCAwmgAwIBAgIUSmKUuRgKAuIo5mZrAXzAQxjRA6gwDQYJKoZIhvcNAQEL
+MIIENDCCAxygAwIBAgIUGVH+OUAuVOxChlw+8HWJAdKov00wDQYJKoZIhvcNAQEL
 BQAwXjELMAkGA1UEBhMCQ04xEzARBgNVBAoTClRlbnBheS5jb20xHTAbBgNVBAsT
 FFRlbnBheS5jb20gQ0EgQ2VudGVyMRswGQYDVQQDExJUZW5wYXkuY29tIFJvb3Qg
-Q0EwHhcNMjQwNjE4MDgyNTQ3WhcNMjkwNjE3MDgyNTQ3WjB7MRMwEQYDVQQDDAox
-Njc4MzQ1NjI3MRswGQYDVQQKDBLlvq7kv6HllYbmiLfns7vnu58xJzAlBgNVBAsM
-HuaIkOmDveWWnOacm+enkeaKgOaciemZkOWFrOWPuDELMAkGA1UEBhMCQ04xETAP
-BgNVBAcMCFNoZW5aaGVuMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
-xMnTizbQwoQ4VIy9uH/ilbAFfK7nKY7oPs3QLIvudupj95rWHqn96+ap5dky6ToG
-1OmVLWqQTrTy8PCfqrsZEwupBw5rEhvgyFj042jJ4I9wM208YQlaMjLu72fnfRRh
-38FRBt0Y66UiqAtRKuZeaJj+GZ4cknEUQeK3eh/pDL8TwfkvnzMtUmIICc0IAFFU
-9aJQhlecw96hQ9fjVyWTOqD5SXz2yhW9AOdlJlkG61CQfGyQuHxpB4PBiMEk5gn7
-9MPTxMag2h2wH4qOb0RkmB/pzC1rNJjgS/cgmkQ35LGEYC65FspOhrOKfw432/OX
-QTZUz0oKEPZw2UmfO77FwwIDAQABo4G5MIG2MAkGA1UdEwQCMAAwCwYDVR0PBAQD
-AgP4MIGbBgNVHR8EgZMwgZAwgY2ggYqggYeGgYRodHRwOi8vZXZjYS5pdHJ1cy5j
-b20uY24vcHVibGljL2l0cnVzY3JsP0NBPTFCRDQyMjBFNTBEQkMwNEIwNkFEMzk3
-NTQ5ODQ2QzAxQzNFOEVCRDImc2c9SEFDQzQ3MUI2NTQyMkUxMkIyN0E5RDMzQTg3
-QUQxQ0RGNTkyNkUxNDAzNzEwDQYJKoZIhvcNAQELBQADggEBAGNBS3HVK2pqNjmh
-u9/eLfCjgEF/YLNy/u5yAuJBceLTtT4IWtpNKHbUoljLVLQ9ZApFNsjk55QwZZ4h
-dcU7XBvPsr1cryNC187WnFb6DX8uMm1G0Koo8ukWhd4B9hft5Nb9wLxmtO8WxYpA
-r4UuqXz8srLSqUtRu7o5SFXsOwYT+8nwuUNNdWQLJyuKEb0s39eGPECFH8iz+S4G
-P1sXs//TnxvAsqp+bODZYH9OazfCUG56cs+NiEZktzl9o6lap/ycI9DRuLLFMyfD
-Bie9QaJ/p9jIOZlJsTHsouNu5d+Mk1tEhdOBh8l53uIi19IPBIGtekVAouQR2zTk
-PLrU9bA=
+Q0EwHhcNMjQwNjIwMDIxODAwWhcNMjkwNjE5MDIxODAwWjCBjTETMBEGA1UEAwwK
+MTIyMDU0MDAwMTEbMBkGA1UECgwS5b6u5L+h5ZWG5oi357O757ufMTkwNwYDVQQL
+DDDlm5vlt53kuK3lm73nmb3phZLkuqflk4HkuqTmmJPkuK3lv4PmnInpmZDlhazl
+j7gxCzAJBgNVBAYTAkNOMREwDwYDVQQHDAhTaGVuWmhlbjCCASIwDQYJKoZIhvcN
+AQEBBQADggEPADCCAQoCggEBALTOOuM7h0rT5KwRRWc2nerxGCWZNz3UT7gRZEW/
+IHCVULYU1MtqRSvrVen0PVhDT8Bkt5tQdrv7RLRm2w8mhM/DIPi+EaTaGQmt911G
+Va02fcRRHUWT4skNN1NiNIZIz3XGTCSGIFrYREAZ0PLewE7dwmfsPC64wXRWRnv0
+G+1bdRNYeI5n4BdVbCaDWCJ8YiYNR8rusa1CazFGwp1y5XEBidsO+C0QvsNqv0RS
+OgnO/izbqubnqyaTdsYT5o+W8cePD14Vml8nLJvPruoV8Mw3MJei+Xj5L4Qm3mNU
+tqORU7Ghk7l0nrGhgH+xxqeZuQ3rmi+1DYW5rWeCmBvL+b8CAwEAAaOBuTCBtjAJ
+BgNVHRMEAjAAMAsGA1UdDwQEAwID+DCBmwYDVR0fBIGTMIGQMIGNoIGKoIGHhoGE
+aHR0cDovL2V2Y2EuaXRydXMuY29tLmNuL3B1YmxpYy9pdHJ1c2NybD9DQT0xQkQ0
+MjIwRTUwREJDMDRCMDZBRDM5NzU0OTg0NkMwMUMzRThFQkQyJnNnPUhBQ0M0NzFC
+NjU0MjJFMTJCMjdBOUQzM0E4N0FEMUNERjU5MjZFMTQwMzcxMA0GCSqGSIb3DQEB
+CwUAA4IBAQCcL4hdeAsHMbE5A9AXgNL+LjFJwtCUEdR/fnalqOh8TtHkySfrntTs
+SvSka+OBWlaSe/6TOBUJy4gY1V2ESHb0JMhbFim5OXPBqXUDshJwDFF3hlpCLrmQ
+Y8ABrEik3nmx+y4DPmDj+38FTHJUIzzlChR5QWKilBgU2yqJBYrwK8pwoELUMiAv
+58pUIBxpiaFqW146vKUDhV+xKI0mHMeGlA5UNkCG/JQLHAdrUXyi8RT3Yl/kvHqW
+EK/pUiThB/WFCLMGKvF4ahoHZFWuCm/BhCHDpdSh661Ivf9RqsvnPffBUjJ+ZIIk
+metUnaCMi8qNzcV7ohlfeXfjikzEVf+O
 -----END CERTIFICATE-----
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/apiclient_key.pem b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/apiclient_key.pem
index f94d32c..34f6108 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/apiclient_key.pem
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/cert_2/apiclient_key.pem
@@ -1,28 +1,28 @@
 -----BEGIN PRIVATE KEY-----
-MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDEydOLNtDChDhU
-jL24f+KVsAV8rucpjug+zdAsi+526mP3mtYeqf3r5qnl2TLpOgbU6ZUtapBOtPLw
-8J+quxkTC6kHDmsSG+DIWPTjaMngj3AzbTxhCVoyMu7vZ+d9FGHfwVEG3RjrpSKo
-C1Eq5l5omP4ZnhyScRRB4rd6H+kMvxPB+S+fMy1SYggJzQgAUVT1olCGV5zD3qFD
-1+NXJZM6oPlJfPbKFb0A52UmWQbrUJB8bJC4fGkHg8GIwSTmCfv0w9PExqDaHbAf
-io5vRGSYH+nMLWs0mOBL9yCaRDfksYRgLrkWyk6Gs4p/Djfb85dBNlTPSgoQ9nDZ
-SZ87vsXDAgMBAAECggEAA91OyTIXYWqFTKvC4geo5HWjdfJdWcSTrQAPsYBB+5XY
-xrkEsW93LBXIiln8lPXtwmqf4ldwZAtLpg2jpQ+ti2E0PY477gwcGvMcRAb/x+gp
-NOlVQTaUzd2QMaVht2QaE/HQ7IiU/7OrfY9TVbtWaUlv3ALt3rZXxn90SPKtefGR
-0hhz9hXnnPq2XQ4F2Pe9wwNabRljuBWh5jrTru77nthmrb7afgzPlzvhbBejiJR0
-Yj2zjtiTDojo0jEAO2dM3OQERR9OSR5u0X+fawjT7JPGssjBH6ICBWakaUB9Oe/7
-fxqOolRxJPV9dlkQGPTOp0buE+Y2YUmMPqvV6Ey4OQKBgQD0BIlu1lveyRo6J0U4
-9l9RRQzBrQPGGCZkDJ9GEWL6KdCobFnjE/E21L+cGg4wkAvMpfj9nVc64gZ0Yvm0
-oqyQXapwTxJRpwgl+AK1Q79Pe0L4esCvS6JX4eXHsJZiPUS/0gzOU1HCkCoggJ2m
-E7mnKdc2bj32oUI5z6UzOUAiPwKBgQDOc5Xu0zYMhTzLvkBrL9ILGTBsWN3rdldf
-QdFlbQMiWWmSrLIMLAmLIullMxFtFqVxjHBumKHq5HOuyxxKMMKdFNXs4WZ0HNyp
-y4uk7J1bpWBeaM5rExszmK4gpEdMt7G0Oi5NP2DIJ1fNFZulEqNwX3XsSYSPqDWZ
-2nvteYSzfQKBgAaPgKpsNPgebAgYOjI33YQv2RHz9uACkjWqaTXXDdQv/54nm5sR
-VDDnM2edA7imhsqvw6v96PR6UzYZ2yDSJtWSzxxJ4/IyDXQH4PrCoYgfhkNr+XY9
-EFZQin797m0hvJFzskhx0QbsHVXWX2axrRIje9fIyv2whDlNreFcrq69AoGAExih
-77tdrn7MhtQMRV3hAeHMltkJffQuVMNTyRvyREUc/NI4jeOs5k/OYuv8WqjTmNMy
-uygnIgELqkljToGAHuOEfirDPU5GIvaO7ixsycNcTJ9JKKJVy8n9oUtQxQngyBjx
-m3eXTixFdNTg1r4InCZYVAjg2CDpBFgvSmIJIkkCgYA9xRIkr2bZEv0SVPy9Le8E
-WtqEvYT/61G5n2tESwBPAmrkVSZbmlZFZd7GnV+U7D4Yt3G9gEj754fPabS7prW4
-Y0QSYLcRZGIDcbUahPd47ehsDgJljJW+ELTz0Vqi69j+X6fHGyupnWy0TIUpkQgK
-Um0XDvKxBoO1wp31FS370g==
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC0zjrjO4dK0+Ss
+EUVnNp3q8RglmTc91E+4EWRFvyBwlVC2FNTLakUr61Xp9D1YQ0/AZLebUHa7+0S0
+ZtsPJoTPwyD4vhGk2hkJrfddRlWtNn3EUR1Fk+LJDTdTYjSGSM91xkwkhiBa2ERA
+GdDy3sBO3cJn7DwuuMF0VkZ79BvtW3UTWHiOZ+AXVWwmg1gifGImDUfK7rGtQmsx
+RsKdcuVxAYnbDvgtEL7Dar9EUjoJzv4s26rm56smk3bGE+aPlvHHjw9eFZpfJyyb
+z67qFfDMNzCXovl4+S+EJt5jVLajkVOxoZO5dJ6xoYB/scanmbkN65ovtQ2Fua1n
+gpgby/m/AgMBAAECggEAL3RlblikdNZSkXri/WkPX6exz8R8BEViOwyNheTZLdNy
+4KdtBoq45wMYhJQvOahJGVUV/7TJxSL48GSCoGJav3EWiVLRrLP1mF3Jq/iW6iSA
+M/OaPDXJcz19xOvkn04i7WWDfJ6bhVx35V8hQW2HieuYZ9BQJ28kj1VJoKT8Y3qJ
+N93e2q+fcAnB8tqkgcHlaeEItoUwS3QEhLng1EOyE2s/XBVKM+AV7XSJhbDSJ9s3
+trUghmRSjJ/GhvQEOjq8LOHeDR0azOqgmIkg7viKUyTl7lBuIN9ZPgSGQbv4XNcP
+oGbF3dokrjPBsQar5+O9QDvGk3pJXo6PIXRVIq7BsQKBgQDsrOl2Snnt5FtTfNNd
+n+ajsV8+S0HoimV7g05gxGvSc6po3vuBPZKWRsjtXNaSRKdXFvF1v8uAnNlQk0b+
+wjyUn0r9x6KF8tj+s4qjyzwkg0Vy1A9/goDKD93HG1C9aieulrBepEmzkfiiD5W2
+hJzphvBf+lTUNcJXOllxiDQzyQKBgQDDkYDXuMwlMV3fBv5+wNGsuADSVal/1Bz6
+Q91NUnqTMFbOAgEvJy4e/5gle6MCBkqmD08rYcQAQbB1Tgr23CWoXbWn2GSlChoY
+ugDEz/q+heLjFkZU/T/xpTGtFpnfSUlP+7oXlyeEaXUMYnEW/UPI70AQPC3sDsuS
+H9VtBFE1RwKBgQCjsqEzqSWWbhjgsPi8zAlJdTgsLP9kKL0yZcqDUbhF8qyOJpSM
+epr2B/WXf1wGBSg9K2hNCiBmT5ZbjdJQCOa/4UGMMFVwEl0WJfahfcOWeZlCZ/xk
+NE6B8+Fwgqsgp9jUf/NzMmyroC35YZAqkqS5PRTrPYkI0jod/QS6avu4SQKBgGpe
+89NhwjfgmAw8w6OxwNnO4zOEQEM03eYJj48E84KnYi9+y6IYD2/w2ZJZoxnwzh1w
+akFQVclF8XJ8Vl5a82iWP73hZyyVSAh28wAZl2qVbAjUDsEfVe5bSZ+5kUvvkp6c
+bmVyY54TtgRcbuJwMrRR3Wh3MwsYKQV7pxw6ouj1AoGANuZe1rxkCGZbUTrhtuma
+ZxI0NTZjEBVL69m9nlGggEq8tn2j18gaXWq0aEkqIo4/AEHWDyageBAFixTfq+qe
+vDHlzeSaTD3I2NCNk0+W6QWU8duel6byeoLyb5fhVeRxddg6ZuzjC5pSC9XVIxDR
+wwFKsfxWpJ2tHMOiif2plww=
 -----END PRIVATE KEY-----

--
Gitblit v1.7.1