From 157d966bfd9acf789de0784286398455f81da8f2 Mon Sep 17 00:00:00 2001
From: rentaiming <806181062@qq.com>
Date: 星期五, 12 七月 2024 10:13:15 +0800
Subject: [PATCH] 修改bug
---
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderAuctionBondServiceImpl.java | 98 ++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 80 insertions(+), 18 deletions(-)
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderAuctionBondServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderAuctionBondServiceImpl.java
index 64cb8e4..8709bd7 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderAuctionBondServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderAuctionBondServiceImpl.java
@@ -8,6 +8,7 @@
import com.ruoyi.common.core.enums.AuctionOrderTypeEnum;
import com.ruoyi.common.core.enums.BondStatusEnum;
import com.ruoyi.common.core.enums.PaymentMethodEnum;
+import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.order.domain.Paylog;
import com.ruoyi.order.mapper.OrderAuctionBondMapper;
@@ -20,12 +21,23 @@
import com.ruoyi.system.api.domain.OrderAuctionBond;
import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomBondDTO;
import com.ruoyi.system.api.domain.dto.OrderAuctionBondDTO;
+import com.ruoyi.system.api.domain.dto.RefundDTO;
import com.ruoyi.system.api.domain.vo.PayInfoVO;
import com.ruoyi.system.api.feignClient.AuctionClient;
+
+import java.time.LocalDateTime;
+import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
import javax.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
/**
* <p>
@@ -35,11 +47,9 @@
* @author mitao
* @since 2024-05-16
*/
+@Slf4j
@Service
public class OrderAuctionBondServiceImpl extends ServiceImpl<OrderAuctionBondMapper, OrderAuctionBond> implements IOrderAuctionBondService {
-
- @Resource
- private IOrderAuctionBondService iOrderAuctionBondService;
@Resource
private IPaylogService iPaylogService;
@@ -59,7 +69,7 @@
wrapper.notIn(OrderAuctionBond::getMemberId, orderAuctionBondDTO.getUserList());
wrapper.eq(OrderAuctionBond::getDelFlag, 0);
wrapper.eq(OrderAuctionBond::getAuctionSalesroomId, orderAuctionBondDTO.getAuctionSalesroomId());
- List<OrderAuctionBond> orderAuctionBondList = iOrderAuctionBondService.list(wrapper);
+ List<OrderAuctionBond> orderAuctionBondList = this.list(wrapper);
for (OrderAuctionBond orderAuctionBond : orderAuctionBondList) {
LambdaQueryWrapper<Paylog> wrapper1 = Wrappers.lambdaQuery();
wrapper1.eq(Paylog::getOutTradeNo, orderAuctionBond.getOrderNo());
@@ -109,25 +119,37 @@
* @param bondStatusEnum 保证金状态
*/
@Override
+ @Transactional(propagation = Propagation.REQUIRES_NEW)
public void updateOrderAuctionBondStatus(List<Long> ids, BondStatusEnum bondStatusEnum) {
- this.lambdaUpdate().set(OrderAuctionBond::getBoundStatus, bondStatusEnum)
- .in(OrderAuctionBond::getId, ids).update();
+ for (Long id:ids){
+ OrderAuctionBond byId = this.getById(id);
+ byId.setBoundStatus(bondStatusEnum);
+ this.updateById(byId);
+ }
}
@Override
public PayInfoVO SaveOrderAuctionBond(MemberAuctionSalesroomBondDTO memberAuctionSalesroomBondDTO) {
PayInfoVO payInfoVO = new PayInfoVO();
- if (memberAuctionSalesroomBondDTO.getBondType() == 2) {
- AuctionSalesroom data = auctionClient.getauctionSalesroomOne(memberAuctionSalesroomBondDTO.getAuctionSalesroomId(), SecurityConstants.INNER).getData();
- if (data.getBond().intValue() == 0) {
+ if (memberAuctionSalesroomBondDTO.getBondType() == 1) {
+ AuctionGoods data = auctionClient.getauctionGoodsOne(memberAuctionSalesroomBondDTO, SecurityConstants.INNER).getData();
+
+ if (data.getEndTime().isAfter(LocalDateTime.now())){
+ throw new ServiceException("商品拍卖已结束");
+ }
+ if (data.getListingStatus().getCode()==1){
+ throw new ServiceException("商品拍卖下线");
+ }
+
+ if (data.getBond()==null||data.getBond().intValue() == 0) {
OrderAuctionBond orderAuctionBond = new OrderAuctionBond();
orderAuctionBond.setOrderNo(OrderUtil.getOrderNoForPrefix("BO"));
- orderAuctionBond.setAuctionSalesroomId(memberAuctionSalesroomBondDTO.getAuctionSalesroomId());
+ orderAuctionBond.setAuctionGoodsId(memberAuctionSalesroomBondDTO.getAuctionGoodsId());
orderAuctionBond.setMemberId(memberAuctionSalesroomBondDTO.getMemberId());
orderAuctionBond.setBond(data.getBond());
orderAuctionBond.setBoundStatus(BondStatusEnum.PAID);
orderAuctionBond.setBondType(AuctionOrderTypeEnum.AUCTION_ITEMS);
- iOrderAuctionBondService.save(orderAuctionBond);
+ this.save(orderAuctionBond);
payInfoVO.setOrderNO(orderAuctionBond.getOrderNo());
payInfoVO.setType(0);
payInfoVO.setSubject("保证金");
@@ -136,9 +158,10 @@
} else {
OrderAuctionBond orderAuctionBond = new OrderAuctionBond();
orderAuctionBond.setOrderNo(OrderUtil.getOrderNoForPrefix("BO"));
- orderAuctionBond.setAuctionSalesroomId(memberAuctionSalesroomBondDTO.getAuctionSalesroomId());
+ orderAuctionBond.setAuctionGoodsId(memberAuctionSalesroomBondDTO.getAuctionGoodsId());
orderAuctionBond.setMemberId(memberAuctionSalesroomBondDTO.getMemberId());
orderAuctionBond.setBond(data.getBond());
+ orderAuctionBond.setOrderTimeSx(data.getEndTime());
orderAuctionBond.setBoundStatus(BondStatusEnum.TO_PLAY);
orderAuctionBond.setBondType(AuctionOrderTypeEnum.AUCTION_ITEMS);
if (memberAuctionSalesroomBondDTO.getPaymentMethod() == 1) {
@@ -146,21 +169,21 @@
} else {
orderAuctionBond.setPaymentMethod(PaymentMethodEnum.ALIPAY);
}
-
- iOrderAuctionBondService.save(orderAuctionBond);
-
+ this.save(orderAuctionBond);
payInfoVO.setOrderNO(orderAuctionBond.getOrderNo());
if (memberAuctionSalesroomBondDTO.getPaymentMethod() == 1) {
payInfoVO.setType(2);
} else {
payInfoVO.setType(1);
}
+ payInfoVO.setOrderNO(orderAuctionBond.getOrderNo());
payInfoVO.setSubject("保证金");
payInfoVO.setMemberId(memberAuctionSalesroomBondDTO.getMemberId());
payInfoVO.setBody("保证金");
}
} else {
- AuctionGoods data = auctionClient.getauctionGoodsOne(memberAuctionSalesroomBondDTO.getAuctionGoodsId(), SecurityConstants.INNER).getData();
+ AuctionSalesroom data = auctionClient.getauctionSalesroomOne(memberAuctionSalesroomBondDTO, SecurityConstants.INNER).getData();
+
if (data.getBond().intValue() == 0) {
OrderAuctionBond orderAuctionBond = new OrderAuctionBond();
orderAuctionBond.setOrderNo(OrderUtil.getOrderNoForPrefix("BO"));
@@ -169,7 +192,7 @@
orderAuctionBond.setBond(data.getBond());
orderAuctionBond.setBoundStatus(BondStatusEnum.PAID);
orderAuctionBond.setBondType(AuctionOrderTypeEnum.AUCTION_ITEMS);
- iOrderAuctionBondService.save(orderAuctionBond);
+ this.save(orderAuctionBond);
payInfoVO.setOrderNO(orderAuctionBond.getOrderNo());
payInfoVO.setType(0);
payInfoVO.setSubject("保证金");
@@ -188,13 +211,14 @@
} else {
orderAuctionBond.setPaymentMethod(PaymentMethodEnum.ALIPAY);
}
- iOrderAuctionBondService.save(orderAuctionBond);
+ this.save(orderAuctionBond);
payInfoVO.setOrderNO(orderAuctionBond.getOrderNo());
if (memberAuctionSalesroomBondDTO.getPaymentMethod() == 1) {
payInfoVO.setType(2);
} else {
payInfoVO.setType(1);
}
+ payInfoVO.setOrderNO(orderAuctionBond.getOrderNo());
payInfoVO.setSubject("保证金");
payInfoVO.setMemberId(memberAuctionSalesroomBondDTO.getMemberId());
payInfoVO.setBody("保证金");
@@ -202,4 +226,42 @@
}
return payInfoVO;
}
+
+ @Override
+ @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
+ public void returnBondByAuctionGoodsId(Long id) {
+ List<OrderAuctionBond> list = this.lambdaQuery().eq(OrderAuctionBond::getAuctionGoodsId, id)
+ .eq(OrderAuctionBond::getBoundStatus, BondStatusEnum.PAID).list();
+ Set<String> orderNoSet = list.stream().map(OrderAuctionBond::getOrderNo)
+ .collect(Collectors.toSet());
+ List<RefundDTO> refundDTOList = list.stream().map(item -> {
+ RefundDTO refundDTO = new RefundDTO();
+ refundDTO.setAmount(item.getBond());
+ refundDTO.setOrderNo(item.getOrderNo());
+ return refundDTO;
+ }).collect(Collectors.toList());
+ Map<String, Object> data = iPaylogService.refund(refundDTOList);
+ // 处理退款返回结果
+ List<String> successfulOrders = new ArrayList<>();
+ List<String> failedOrders = new ArrayList<>();
+
+ data.forEach((key, value) -> {
+ if ((boolean) value) {
+ successfulOrders.add(key);
+ } else {
+ failedOrders.add(key);
+ }
+ });
+ log.info("订单号:{},退款失败", failedOrders);
+ // 退款成功的订单修改状态
+ List<OrderAuctionBond> collect = list.stream().map(bond -> {
+ if (successfulOrders.contains(bond.getOrderNo())) {
+ bond.setBoundStatus(BondStatusEnum.REFUNDED);
+ return bond;
+ }
+ return null;
+ }).filter(Objects::nonNull).collect(Collectors.toList());
+ this.updateBatchById(collect);
+ }
+
}
--
Gitblit v1.7.1