From 949084022efbb071a29718add61155c734d06c44 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期三, 10 九月 2025 10:54:08 +0800
Subject: [PATCH] 修改bug
---
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 67 ++++++++++++++++++---------------
1 files changed, 36 insertions(+), 31 deletions(-)
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
index 3bfd27a..94a9293 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -2268,7 +2268,14 @@
if (null == itemList && itemList.isEmpty()) {
throw new ServiceException("查询券信息失败");
}
- CertificatePrepareResponseDataCertificatesItem certificatesItem = itemList.get(0);
+ List<CertificatePrepareResponseDataCertificatesItem> collect = itemList.stream().filter(s -> s.getStatus().intValue() == 1).collect(Collectors.toList());
+ if(collect.size() < merVerifyOrderDto.getNumber()){
+ throw new ServiceException("验券数量超过可使用数量");
+ }
+ List<CertificatePrepareResponseDataCertificatesItem> certificatePrepareResponseDataCertificatesItems = collect.subList(0, merVerifyOrderDto.getNumber());
+
+
+ CertificatePrepareResponseDataCertificatesItem certificatesItem = certificatePrepareResponseDataCertificatesItems.get(0);
//商品信息
CertificatePrepareResponseDataCertificatesItemSku sku = certificatesItem.getSku();
//次卡信息
@@ -2318,10 +2325,11 @@
throw new ServiceException("该抖音券不能重复核销");
}
}
- String encryptedCode = certificatesItem.getEncryptedCode();
- List<CertificateVerifyResponseDataVerifyResultsItem> items = VerifyUtil.certificateVerify(data.getVerifyToken(), shop.getDyPoiId(), new ArrayList<String>() {{
- add(encryptedCode);
- }});
+ List<String> encryptedCodes = new ArrayList<>();
+ for (CertificatePrepareResponseDataCertificatesItem certificatePrepareResponseDataCertificatesItem : certificatePrepareResponseDataCertificatesItems) {
+ encryptedCodes.add(certificatePrepareResponseDataCertificatesItem.getEncryptedCode());
+ }
+ List<CertificateVerifyResponseDataVerifyResultsItem> items = VerifyUtil.certificateVerify(data.getVerifyToken(), shop.getDyPoiId(), encryptedCodes);
if (null == items || items.isEmpty()) {
throw new ServiceException("抖音券核销失败");
}
@@ -2369,7 +2377,7 @@
order.setUseTime(nowTime);
order.setUseUserId(merVerifyOrderDto.getUserId());
order.setCloseFlag(1);
- order.setGoodsNum(1);
+ order.setGoodsNum(itemList.size());
order.setCouponMoney(BigDecimal.ZERO);
this.save(order);
//创建服务商品
@@ -2382,15 +2390,14 @@
orderGoods.setGoodsPrice(originAmount);
orderGoods.setGoodsTotalMoney(originAmount);
orderGoods.setGoodsReceivableMoney(originAmount);
- orderGoods.setBuyNum(1);
+ orderGoods.setBuyNum(itemList.size());
ConsumerGoods consumerGoods = new ConsumerGoods();
- consumerGoods.setUsedNum(1);
+ consumerGoods.setUsedNum(merVerifyOrderDto.getNumber());
if(null != timeCard){
- //核销一次加一次
- orderGoods.setBuyNum(1);
- orderGoods.setServiceNum(1);
- consumerGoods.setServiceNum(timeCard.getTimesCount());
+ orderGoods.setBuyNum(itemList.size());
+ orderGoods.setServiceNum(merVerifyOrderDto.getNumber());
+ consumerGoods.setServiceNum(itemList.size());
consumerGoods.setUseTime(new Date());
}
orderGoods.setCycleNumFlag(1);
@@ -2494,14 +2501,12 @@
}else{
//扣减剩余次数
OrderGoods orderGoods = orderGoodsService.getOne(new LambdaQueryWrapper<OrderGoods>().eq(OrderGoods::getOrderId, order.getOrderId()));
- //核销一次加一次数量
- orderGoods.setBuyNum(orderGoods.getBuyNum() + 1);
if(null != orderGoods.getServiceNum()){
- orderGoods.setServiceNum(orderGoods.getServiceNum() + 1);
+ orderGoods.setServiceNum(orderGoods.getServiceNum() + merVerifyOrderDto.getNumber());
}
orderGoodsService.updateById(orderGoods);
ConsumerGoods consumerGoods = consumerGoodsService.getOne(new LambdaQueryWrapper<ConsumerGoods>().eq(ConsumerGoods::getOrderId, order.getOrderId()).eq(ConsumerGoods::getOrderGoodsId, orderGoods.getOrderGoodsId()));
- consumerGoods.setUsedNum(consumerGoods.getUsedNum() + 1);
+ consumerGoods.setUsedNum(consumerGoods.getUsedNum() + merVerifyOrderDto.getNumber());
consumerGoods.setUseTime(new Date());
if(consumerGoods.getUsedNum() == consumerGoods.getServiceNum()){
consumerGoods.setCompleteTime(new Date());
@@ -2575,7 +2580,8 @@
if (null == itemList || itemList.isEmpty()) {
throw new ServiceException("查询券信息失败");
}
- SimpleCertificateTimesCard certificatesItem = itemList.get(0);
+ List<SimpleCertificateTimesCard> timesCards = itemList.subList(0, merVerifyOrderDto.getNumber());
+ SimpleCertificateTimesCard certificatesItem = timesCards.get(0);
Long expire_time = certificatesItem.getExpire_time();
if(LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) > expire_time){
throw new ServiceException("优惠券已过期");
@@ -2596,11 +2602,12 @@
throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
}
}
-
- String encryptedCode = certificatesItem.getEncrypted_code();
- List<VerifyResult> items = KSVerifyUtil.certificateVerify(redisService, data.getVerify_token(), shop.getKsPoiId(), new ArrayList<String>() {{
- add(encryptedCode);
- }}, data.getOrder_id());
+
+ List<String> encryptedCodes = new ArrayList<>();
+ for (SimpleCertificateTimesCard timesCard : timesCards) {
+ encryptedCodes.add(timesCard.getEncrypted_code());
+ }
+ List<VerifyResult> items = KSVerifyUtil.certificateVerify(redisService, data.getVerify_token(), shop.getKsPoiId(), encryptedCodes, data.getOrder_id());
if (null == items || items.isEmpty()) {
throw new ServiceException("快手券核销失败");
}
@@ -2648,7 +2655,7 @@
order.setUseTime(nowTime);
order.setUseUserId(merVerifyOrderDto.getUserId());
order.setCloseFlag(1);
- order.setGoodsNum(1);
+ order.setGoodsNum(itemList.size());
order.setCouponMoney(BigDecimal.ZERO);
this.save(order);
//创建服务商品
@@ -2659,13 +2666,12 @@
orderGoods.setDelFlag(0);
orderGoods.setOrderId(order.getOrderId());
orderGoods.setGoodsId(sku.getSku_id());
- orderGoods.setBuyNum(1);
- orderGoods.setServiceNum(1);
+ orderGoods.setBuyNum(itemList.size());
orderGoods.setGoodsPrice(originAmount);
orderGoods.setGoodsTotalMoney(originAmount);
orderGoods.setGoodsReceivableMoney(originAmount);
orderGoods.setCycleNumFlag(1);
- orderGoods.setServiceNum(sku.getTimes_count());
+ orderGoods.setServiceNum(merVerifyOrderDto.getNumber());
orderGoods.setGoodsType(2);
orderGoods.setGoodsName(sku.getTitle());
orderGoodsService.save(orderGoods);
@@ -2681,8 +2687,8 @@
consumerGoods.setOrderGoodsId(orderGoods.getOrderGoodsId());
consumerGoods.setGoodsName(sku.getTitle());
consumerGoods.setCycleNumFlag(1);
- consumerGoods.setServiceNum(sku.getTimes_count());
- consumerGoods.setUsedNum(1);
+ consumerGoods.setServiceNum(itemList.size());
+ consumerGoods.setUsedNum(merVerifyOrderDto.getNumber());
consumerGoods.setUseTime(new Date());
consumerGoods.setCreateTime(nowTime);
consumerGoods.setGoodsType(2);
@@ -2770,12 +2776,11 @@
}else{
//扣减剩余次数
OrderGoods orderGoods = orderGoodsService.getOne(new LambdaQueryWrapper<OrderGoods>().eq(OrderGoods::getOrderId, order.getOrderId()));
- orderGoods.setBuyNum(orderGoods.getBuyNum() + 1);
- orderGoods.setServiceNum(orderGoods.getServiceNum() + 1);
+ orderGoods.setServiceNum(orderGoods.getServiceNum() + itemList.size());
orderGoodsService.updateById(orderGoods);
ConsumerGoods consumerGoods = consumerGoodsService.getOne(new LambdaQueryWrapper<ConsumerGoods>().eq(ConsumerGoods::getOrderId, order.getOrderId()).eq(ConsumerGoods::getOrderGoodsId, orderGoods.getOrderGoodsId()));
- consumerGoods.setUsedNum(consumerGoods.getUsedNum() + 1);
+ consumerGoods.setUsedNum(consumerGoods.getUsedNum() + itemList.size());
consumerGoods.setUseTime(new Date());
if(consumerGoods.getUsedNum() == consumerGoods.getServiceNum()){
consumerGoods.setCompleteTime(new Date());
--
Gitblit v1.7.1