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 | 186 ++++++++++++++++++++++++++++++++++++---------- 1 files changed, 145 insertions(+), 41 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 aab1f9b..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 @@ -7,7 +7,6 @@ import com.google.common.collect.Lists; import com.ruoyi.common.core.constant.CacheConstants; import com.ruoyi.common.core.constant.SecurityConstants; -import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.enums.AuctionOrderTypeEnum; import com.ruoyi.common.core.enums.AuditStatusEnum; import com.ruoyi.common.core.enums.BondStatusEnum; @@ -15,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; @@ -37,7 +37,18 @@ import com.ruoyi.order.util.OrderUtil; import com.ruoyi.order.util.SinataUtil; import com.ruoyi.system.api.constants.DelayTaskEnum; -import com.ruoyi.system.api.domain.*; +import com.ruoyi.system.api.domain.AuctionSalesroom; +import com.ruoyi.system.api.domain.CouponMember; +import com.ruoyi.system.api.domain.CustomConfig; +import com.ruoyi.system.api.domain.DelayTask; +import com.ruoyi.system.api.domain.GoodsGroupPurchase; +import com.ruoyi.system.api.domain.GoodsGroupPurchaseInfo; +import com.ruoyi.system.api.domain.GoodsSeckill; +import com.ruoyi.system.api.domain.GoodsSku; +import com.ruoyi.system.api.domain.Member; +import com.ruoyi.system.api.domain.MemberAddress; +import com.ruoyi.system.api.domain.Order; +import com.ruoyi.system.api.domain.OrderAuctionBond; import com.ruoyi.system.api.domain.dto.CouponMemberDTO; import com.ruoyi.system.api.domain.dto.GoodsStockUpdDTO; import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO; @@ -45,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; @@ -58,10 +70,14 @@ 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; -import java.util.*; +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.function.Function; import java.util.regex.Matcher; @@ -72,6 +88,7 @@ import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * <p> @@ -164,6 +181,7 @@ order.setSkuName(OrderDTO.getSkuName()); order.setPrice(OrderDTO.getPrice()); order.setCoverPic(OrderDTO.getCoverPic()); + order.setOrderTimeSx(OrderDTO.getOrderTimeSx()); this.save(order); if (OrderDTO.getOrderFrom().getCode()==4){ @@ -333,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()); @@ -499,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{ @@ -598,6 +624,7 @@ pice=pice.subtract(data.getReductionAmount()); order.setDiscountMoney(data.getReductionAmount()); }else{ + order.setDiscountMoney(pice); pice=new BigDecimal(0); } @@ -605,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(); @@ -619,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()); @@ -721,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); } @@ -750,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())); } @@ -792,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()); @@ -1177,11 +1230,13 @@ pageVO = PageDTO.empty(page); } pageVO = PageDTO.of(page, MgtOrderVO.class); + List<MgtOrderVO> voList = pageVO.getList(); if (query.getOrderFrom() == OrderFromEnum.AUCTION_ORDERS) { - List<MgtOrderVO> list = pageVO.getList(); + 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) @@ -1191,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()); @@ -1217,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()) : "无"); @@ -1230,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( @@ -1243,6 +1299,19 @@ } }); } + Set<Long> memberVoIdSet = voList.stream().map(MgtOrderVO::getMemberId) + .collect(Collectors.toSet()); + List<Member> data = memberClient.getMemberListByIds(memberVoIdSet, SecurityConstants.INNER) + .getData(); + Map<Long, Member> memberMap = data.stream() + .collect(Collectors.toMap(Member::getId, e -> e)); + voList = voList.stream().peek(order -> { + Member member = memberMap.get(order.getMemberId()); + if (StringUtils.isNotNull(member)) { + order.setNickname(member.getNickname()); + order.setPhone(member.getPhone()); + } + }).collect(Collectors.toList()); return pageVO; } @@ -1274,7 +1343,7 @@ } } // 查询售后信息 - if (order.getOrderStatus() == OrderStatusEnum.AFTER_SALE) { + if (order.getIsRequest() == 2) { OrderReturnRequest orderReturnRequest = orderReturnRequestService.getOne( Wrappers.lambdaQuery(OrderReturnRequest.class) .eq(OrderReturnRequest::getOrderId, @@ -1345,8 +1414,13 @@ * @param id 订单id */ @Override + @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(); @@ -1365,7 +1439,27 @@ 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); } } @@ -1399,9 +1493,12 @@ @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.setOrderStatus(OrderStatusEnum.AFTER_SALE); + order.setIsRequest(2); this.updateById(order); MgtAfterSaleSettingDTO data = sysUserClient.getAfterSaleSetting().getData(); if (StringUtils.isNull(data)) { @@ -1416,6 +1513,7 @@ orderReturnRequest.setRequestReason("管理后台退款退货"); orderReturnRequest.setStatus(ReturnRequestStatusEnum.TO_BE_RETURNED); orderReturnRequest.setAuditStatus(AuditStatusEnum.PASSED); + orderReturnRequest.setAuditTime(LocalDateTime.now()); orderReturnRequestService.save(orderReturnRequest); } @@ -1441,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); @@ -1484,4 +1577,15 @@ public List<Order> getStaticsOrderList(LocalDateTime startTime, LocalDateTime endTime) { return baseMapper.getStaticsOrderList(startTime, endTime); } + + @Override + public List<Order> getOrderListByMubres(List<String> mubres) { + return this.lambdaQuery().in(Order::getGroupNo, mubres).list(); + } + + @Override + public void updateOrderStatusByMubres(List<String> formedGroupMubres) { + this.lambdaUpdate().set(Order::getIsOrder, 1).in(Order::getGroupNo, formedGroupMubres) + .update(); + } } -- Gitblit v1.7.1