From 6851a3e83b5bcf27688688660073cb21bcc61eb6 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 07 十一月 2024 11:56:30 +0800
Subject: [PATCH] 提交代码
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 11 +--
ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/ParkingOrderService.java | 26 +++++---
ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/AliPayController.java | 90 ++++++++++++++++++++++--------
ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/feignClient/AliPaymentClient.java | 7 +-
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java | 7 ++
5 files changed, 96 insertions(+), 45 deletions(-)
diff --git a/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/feignClient/AliPaymentClient.java b/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/feignClient/AliPaymentClient.java
index 496217c..357bdc9 100644
--- a/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/feignClient/AliPaymentClient.java
+++ b/ruoyi-api/ruoyi-api-payment/src/main/java/com/ruoyi/payment/api/feignClient/AliPaymentClient.java
@@ -11,6 +11,7 @@
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
/**
* @author zhibing.pu
@@ -26,7 +27,7 @@
* @return
*/
@PostMapping("/ali/payment")
- R<AliPaymentResp> payment(AliPaymentReq req);
+ R<AliPaymentResp> payment(@RequestBody AliPaymentReq req);
/**
@@ -35,14 +36,14 @@
* @return
*/
@PostMapping("/ali/query")
- R<AliQueryOrder> query(String outTradeNo);
+ R<AliQueryOrder> query(@RequestParam("outTradeNo") String outTradeNo);
/**
* 关闭订单
* @param outTradeNo
*/
@PostMapping("/ali/close")
- void close(String outTradeNo);
+ void close(@RequestParam("outTradeNo") String outTradeNo);
/**
* 后台退款 远程调用
*/
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index 16f9f89..673d496 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -13,6 +13,7 @@
import com.ruoyi.chargingPile.api.feignClient.SiteClient;
import com.ruoyi.chargingPile.api.model.Site;
import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.other.api.feignClient.RoleSiteClient;
import com.ruoyi.other.api.feignClient.UserSiteClient;
import com.ruoyi.system.api.query.ChangeUserQuery;
@@ -89,6 +90,9 @@
@Resource
private ISysRoleService sysRoleService;
+
+ @Resource
+ private TokenService tokenService;
/**
@@ -235,7 +239,8 @@
*/
@Override
public void checkUserAllowed(SysUser user) {
- if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin()) {
+ Long userid = tokenService.getLoginUser().getUserid();
+ if (StringUtils.isNotNull(user.getUserId()) && !userid.equals(user.getUserId()) && user.isAdmin()) {
throw new ServiceException("不允许操作超级管理员用户");
}
}
diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/ParkingOrderService.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/ParkingOrderService.java
index 613a09e..75440f0 100644
--- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/ParkingOrderService.java
+++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/barrierGate/server/ParkingOrderService.java
@@ -108,18 +108,12 @@
TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
parkingRecord.setPhone(appUser.getPhone());
parkingRecord.setFreeDuration(parkingLot.getChargeFreeDuration());
- //超时占位费
- long out = parkingRecord.getOutParkingTime().atZone(ZoneId.systemDefault()).toEpochSecond();
- long in = parkingRecord.getInParkingTime().atZone(ZoneId.systemDefault()).toEpochSecond();
- long m = (out - in) / 60;
+ long m = parkingRecord.getParkingDuration() - parkingRecord.getFreeDuration();
parkingRecord.setTimeoutAmount(m > parkingLot.getChargeFreeDuration() ? new BigDecimal(m - parkingLot.getChargeFreeDuration()).multiply(parkingLot.getChargeRate()) : BigDecimal.ZERO);
}else{
parkingRecord.setFreeDuration(parkingLot.getNonChargeFreeDuration());
- //超时占位费
- long out = parkingRecord.getOutParkingTime().atZone(ZoneId.systemDefault()).toEpochSecond();
- long in = parkingRecord.getInParkingTime().atZone(ZoneId.systemDefault()).toEpochSecond();
- long m = (out - in) / 60;
+ long m = parkingRecord.getParkingDuration() - parkingRecord.getFreeDuration();
parkingRecord.setTimeoutAmount(m > parkingLot.getNonChargeFreeDuration() ? new BigDecimal(m - parkingLot.getNonChargeFreeDuration()).multiply(parkingLot.getChargeRate()) : BigDecimal.ZERO);
}
}
@@ -170,9 +164,8 @@
query.setLicensePlate(order.getPlatenumber());
query.setStatus(1);
TParkingRecord parkingRecord = parkingRecordClient.getParkingRecord(query).getData();
- LocalDateTime parse = LocalDateTime.parse(order.getLeavetime(), DateTimeFormatter.ISO_DATE_TIME);
- parse = parse.plusHours(8);
- parkingRecord.setOutParkingTime(parse);
+ TParkingLot parkingLot = parkingLotClient.getParkingLotByAppKey(order.getAppkey()).getData();
+ parkingRecord.setOutParkingTime(LocalDateTime.now());
parkingRecord.setParkingDuration(Integer.valueOf(order.getLongTime()));
parkingRecord.setOrderAmount(new BigDecimal(order.getMoney()));
parkingRecord.setPayment(new BigDecimal(order.getMoney()));
@@ -188,8 +181,19 @@
TChargingOrder chargingOrder = data.get(0);
parkingRecord.setAppUserId(chargingOrder.getAppUserId());
parkingRecord.setChargingOrderId(chargingOrder.getId());
+ TAppUser appUser = appUserClient.getUserById(chargingOrder.getAppUserId()).getData();
+ parkingRecord.setPhone(appUser.getPhone());
+ parkingRecord.setFreeDuration(parkingLot.getChargeFreeDuration());
+ long m = parkingRecord.getParkingDuration() - parkingRecord.getFreeDuration();
+ parkingRecord.setTimeoutAmount(m > parkingLot.getChargeFreeDuration() ? new BigDecimal(m - parkingLot.getChargeFreeDuration()).multiply(parkingLot.getChargeRate()) : BigDecimal.ZERO);
+
+ }else{
+ parkingRecord.setFreeDuration(parkingLot.getNonChargeFreeDuration());
+ long m = parkingRecord.getParkingDuration() - parkingRecord.getFreeDuration();
+ parkingRecord.setTimeoutAmount(m > parkingLot.getNonChargeFreeDuration() ? new BigDecimal(m - parkingLot.getNonChargeFreeDuration()).multiply(parkingLot.getChargeRate()) : BigDecimal.ZERO);
}
}
+ parkingRecord.setFreeAmount(parkingRecord.getOrderAmount().subtract(parkingRecord.getPayment()));
parkingRecordClient.updateParkingRecord(parkingRecord);
}
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 cf56997..b0d5ed6 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
@@ -882,8 +882,7 @@
dto.setRefundReason("充电失败,取消充电订单");
RefundResp resp = aliPaymentClient.refund(dto).getData();
if(null != resp){
- SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-DDTHH:mm:ss+TIMEZONE");
- AjaxResult success = chargingOrderStartupFailureWxRefund(resp.getOutTradeNo(), resp.getTradeNo(), "SUCCESS", sdf1.format(new Date()));
+ AjaxResult success = chargingOrderStartupFailureWxRefund(resp.getOutTradeNo(), resp.getTradeNo(), "SUCCESS", null);
if(success.isSuccess()){
chargingOrderRefundService.save(chargingOrderRefund);
}
@@ -959,10 +958,11 @@
chargingDetails.setChargedTime(String.format("%02d", h) + ":" + String.format("%02d", m));
}
if(null != data && null != one.getAppUserCarId()){
- TAppUserCar appUserCar = appUserCarClient.getCarByIds(Arrays.asList(one.getAppUserCarId())).getData().get(0);
+ TAppUserCar appUserCar = appUserCarClient.getCarById(one.getAppUserCarId().toString()).getData();
// 续航 = 续航里程 * soc
BigDecimal multiply = new BigDecimal(data.getSoc() / 100).multiply(new BigDecimal(appUserCar.getEndurance()));
- chargingDetails.setEndurance(multiply);
+ chargingDetails.setEndurance(multiply.setScale(2, RoundingMode.HALF_EVEN));
+ System.err.println("续航--" + multiply);
}
return chargingDetails;
}
@@ -2180,8 +2180,7 @@
dto.setRefundReason("充电完成退款");
RefundResp resp = aliPaymentClient.refund(dto).getData();
if(null != resp){
- SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-DDTHH:mm:ss+TIMEZONE");
- AjaxResult success = chargingOrderStartupFailureWxRefund(resp.getOutTradeNo(), resp.getTradeNo(), "SUCCESS", sdf1.format(new Date()));
+ AjaxResult success = chargingOrderStartupFailureWxRefund(resp.getOutTradeNo(), resp.getTradeNo(), "SUCCESS", null);
if(success.isSuccess()){
chargingOrderRefundService.save(chargingOrderRefund);
}
diff --git a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/AliPayController.java b/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/AliPayController.java
index 886a184..0d927f1 100644
--- a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/AliPayController.java
+++ b/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/AliPayController.java
@@ -1,5 +1,7 @@
package com.ruoyi.payment.controller;
+import com.alipay.api.AlipayApiException;
+import com.alipay.api.internal.util.AlipaySignature;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.order.api.feignClient.ChargingOrderClient;
@@ -14,8 +16,12 @@
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
/**
* @author zhibing.pu
@@ -95,39 +101,75 @@
private ChargingOrderClient chargingOrderClient;
@ResponseBody
@PostMapping(value = "/callBack")
- public void chargingOrderALICallback(AliQueryOrder aliQueryOrder, HttpServletResponse response) {
+ public void chargingOrderALICallback(HttpServletRequest request, HttpServletResponse response) {
try {
- String out_trade_no = aliQueryOrder.getOutTradeNo();
- String transaction_id = aliQueryOrder.getTradeNo();
- String attach = aliQueryOrder.getPassbackParams();
- String substring = out_trade_no.substring(0, 2);
- switch (substring){
- //购物订单
- case "GW":
- R r = orderClient.callBack(out_trade_no, transaction_id);
- System.err.println("----收到购物回调");
- break;
- case "HY":
- orderClient.vipCallBack(out_trade_no,transaction_id);
- System.err.println("----收到会员回调");
- break;
- case "CD":
- chargingOrderClient.chargingOrderALICallback(out_trade_no, transaction_id, attach);
- System.err.println("----充电支付回调");
- break;
+ Map<String, String> callback = alipayCallback(request);
+ if(null != callback){
+ String out_trade_no = callback.get("out_trade_no");
+ String attach = callback.get("subject");
+ String total_amount = callback.get("total_amount");
+ String transaction_id = callback.get("trade_no");
+ String substring = out_trade_no.substring(0, 2);
+ switch (substring){
+ //购物订单
+ case "GW":
+ R r = orderClient.callBack(out_trade_no, transaction_id);
+ System.err.println("----收到购物回调");
+ break;
+ case "HY":
+ orderClient.vipCallBack(out_trade_no,transaction_id);
+ System.err.println("----收到会员回调");
+ break;
+ case "CD":
+ chargingOrderClient.chargingOrderALICallback(out_trade_no, transaction_id, attach);
+ System.err.println("----充电支付回调");
+ break;
+ }
+ PrintWriter writer = response.getWriter();
+ writer.println("success");
+ writer.flush();
+ writer.close();
}
- PrintWriter writer = response.getWriter();
- writer.println("success");
- writer.flush();
- writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
-
+ public Map<String, String> alipayCallback(HttpServletRequest request){
+ Map<String,String> params = new HashMap<String,String>();
+ Map requestParams = request.getParameterMap();
+ for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
+ String name = (String) iter.next();
+ String[] values = (String[]) requestParams.get(name);
+ String valueStr = "";
+ for (int i = 0; i < values.length; i++) {
+ valueStr = (i == values.length - 1) ? valueStr + values[i]
+ : valueStr + values[i] + ",";
+ }
+ params.put(name, valueStr);
+ }
+ try {
+ boolean flag = AlipaySignature.rsaCheckV1(params, aliProperties.getAlipayPublicKey(), "UTF-8","RSA2");
+ if(flag){
+ Map<String, String> map = new HashMap<>();
+ String out_trade_no = params.get("out_trade_no");
+ String subject = params.get("subject");
+ String total_amount = params.get("total_amount");
+ String trade_no = params.get("trade_no");
+ map.put("out_trade_no", out_trade_no);//商家订单号
+ map.put("subject", subject);
+ map.put("total_amount", total_amount);
+ map.put("trade_no", trade_no);//支付宝交易号
+ return map;
+ }
+
+ } catch (AlipayApiException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
}
--
Gitblit v1.7.1