From 35601b1455ec05ece1414bd288fa38944c03bfdd Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 26 九月 2024 20:15:17 +0800
Subject: [PATCH] 修改bug
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java | 3
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java | 89 +++++++++-
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java | 113 +++++++------
ruoyi-gateway/src/main/resources/bootstrap.yml | 22 +-
ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml | 55 ++----
ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java | 14 +
ruoyi-service/ruoyi-chargingPile/src/main/resources/bootstrap.yml | 55 ++----
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/RedisLock.java | 51 ++++++
ruoyi-auth/src/main/resources/bootstrap.yml | 22 +-
9 files changed, 250 insertions(+), 174 deletions(-)
diff --git a/ruoyi-auth/src/main/resources/bootstrap.yml b/ruoyi-auth/src/main/resources/bootstrap.yml
index 4377cca..0122628 100644
--- a/ruoyi-auth/src/main/resources/bootstrap.yml
+++ b/ruoyi-auth/src/main/resources/bootstrap.yml
@@ -22,24 +22,18 @@
nacos:
discovery:
# 服务注册地址
-# server-addr: 192.168.110.169:8848
+ server-addr: 192.168.110.169:8848
service: ${spring.application.name}
group: DEFAULT_GROUP
-# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
-# username: nacos
-# password: nacos
-
- server-addr: 127.0.0.1:8848
- namespace: 9e80b38d-9abb-4602-b4da-174f6f79d8d1
+ namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
+ username: nacos
+ password: nacos
config:
# 配置中心地址
-# server-addr: 192.168.110.169:8848
-# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
-# username: nacos
-# password: nacos
-
- server-addr: 127.0.0.1:8848
- namespace: 9e80b38d-9abb-4602-b4da-174f6f79d8d1
+ server-addr: 192.168.110.169:8848
+ namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
+ username: nacos
+ password: nacos
group: DEFAULT_GROUP
name: ${spring.application.name}
# 配置文件格式
diff --git a/ruoyi-gateway/src/main/resources/bootstrap.yml b/ruoyi-gateway/src/main/resources/bootstrap.yml
index ccdca4c..1beff53 100644
--- a/ruoyi-gateway/src/main/resources/bootstrap.yml
+++ b/ruoyi-gateway/src/main/resources/bootstrap.yml
@@ -22,25 +22,19 @@
nacos:
discovery:
# 服务注册地址
-# server-addr: 192.168.110.169:8848
+ server-addr: 192.168.110.169:8848
service: ${spring.application.name}
group: DEFAULT_GROUP
-# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
-# username: nacos
-# password: nacos
-
- server-addr: 127.0.0.1:8848
- namespace: 9e80b38d-9abb-4602-b4da-174f6f79d8d1
+ namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
+ username: nacos
+ password: nacos
config:
# 配置中心地址
-# server-addr: 192.168.110.169:8848
-# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
-# username: nacos
-# password: nacos
+ server-addr: 192.168.110.169:8848
+ namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
+ username: nacos
+ password: nacos
group: DEFAULT_GROUP
-
- server-addr: 127.0.0.1:8848
- namespace: 9e80b38d-9abb-4602-b4da-174f6f79d8d1
name: ${spring.application.name}
# 配置文件格式
file-extension: yml
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml
index 0fabec1..d837d2b 100644
--- a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml
+++ b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml
@@ -21,25 +21,19 @@
nacos:
discovery:
# 服务注册地址
-# server-addr: 192.168.110.169:8848
+ server-addr: 192.168.110.169:8848
service: ${spring.application.name}
group: DEFAULT_GROUP
-# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
-# username: nacos
-# password: nacos
-
- server-addr: 127.0.0.1:8848
- namespace: 9e80b38d-9abb-4602-b4da-174f6f79d8d1
+ namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
+ username: nacos
+ password: nacos
config:
# 配置中心地址
-# server-addr: 192.168.110.169:8848
-# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
+ server-addr: 192.168.110.169:8848
+ namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
group: DEFAULT_GROUP
-# username: nacos
-# password: nacos
-
- server-addr: 127.0.0.1:8848
- namespace: 9e80b38d-9abb-4602-b4da-174f6f79d8d1
+ username: nacos
+ password: nacos
name: ${spring.application.name}
# 配置文件格式
file-extension: yml
@@ -60,15 +54,12 @@
type: nacos
nacos:
# 开发环境
-# server-addr: 192.168.110.169:8848
-# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
+ 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: 127.0.0.1:8848
- namespace: 9e80b38d-9abb-4602-b4da-174f6f79d8d1
+ username: nacos
+ password: nacos
# 生产环境
# server-addr: 192.168.0.137:8848,192.168.0.123:8848
# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a
@@ -81,14 +72,11 @@
nacos:
application: seata-server
# 开发环境
-# server-addr: 192.168.110.169:8848
-# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
+ server-addr: 192.168.110.169:8848
+ namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
group: DEFAULT_GROUP
-# username: nacos
-# password: nacos
-
- server-addr: 127.0.0.1:8848
- namespace: 9e80b38d-9abb-4602-b4da-174f6f79d8d1
+ username: nacos
+ password: nacos
# 生产环境
# server-addr: 192.168.0.137:8848,192.168.0.123:8848
# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a
@@ -99,15 +87,12 @@
nacos:
discovery:
# 开发环境
-# server-addr: 192.168.110.169:8848 # nacos注册中心地址
-# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb # 命名空间
+ 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: 127.0.0.1:8848
- namespace: 9e80b38d-9abb-4602-b4da-174f6f79d8d1
+ username: nacos
+ password: nacos
# 生产环境
# server-addr: 192.168.0.137:8848,192.168.0.123:8848
# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
index ecb1330..b8db1ec 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TChargingGunController.java
@@ -14,6 +14,7 @@
import com.ruoyi.chargingPile.api.vo.GunStatusStatisticsVO;
import com.ruoyi.chargingPile.api.vo.SiteNameVO;
import com.ruoyi.chargingPile.api.vo.TChargingGunVO;
+import com.ruoyi.chargingPile.config.FileUploadConfig;
import com.ruoyi.chargingPile.service.ISiteService;
import com.ruoyi.chargingPile.service.TChargingGunService;
import com.ruoyi.chargingPile.service.TChargingPileService;
@@ -63,13 +64,16 @@
@Autowired
private TChargingGunService chargingGunService;
- @Autowired
+ @Resource
private ChargingOrderClient chargingOrderClient;
@Resource
private TChargingPileService chargingPileService;
@Resource
private ISiteService siteService;
+
+ @Autowired
+ private FileUploadConfig fileUploadConfig;
/**
* 查询充电枪列表
@@ -152,11 +156,13 @@
public void downloadQRCode(@PathVariable Integer id, HttpServletResponse response){
try {
TChargingGun chargingGun = chargingGunService.getById(id);
- String fileName = URLEncoder.encode(chargingGun.getCode(), "UTF-8") + ".jpg";
+ TChargingPile chargingPile = chargingPileService.getById(chargingGun.getId());
+ String code = chargingPile.getCode() + chargingGun.getCode();
+ String fileName = URLEncoder.encode(code, "UTF-8") + ".jpg";
response.setContentType("application/force-download");
response.addHeader("Content-Disposition", "attachment;fileName=" + fileName);
- String url = "https://www.baidu.com?id=" + id;
- String filePath = "D:/Program Files/nginx-1.20.2/html";
+ String url = "https://mxcd.zhinenganguan.com?No=" + code;
+ String filePath = fileUploadConfig.getLocation();
QRCodeUtils.encode(url, filePath);
FileInputStream inputStream = new FileInputStream(filePath);
ServletOutputStream out = response.getOutputStream();
diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/bootstrap.yml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/bootstrap.yml
index bd39d02..af5069b 100644
--- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/bootstrap.yml
+++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/bootstrap.yml
@@ -22,26 +22,20 @@
nacos:
discovery:
# 服务注册地址
-# server-addr: 192.168.110.169:8848
+ server-addr: 192.168.110.169:8848
service: ${spring.application.name}
group: DEFAULT_GROUP
-# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
-# username: nacos
-# password: nacos
-
- server-addr: 127.0.0.1:8848
- namespace: 9e80b38d-9abb-4602-b4da-174f6f79d8d1
+ namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
+ username: nacos
+ password: nacos
config:
# 配置中心地址
-# server-addr: 192.168.110.169:8848
-# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
+ server-addr: 192.168.110.169:8848
+ namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
group: DEFAULT_GROUP
name: ${spring.application.name}
-# username: nacos
-# password: nacos
-
- server-addr: 127.0.0.1:8848
- namespace: 9e80b38d-9abb-4602-b4da-174f6f79d8d1
+ username: nacos
+ password: nacos
# 配置文件格式
file-extension: yml
# 共享配置
@@ -61,15 +55,12 @@
type: nacos
nacos:
# 开发环境
-# server-addr: 192.168.110.169:8848
-# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
+ 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: 127.0.0.1:8848
- namespace: 9e80b38d-9abb-4602-b4da-174f6f79d8d1
+ username: nacos
+ password: nacos
# 生产环境
# server-addr: 192.168.0.137:8848,192.168.0.123:8848
# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a
@@ -82,14 +73,11 @@
nacos:
application: seata-server
# 开发环境
-# server-addr: 192.168.110.169:8848
-# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
+ server-addr: 192.168.110.169:8848
+ namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb
group: DEFAULT_GROUP
-# username: nacos
-# password: nacos
-
- server-addr: 127.0.0.1:8848
- namespace: 9e80b38d-9abb-4602-b4da-174f6f79d8d1
+ username: nacos
+ password: nacos
# 生产环境
# server-addr: 192.168.0.137:8848,192.168.0.123:8848
# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a
@@ -100,15 +88,12 @@
nacos:
discovery:
# 开发环境
-# server-addr: 192.168.110.169:8848 # nacos注册中心地址
-# namespace: b5290bc2-e3aa-4988-8a7d-9c07e4e073cb # 命名空间
+ 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: 127.0.0.1:8848
- namespace: 9e80b38d-9abb-4602-b4da-174f6f79d8d1
+ username: nacos
+ password: nacos
# 生产环境
# server-addr: 192.168.0.137:8848,192.168.0.123:8848
# namespace: c6cf40b5-44e8-43f9-be61-8d10fa830e2a
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java
index 83ea8cf..6f50e62 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/TShoppingOrderController.java
@@ -1,4 +1,5 @@
package com.ruoyi.order.controller;
+
import java.math.BigDecimal;
import java.time.LocalDateTime;
@@ -41,7 +42,7 @@
/**
* <p>
- * 前端控制器
+ * 前端控制器
* </p>
*
* @author xiaochen
@@ -60,14 +61,24 @@
private GoodsClient goodsClient;
@Resource
private CouponClient couponClient;
-
-
+ @Resource
+ private TokenService tokenService;
+ @Resource
+ private AliPaymentClient aliPaymentClient;
+ @Resource
+ private WxPaymentClient wxPaymentClient;
+ @Resource
+ private AppCouponClient appCouponClient;
+ @Resource
+ private SysUserClient sysUserClient;
+
+
@PostMapping("/getShoppingOrderList")
@ApiOperation(value = "列表查询", tags = {"管理后台-购物订单"})
public AjaxResult<PageInfo<TShoppingOrder>> getShoppingOrderList(@RequestBody ShoppingOrderQuery query) {
if (StringUtils.hasLength(query.getPhone())) {
List<Long> data = appUserClient.getUserIdsByPhone(query.getPhone()).getData();
- if (data.isEmpty()){
+ if (data.isEmpty()) {
return AjaxResult.success(new PageInfo<TShoppingOrder>());
}
query.setUserIds(data);
@@ -77,54 +88,47 @@
query.setGoodsIds(data);
List<Integer> data1 = couponClient.getCouponIdsByName(query.getName()).getData();
query.setCouponIds(data1);
- if (data.isEmpty() && data1.isEmpty()){
+ if (data.isEmpty() && data1.isEmpty()) {
return AjaxResult.success(new PageInfo<TShoppingOrder>());
}
}
PageInfo<TShoppingOrder> res = shoppingOrderService.pageList(query);
return AjaxResult.success(res);
}
- @Resource
- private SysUserClient sysUserClient;
+
@GetMapping("/getShoppingOrderInfoById")
@ApiOperation(value = "根据订单id查看订单详情", tags = {"管理后台-购物订单"})
public AjaxResult<TShoppingOrder> getShoppingOrderList(String id) {
TShoppingOrder byId = shoppingOrderService.getById(id);
- if (byId.getConsignerId()!=null){
+ if (byId.getConsignerId() != null) {
SysUser data = sysUserClient.getSysUser(byId.getConsignerId()).getData();
- if (data!=null){
+ if (data != null) {
byId.setConsignerName(data.getUserName());
}
}
- if (byId.getCancellationId()!=null){
+ if (byId.getCancellationId() != null) {
SysUser data = sysUserClient.getSysUser(byId.getCancellationId()).getData();
- if (data!=null){
+ if (data != null) {
byId.setCancellationName(data.getUserName());
}
}
- if (byId.getAppUserAddressId()!=null){
+ if (byId.getAppUserAddressId() != null) {
TAppUserAddress data = appUserClient.getAddressById(byId.getAppUserAddressId()).getData();
- if (data!=null){
- byId.setReceivingName(data.getName()+"-"+data.getPhone());
+ if (data != null) {
+ byId.setReceivingName(data.getName() + "-" + data.getPhone());
byId.setReceivingAddress(data.getAddress());
}
}
return AjaxResult.success(byId);
}
+
@GetMapping("/deleteShoppingOrder")
@ApiOperation(value = "批量删除订单", tags = {"管理后台-购物订单"})
public AjaxResult<TShoppingOrder> deleteShoppingOrder(String ids) {
shoppingOrderService.removeBatchByIds(Arrays.asList(ids.split(",")));
return AjaxResult.success();
}
- @Resource
- private TokenService tokenService;
- @Resource
- private AliPaymentClient aliPaymentClient;
- @Resource
- private WxPaymentClient wxPaymentClient;
- @Resource
- private AppCouponClient appCouponClient;
+
@GetMapping("/cancelShoppingOrder")
@ApiOperation(value = "取消订单", tags = {"管理后台-购物订单"})
public AjaxResult cancelShoppingOrder(String id) {
@@ -134,7 +138,7 @@
byId.setCancellationId(userid);
byId.setCancellationTime(LocalDateTime.now());
byId.setStatus(4);
- switch (byId.getPaymentType()){
+ switch (byId.getPaymentType()) {
case 1:
// 微信
WxPaymentRefundModel wxPaymentRefundModel = new WxPaymentRefundModel();
@@ -144,8 +148,8 @@
// todo 部署到线上之后写回调地址
// wxPaymentRefundModel.setNotify_url("");
String string = byId.getPaymentAmount().multiply(new BigDecimal("100")).toString();
- if (string.contains(".")){
- string = string.substring(0,string.indexOf("."));
+ if (string.contains(".")) {
+ string = string.substring(0, string.indexOf("."));
}
int i = Integer.parseInt(string);
WxPaymentRefundModel.RefundAmount refundAmount = new WxPaymentRefundModel.RefundAmount();
@@ -163,10 +167,10 @@
refundReq.setRefundAmount(byId.getPaymentAmount().toString());
refundReq.setRefundReason("后台退款");
RefundResp data = aliPaymentClient.refund(refundReq).getData();
- if (data!=null){
+ if (data != null) {
// 退款成功 回退优惠券
// byId.setStatus(4);
- if (byId.getAppCouponId()!=null){
+ if (byId.getAppCouponId() != null) {
appCouponClient.refund(byId.getAppCouponId().toString());
byId.setRefundCode(gw);
byId.setRefundAmount(byId.getPaymentAmount());
@@ -179,9 +183,10 @@
shoppingOrderService.updateById(byId);
return AjaxResult.success();
}
+
@GetMapping("/consignerShoppingOrder")
@ApiOperation(value = "发货", tags = {"管理后台-购物订单"})
- public AjaxResult consignerShoppingOrder(String id,String companyName,String code) {
+ public AjaxResult consignerShoppingOrder(String id, String companyName, String code) {
TShoppingOrder byId = shoppingOrderService.getById(id);
byId.setExpressCompany(companyName);
byId.setExpressNumber(code);
@@ -192,16 +197,17 @@
shoppingOrderService.updateById(byId);
return AjaxResult.success();
}
+
@GetMapping("/getMyShoppingOrderList")
@ApiOperation(value = "获取购买订单列表", tags = {"小程序-商城购买订单"})
- public AjaxResult<Map<String, Object>> getMyShoppingOrderList(GetMyShoppingOrderList query){
+ public AjaxResult<Map<String, Object>> getMyShoppingOrderList(GetMyShoppingOrderList query) {
Map<String, Object> list = shoppingOrderService.getMyShoppingOrderList(query);
return AjaxResult.success(list);
}
-
+
@GetMapping("/getMyShoppingOrderListNum")
@ApiOperation(value = "获取购买订单列表数量", tags = {"小程序-商城购买订单"})
- public AjaxResult<Map<String, Object>> getMyShoppingOrderListNum(){
+ public AjaxResult<Map<String, Object>> getMyShoppingOrderListNum() {
Long userId = tokenService.getLoginUserApplet().getUserId();
long dfh = shoppingOrderService.count(new LambdaQueryWrapper<TShoppingOrder>().eq(TShoppingOrder::getDelFlag, 0)
.eq(TShoppingOrder::getStatus, 1).eq(TShoppingOrder::getAppUserId, userId));
@@ -215,29 +221,27 @@
map.put("ywc", ywc);
return AjaxResult.success(map);
}
-
@GetMapping("/getMyShoppingOrderInfo/{id}")
- @ApiOperation(value = "获取购买订单详情", tags = {"小程序-商城购买订单","管理后台-支付订单-订单信息"})
- public AjaxResult<MyShoppingOrderInfo> getMyShoppingOrderInfo(@PathVariable String id){
+ @ApiOperation(value = "获取购买订单详情", tags = {"小程序-商城购买订单", "管理后台-支付订单-订单信息"})
+ public AjaxResult<MyShoppingOrderInfo> getMyShoppingOrderInfo(@PathVariable String id) {
MyShoppingOrderInfo info = shoppingOrderService.getMyShoppingOrderInfo(id);
return AjaxResult.success(info);
}
-
@PutMapping("/confirmReceipt/{id}")
@ApiOperation(value = "确认收货操作", tags = {"小程序-商城购买订单"})
- public AjaxResult confirmReceipt(@PathVariable String id){
+ public AjaxResult confirmReceipt(@PathVariable String id) {
TShoppingOrder shoppingOrder = shoppingOrderService.getById(id);
- if(shoppingOrder.getStatus() == 3){
+ if (shoppingOrder.getStatus() == 3) {
return AjaxResult.error("不能重复确认收货");
}
- if(shoppingOrder.getStatus() == 1){
+ if (shoppingOrder.getStatus() == 1) {
return AjaxResult.error("订单还未发货呢");
}
- if(shoppingOrder.getStatus() == 4){
+ if (shoppingOrder.getStatus() == 4) {
return AjaxResult.error("订单已取消,不允许操作。");
}
shoppingOrder.setStatus(3);
@@ -248,7 +252,7 @@
@PutMapping("/cancelOrder/{id}")
@ApiOperation(value = "取消订单操作", tags = {"小程序-商城购买订单"})
- public AjaxResult cancelOrder(@PathVariable String id){
+ public AjaxResult cancelOrder(@PathVariable String id) {
return shoppingOrderService.cancelOrder(id);
}
@@ -256,9 +260,9 @@
* 商城订单取消微信退款回调
*/
@PostMapping("/cancelShoppingOrderWxRefund")
- public void cancelShoppingOrderWxRefund(HttpServletRequest request){
+ public void cancelShoppingOrderWxRefund(HttpServletRequest request) {
WxRefundNotifyResp data = wxPaymentClient.refundNotify(request).getData();
- if(null != data){
+ if (null != data) {
String out_refund_no = data.getOut_refund_no();
String refund_id = data.getRefund_id();
String tradeState = data.getTradeState();
@@ -268,31 +272,30 @@
}
-
@ResponseBody
@GetMapping(value = "/getNoInvoicedOrder")
@ApiOperation(value = "获取未开票的订单数据", tags = {"小程序-充电发票"})
- public AjaxResult<List<MyShoppingOrderList>> getNoInvoicedOrder(GetNoInvoicedOrder query){
+ public AjaxResult<List<MyShoppingOrderList>> getNoInvoicedOrder(GetNoInvoicedOrder query) {
List<MyShoppingOrderList> list = shoppingOrderService.getNoInvoicedOrder(query);
return AjaxResult.success(list);
}
-
+
@PostMapping("/create")
- public R<TShoppingOrder> shopCreate(@RequestBody ExchangeDto exchangeDto){
+ public R<TShoppingOrder> shopCreate(@RequestBody ExchangeDto exchangeDto) {
TShoppingOrder shoppingOrder = new TShoppingOrder();
shoppingOrder.setTitle(exchangeDto.getTitle());
shoppingOrder.setCode(OrderCodeUtil.getOrderCode("GW"));
shoppingOrder.setAppUserId(exchangeDto.getUserId());
shoppingOrder.setOrderType(exchangeDto.getGoodType());
- if (exchangeDto.getGoodType()==1) {
+ if (exchangeDto.getGoodType() == 1) {
shoppingOrder.setGoodsId(exchangeDto.getGoodId());
- }else {
+ } else {
shoppingOrder.setCouponId(exchangeDto.getGoodId());
}
shoppingOrder.setPurchaseQuantity(exchangeDto.getNum());
shoppingOrder.setAppUserAddressId(exchangeDto.getAddressId());
shoppingOrder.setOrderAmount(exchangeDto.getOrderPrice());
- if (exchangeDto.getCouponId()!=null) {
+ if (exchangeDto.getCouponId() != null) {
shoppingOrder.setAppCouponId(exchangeDto.getCouponId());
}
shoppingOrder.setCouponDiscountAmount(exchangeDto.getDiscountPrice());
@@ -307,16 +310,16 @@
shoppingOrder.setCreateTime(LocalDateTime.now());
shoppingOrder.setDelFlag(false);
shoppingOrderService.save(shoppingOrder);
-
+
return R.ok(shoppingOrder);
-
+
}
-
+
@PostMapping("/callBack")
- public R callBack(@RequestParam("code")String code,@RequestParam("outTradeNo")String outTradeNo){
- shoppingOrderService.callBack(code,outTradeNo);
+ public R callBack(@RequestParam("code") String code, @RequestParam("outTradeNo") String outTradeNo) {
+ shoppingOrderService.callBack(code, outTradeNo);
return R.ok();
-
+
}
}
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 964eaa8..a558cc9 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
@@ -620,8 +620,7 @@
chargingOrder.setChargeAmount(electrovalence);
chargingOrder.setVipDiscountAmount(discountAmount);
this.updateById(chargingOrder);
-
-
+
TChargingPile chargingPile = chargingPileClient.getChargingPileById(tChargingGun.getChargingPileId()).getData();
//调用远程启动充电消息
PlatformStartCharging platformStartCharging = new PlatformStartCharging();
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
index 75e28c4..858885d 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TShoppingOrderServiceImpl.java
@@ -25,6 +25,7 @@
import com.ruoyi.order.mapper.TShoppingOrderMapper;
import com.ruoyi.order.service.TShoppingOrderRefundService;
import com.ruoyi.order.service.TShoppingOrderService;
+import com.ruoyi.order.util.RedisLock;
import com.ruoyi.other.api.domain.TCoupon;
import com.ruoyi.other.api.domain.TGoods;
import com.ruoyi.other.api.feignClient.CouponClient;
@@ -37,6 +38,8 @@
import com.ruoyi.payment.api.vo.AliQueryOrder;
import com.ruoyi.payment.api.vo.NotifyV3PayDecodeRespBody;
import io.seata.spring.annotation.GlobalTransactional;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
@@ -85,6 +88,9 @@
@Resource
private TShoppingOrderRefundService shoppingOrderRefundService;
+
+ @Autowired
+ public RedisTemplate redisTemplate;
@@ -309,7 +315,7 @@
//退款金额
BigDecimal refundAmount = shoppingOrder.getPaymentAmount().subtract(bigDecimal);
-
+
//先查询第三方订单状态订单是否退款
//支付方式(1=微信,2=支付宝)
Integer paymentType = shoppingOrder.getPaymentType();
@@ -387,6 +393,44 @@
AjaxResult success = cancelShoppingOrderWxRefund(resp.getOutTradeNo(), resp.getTradeNo(), "SUCCESS", sdf1.format(new Date()));
if(success.isSuccess()){
shoppingOrderRefundService.save(shoppingOrderRefund);
+ //商品
+ if(shoppingOrder.getOrderType() == 1){
+ //redis锁 和支付使用同一个锁
+ RedisLock redisLock = new RedisLock(redisTemplate, "SHOPPING_GOODS_LOCK", 5, 30000);
+ try {
+ redisLock.lock();
+ TGoods goods = goodsClient.getGoodsById(shoppingOrder.getGoodsId()).getData();
+ Integer inventory = goods.getInventory();
+ if(-1 != inventory){
+ goods.setInventory(inventory + shoppingOrder.getPurchaseQuantity());
+ goodsClient.updateGoods(goods);
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }finally {
+ //解锁
+ redisLock.unlock();
+ }
+ }
+ //优惠券
+ if(shoppingOrder.getOrderType() == 2){
+ //redis锁 和支付使用同一个锁
+ RedisLock redisLock = new RedisLock(redisTemplate, "SHOPPING_COUPON_LOCK", 5, 30000);
+ try {
+ redisLock.lock();
+ TCoupon coupon = couponClient.getCouponById1(shoppingOrder.getCouponId()).getData();
+ Integer inventory = coupon.getInventoryQuantity();
+ if(-1 != inventory){
+ coupon.setInventoryQuantity(inventory + shoppingOrder.getPurchaseQuantity());
+ couponClient.updateCoupon(coupon);
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }finally {
+ //解锁
+ redisLock.unlock();
+ }
+ }
}
}
}
@@ -415,26 +459,41 @@
TShoppingOrder shoppingOrder = this.getById(one.getShoppingOrderId());
//商品
if(shoppingOrder.getOrderType() == 1){
- // todo 需完善redis锁
//redis锁 和支付使用同一个锁
- TGoods goods = goodsClient.getGoodsById(shoppingOrder.getGoodsId()).getData();
- Integer inventory = goods.getInventory();
- if(-1 != inventory){
- goods.setInventory(inventory + shoppingOrder.getPurchaseQuantity());
- goodsClient.updateGoods(goods);
+ RedisLock redisLock = new RedisLock(redisTemplate, "SHOPPING_GOODS_LOCK", 5, 30000);
+ try {
+ redisLock.lock();
+ TGoods goods = goodsClient.getGoodsById(shoppingOrder.getGoodsId()).getData();
+ Integer inventory = goods.getInventory();
+ if(-1 != inventory){
+ goods.setInventory(inventory + shoppingOrder.getPurchaseQuantity());
+ goodsClient.updateGoods(goods);
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }finally {
+ //解锁
+ redisLock.unlock();
}
- //解锁
}
//优惠券
if(shoppingOrder.getOrderType() == 2){
- //redis锁
- TCoupon coupon = couponClient.getCouponById1(shoppingOrder.getCouponId()).getData();
- Integer inventory = coupon.getInventoryQuantity();
- if(-1 != inventory){
- coupon.setInventoryQuantity(inventory + shoppingOrder.getPurchaseQuantity());
- couponClient.updateCoupon(coupon);
+ //redis锁 和支付使用同一个锁
+ RedisLock redisLock = new RedisLock(redisTemplate, "SHOPPING_COUPON_LOCK", 5, 30000);
+ try {
+ redisLock.lock();
+ TCoupon coupon = couponClient.getCouponById1(shoppingOrder.getCouponId()).getData();
+ Integer inventory = coupon.getInventoryQuantity();
+ if(-1 != inventory){
+ coupon.setInventoryQuantity(inventory + shoppingOrder.getPurchaseQuantity());
+ couponClient.updateCoupon(coupon);
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }finally {
+ //解锁
+ redisLock.unlock();
}
- //解锁
}
}
return AjaxResult.success();
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/RedisLock.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/RedisLock.java
new file mode 100644
index 0000000..b9954c8
--- /dev/null
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/util/RedisLock.java
@@ -0,0 +1,51 @@
+package com.ruoyi.order.util;
+
+import org.springframework.data.redis.core.RedisTemplate;
+
+import java.util.UUID;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @author zhibing.pu
+ * @Date 2024/9/26 18:43
+ */
+public class RedisLock {
+ private RedisTemplate<String, String> redisTemplate;
+ private String lockKey;
+ private int expireTime; // 锁的超时时间
+ private int timeout; // 获取锁的超时时间
+
+
+ public RedisLock(RedisTemplate<String, String> redisTemplate, String lockKey, int expireTime, int timeout) {
+ this.redisTemplate = redisTemplate;
+ this.lockKey = lockKey;
+ this.expireTime = expireTime;
+ this.timeout = timeout;
+ }
+
+ public boolean lock() {
+ String identifier = UUID.randomUUID().toString();
+ long end = System.currentTimeMillis() + timeout;
+ while (System.currentTimeMillis() < end) {
+ if (redisTemplate.opsForValue().setIfAbsent(lockKey, identifier, expireTime, TimeUnit.SECONDS)) {
+ return true;
+ }
+ // 可以使用延时来减少CPU占用
+ try {
+ Thread.sleep(100);
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ }
+ }
+ return false;
+ }
+
+ public boolean unlock() {
+ String identifier = redisTemplate.opsForValue().get(lockKey);
+ if (identifier != null && identifier.equals(UUID.randomUUID().toString())) {
+ redisTemplate.delete(lockKey);
+ return true;
+ }
+ return false;
+ }
+}
--
Gitblit v1.7.1