From d36bb8b4ea60d1bb0d46bbc0c5dbc02aca86afcd Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期三, 05 六月 2024 08:38:58 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java |  238 ++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 210 insertions(+), 28 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 831b8a1..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
@@ -1,5 +1,8 @@
 package com.ruoyi.order.service.impl;
 
+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;
@@ -8,26 +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.order.domain.OrderMall;
+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.IOrderMallService;
+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;
 
 /**
@@ -41,11 +53,6 @@
 @Service
 public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements IOrderService {
 
-
-
-    @Resource
-    private IOrderMallService orderMallService;
-
     @Resource
     private GoodsSkuClient goodsSkuClient;
 
@@ -54,6 +61,15 @@
 
     @Resource
     private PromotionClient promotionClient;
+
+    @Resource
+    private OrderAuctionBondMapper orderAuctionBondMapper;
+
+    @Resource
+    private IPaylogService iPaylogService;
+
+    @Resource
+    private PaylogServiceImpl paylogService;
 
 
     @Override
@@ -77,6 +93,7 @@
         order.setOrderTime(OrderDTO.getOrderTime());
         order.setOrderFrom(OrderDTO.getOrderFrom());
         order.setAuctionType(OrderDTO.getAuctionType());
+        order.setGoodsSkuId(OrderDTO.getGoodsSkuId());
         order.setMemberId(OrderDTO.getMemberId());
         order.setTotalAmount(OrderDTO.getTotalAmount());
         order.setOrderStatus(OrderStatusEnum.TO_PLAY);
@@ -86,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);
+            }
+
+        }
+
+
     }
 
     /**
@@ -108,11 +155,7 @@
      */
     @Override
     public Integer getGroupPurchasesGoodsNum(Long id) {
-        Set<Long> orderIdSet = orderMallService.lambdaQuery().eq(OrderMall::getActivityId, id)
-                .list()
-                .stream().map(OrderMall::getOrderId).collect(
-                        Collectors.toSet());
-        List<Order> list = this.lambdaQuery().in(Order::getId, orderIdSet)
+        List<Order> list = this.lambdaQuery().eq(Order::getId, id)
                 .in(Order::getOrderStatus, OrderStatusEnum.TO_BE_SHIPPED,
                         OrderStatusEnum.GOODS_TO_BE_RECEIVED, OrderStatusEnum.FINISHED).list();
         return list.stream().map(Order::getGoodsQuantity).reduce(0, Integer::sum);
@@ -174,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());
@@ -199,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){
@@ -213,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());
@@ -237,20 +291,9 @@
             }
         }
 
-
+        order.setGoodsSkuId(memberOrderDTO.getGoodsSkuId());
         baseMapper.insert(order);
-        OrderMall orderMall=new OrderMall();
-        orderMall.setOrderId(order.getId());
-        if (memberOrderDTO.getOrderFrom()==1){
-            orderMall.setGoodsSkuId(memberOrderDTO.getGoodsSkuId());
-        }
-        if (memberOrderDTO.getOrderFrom()==2){
-            orderMall.setActivityId(memberOrderDTO.getGoodsSkuId());
-        }
-        if (memberOrderDTO.getOrderFrom()==3){
-            orderMall.setActivityId(memberOrderDTO.getGoodsSkuId());
-        }
-        orderMallService.save(orderMall);
+
         memberOrderVO.setId(order.getId());
         memberOrderVO.setOrderStatus(OrderStatusEnum.TO_PLAY);
         memberOrderVO.setOrderNo(order.getOrderNo());
@@ -347,17 +390,27 @@
             CouponMemberDTO couponMemberDTO=new CouponMemberDTO();
             couponMemberDTO.setId(memberOrderDTO.getCouponId());
             CouponMember data = promotionClient.getCouponMember(couponMemberDTO, SecurityConstants.INNER).getData();
+
+
+            if (order.getCouponId()!=null){
+                CouponMemberDTO couponMemberDTO1=new CouponMemberDTO();
+                couponMemberDTO1.setId(memberOrderDTO.getCouponId());
+                couponMemberDTO1.setCouponStatus(1);
+                promotionClient.updCouponMember(couponMemberDTO1, SecurityConstants.INNER);
+            }
+
             BigDecimal pice=new BigDecimal(0);
             if (data.getCouponType().getCode()==1){
                 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();
@@ -367,11 +420,19 @@
                 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(2);
+            promotionClient.updCouponMember(couponMemberDTO2, SecurityConstants.INNER);
+
             order.setTotalAmount(pice);
         }
 
@@ -396,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