From 152e39e78d191f3b6c3bb37ffa6f108c6ffe61c1 Mon Sep 17 00:00:00 2001 From: rentaiming <806181062@qq.com> Date: 星期二, 02 七月 2024 14:31:46 +0800 Subject: [PATCH] 用户端商品 --- ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java | 254 ++++++++++++++++++++++++++++++-------------------- 1 files changed, 150 insertions(+), 104 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 ded583b..1f77906 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 @@ -17,6 +17,7 @@ import com.ruoyi.common.core.enums.RequestTypeEnum; import com.ruoyi.common.core.enums.ReturnRequestStatusEnum; import com.ruoyi.common.core.exception.ServiceException; +import com.ruoyi.common.core.utils.DateUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.page.BeanUtils; import com.ruoyi.common.core.utils.page.PageDTO; @@ -35,16 +36,8 @@ import com.ruoyi.order.service.IPaylogService; import com.ruoyi.order.util.OrderUtil; import com.ruoyi.order.util.SinataUtil; -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.GoodsGroupPurchase; -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.constants.DelayTaskEnum; +import com.ruoyi.system.api.domain.*; import com.ruoyi.system.api.domain.dto.CouponMemberDTO; import com.ruoyi.system.api.domain.dto.GoodsStockUpdDTO; import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO; @@ -66,11 +59,9 @@ 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; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.concurrent.TimeUnit; import java.util.function.Function; import java.util.regex.Matcher; @@ -78,6 +69,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; @@ -158,7 +150,7 @@ order.setTotalAmount(OrderDTO.getTotalAmount()); order.setOrderStatus(OrderStatusEnum.TO_PLAY); order.setPoints(OrderDTO.getPoints()); - order.setGoodsQuantity(OrderDTO.getGoodsQuantity()); + order.setGoodsQuantity(1); order.setReceiverName(OrderDTO.getReceiverName()); order.setReceiverPhone(OrderDTO.getReceiverphone()); order.setReceiverCity(OrderDTO.getReceiverCity()); @@ -188,8 +180,11 @@ wrapper.eq(OrderAuctionBond::getAuctionSalesroomId,OrderDTO.getAuctionSalesroomId()); wrapper.eq(OrderAuctionBond::getBondType,2); OrderAuctionBond orderAuctionBond = orderAuctionBondMapper.selectOne(wrapper); - orderAuctionBond.setOrderId(order.getId()); - orderAuctionBondMapper.updateById(orderAuctionBond); + if (orderAuctionBond!=null){ + orderAuctionBond.setOrderId(order.getId()); + orderAuctionBondMapper.updateById(orderAuctionBond); + } + } } @@ -293,7 +288,7 @@ } if (memberOrderDTO.getOrderFrom()==2){ GoodsSeckill data = goodsSkuClient.getGoodsSeckillOne(memberOrderDTO.getGoodsSkuId(), SecurityConstants.INNER).getData(); - /* String goodsLock = "goods_lock_" + CacheConstants.SECKILL_GOODS + data.getId(); + String goodsLock = "goods_lock_" + CacheConstants.SECKILL_GOODS + data.getId(); RLock redissonLock = redissonClient.getLock(goodsLock); Integer surpNum = 0; try { @@ -305,7 +300,7 @@ }catch (Exception e){ throw new ServiceException("reids 出错"); - }*/ + } order.setOrderFrom(OrderFromEnum.SNAP_ORDERS); GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(data.getGoodsSkuId(), SecurityConstants.INNER).getData(); @@ -330,7 +325,7 @@ 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); @@ -349,6 +344,7 @@ order.setCoverPic(goodsSku.getCoverPic()); order.setSjPrice(goodsSku.getPrice()); } + order.setOrderRemark(memberOrderDTO.getOrderRemark()); order.setMemberId(memberOrderDTO.getMemberId()); order.setGoodsQuantity(memberOrderDTO.getGoodsQuantity()); order.setOrderTime(LocalDateTime.now()); @@ -357,26 +353,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()); @@ -398,7 +389,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; } @@ -406,6 +404,9 @@ @Override public MemberTiOrderVO updMemberOrder(MemberOrderDTO memberOrderDTO) { Order order = baseMapper.selectById(memberOrderDTO.getId()); + if(memberOrderDTO.getOrderRemark()!=null){ + order.setOrderRemark(memberOrderDTO.getOrderRemark()); + } MemberTiOrderVO memberOrderVO=new MemberTiOrderVO(); if (memberOrderDTO.getReceiverDetailAddress()!=null){ @@ -413,6 +414,7 @@ order.setReceiverCity(memberOrderDTO.getReceiverCity()); order.setReceiverDetailAddress(memberOrderDTO.getReceiverDetailAddress()); order.setReceiverPhone(memberOrderDTO.getReceiverphone()); + baseMapper.updateById(order); } if (memberOrderDTO.getOrderRemark()!=null){ order.setOrderRemark(memberOrderDTO.getOrderRemark()); @@ -448,7 +450,13 @@ memberOrderDTO1.setMemberId(order.getMemberId()); memberOrderDTO1.setGoodsSkuId(order.getGoodsSkuId()); Integer num=baseMapper.getSeckillMembers1(memberOrderDTO1); - Integer num1=num+order.getGoodsQuantity(); + Integer num1=0; + if (num!=null){ + num1 =num+order.getGoodsQuantity(); + }else{ + num1=order.getGoodsQuantity(); + } + GoodsSeckill data = goodsSkuClient.getGoodsSeckillOne(order.getGoodsSkuId(), SecurityConstants.INNER).getData(); GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(data.getGoodsSkuId(), SecurityConstants.INNER).getData(); if (data.getLimitNumber()<=num1){ @@ -515,75 +523,93 @@ } } - BigDecimal pice=order.getPrice().multiply(new BigDecimal(memberOrderDTO.getGoodsQuantity())); - if (memberOrderDTO.getCouponId()!=null){ - CouponMemberDTO couponMemberDTO=new CouponMemberDTO(); - couponMemberDTO.setId(memberOrderDTO.getCouponId()); - CouponMember data = promotionClient.getCouponMember(couponMemberDTO, SecurityConstants.INNER).getData(); - - - if (order.getCouponId()!=0){ - CouponMemberDTO couponMemberDTO1=new CouponMemberDTO(); - couponMemberDTO1.setId(memberOrderDTO.getCouponId()); - couponMemberDTO1.setCouponStatus(0); - promotionClient.updCouponMember(couponMemberDTO1, SecurityConstants.INNER); - } - - order.setCouponId(data.getId()); - - if (data.getCouponType().getCode()==1){ - if (pice.doubleValue()>=data.getFullReductionAmount().doubleValue()){ - pice=pice.subtract(data.getReductionAmount()); - order.setDiscountMoney(data.getReductionAmount()); + if (memberOrderDTO.getGoodsQuantity()!=null){ + BigDecimal pice=order.getPrice().multiply(new BigDecimal(memberOrderDTO.getGoodsQuantity())); + if (memberOrderDTO.getCouponId()!=null){ + CouponMemberDTO couponMemberDTO=new CouponMemberDTO(); + couponMemberDTO.setId(memberOrderDTO.getCouponId()); + CouponMember data = promotionClient.getCouponMember(couponMemberDTO, SecurityConstants.INNER).getData(); + if (order.getCouponId()!=0){ + CouponMemberDTO couponMemberDTO1=new CouponMemberDTO(); + couponMemberDTO1.setId(memberOrderDTO.getCouponId()); + couponMemberDTO1.setCouponStatus(0); + promotionClient.updCouponMember(couponMemberDTO1, SecurityConstants.INNER); } - } - if (data.getCouponType().getCode()==2){ - pice= order.getTotalAmount(); - pice=pice.subtract(data.getVoucherAmount()); - order.setDiscountMoney(data.getVoucherAmount()); - } - if (data.getCouponType().getCode()==3){ - pice= order.getTotalAmount(); - BigDecimal pice1=new BigDecimal(data.getDiscountRate()); - BigDecimal pice2=new BigDecimal(0.1); - BigDecimal pice3=pice.multiply(pice1.multiply(pice2)); - 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(data.getId()); + + if (data.getCouponType().getCode()==1){ + 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()); + } + if (data.getCouponType().getCode()==3){ + pice= order.getTotalAmount(); + 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()); + order.setDiscountMoney(data.getMaxDiscount()); + }else{ + order.setDiscountMoney(pice4); + pice=pice3; + } + + } + order.setCouponId(memberOrderDTO.getCouponId()); + CouponMemberDTO couponMemberDTO2=new CouponMemberDTO(); + couponMemberDTO2.setId(memberOrderDTO.getCouponId()); + couponMemberDTO2.setCouponStatus(1); + promotionClient.updCouponMember(couponMemberDTO2, SecurityConstants.INNER); + }else{ + if (order.getCouponId()!=null&&order.getCouponId()!=0){ + CouponMemberDTO couponMemberDTO1=new CouponMemberDTO(); + couponMemberDTO1.setCouponStatus(0); + couponMemberDTO1.setId(order.getCouponId()); + promotionClient.updCouponMember(couponMemberDTO1, SecurityConstants.INNER); + } + order.setCouponId(0L); + order.setDiscountMoney(new BigDecimal(0)); } - order.setCouponId(memberOrderDTO.getCouponId()); - CouponMemberDTO couponMemberDTO2=new CouponMemberDTO(); - couponMemberDTO2.setId(memberOrderDTO.getCouponId()); - couponMemberDTO2.setCouponStatus(1); - promotionClient.updCouponMember(couponMemberDTO2, SecurityConstants.INNER); + order.setTotalAmount(pice); + + CustomConfig memberPointsMoney = sysUserClient.getconfig("MEMBER_POINTS_MONEY").getData(); + CustomConfig memberPointsPoints = sysUserClient.getconfig("MEMBER_POINTS_POINTS").getData(); + + 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); + } - - }else{ - if (order.getCouponId()!=0){ - CouponMemberDTO couponMemberDTO1=new CouponMemberDTO(); - couponMemberDTO1.setId(order.getCouponId()); - couponMemberDTO1.setCouponStatus(0); - promotionClient.updCouponMember(couponMemberDTO1, SecurityConstants.INNER); - } - order.setCouponId(0L); - order.setDiscountMoney(new BigDecimal(0)); + baseMapper.updateById(order); } - order.setTotalAmount(pice); - 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()); - baseMapper.updateById(order); memberOrderVO.setId(order.getId()); memberOrderVO.setOrderStatus(OrderStatusEnum.TO_PLAY); @@ -633,6 +659,9 @@ if (StringUtils.isNotNull(orderReturnRequest)&&orderReturnRequest!=null) { MemberOrderList.setStatus(orderReturnRequest.getStatus()); MemberOrderList.setRequestId(orderReturnRequest.getId()); + MemberOrderList.setIsRequest(2); + }else{ + MemberOrderList.setIsRequest(1); } LambdaQueryWrapper<OrderAuctionBond> wrapper3= Wrappers.lambdaQuery(); wrapper3.eq(OrderAuctionBond::getOrderId,MemberOrderList.getId()); @@ -670,6 +699,9 @@ if (StringUtils.isNotNull(orderReturnRequest)&&orderReturnRequest!=null) { orderVO.setStatus(orderReturnRequest.getStatus()); orderVO.setRequestId(orderReturnRequest.getId()); + orderVO.setIsRequest(2); + }else{ + orderVO.setIsRequest(1); } LambdaQueryWrapper<OrderAuctionBond> wrapper3= Wrappers.lambdaQuery(); @@ -867,9 +899,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()) @@ -1181,4 +1215,16 @@ } } } + + /** + * 查询统计订单列表 + * + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return List<Order> + */ + @Override + public List<Order> getStaticsOrderList(LocalDateTime startTime, LocalDateTime endTime) { + return baseMapper.getStaticsOrderList(startTime, endTime); + } } -- Gitblit v1.7.1