From 5faeb96553f03ea9f16876d39d3d3ac9704cddb7 Mon Sep 17 00:00:00 2001
From: rentaiming <806181062@qq.com>
Date: 星期二, 04 六月 2024 18:36:44 +0800
Subject: [PATCH] 用户端商品

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java |  192 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 189 insertions(+), 3 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 cf8ad8d..1f65ef3 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
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
 import com.ruoyi.common.core.constant.SecurityConstants;
@@ -10,24 +11,35 @@
 import com.ruoyi.common.core.enums.PaymentMethodEnum;
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.common.core.utils.page.PageDTO;
+import com.ruoyi.order.domain.MemberInvoiceRise;
+import com.ruoyi.order.domain.Paylog;
+import com.ruoyi.order.mapper.OrderAuctionBondMapper;
 import com.ruoyi.order.mapper.OrderMapper;
+import com.ruoyi.order.service.IOrderAuctionBondService;
 import com.ruoyi.order.service.IOrderService;
+import com.ruoyi.order.service.IPaylogService;
 import com.ruoyi.order.util.OrderUtil;
 import com.ruoyi.system.api.domain.*;
 import com.ruoyi.system.api.domain.dto.*;
 
+import java.lang.reflect.InvocationTargetException;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 import javax.annotation.Resource;
-
+import com.ruoyi.order.util.SinataUtil;
+import com.ruoyi.system.api.domain.vo.MemberOrderListVO;
 import com.ruoyi.system.api.domain.vo.MemberTiOrderVO;
 import com.ruoyi.system.api.domain.vo.OrderVO;
 import com.ruoyi.system.api.feignClient.GoodsSkuClient;
 import com.ruoyi.system.api.feignClient.MemberClient;
 import com.ruoyi.system.api.feignClient.PromotionClient;
+import org.apache.commons.beanutils.BeanUtils;
 import org.springframework.stereotype.Service;
 
 /**
@@ -49,6 +61,15 @@
 
     @Resource
     private PromotionClient promotionClient;
+
+    @Resource
+    private OrderAuctionBondMapper orderAuctionBondMapper;
+
+    @Resource
+    private IPaylogService iPaylogService;
+
+    @Resource
+    private PaylogServiceImpl paylogService;
 
 
     @Override
@@ -82,7 +103,37 @@
         order.setReceiverCity(OrderDTO.getReceiverCity());
         order.setReceiverDetailAddress(OrderDTO.getReceiverDetailAddress());
         order.setBound(OrderDTO.getBound());
+        order.setSkuName(OrderDTO.getSkuName());
+        order.setPrice(OrderDTO.getPrice());
+        order.setCoverPic(OrderDTO.getCoverPic());
         this.save(order);
+
+        if (OrderDTO.getOrderFrom().getCode()==4){
+            if (OrderDTO.getAuctionType().getCode()==1){
+                LambdaQueryWrapper<OrderAuctionBond> wrapper= Wrappers.lambdaQuery();
+                wrapper.eq(OrderAuctionBond::getMemberId,OrderDTO.getMemberId());
+                wrapper.eq(OrderAuctionBond::getAuctionGoodsId,OrderDTO.getGoodsSkuId());
+                wrapper.eq(OrderAuctionBond::getBoundStatus,2);
+                wrapper.eq(OrderAuctionBond::getBondType,1);
+                OrderAuctionBond orderAuctionBond = orderAuctionBondMapper.selectOne(wrapper);
+                orderAuctionBond.setOrderId(order.getId());
+                orderAuctionBondMapper.updateById(orderAuctionBond);
+            }
+            if (OrderDTO.getAuctionType().getCode()==2){
+                LambdaQueryWrapper<OrderAuctionBond> wrapper= Wrappers.lambdaQuery();
+                wrapper.eq(OrderAuctionBond::getMemberId,OrderDTO.getMemberId());
+                wrapper.eq(OrderAuctionBond::getAuctionGoodsId,OrderDTO.getGoodsSkuId());
+                wrapper.eq(OrderAuctionBond::getBoundStatus,2);
+                wrapper.eq(OrderAuctionBond::getAuctionSalesroomId,OrderDTO.getAuctionSalesroomId());
+                wrapper.eq(OrderAuctionBond::getBondType,2);
+                OrderAuctionBond orderAuctionBond = orderAuctionBondMapper.selectOne(wrapper);
+                orderAuctionBond.setOrderId(order.getId());
+                orderAuctionBondMapper.updateById(orderAuctionBond);
+            }
+
+        }
+
+
     }
 
     /**
@@ -166,6 +217,10 @@
                 goodsStockUpdDTO.setAuctionStock(memberOrderDTO.getGoodsQuantity()*-1);
                 goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO),
                         SecurityConstants.INNER);
+
+                order.setSkuName(goodsSku.getSkuName());
+                order.setPrice(goodsSku.getPrice());
+                order.setCoverPic(goodsSku.getCoverPic());
             }
             memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId());
             memberOrderVO.setPrice(goodsSku.getPrice());
@@ -191,8 +246,11 @@
                 goodsStockUpdDTO.setGoodsSkuId(goodsSku.getId());
                 goodsStockUpdDTO.setAuctionStock(data.getSeckillStock()-memberOrderDTO.getGoodsQuantity());
                 goodsSkuClient.updGoodsSeckill(goodsStockUpdDTO,SecurityConstants.INNER);
-            }
 
+            }
+            order.setSkuName(goodsSku.getSkuName());
+            order.setPrice(data.getSeckillPrice());
+            order.setCoverPic(goodsSku.getCoverPic());
 
         }
         if (memberOrderDTO.getOrderFrom()==3){
@@ -205,6 +263,10 @@
             memberOrderVO.setSkuName(goodsSku.getSkuName());
             memberOrderVO.setYouhiPrice(data.getGroupPurchasePrice());
             pice=data.getGroupPurchasePrice();
+
+            order.setSkuName(goodsSku.getSkuName());
+            order.setPrice(data.getGroupPurchasePrice());
+            order.setCoverPic(goodsSku.getCoverPic());
         }
         order.setMemberId(memberOrderDTO.getMemberId());
         order.setGoodsQuantity(memberOrderDTO.getGoodsQuantity());
@@ -342,12 +404,13 @@
                 pice= order.getTotalAmount();
                 if (pice.doubleValue()>=data.getFullReductionAmount().doubleValue()){
                     pice.subtract(data.getReductionAmount());
+                    order.setDiscountMoney(data.getReductionAmount());
                 }
             }
             if (data.getCouponType().getCode()==2){
                 pice= order.getTotalAmount();
                 pice.subtract(data.getVoucherAmount());
-
+                order.setDiscountMoney(data.getVoucherAmount());
             }
             if (data.getCouponType().getCode()==3){
                 pice= order.getTotalAmount();
@@ -357,7 +420,9 @@
                 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;
                }
 
@@ -392,4 +457,125 @@
 
         return memberOrderVO;
     }
+
+    @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());
+        wrapper.like(Order::getSkuName,memberOrderListDTO.getGoodsSkuName());
+        wrapper.like(Order::getOrderNo,memberOrderListDTO.getOrderNo());
+        wrapper.eq(Order::getOrderStatus,memberOrderListDTO.getOrderStatus());
+        wrapper.eq(Order::getDelFlag,0);
+        wrapper.orderByDesc(Order::getCancelTime);
+        Page<Order> page1 = this.page(page, wrapper);
+
+        PageDTO<MemberOrderListVO> memberOrderListVOPageDTO = PageDTO.of(page1, MemberOrderListVO.class);
+        return memberOrderListVOPageDTO;
+    }
+
+    @Override
+    public OrderVO MemberOrderOne(MemberOrderListDTO memberOrderListDTO) {
+        Order order = baseMapper.selectById(memberOrderListDTO.getId());
+        OrderVO orderVO=new OrderVO();
+        try {
+            BeanUtils.copyProperties(orderVO,order);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+        return orderVO;
+    }
+
+    @Override
+    public void CancelOrderOne(MemberOrderListDTO memberOrderListDTO) {
+        Order order = baseMapper.selectById(memberOrderListDTO.getId());
+        if (order.getOrderStatus().getCode()==1){
+            order.setOrderStatus(OrderStatusEnum.CANCELED);
+            order.setCancelTime(LocalDateTime.now());
+            baseMapper.updateById(order);
+        }
+        if (order.getOrderStatus().getCode()==2) {
+            order.setOrderStatus(OrderStatusEnum.CANCELED);
+            order.setCancelTime(LocalDateTime.now());
+            baseMapper.updateById(order);
+            if (order.getPaymentMethod() != null && order.getPaymentMethod().getCode() == 1) {//支付宝
+                //获取支付信息
+                LambdaQueryWrapper<Paylog> paylogEntityWrapper = Wrappers.lambdaQuery();
+                paylogEntityWrapper.eq(Paylog::getOutTradeNo, order.getOrderNo());
+                Paylog paylog = iPaylogService.getOne(paylogEntityWrapper);
+                boolean bo = paylogService.refundForAlipay(paylog.getOutTradeNo(), paylog.getTradeNo(), paylog.getPayMoney());
+                if (!bo) {
+                    System.out.println("支付宝退款失败");
+                }
+            } else if (order.getPaymentMethod() != null && order.getPaymentMethod().getCode() == 2) {//微信
+                //获取支付信息
+                LambdaQueryWrapper<Paylog> paylogEntityWrapper = Wrappers.lambdaQuery();
+                paylogEntityWrapper.eq(Paylog::getOutTradeNo, order.getOrderNo());
+                Paylog paylog = iPaylogService.getOne(paylogEntityWrapper);
+
+                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 = 1;
+
+                String regEx = "[^0-9]";
+                Pattern p = Pattern.compile(regEx);
+                Matcher m = p.matcher(order.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("微信退款失败");
+                }
+            }
+        }}
+
+    @Override
+    public void AffirmOrderOne(MemberOrderListDTO memberOrderListDTO) {
+        Order order = baseMapper.selectById(memberOrderListDTO.getId());
+        if (order.getOrderFrom().getCode()==4){
+            order.setOrderStatus(OrderStatusEnum.FINISHED);
+            order.setReceiveTime(LocalDateTime.now());
+            baseMapper.updateById(order);
+
+            LambdaQueryWrapper<OrderAuctionBond> wrapper= Wrappers.lambdaQuery();
+            wrapper.eq(OrderAuctionBond::getOrderId,order.getId());
+            OrderAuctionBond orderAuctionBond = orderAuctionBondMapper.selectOne(wrapper);
+
+            if (order.getPaymentMethod() != null && order.getPaymentMethod().getCode() == 1) {//支付宝
+                //获取支付信息
+                LambdaQueryWrapper<Paylog> paylogEntityWrapper = Wrappers.lambdaQuery();
+                paylogEntityWrapper.eq(Paylog::getOutTradeNo, orderAuctionBond.getOrderNo());
+                Paylog paylog = iPaylogService.getOne(paylogEntityWrapper);
+                boolean bo = paylogService.refundForAlipay(paylog.getOutTradeNo(), paylog.getTradeNo(), paylog.getPayMoney());
+                if (!bo) {
+                    System.out.println("支付宝退款失败");
+                }
+            } else if (order.getPaymentMethod() != null && order.getPaymentMethod().getCode() == 2) {//微信
+                //获取支付信息
+                LambdaQueryWrapper<Paylog> paylogEntityWrapper = Wrappers.lambdaQuery();
+                paylogEntityWrapper.eq(Paylog::getOutTradeNo, orderAuctionBond.getOrderNo());
+                Paylog paylog = iPaylogService.getOne(paylogEntityWrapper);
+
+                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 = 1;
+
+                String regEx = "[^0-9]";
+                Pattern p = Pattern.compile(regEx);
+                Matcher m = p.matcher(order.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("微信退款失败");
+                }
+            }
+        }else{
+            order.setOrderStatus(OrderStatusEnum.FINISHED);
+            order.setReceiveTime(LocalDateTime.now());
+            baseMapper.updateById(order);
+        }
+    }
 }

--
Gitblit v1.7.1