From b29becf95484be48aa09e87fcc7cc19f94cf9c81 Mon Sep 17 00:00:00 2001 From: rentaiming <806181062@qq.com> Date: 星期三, 10 七月 2024 18:16:23 +0800 Subject: [PATCH] 修改bug --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java | 413 +++++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 318 insertions(+), 95 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 324d2ba..91b9323 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 @@ -35,9 +35,11 @@ import com.ruoyi.order.service.IPaylogService; 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.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.GoodsSeckill; import com.ruoyi.system.api.domain.GoodsSku; @@ -66,6 +68,7 @@ import com.ruoyi.system.api.feignClient.PromotionClient; import com.ruoyi.system.api.feignClient.SysUserClient; import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.LocalDateTime; import java.util.Collection; import java.util.List; @@ -78,6 +81,7 @@ import java.util.stream.Collectors; import javax.annotation.Resource; import lombok.Synchronized; +import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.stereotype.Service; @@ -138,17 +142,21 @@ if (OrderDTO.getOrderFrom().getCode()==1){ order.setOrderFrom(OrderFromEnum.COMMODITY_ORDER); order.setOrderNo(OrderUtil.getOrderNoForPrefix("SP")); + order.setIsOrder(1); } if (OrderDTO.getOrderFrom().getCode()==2){ order.setOrderFrom(OrderFromEnum.SNAP_ORDERS); order.setOrderNo(OrderUtil.getOrderNoForPrefix("MS")); + order.setIsOrder(1); } if (OrderDTO.getOrderFrom().getCode()==3){ order.setOrderFrom(OrderFromEnum.GROUP_PURCHASE_ORDERS); order.setOrderNo(OrderUtil.getOrderNoForPrefix("TG")); + order.setIsOrder(2); }if (OrderDTO.getOrderFrom().getCode()==4){ - order.setOrderFrom(OrderFromEnum.GROUP_PURCHASE_ORDERS); + order.setOrderFrom(OrderFromEnum.AUCTION_ORDERS); order.setOrderNo(OrderUtil.getOrderNoForPrefix("PM")); + order.setIsOrder(1); } order.setOrderTime(OrderDTO.getOrderTime()); order.setOrderFrom(OrderDTO.getOrderFrom()); @@ -266,6 +274,7 @@ if (memberOrderDTO.getOrderFrom()==3){ order.setOrderFrom(OrderFromEnum.GROUP_PURCHASE_ORDERS); order.setOrderNo(OrderUtil.getOrderNoForPrefix("TG")); + order.setIsOrder(2); } if (memberOrderDTO.getPaymentMethod()==1){ order.setPaymentMethod(PaymentMethodEnum.WECHAT); @@ -275,13 +284,16 @@ if (memberOrderDTO.getOrderFrom()==1){ GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(memberOrderDTO.getGoodsSkuId(), SecurityConstants.INNER).getData(); + if (goodsSku.getListingStatus().getCode()==1){ + throw new ServiceException("该商品已经下架"); + } if (goodsSku.getStock()<memberOrderDTO.getGoodsQuantity()){ - throw new ServiceException("对不起,购买数大于库存"); + throw new ServiceException("该商品已售罄,暂无库存"); }else{ GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); goodsStockUpdDTO.setGoodsSkuId(goodsSku.getId()); - goodsStockUpdDTO.setAuctionStock(memberOrderDTO.getGoodsQuantity()*-1); - goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO), + goodsStockUpdDTO.setAuctionStock(goodsSku.getStock()-memberOrderDTO.getGoodsQuantity()); + goodsSkuClient.updGoodsStock1(goodsStockUpdDTO, SecurityConstants.INNER); order.setSkuName(goodsSku.getSkuName()); @@ -296,10 +308,14 @@ } if (memberOrderDTO.getOrderFrom()==2){ GoodsSeckill data = goodsSkuClient.getGoodsSeckillOne(memberOrderDTO.getGoodsSkuId(), SecurityConstants.INNER).getData(); - /* String goodsLock = "goods_lock_" + CacheConstants.SECKILL_GOODS + data.getId(); + if (data.getListingStatus().getCode()==1){ + throw new ServiceException("该商品已经下架"); + } + + String goodsLock = "goods_lock_" + CacheConstants.SECKILL_GOODS + data.getId(); RLock redissonLock = redissonClient.getLock(goodsLock); Integer surpNum = 0; - try { + /* try { redissonLock.lock(30, TimeUnit.SECONDS); surpNum = redisService.getCacheObject(CacheConstants.SECKILL_GOODS + data.getId()); if (surpNum == null || surpNum < memberOrderDTO.getGoodsQuantity()) { @@ -309,9 +325,25 @@ }catch (Exception e){ throw new ServiceException("reids 出错"); }*/ - order.setOrderFrom(OrderFromEnum.SNAP_ORDERS); + + MemberOrderDTO memberOrderDTO1=new MemberOrderDTO(); + memberOrderDTO1.setMemberId(order.getMemberId()); + memberOrderDTO1.setGoodsSkuId(memberOrderDTO.getGoodsSkuId()); + Integer num=baseMapper.getSeckillMembers1(memberOrderDTO1); + Integer num1=0; + if (num!=null){ + num1 =num+1; + }else{ + num1=order.getGoodsQuantity(); + } + GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(data.getGoodsSkuId(), SecurityConstants.INNER).getData(); + if (data.getLimitNumber()<num1) { + throw new ServiceException("该商品已售罄,暂无库存"); + } + + order.setOrderFrom(OrderFromEnum.SNAP_ORDERS); memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId()); memberOrderVO.setPrice(data.getSeckillPrice()); memberOrderVO.setSjPrice(goodsSku.getPrice()); @@ -320,12 +352,12 @@ memberOrderVO.setYouhiPrice(data.getSeckillPrice()); pice=data.getSeckillPrice(); - if (data.getSeckillStock()<memberOrderDTO.getGoodsQuantity()){ - throw new ServiceException("对不起,购买数大于库存"); + if (data.getSeckillStock()<1){ + throw new ServiceException("该商品已售罄,暂无库存"); }else{ GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); - goodsStockUpdDTO.setGoodsSkuId(goodsSku.getId()); - goodsStockUpdDTO.setAuctionStock(data.getSeckillStock()-memberOrderDTO.getGoodsQuantity()); + goodsStockUpdDTO.setGoodsSkuId(data.getId()); + goodsStockUpdDTO.setAuctionStock(data.getSeckillStock()-1); goodsSkuClient.updGoodsSeckill(goodsStockUpdDTO,SecurityConstants.INNER); } @@ -333,11 +365,18 @@ order.setPrice(data.getSeckillPrice()); order.setCoverPic(goodsSku.getCoverPic()); order.setSjPrice(goodsSku.getPrice()); - /*redisService.setCacheObject(CacheConstants.SECKILL_GOODS + data.getId(), surpNum - memberOrderDTO.getGoodsQuantity());*/ + redisService.setCacheObject(CacheConstants.SECKILL_GOODS + data.getId(), surpNum - memberOrderDTO.getGoodsQuantity()); } if (memberOrderDTO.getOrderFrom()==3){ order.setOrderFrom(OrderFromEnum.GROUP_PURCHASE_ORDERS); GoodsGroupPurchase data = goodsSkuClient.getGoodsSeckiGoodsGroupPurchaseOne(memberOrderDTO.getGoodsSkuId(), SecurityConstants.INNER).getData(); + if (data.getListingStatus().getCode()==1){ + throw new ServiceException("该商品已经下架"); + } + Integer m=data.getCurrentNumber()+1; + if (m>data.getGroupSize()){ + throw new ServiceException("对不起,大成团人数"); + } GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(data.getGoodsSkuId(), SecurityConstants.INNER).getData(); memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId()); memberOrderVO.setPrice(data.getGroupPurchasePrice()); @@ -346,6 +385,8 @@ memberOrderVO.setSkuName(goodsSku.getSkuName()); memberOrderVO.setYouhiPrice(data.getGroupPurchasePrice()); pice=data.getGroupPurchasePrice(); + + goodsSkuClient.GroupPurchaseNum(memberOrderDTO.getGoodsSkuId(), SecurityConstants.INNER); order.setSkuName(goodsSku.getSkuName()); order.setPrice(data.getGroupPurchasePrice()); @@ -361,26 +402,21 @@ CustomConfig memberPointsMoney = sysUserClient.getconfig("MEMBER_POINTS_MONEY").getData(); CustomConfig memberPointsPoints = sysUserClient.getconfig("MEMBER_POINTS_POINTS").getData(); - BigDecimal pic=pice.multiply(new BigDecimal(memberOrderDTO.getGoodsQuantity())); - Double aDouble= Double.valueOf(memberPointsMoney.getConfigValue()) * Double.valueOf(memberPointsPoints.getConfigValue()); - BigDecimal pi=pic.multiply(new BigDecimal(aDouble)); - order.setPoints(pi.intValue()); + BigDecimal pic=pice.multiply(new BigDecimal(memberOrderDTO.getGoodsQuantity())); + BigDecimal divide = pic.divide(new BigDecimal(memberPointsMoney.getConfigValue())); + BigDecimal roundedDown = divide.setScale(0, RoundingMode.DOWN); + BigDecimal aDouble= roundedDown.multiply(new BigDecimal(memberPointsPoints.getConfigValue())); + order.setPoints(aDouble.intValue()); + order.setOrderStatus(OrderStatusEnum.TO_PLAY); - if (memberOrderDTO.getOrderFrom()==3){ - order.setReceiverName(memberOrderDTO.getReceiverName()); - order.setReceiverCity(memberOrderDTO.getReceiverCity()); - order.setReceiverDetailAddress(memberOrderDTO.getReceiverDetailAddress()); - order.setReceiverPhone(memberOrderDTO.getReceiverphone()); - }else{ - MemberAddress data = memberClient.getMemberAddressOne( - memberOrderDTO.getMemberId(), SecurityConstants.INNER).getData(); - if (StringUtils.isNotNull(data)) { - order.setReceiverName(data.getRecipientName()); - order.setReceiverCity(data.getReceiverCity()); - order.setReceiverDetailAddress(data.getDetailedAddress()); - order.setReceiverPhone(data.getRecipientPhone()); - } + MemberAddress data = memberClient.getMemberAddressOne( + memberOrderDTO.getMemberId(), SecurityConstants.INNER).getData(); + if (StringUtils.isNotNull(data)) { + order.setReceiverName(data.getRecipientName()); + order.setReceiverCity(data.getReceiverCity()); + order.setReceiverDetailAddress(data.getDetailedAddress()); + order.setReceiverPhone(data.getRecipientPhone()); } order.setGoodsSkuId(memberOrderDTO.getGoodsSkuId()); @@ -402,7 +438,14 @@ memberOrderVO.setReceiverDetailAddress(order.getReceiverDetailAddress()); memberOrderVO.setReceiverphone(order.getReceiverPhone()); Integer delayTime = 30; - redisService.setCacheObject(CacheConstants.ORDER_AUTOMATIC_CANCEL + "-" + order.getId(), order.getId() , delayTime.longValue(), TimeUnit.MINUTES); + redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + order.getId(), order.getId() , delayTime.longValue(), TimeUnit.MINUTES); + + DelayTask delayTask = new DelayTask(); + delayTask.setDelFlag(0); + delayTask.setCreateTime(LocalDateTime.now()); + delayTask.setExecuteTime(LocalDateTime.now().plusMinutes(30)); + delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + order.getId()); + sysUserClient.addDelayTask(delayTask, SecurityConstants.INNER); return memberOrderVO; } @@ -420,27 +463,28 @@ order.setReceiverCity(memberOrderDTO.getReceiverCity()); order.setReceiverDetailAddress(memberOrderDTO.getReceiverDetailAddress()); order.setReceiverPhone(memberOrderDTO.getReceiverphone()); + baseMapper.updateById(order); } if (memberOrderDTO.getOrderRemark()!=null){ order.setOrderRemark(memberOrderDTO.getOrderRemark()); }if (memberOrderDTO.getGoodsQuantity()!=null){ if (order.getOrderFrom().getCode()==1){ GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(order.getGoodsSkuId(), SecurityConstants.INNER).getData(); - if (goodsSku.getStock()<memberOrderDTO.getGoodsQuantity()){ - throw new ServiceException("对不起,购买数大于库存"); - }else{ - GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); - goodsStockUpdDTO.setGoodsSkuId(goodsSku.getId()); - goodsStockUpdDTO.setAuctionStock(order.getGoodsQuantity()*1); - goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO), - SecurityConstants.INNER); - GoodsStockUpdDTO goodsStockUpdDTO1 = new GoodsStockUpdDTO(); - goodsStockUpdDTO1.setGoodsSkuId(goodsSku.getId()); - goodsStockUpdDTO1.setAuctionStock(memberOrderDTO.getGoodsQuantity()*-1); - goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO), - SecurityConstants.INNER); + if (goodsSku.getStock()+order.getGoodsQuantity()<memberOrderDTO.getGoodsQuantity()){ + throw new ServiceException("该商品已售罄,暂无库存"); + } + GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); + goodsStockUpdDTO.setGoodsSkuId(goodsSku.getId()); + goodsStockUpdDTO.setAuctionStock(goodsSku.getStock()+order.getGoodsQuantity()); + goodsSkuClient.updGoodsStock1(goodsStockUpdDTO, + SecurityConstants.INNER); + + Integer m= goodsSku.getStock()+order.getGoodsQuantity(); + goodsStockUpdDTO.setAuctionStock(m-memberOrderDTO.getGoodsQuantity()); + goodsSkuClient.updGoodsStock1(goodsStockUpdDTO, + SecurityConstants.INNER); order.setTotalAmount(goodsSku.getPrice().multiply(new BigDecimal(memberOrderDTO.getGoodsQuantity()))); order.setGoodsQuantity(memberOrderDTO.getGoodsQuantity()); memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId()); @@ -449,7 +493,7 @@ memberOrderVO.setSkuName(goodsSku.getSkuName()); } - } + if (order.getOrderFrom().getCode()==2){ MemberOrderDTO memberOrderDTO1=new MemberOrderDTO(); memberOrderDTO1.setMemberId(order.getMemberId()); @@ -464,22 +508,27 @@ GoodsSeckill data = goodsSkuClient.getGoodsSeckillOne(order.getGoodsSkuId(), SecurityConstants.INNER).getData(); GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(data.getGoodsSkuId(), SecurityConstants.INNER).getData(); - if (data.getLimitNumber()<=num1){ - throw new ServiceException("对不起,大于商品购买数"); - }else{ - if (data.getSeckillStock()<memberOrderDTO.getGoodsQuantity()){ - throw new ServiceException("对不起,购买数大于库存"); - }else{ - order.setGoodsQuantity(memberOrderDTO.getGoodsQuantity()); - GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); - goodsStockUpdDTO.setGoodsSkuId(data.getId()); - goodsStockUpdDTO.setAuctionStock(data.getSeckillStock()+order.getGoodsQuantity()); - goodsSkuClient.updGoodsSeckill(goodsStockUpdDTO,SecurityConstants.INNER); - GoodsStockUpdDTO goodsStockUpdDTO1 = new GoodsStockUpdDTO(); - goodsStockUpdDTO1.setGoodsSkuId(data.getId()); - goodsStockUpdDTO1.setAuctionStock(data.getSeckillStock()-memberOrderDTO.getGoodsQuantity()); - goodsSkuClient.updGoodsSeckill(goodsStockUpdDTO,SecurityConstants.INNER); + if (order.getGoodsQuantity()!=order.getGoodsQuantity()){ + if (data.getLimitNumber()<num1){ + throw new ServiceException("对不起,大于商品购买数"); + }else{ + + + if (data.getSeckillStock()+order.getGoodsQuantity()<memberOrderDTO.getGoodsQuantity()){ + throw new ServiceException("该商品已售罄,暂无库存"); + } + + GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); + goodsStockUpdDTO.setGoodsSkuId(data.getId()); + goodsStockUpdDTO.setAuctionStock(data.getSeckillStock()+order.getGoodsQuantity()); + goodsSkuClient.updGoodsSeckill(goodsStockUpdDTO,SecurityConstants.INNER); + + Integer m=data.getSeckillStock()+order.getGoodsQuantity(); + GoodsStockUpdDTO goodsStockUpdDTO1 = new GoodsStockUpdDTO(); + goodsStockUpdDTO1.setGoodsSkuId(data.getId()); + goodsStockUpdDTO1.setAuctionStock(m-memberOrderDTO.getGoodsQuantity()); + goodsSkuClient.updGoodsSeckill(goodsStockUpdDTO1,SecurityConstants.INNER); order.setTotalAmount(data.getSeckillPrice().multiply(new BigDecimal(memberOrderDTO.getGoodsQuantity()))); order.setGoodsQuantity(memberOrderDTO.getGoodsQuantity()); @@ -488,13 +537,16 @@ order.setCoverPic(goodsSku.getCoverPic()); order.setSjPrice(goodsSku.getPrice()); + + } + memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId()); + memberOrderVO.setPrice(goodsSku.getPrice()); + memberOrderVO.setCoverPic(goodsSku.getCoverPic()); + memberOrderVO.setSkuName(goodsSku.getSkuName()); + memberOrderVO.setYouhiPrice(data.getSeckillPrice()); + } - } - memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId()); - memberOrderVO.setPrice(goodsSku.getPrice()); - memberOrderVO.setCoverPic(goodsSku.getCoverPic()); - memberOrderVO.setSkuName(goodsSku.getSkuName()); - memberOrderVO.setYouhiPrice(data.getSeckillPrice()); + } if (order.getOrderFrom().getCode()==3){ order.setOrderFrom(OrderFromEnum.GROUP_PURCHASE_ORDERS); GoodsGroupPurchase data = goodsSkuClient.getGoodsSeckiGoodsGroupPurchaseOne(order.getGoodsSkuId(), SecurityConstants.INNER).getData(); @@ -504,28 +556,27 @@ memberOrderDTO1.setGoodsSkuId(order.getGoodsSkuId()); Integer num=baseMapper.getGoodsGroupPurchase(memberOrderDTO1); Integer num1=num+order.getGoodsQuantity(); - if (data.getLimitNumber()<=num1){ - throw new ServiceException("对不起,大于商品购买数"); - }else{ - if (data.getLimitNumber()<memberOrderDTO.getGoodsQuantity()){ - throw new ServiceException("对不起,购买数大于库存"); + if (order.getGoodsQuantity()!=order.getGoodsQuantity()){ + if (data.getLimitNumber()<=num1){ + throw new ServiceException("对不起,大于商品购买数"); }else{ - memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId()); - memberOrderVO.setPrice(data.getGroupPurchasePrice()); - memberOrderVO.setSjPrice(goodsSku.getPrice()); - memberOrderVO.setCoverPic(goodsSku.getCoverPic()); - memberOrderVO.setSkuName(goodsSku.getSkuName()); - memberOrderVO.setYouhiPrice(data.getGroupPurchasePrice()); - order.setGoodsQuantity(memberOrderDTO.getGoodsQuantity()); - order.setSkuName(goodsSku.getSkuName()); - order.setPrice(data.getGroupPurchasePrice()); - order.setCoverPic(goodsSku.getCoverPic()); - order.setSjPrice(goodsSku.getPrice()); + if (data.getLimitNumber()<memberOrderDTO.getGoodsQuantity()){ + throw new ServiceException("该商品已售罄,暂无库存"); + }else{ + memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId()); + memberOrderVO.setPrice(data.getGroupPurchasePrice()); + memberOrderVO.setSjPrice(goodsSku.getPrice()); + memberOrderVO.setCoverPic(goodsSku.getCoverPic()); + memberOrderVO.setSkuName(goodsSku.getSkuName()); + memberOrderVO.setYouhiPrice(data.getGroupPurchasePrice()); + order.setGoodsQuantity(memberOrderDTO.getGoodsQuantity()); + order.setSkuName(goodsSku.getSkuName()); + order.setPrice(data.getGroupPurchasePrice()); + order.setCoverPic(goodsSku.getCoverPic()); + order.setSjPrice(goodsSku.getPrice()); + } } } - - - } } if (memberOrderDTO.getGoodsQuantity()!=null){ @@ -547,10 +598,16 @@ if (pice.doubleValue()>=data.getFullReductionAmount().doubleValue()){ pice=pice.subtract(data.getReductionAmount()); order.setDiscountMoney(data.getReductionAmount()); + }else{ + pice=new BigDecimal(0); + } } if (data.getCouponType().getCode()==2){ pice= order.getTotalAmount(); + if(pice.compareTo(data.getVoucherAmount())<0){ + throw new ServiceException("优惠卷抵扣金额不能大于实际支付金额"); + } pice=pice.subtract(data.getVoucherAmount()); order.setDiscountMoney(data.getVoucherAmount()); } @@ -559,6 +616,13 @@ BigDecimal pice1=new BigDecimal(data.getDiscountRate()); BigDecimal pice2=new BigDecimal(0.1); BigDecimal pice3=pice.multiply(pice1.multiply(pice2)); + if (pice3.compareTo(new BigDecimal(data.getMaxDiscount().doubleValue()))>0){ + 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()); @@ -589,9 +653,16 @@ CustomConfig memberPointsMoney = sysUserClient.getconfig("MEMBER_POINTS_MONEY").getData(); CustomConfig memberPointsPoints = sysUserClient.getconfig("MEMBER_POINTS_POINTS").getData(); - Double aDouble= Double.valueOf(memberPointsMoney.getConfigValue()) * Double.valueOf(memberPointsPoints.getConfigValue()); - BigDecimal pi=pice.multiply(new BigDecimal(aDouble)); - order.setPoints(pi.intValue()); + if (pice.intValue()>0){ + BigDecimal divide = pice.divide(new BigDecimal(memberPointsMoney.getConfigValue())); + BigDecimal roundedDown = divide.setScale(0, RoundingMode.DOWN); + BigDecimal aDouble= roundedDown.multiply(new BigDecimal(memberPointsPoints.getConfigValue())); + order.setPoints(aDouble.intValue()); + }else{ + order.setPoints(0); + } + + baseMapper.updateById(order); } @@ -618,6 +689,7 @@ @Override public PageDTO<MemberOrderListVO> MemberrderList(MemberOrderListDTO memberOrderListDTO) { + Page<Order> page = new Page<>(memberOrderListDTO.getPageCurr(), memberOrderListDTO.getPageSize()); LambdaQueryWrapper<Order> wrapper= Wrappers.lambdaQuery(); wrapper.eq(Order::getMemberId,memberOrderListDTO.getMemberId()); @@ -630,6 +702,11 @@ if(memberOrderListDTO.getOrderStatus()!=null){ wrapper.eq(Order::getOrderStatus,memberOrderListDTO.getOrderStatus().getCode()-1); } + + if(memberOrderListDTO.getIsRequest()!=null){ + wrapper.eq(Order::getIsRequest,memberOrderListDTO.getIsRequest()); + } + wrapper.eq(Order::getIsOrder,1); wrapper.eq(Order::getDelFlag,0); wrapper.orderByDesc(Order::getCancelTime); Page<Order> page1 = this.page(page, wrapper); @@ -637,6 +714,20 @@ PageDTO<MemberOrderListVO> memberOrderListVOPageDTO = PageDTO.of(page1, MemberOrderListVO.class); List<MemberOrderListVO> list = memberOrderListVOPageDTO.getList(); for (MemberOrderListVO MemberOrderList:list){ + if (MemberOrderList.getOrderStatus().getCode()==1){ + if (MemberOrderList.getOrderFrom().getCode()==1||MemberOrderList.getOrderFrom().getCode()==2||MemberOrderList.getOrderFrom().getCode()==3){ + LocalDateTime localDateTime = MemberOrderList.getOrderTime().plusMinutes(30); + if (LocalDateTime.now().isAfter(localDateTime)) { + // dateTime1 在 dateTime2 之后 + MemberOrderList.setOrderStatus(OrderStatusEnum.CANCELED); + Order order = this.getOrder(MemberOrderList.getId()); + order.setOrderStatus(OrderStatusEnum.CANCELED); + this.updateById(order); + } + + } + + } OrderReturnRequest orderReturnRequest = orderReturnRequestService.getOne( Wrappers.lambdaQuery(OrderReturnRequest.class) .eq(OrderReturnRequest::getOrderId, @@ -680,7 +771,8 @@ OrderReturnRequest orderReturnRequest = orderReturnRequestService.getOne( Wrappers.lambdaQuery(OrderReturnRequest.class) .eq(OrderReturnRequest::getOrderId, - orderVO.getId()).last("limit 1")); + orderVO.getId()).eq(OrderReturnRequest::getDelFlag, + 0).last("limit 1")); if (StringUtils.isNotNull(orderReturnRequest)&&orderReturnRequest!=null) { orderVO.setStatus(orderReturnRequest.getStatus()); orderVO.setRequestId(orderReturnRequest.getId()); @@ -715,21 +807,63 @@ order.setOrderStatus(OrderStatusEnum.CANCELED); order.setCancelTime(LocalDateTime.now()); baseMapper.updateById(order); + + if(order.getOrderNo().contains("SP")){ + GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(order.getGoodsSkuId(), SecurityConstants.INNER).getData(); + GoodsStockUpdDTO goodsStockUpdDTO1 = new GoodsStockUpdDTO(); + goodsStockUpdDTO1.setGoodsSkuId(order.getGoodsSkuId()); + goodsStockUpdDTO1.setAuctionStock(goodsSku.getStock()+order.getGoodsQuantity()); + goodsSkuClient.updGoodsStock1(goodsStockUpdDTO1,SecurityConstants.INNER); + } + + if(order.getOrderNo().contains("MS")){ + GoodsSeckill data = goodsSkuClient.getGoodsSeckillOne(order.getGoodsSkuId(), SecurityConstants.INNER).getData(); + GoodsStockUpdDTO goodsStockUpdDTO1 = new GoodsStockUpdDTO(); + goodsStockUpdDTO1.setGoodsSkuId(order.getGoodsSkuId()); + goodsStockUpdDTO1.setAuctionStock(data.getSeckillStock()+order.getGoodsQuantity()); + goodsSkuClient.updGoodsStock1(goodsStockUpdDTO1,SecurityConstants.INNER); + } + + } if (order.getOrderStatus().getCode() == 2) { order.setOrderStatus(OrderStatusEnum.CANCELED); order.setCancelTime(LocalDateTime.now()); baseMapper.updateById(order); + if(order.getOrderNo().contains("SP")){ + GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(order.getGoodsSkuId(), SecurityConstants.INNER).getData(); + GoodsStockUpdDTO goodsStockUpdDTO1 = new GoodsStockUpdDTO(); + goodsStockUpdDTO1.setGoodsSkuId(order.getGoodsSkuId()); + goodsStockUpdDTO1.setAuctionStock(goodsSku.getStock()+order.getGoodsQuantity()); + goodsSkuClient.updGoodsStock1(goodsStockUpdDTO1,SecurityConstants.INNER); + } + + if(order.getOrderNo().contains("MS")){ + GoodsSeckill data = goodsSkuClient.getGoodsSeckillOne(order.getGoodsSkuId(), SecurityConstants.INNER).getData(); + GoodsStockUpdDTO goodsStockUpdDTO1 = new GoodsStockUpdDTO(); + goodsStockUpdDTO1.setGoodsSkuId(order.getGoodsSkuId()); + goodsStockUpdDTO1.setAuctionStock(data.getSeckillStock()+order.getGoodsQuantity()); + goodsSkuClient.updGoodsStock1(goodsStockUpdDTO1,SecurityConstants.INNER); + } + + if (order.getCouponId()!=0){ + CouponMemberDTO couponMemberDTO1=new CouponMemberDTO(); + couponMemberDTO1.setId(order.getCouponId()); + couponMemberDTO1.setCouponStatus(0); + promotionClient.updCouponMember(couponMemberDTO1, SecurityConstants.INNER); + } + + updMembeOneDTO MembeOneDTO = new updMembeOneDTO(); MembeOneDTO.setType(2); MembeOneDTO.setMemberId(order.getMemberId()); MembeOneDTO.setMoney(order.getTotalAmount()); MembeOneDTO.setTotalPoints(order.getPoints()); - memberClient.updMembeOne(MembeOneDTO); + memberClient.updMembeOne(MembeOneDTO, SecurityConstants.INNER); - if (order.getPaymentMethod() != null && order.getPaymentMethod().getCode() == 1) {//支付宝 + if (order.getPaymentMethod() != null && order.getPaymentMethod().getCode() == 2) {//支付宝 //获取支付信息 LambdaQueryWrapper<Paylog> paylogEntityWrapper = Wrappers.lambdaQuery(); paylogEntityWrapper.eq(Paylog::getOutTradeNo, order.getOrderNo()); @@ -741,7 +875,7 @@ } } - } else if (order.getPaymentMethod() != null && order.getPaymentMethod().getCode() == 2) {//微信 + } else if (order.getPaymentMethod() != null && order.getPaymentMethod().getCode() == 1) {//微信 //获取支付信息 LambdaQueryWrapper<Paylog> paylogEntityWrapper = Wrappers.lambdaQuery(); paylogEntityWrapper.eq(Paylog::getOutTradeNo, order.getOrderNo()); @@ -751,7 +885,7 @@ Integer refundFee = Integer.parseInt(refundMoney.substring(0, refundMoney.length() - 3)); String money = SinataUtil.doubleRetainTwo(paylog.getPayMoney() * 100d); Integer totalFee = Integer.parseInt(money.substring(0, money.length() - 3)); - refundFee = 1; + refundFee = Integer.parseInt(money.substring(0, money.length() - 3)); String regEx = "[^0-9]"; Pattern p = Pattern.compile(regEx); @@ -766,6 +900,62 @@ } } } + + @Override + public void delOrderOne(MemberOrderListDTO memberOrderListDTO) { + + Order byId = this.getById(memberOrderListDTO.getId()); + goodsSkuClient.GroupPurchaseNum1(byId.getGoodsSkuId(), SecurityConstants.INNER); + this.removeById(memberOrderListDTO.getId()); + if (byId.getOrderStatus().getCode() == 2) { + + updMembeOneDTO MembeOneDTO = new updMembeOneDTO(); + MembeOneDTO.setType(2); + MembeOneDTO.setMemberId(byId.getMemberId()); + MembeOneDTO.setMoney(byId.getTotalAmount()); + MembeOneDTO.setTotalPoints(byId.getPoints()); + memberClient.updMembeOne(MembeOneDTO, SecurityConstants.INNER); + + + if (byId.getPaymentMethod() != null && byId.getPaymentMethod().getCode() == 2) {//支付宝 + //获取支付信息 + LambdaQueryWrapper<Paylog> paylogEntityWrapper = Wrappers.lambdaQuery(); + paylogEntityWrapper.eq(Paylog::getOutTradeNo, byId.getOrderNo()); + Paylog paylog = iPaylogService.getOne(paylogEntityWrapper); + if (paylog != null) { + boolean bo = paylogService.refundForAlipay(paylog.getOutTradeNo(), paylog.getTradeNo(), paylog.getPayMoney()); + if (!bo) { + System.out.println("支付宝退款失败"); + } + } + + } else if (byId.getPaymentMethod() != null && byId.getPaymentMethod().getCode() == 1) {//微信 + //获取支付信息 + LambdaQueryWrapper<Paylog> paylogEntityWrapper = Wrappers.lambdaQuery(); + paylogEntityWrapper.eq(Paylog::getOutTradeNo, byId.getOrderNo()); + Paylog paylog = iPaylogService.getOne(paylogEntityWrapper); + if (paylog != null) { + String refundMoney = SinataUtil.doubleRetainTwo(paylog.getPayMoney() * 100d); + Integer refundFee = Integer.parseInt(refundMoney.substring(0, refundMoney.length() - 3)); + String money = SinataUtil.doubleRetainTwo(paylog.getPayMoney() * 100d); + Integer totalFee = Integer.parseInt(money.substring(0, money.length() - 3)); + refundFee = Integer.parseInt(money.substring(0, money.length() - 3)); + + String regEx = "[^0-9]"; + Pattern p = Pattern.compile(regEx); + Matcher m = p.matcher(byId.getOrderNo()); + String ma = m.replaceAll("").trim(); + boolean bo = paylogService.refundForWxpay(4, paylog.getTradeNo(), paylog.getOutTradeNo(), "R" + ma, totalFee, refundFee, "2"); + if (!bo) { + System.out.println("微信退款失败"); + } + + } + } + } + baseMapper.deleteById(memberOrderListDTO.getId()); + } + @Override public void AffirmOrderOne(MemberOrderListDTO memberOrderListDTO) { Order order = baseMapper.selectById(memberOrderListDTO.getId()); @@ -818,6 +1008,30 @@ @Override public MemberOrderNumVO MemberOrderNum(MemberOrderListDTO memberOrderListDTO) { + LambdaQueryWrapper<Order> wrapper1= Wrappers.lambdaQuery(); + wrapper1.eq(Order::getMemberId,memberOrderListDTO.getMemberId()); + wrapper1.eq(Order::getOrderStatus,1); + wrapper1.eq(Order::getIsOrder,1); + wrapper1.eq(Order::getDelFlag,0); + wrapper1.orderByDesc(Order::getCancelTime); + List<Order> page2 = this.list(wrapper1); + for (Order MemberOrderList:page2) { + if (MemberOrderList.getOrderStatus().getCode() == 1) { + if (MemberOrderList.getOrderFrom().getCode() == 1 || MemberOrderList.getOrderFrom().getCode() == 2 || MemberOrderList.getOrderFrom().getCode() == 3) { + LocalDateTime localDateTime = MemberOrderList.getOrderTime().plusMinutes(30); + if (LocalDateTime.now().isAfter(localDateTime)) { + // dateTime1 在 dateTime2 之后 + MemberOrderList.setOrderStatus(OrderStatusEnum.CANCELED); + Order order = this.getById(MemberOrderList.getId()); + order.setOrderStatus(OrderStatusEnum.CANCELED); + this.updateById(order); + } + + } + } + } + + MemberOrderNumVO vo=new MemberOrderNumVO(); LambdaQueryWrapper<Order> paylogEntityWrapper = Wrappers.lambdaQuery(); @@ -838,6 +1052,13 @@ List<Order> list2 = this.list(paylogEntityWrapper2); vo.setDshorderNo(list2.size()); + + + LambdaQueryWrapper<Order> paylogEntityWrapper3 = Wrappers.lambdaQuery(); + paylogEntityWrapper3.eq(Order::getMemberId, memberOrderListDTO.getMemberId()); + paylogEntityWrapper3.eq(Order::getIsRequest,2); + List<Order> list3 = this.list(paylogEntityWrapper3); + vo.setShorderNo(list3.size()); return vo; } @@ -884,9 +1105,11 @@ } page = this.lambdaQuery() .in(StringUtils.isNotEmpty(memberIdSet), Order::getMemberId, memberIdSet) - .ne(query.getQueryType().equals(OrderTypeEnum.MALL_ODER), Order::getOrderFrom, + .ne(StringUtils.isNotNull(query.getQueryType()) && query.getQueryType() + .equals(OrderTypeEnum.MALL_ODER), Order::getOrderFrom, OrderFromEnum.AUCTION_ORDERS) - .eq(query.getQueryType().equals(OrderTypeEnum.AUCTION_ORDER), Order::getOrderFrom, + .eq(StringUtils.isNotNull(query.getQueryType()) && query.getQueryType() + .equals(OrderTypeEnum.AUCTION_ORDER), Order::getOrderFrom, OrderFromEnum.AUCTION_ORDERS) .like(StringUtils.isNotBlank(query.getOrderNo()), Order::getOrderNo, query.getOrderNo()) -- Gitblit v1.7.1