From 1f3e9dc85399290910cde7149806323305544e0d Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期六, 20 七月 2024 19:17:23 +0800 Subject: [PATCH] 修改bug --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java | 133 ++++++++++++++++++++++++++++++++------------ 1 files changed, 97 insertions(+), 36 deletions(-) diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java index c01e6a1..4761a9f 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java @@ -14,6 +14,7 @@ import com.ruoyi.common.core.enums.OrderStatusEnum; import com.ruoyi.common.core.enums.OrderTypeEnum; import com.ruoyi.common.core.enums.PaymentMethodEnum; +import com.ruoyi.common.core.enums.PointStatusEnum; import com.ruoyi.common.core.enums.RequestTypeEnum; import com.ruoyi.common.core.enums.ReturnRequestStatusEnum; import com.ruoyi.common.core.exception.ServiceException; @@ -55,6 +56,7 @@ import com.ruoyi.system.api.domain.dto.MemberDTO; import com.ruoyi.system.api.domain.dto.MemberOrderDTO; import com.ruoyi.system.api.domain.dto.MemberOrderListDTO; +import com.ruoyi.system.api.domain.dto.MemberPointsDTO; import com.ruoyi.system.api.domain.dto.MgtAfterSaleSettingDTO; import com.ruoyi.system.api.domain.dto.OrderDTO; import com.ruoyi.system.api.domain.dto.updMembeOneDTO; @@ -68,6 +70,7 @@ import com.ruoyi.system.api.feignClient.MemberClient; import com.ruoyi.system.api.feignClient.PromotionClient; import com.ruoyi.system.api.feignClient.SysUserClient; +import io.seata.spring.annotation.GlobalTransactional; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDateTime; @@ -348,9 +351,12 @@ GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(data.getGoodsSkuId(), SecurityConstants.INNER).getData(); - if (data.getLimitNumber()<num1) { - throw new ServiceException("该商品已售罄,暂无库存"); + if (data.getLimitNumber()!=0){ + if (data.getLimitNumber()<num1) { + throw new ServiceException("对不起,大于商品购买数"); + } } + order.setOrderFrom(OrderFromEnum.SNAP_ORDERS); memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId()); @@ -514,17 +520,22 @@ memberOrderDTO1.setGoodsSkuId(order.getGoodsSkuId()); Integer num=baseMapper.getSeckillMembers1(memberOrderDTO1); Integer num1=0; - if (num!=null){ - num1 =num+order.getGoodsQuantity(); + if(num!=order.getGoodsQuantity()){ + if (num!=null){ + num1 =num+order.getGoodsQuantity(); + }else{ + num1=order.getGoodsQuantity(); + } }else{ - num1=order.getGoodsQuantity(); + num1=num; } + GoodsSeckill data = goodsSkuClient.getGoodsSeckillOne(order.getGoodsSkuId(), SecurityConstants.INNER).getData(); GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(data.getGoodsSkuId(), SecurityConstants.INNER).getData(); if (num1!=order.getGoodsQuantity()){ - if (data.getLimitNumber()<num1){ + if (data.getLimitNumber()!=0||data.getLimitNumber()<num1){ throw new ServiceException("对不起,大于商品购买数"); }else{ @@ -613,6 +624,7 @@ pice=pice.subtract(data.getReductionAmount()); order.setDiscountMoney(data.getReductionAmount()); }else{ + order.setDiscountMoney(pice); pice=new BigDecimal(0); } @@ -620,10 +632,13 @@ if (data.getCouponType().getCode()==2){ pice= order.getTotalAmount(); if(pice.compareTo(data.getVoucherAmount())<0){ - throw new ServiceException("优惠卷抵扣金额不能大于实际支付金额"); + order.setDiscountMoney(pice); + pice=new BigDecimal(0); + }else{ + pice=pice.subtract(data.getVoucherAmount()); + order.setDiscountMoney(data.getVoucherAmount()); } - pice=pice.subtract(data.getVoucherAmount()); - order.setDiscountMoney(data.getVoucherAmount()); + } if (data.getCouponType().getCode()==3){ pice= order.getTotalAmount(); @@ -634,17 +649,20 @@ pice3=new BigDecimal(data.getMaxDiscount().doubleValue()); } if(pice.compareTo(pice3)<0){ - throw new ServiceException("优惠卷抵扣金额不能大于实际支付金额"); + BigDecimal pice4= pice.subtract(pice3); + if (pice4.doubleValue()>data.getMaxDiscount().doubleValue()){ + pice=pice.subtract(data.getMaxDiscount()); + order.setDiscountMoney(data.getMaxDiscount()); + }else{ + order.setDiscountMoney(pice4); + pice=pice3; + } + }else{ + order.setDiscountMoney(pice); + pice=new BigDecimal(0); } - BigDecimal pice4= pice.subtract(pice3); - if (pice4.doubleValue()>data.getMaxDiscount().doubleValue()){ - pice=pice.subtract(data.getMaxDiscount()); - order.setDiscountMoney(data.getMaxDiscount()); - }else{ - order.setDiscountMoney(pice4); - pice=pice3; - } + } order.setCouponId(memberOrderDTO.getCouponId()); @@ -736,6 +754,17 @@ MemberOrderList.setOrderStatus(OrderStatusEnum.CANCELED); Order order = this.getOrder(MemberOrderList.getId()); order.setOrderStatus(OrderStatusEnum.CANCELED); + + if (order.getCouponId()!=0){ + CouponMemberDTO couponMemberDTO1=new CouponMemberDTO(); + couponMemberDTO1.setId(order.getCouponId()); + couponMemberDTO1.setCouponStatus(0); + promotionClient.updCouponMember(couponMemberDTO1, SecurityConstants.INNER); + order.setCouponId(0L); + } + + + this.updateById(order); } @@ -765,6 +794,11 @@ }else { MemberOrderList.setIsAuctionBond(1); } + + CustomConfig memberPointsPoints = sysUserClient.getconfig("MALL_ORDER_DESCRIPTION").getData(); + MemberOrderList.setOrderShuoMin(memberPointsPoints.getConfigValue()); + CustomConfig ReturnCycle = sysUserClient.getconfig("RETURN_CYCLE").getData(); + MemberOrderList.setOrderZq(Integer.valueOf(ReturnCycle.getConfigValue())); } @@ -807,10 +841,14 @@ } }else { orderVO.setIsAuctionBond(1); + orderVO.setBound(new BigDecimal(0)); } } catch (Exception e) { throw new RuntimeException(e); + } + if (order.getTotalAmount()==null){ + order.setTotalAmount(new BigDecimal(0)); } CustomConfig memberPointsPoints = sysUserClient.getconfig("MALL_ORDER_DESCRIPTION").getData(); orderVO.setOrderShuoMin(memberPointsPoints.getConfigValue()); @@ -1197,7 +1235,8 @@ List<MgtOrderVO> list = voList; // 封装参数查询拍卖会 Set<Long> auctionSalesroomGoodsIdSet = list.stream() - .filter(order -> order.getAuctionType() == AuctionOrderTypeEnum.AUCTION_ITEMS) + .filter(order -> order.getAuctionOrderType() + == AuctionOrderTypeEnum.AUCTION_ITEMS) .map(MgtOrderVO::getGoodsSkuId).collect(Collectors.toSet()); List<AuctionSalesroom> auctionSalesroomList = auctionClient.getAuctionSalesroomByIds( auctionSalesroomGoodsIdSet, SecurityConstants.INNER) @@ -1207,7 +1246,8 @@ AuctionSalesroom::getSalesroomName)); // 封装参数查询拍卖订单保证金 Set<Long> auctionGoodsIdSet = list.stream() - .filter(order -> order.getAuctionType() == AuctionOrderTypeEnum.REGULAR_ITEMS) + .filter(order -> order.getAuctionOrderType() + == AuctionOrderTypeEnum.REGULAR_ITEMS) .map(MgtOrderVO::getGoodsSkuId) .collect(Collectors.toSet()); @@ -1233,7 +1273,7 @@ Function.identity())); list.forEach(order -> { - if (order.getAuctionType() == AuctionOrderTypeEnum.AUCTION_ITEMS) { + if (order.getAuctionOrderType() == AuctionOrderTypeEnum.AUCTION_ITEMS) { order.setSalesroomName( StringUtils.isNotBlank(salesroomMap.get(order.getGoodsSkuId())) ? salesroomMap.get(order.getAuctionSalesroomId()) : "无"); @@ -1246,7 +1286,7 @@ .getBoundStatus() : null); } - if (order.getAuctionType() == AuctionOrderTypeEnum.REGULAR_ITEMS) { + if (order.getAuctionOrderType() == AuctionOrderTypeEnum.REGULAR_ITEMS) { order.setSalesroomName("无"); order.setBoundStatus( StringUtils.isNotNull(auctionSalesroomGoodsBondMap.get( @@ -1374,9 +1414,13 @@ * @param id 订单id */ @Override - @Transactional(rollbackFor = Exception.class) + @GlobalTransactional(rollbackFor = Exception.class) + @Transactional public void refund(Long id) { Order order = getOrder(id); + if (order.getIsRequest() == 2) { + throw new ServiceException("该订单已是售后状态"); + } String orderNo = order.getOrderNo(); Paylog paylog = iPaylogService.lambdaQuery().eq(Paylog::getOutTradeNo, orderNo) .last("limit 1").one(); @@ -1395,10 +1439,28 @@ orderReturnRequest.setRequestReason("管理后台退款"); orderReturnRequest.setStatus(ReturnRequestStatusEnum.COMPLETED); orderReturnRequest.setAuditStatus(AuditStatusEnum.PASSED); + orderReturnRequest.setAuditTime(LocalDateTime.now()); orderReturnRequestService.save(orderReturnRequest); } order.setIsRequest(2); this.updateById(order); + // 扣除订单积分 + Member member = memberClient.getMembeOne(order.getMemberId(), SecurityConstants.INNER) + .getData(); + if (StringUtils.isNotNull(member)) { + MemberPointsDTO memberPointsDTO = new MemberPointsDTO(); + memberPointsDTO.setMemberId(order.getMemberId()); + memberPointsDTO.setPointsType(1); + memberPointsDTO.setPointsStatus(PointStatusEnum.INCREASE); + memberPointsDTO.setPoints(order.getPoints()); + memberClient.addMemberPoints(memberPointsDTO); + + updMembeOneDTO updMembeOneDTO = new updMembeOneDTO(); + updMembeOneDTO.setMemberId(order.getMemberId()); + updMembeOneDTO.setType(2); + updMembeOneDTO.setTotalPoints(Math.max(member.getTotalPoints() - order.getPoints(), 0)); + memberClient.updMembeOne(updMembeOneDTO, SecurityConstants.INNER); + } } private boolean handleRefund(PaymentMethodEnum paymentMethod, Paylog paylog, String orderNo) { @@ -1431,6 +1493,9 @@ @Override public void refundReturn(Long id) { Order order = getOrder(id); + if (order.getIsRequest() == 2) { + throw new ServiceException("该订单已是售后状态"); + } if (order.getOrderStatus() == OrderStatusEnum.FINISHED) { OrderReturnRequest orderReturnRequest = new OrderReturnRequest(); order.setIsRequest(2); @@ -1448,6 +1513,7 @@ orderReturnRequest.setRequestReason("管理后台退款退货"); orderReturnRequest.setStatus(ReturnRequestStatusEnum.TO_BE_RETURNED); orderReturnRequest.setAuditStatus(AuditStatusEnum.PASSED); + orderReturnRequest.setAuditTime(LocalDateTime.now()); orderReturnRequestService.save(orderReturnRequest); } @@ -1473,29 +1539,24 @@ if (order.getAuctionOrderType() == AuctionOrderTypeEnum.AUCTION_ITEMS) { orderAuctionBond = orderAuctionBondMapper.selectOne( Wrappers.lambdaQuery(OrderAuctionBond.class) + .eq(OrderAuctionBond::getOrderId, id) .eq(OrderAuctionBond::getAuctionSalesroomId, order.getAuctionSalesroomId()) .eq(OrderAuctionBond::getBoundStatus, BondStatusEnum.PAID)); - if (StringUtils.isNotNull(orderAuctionBond) - && orderAuctionBond.getBoundStatus() == BondStatusEnum.REFUNDED) { - throw new ServiceException("改拍卖会已退保证金"); - } } else { orderAuctionBond = orderAuctionBondMapper.selectOne( Wrappers.lambdaQuery(OrderAuctionBond.class) + .eq(OrderAuctionBond::getOrderId, id) .eq(OrderAuctionBond::getAuctionGoodsId, order.getGoodsSkuId()) .eq(OrderAuctionBond::getBoundStatus, BondStatusEnum.PAID)); } - Paylog paylog = iPaylogService.lambdaQuery() - .eq(Paylog::getOutTradeNo, orderAuctionBond.getOrderNo()) - .last("limit 1").one(); - if (StringUtils.isNull(paylog)) { - throw new ServiceException("支付记录不存在"); - } - PaymentMethodEnum paymentMethod = orderAuctionBond.getPaymentMethod(); - if (orderAuctionBond.getBoundStatus() == BondStatusEnum.PAID) { - boolean result = handleRefund(paymentMethod, paylog, orderAuctionBond.getOrderNo()); + if (StringUtils.isNotNull(orderAuctionBond)) { + Paylog paylog = iPaylogService.lambdaQuery() + .in(Paylog::getOutTradeNo, orderAuctionBond.getOrderNo()) + .one(); + boolean result = handleRefund(orderAuctionBond.getPaymentMethod(), paylog, + orderAuctionBond.getOrderNo()); if (result) { paylog.setState(3);// 已退款 orderAuctionBond.setBoundStatus(BondStatusEnum.REFUNDED); -- Gitblit v1.7.1