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