From 45384368019310c6e2173d1fa087131885016ebc Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期一, 21 四月 2025 15:57:27 +0800
Subject: [PATCH] 修改监管平台上传服务配置及增加手动退款接口

---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java |   67 ++++++++++++++++++++++
 ruoyi-service/ruoyi-jianguan/pom.xml                                                                |   11 ---
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java          |    4 +
 ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/RuoYiJianGuanApplication.java         |    7 +-
 ruoyi-service/ruoyi-jianguan/src/main/resources/bootstrap.yml                                       |   71 +----------------------
 ruoyi-service/ruoyi-jianguan/src/main/resources/logback.xml                                         |    2 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java    |   13 ++++
 7 files changed, 92 insertions(+), 83 deletions(-)

diff --git a/ruoyi-service/ruoyi-jianguan/pom.xml b/ruoyi-service/ruoyi-jianguan/pom.xml
index 2a4bd64..71d6251 100644
--- a/ruoyi-service/ruoyi-jianguan/pom.xml
+++ b/ruoyi-service/ruoyi-jianguan/pom.xml
@@ -37,11 +37,6 @@
             <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
         </dependency>
 
-        <dependency>
-            <groupId>com.alibaba.cloud</groupId>
-            <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
-        </dependency>
-
         <!-- SpringBoot Actuator -->
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -140,12 +135,6 @@
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-data-mongodb</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>com.huaweicloud.sdk</groupId>
-            <artifactId>huaweicloud-sdk-bundle</artifactId>
-            <version>3.1.87</version>
         </dependency>
 
         <dependency>
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/RuoYiJianGuanApplication.java b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/RuoYiJianGuanApplication.java
index c24d86f..d349657 100644
--- a/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/RuoYiJianGuanApplication.java
+++ b/ruoyi-service/ruoyi-jianguan/src/main/java/com/ruoyi/jianguan/RuoYiJianGuanApplication.java
@@ -1,17 +1,15 @@
 package com.ruoyi.jianguan;
 
-import com.huaweicloud.sdk.thirdparty.okio.Sink;
 import com.ruoyi.common.security.annotation.EnableCustomConfig;
 import com.ruoyi.common.security.annotation.EnableRyFeignClients;
 import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2;
-import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.stream.annotation.EnableBinding;
+import org.springframework.cloud.stream.messaging.Sink;
+import org.springframework.cloud.stream.messaging.Source;
 import org.springframework.scheduling.annotation.EnableScheduling;
-import org.springframework.transaction.annotation.EnableTransactionManagement;
 
-import javax.xml.transform.Source;
 
 /**
  * 账户模块
@@ -22,6 +20,7 @@
 @EnableRyFeignClients
 @SpringBootApplication
 @EnableScheduling//开启定时任务
+@EnableBinding({ Source.class, Sink.class })
 public class RuoYiJianGuanApplication {
     public static void main(String[] args) {
         SpringApplication.run(RuoYiJianGuanApplication.class, args);
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/resources/bootstrap.yml b/ruoyi-service/ruoyi-jianguan/src/main/resources/bootstrap.yml
index 2f1ce82..e0d0a05 100644
--- a/ruoyi-service/ruoyi-jianguan/src/main/resources/bootstrap.yml
+++ b/ruoyi-service/ruoyi-jianguan/src/main/resources/bootstrap.yml
@@ -1,5 +1,5 @@
 server:
-  port: 9701
+  port: 9900
   tomcat:
     basedir: /data/tomcat
 # Spring
@@ -12,8 +12,8 @@
     allow-circular-references: true
   profiles:
     # 环境配置
-    active: dev
-#    active: prod
+#    active: dev
+    active: prod
     
 ---
 spring:
@@ -43,70 +43,7 @@
         # 共享配置
         shared-configs:
           - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
----
-seata:
-  enabled: true
-  application-id: ${spring.application.name}
-  tx-service-group: seata_tx_group    #此处配置自定义的seata事务分组名称
-  enable-auto-data-source-proxy: false    #关闭数据库代理
-  service:
-    vgroup-mapping:
-      seata_tx_group: default
-  data-source-proxy-mode: AT
-  config:
-    type: nacos
-    nacos:
-      # 开发环境
-      server-addr: 192.168.110.169:8848
-      namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
-      group: DEFAULT_GROUP
-      data-id: seata-server.properties
-      username: nacos
-      password: nacos
-      # 生产环境
-#      server-addr: 192.168.0.137:8848,192.168.0.123:8848
-#      namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a
-#      group: DEFAULT_GROUP
-#      data-id: seata-server.properties
-#      username: nacos
-#      password: nacos
-  registry:
-    type: nacos
-    nacos:
-      application: seata-server
-      # 开发环境
-      server-addr: 192.168.110.169:8848
-      namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
-      group: DEFAULT_GROUP
-      username: nacos
-      password: nacos
-      # 生产环境
-#      server-addr: 192.168.0.137:8848,192.168.0.123:8848
-#      namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a
-#      group: DEFAULT_GROUP
-#      username: nacos
-#      password: nacos
-  cloud:
-    nacos:
-      discovery:
-        # 开发环境
-        server-addr: 192.168.110.169:8848 # nacos注册中心地址
-        namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb # 命名空间
-        group: DEFAULT_GROUP
-        application: seata-server #Nacos 中 Seata 名称
-        username: nacos
-        password: nacos
-        # 生产环境
-#        server-addr: 192.168.0.137:8848,192.168.0.123:8848
-#        namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a
-#        group: DEFAULT_GROUP
-#        application: seata-server #Nacos 中 Seata 名称
-#        username: nacos
-#        password: nacos
-    sentinel:
-      transport:
-        dashboard: 127.0.0.1:8080  #  Sentinel控制台地址
-      eager: true
+
 ---
 spring:
   config:
diff --git a/ruoyi-service/ruoyi-jianguan/src/main/resources/logback.xml b/ruoyi-service/ruoyi-jianguan/src/main/resources/logback.xml
index 535b51c..3ab2ecd 100644
--- a/ruoyi-service/ruoyi-jianguan/src/main/resources/logback.xml
+++ b/ruoyi-service/ruoyi-jianguan/src/main/resources/logback.xml
@@ -7,7 +7,7 @@
 	<contextName>logback</contextName>
 	
 	<!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
-	<property name="log.path" value="/data/log/app/ruoyi-integration"/>
+	<property name="log.path" value="/data/log/app/ruoyi-jianguan"/>
 	
 	<!--0. 日志格式和颜色渲染 -->
 	<!-- 彩色日志依赖的渲染类 -->
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
index e452064..c6549e6 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TChargingOrderController.java
@@ -862,6 +862,19 @@
     
     
     /**
+     *
+     * @param code
+     */
+    @ResponseBody
+    @PostMapping(value = "/refund1")
+    public R refund1(@RequestParam(value = "code") String code, @RequestParam(value = "money") BigDecimal money){
+        chargingOrderService.refund1(code, money);
+        return R.ok();
+    }
+    
+    
+    
+    /**
      * 远程启动失败后退款回调
      */
     @ResponseBody
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
index 475d8a4..509ce4b 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/TChargingOrderService.java
@@ -108,6 +108,10 @@
 	 * @param code
 	 */
 	void refund(String code);
+	
+	
+	
+	void refund1(String code, BigDecimal money);
 
 	/**
 	 * 获取充电中的详情
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
index f1501af..5a98a2a 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -972,6 +972,73 @@
 
 		}
 	}
+	
+	
+	
+	public void refund1(String code, BigDecimal money){
+		log.info(code + ":-------------------充电成功,执行手动退款-------------------");
+		TChargingOrder chargingOrder = this.getOne(new LambdaQueryWrapper<TChargingOrder>().eq(TChargingOrder::getCode, code));
+		if(chargingOrder.getOrderSource() == 1){
+			BigDecimal rechargeAmount = chargingOrder.getRechargeAmount();
+			Integer rechargePaymentType = chargingOrder.getRechargePaymentType();
+			//构建退款明细
+			TChargingOrderRefund chargingOrderRefund = new TChargingOrderRefund();
+			chargingOrderRefund.setChargingOrderId(chargingOrder.getId());
+			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
+			chargingOrderRefund.setRefundCode("CDF" + sdf.format(new Date()) + Double.valueOf(Math.random() * 1000).intValue());
+			chargingOrderRefund.setRefundAmount(money);
+			chargingOrderRefund.setRefundStatus(1);
+			chargingOrderRefund.setPayType(rechargePaymentType);
+			chargingOrderRefund.setRefundStatus(1);
+			chargingOrderRefund.setCode(code);
+			chargingOrderRefund.setRefundTitle("充电完成退款");
+			chargingOrderRefund.setRefundContent("充电完成退款");
+			chargingOrderRefund.setRefundReason("充电完成退款");
+			chargingOrderRefund.setRefundRemark("充电完成退款,手动退款");
+			chargingOrderRefund.setRefundTotalAmount(money);
+			chargingOrderRefund.setPayAmount(money);
+			if(1 == rechargePaymentType){
+				WxPaymentRefundModel model = new WxPaymentRefundModel();
+				model.setOut_trade_no(chargingOrder.getCode());
+				model.setOut_refund_no(chargingOrderRefund.getRefundCode());
+				model.setReason("充电完成退款");
+				model.setNotify_url("/payment/wx/refund/notify");
+				WxPaymentRefundModel.RefundAmount amount = new WxPaymentRefundModel.RefundAmount();
+				amount.setRefund(money.multiply(new BigDecimal(100)).intValue());
+				amount.setTotal(rechargeAmount.multiply(new BigDecimal(100)).intValue());
+				amount.setCurrency("CNY");
+				model.setAmount(amount);
+				R<Map<String, Object>> orderR = wxPaymentClient.refundOrderR(model);
+				if(200 == orderR.getCode()){
+					chargingOrderRefundService.save(chargingOrderRefund);
+					//手续费
+					Map<String, Object> amount1 = (Map<String, Object>) orderR.getData().get("amount");
+					Object refund_fee1 = amount1.get("refund_fee");
+					BigDecimal refund_fee = new BigDecimal(null == refund_fee1 ? "0" : refund_fee1.toString()).divide(new BigDecimal(100));
+					chargingOrderRefund.setRefundFee(refund_fee);
+					chargingOrderRefundService.updateById(chargingOrderRefund);
+				}
+			}
+			if(2 == rechargePaymentType){
+				RefundReq dto = new RefundReq();
+				dto.setOutTradeNo(chargingOrder.getCode());
+				dto.setOutRequestNo(chargingOrderRefund.getCode());
+				dto.setRefundAmount(money.toString());
+				dto.setRefundReason("充电完成退款");
+				RefundResp resp = aliPaymentClient.refund(dto).getData();
+				if(null != resp){
+					chargingOrderRefundService.save(chargingOrderRefund);
+					try {
+						Thread.sleep(1000);
+					} catch (InterruptedException e) {
+						throw new RuntimeException(e);
+					}
+					chargingOrderStartupFailureWxRefund(chargingOrderRefund.getRefundCode(), resp.getTradeNo(), "SUCCESS", null);
+				}
+			}
+			
+		}
+	}
 
 
 	/**

--
Gitblit v1.7.1