From 682a7f41ec41c3865312dc68e849f93f5387e7fc Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期四, 13 六月 2024 21:06:02 +0800
Subject: [PATCH] 提交【管理后台】订单管理相关接口

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java |  207 +++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 191 insertions(+), 16 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 1f65ef3..1f887b0 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
@@ -11,35 +11,54 @@
 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.BeanUtils;
 import com.ruoyi.common.core.utils.page.PageDTO;
-import com.ruoyi.order.domain.MemberInvoiceRise;
+import com.ruoyi.order.controller.management.dto.MgtMallOrderQuery;
+import com.ruoyi.order.controller.management.dto.MgtOrderConfirmShipmentDTO;
+import com.ruoyi.order.controller.management.vo.MgtMallOrderVO;
+import com.ruoyi.order.controller.management.vo.MgtOrderReturnRequestVO;
+import com.ruoyi.order.domain.OrderReturnRequest;
 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.IOrderReturnRequestService;
 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.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.domain.dto.CouponMemberDTO;
+import com.ruoyi.system.api.domain.dto.GoodsStockUpdDTO;
+import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO;
+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.OrderDTO;
+import com.ruoyi.system.api.domain.dto.updMembeOneDTO;
 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 com.ruoyi.system.api.feignClient.SysUserClient;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Collection;
+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 org.springframework.stereotype.Service;
 
 /**
@@ -71,6 +90,10 @@
     @Resource
     private PaylogServiceImpl paylogService;
 
+    @Resource
+    private SysUserClient sysUserClient;
+    @Resource
+    private IOrderReturnRequestService orderReturnRequestService;
 
     @Override
     public void saveOrderOne(OrderDTO OrderDTO) {
@@ -97,6 +120,7 @@
         order.setMemberId(OrderDTO.getMemberId());
         order.setTotalAmount(OrderDTO.getTotalAmount());
         order.setOrderStatus(OrderStatusEnum.TO_PLAY);
+        order.setPoints(OrderDTO.getPoints());
         order.setGoodsQuantity(OrderDTO.getGoodsQuantity());
         order.setReceiverName(OrderDTO.getReceiverName());
         order.setReceiverphone(OrderDTO.getReceiverphone());
@@ -273,6 +297,13 @@
         order.setOrderTime(LocalDateTime.now());
         order.setGoodsQuantity(memberOrderDTO.getGoodsQuantity());
         order.setTotalAmount(pice.multiply(new BigDecimal(memberOrderDTO.getGoodsQuantity())));
+        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());
         order.setOrderStatus(OrderStatusEnum.TO_PLAY);
 
         if (memberOrderDTO.getOrderFrom()==3){
@@ -434,6 +465,15 @@
             promotionClient.updCouponMember(couponMemberDTO2, SecurityConstants.INNER);
 
             order.setTotalAmount(pice);
+
+            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());
+
         }
 
         baseMapper.updateById(order);
@@ -479,7 +519,7 @@
         Order order = baseMapper.selectById(memberOrderListDTO.getId());
         OrderVO orderVO=new OrderVO();
         try {
-            BeanUtils.copyProperties(orderVO,order);
+            orderVO = BeanUtils.copyBean(order, OrderVO.class);
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
@@ -498,6 +538,15 @@
             order.setOrderStatus(OrderStatusEnum.CANCELED);
             order.setCancelTime(LocalDateTime.now());
             baseMapper.updateById(order);
+
+            updMembeOneDTO MembeOneDTO=new updMembeOneDTO();
+            MembeOneDTO.setType(2);
+            MembeOneDTO.setMemberId(order.getMemberId());
+            MembeOneDTO.setMoney(order.getTotalAmount());
+            MembeOneDTO.setTotalPoints(order.getPoints());
+            memberClient.updMembeOne(MembeOneDTO);
+
+
             if (order.getPaymentMethod() != null && order.getPaymentMethod().getCode() == 1) {//支付宝
                 //获取支付信息
                 LambdaQueryWrapper<Paylog> paylogEntityWrapper = Wrappers.lambdaQuery();
@@ -578,4 +627,130 @@
             baseMapper.updateById(order);
         }
     }
+
+    /**
+     * 根据优惠券id集合查询订单列表
+     *
+     * @param couponIds 优惠券id集合
+     * @return List<Order>
+     */
+    @Override
+    public List<Order> getOrderByCouponIds(Collection<Long> couponIds) {
+        return this.lambdaQuery().in(Order::getCouponId, couponIds)
+                .eq(Order::getOrderStatus, OrderStatusEnum.FINISHED).list();
+    }
+
+    /**
+     * 商城订单分页列表
+     *
+     * @param query 商城订单查询对象
+     * @return PageDTO<MgtMallOrderVO>
+     */
+    @Override
+    public PageDTO<MgtMallOrderVO> getMallOrderPage(MgtMallOrderQuery query) {
+        PageDTO<MgtMallOrderVO> pageVO;
+        // 封装会员条件查询对象
+        MemberDTO memberDTO = null;
+        Set<Long> memberIdSet = null;
+        Page<Order> page = new Page<>(query.getPageCurr(), query.getPageSize());
+        if (StringUtils.isNotBlank(query.getNickname()) || StringUtils.isNotBlank(
+                query.getPhone())) {
+            memberDTO = new MemberDTO();
+            memberDTO.setNickname(query.getNickname());
+            memberDTO.setPhone(query.getPhone());
+        }
+        if (StringUtils.isNotNull(memberDTO)) {
+            // 远程调用会员服务进行条件查询
+            List<Member> memberList = memberClient.getMemberListByCondition(memberDTO,
+                    SecurityConstants.INNER).getData();
+            if (StringUtils.isEmpty(memberList)) {
+                return PageDTO.empty(page);
+            }
+            memberIdSet = memberList.stream().map(Member::getId)
+                    .collect(Collectors.toSet());
+        }
+        page = this.lambdaQuery()
+                .in(StringUtils.isNotEmpty(memberIdSet), Order::getMemberId, memberIdSet)
+                .like(StringUtils.isNotBlank(query.getOrderNo()), Order::getOrderNo,
+                        query.getOrderNo())
+                .eq(StringUtils.isNotNull(query.getOrderFrom()), Order::getOrderFrom,
+                        query.getOrderFrom())
+                .like(StringUtils.isNotBlank(query.getSkuName()), Order::getSkuName,
+                        query.getSkuName())
+                .eq(StringUtils.isNotNull(query.getOrderStatus()), Order::getOrderStatus,
+                        query.getOrderStatus())
+                .page(new Page<>(query.getPageCurr(), query.getPageSize()));
+        if (StringUtils.isEmpty(page.getRecords())) {
+            pageVO = PageDTO.empty(page);
+        }
+        pageVO = PageDTO.of(page, MgtMallOrderVO.class);
+        return pageVO;
+    }
+
+    /**
+     * 获取商城订单详情
+     *
+     * @param id 订单id
+     * @return MgtMallOrderVO
+     */
+    @Override
+    public MgtMallOrderVO getMallOrderDetail(Long id) {
+        Order order = this.getById(id);
+        MgtMallOrderVO mgtMallOrderVO = BeanUtils.copyBean(order, MgtMallOrderVO.class);
+        // 查询用户信息
+        Member member = memberClient.getMembeOne(order.getMemberId(), SecurityConstants.INNER)
+                .getData();
+        if (StringUtils.isNotNull(member)) {
+            mgtMallOrderVO.setNickname(member.getNickname());
+            mgtMallOrderVO.setPhone(member.getPhone());
+        }
+        // 查询售后信息
+        if (order.getOrderStatus() == OrderStatusEnum.AFTER_SALE) {
+            OrderReturnRequest orderReturnRequest = orderReturnRequestService.getOne(
+                    Wrappers.lambdaQuery(OrderReturnRequest.class)
+                            .eq(OrderReturnRequest::getOrderId,
+                                    order.getId()).last("limit 1"));
+            if (StringUtils.isNotNull(orderReturnRequest)) {
+                mgtMallOrderVO.setReturnRequestVO(BeanUtils.copyBean(orderReturnRequest,
+                        MgtOrderReturnRequestVO.class));
+            }
+        }
+        return mgtMallOrderVO;
+    }
+
+    /**
+     * 确认发货
+     *
+     * @param dto 确认收货请求对象
+     */
+    @Override
+    public void confirmShipmentOrder(MgtOrderConfirmShipmentDTO dto) {
+        Order order = this.getById(dto.getId());
+        if (StringUtils.isNull(order)) {
+            throw new ServiceException("订单不存在");
+        }
+        order.setOrderStatus(OrderStatusEnum.GOODS_TO_BE_RECEIVED);
+        order.setDeliveryTime(LocalDateTime.now());
+        order.setCourierNumber(dto.getCourierNumber());
+        order.setLogisticsNum(dto.getLogisticsNum());
+        this.updateById(order);
+    }
+
+    /**
+     * 已收货
+     *
+     * @param id 订单id
+     */
+    @Override
+    public void receivedGoods(Long id) {
+        Order order = this.getById(id);
+        if (StringUtils.isNull(order)) {
+            throw new ServiceException("订单不存在");
+        }
+        if (order.getOrderStatus() == OrderStatusEnum.GOODS_TO_BE_RECEIVED) {
+            order.setOrderStatus(OrderStatusEnum.FINISHED);
+            order.setReceiveTime(LocalDateTime.now());
+            this.updateById(order);
+        }
+    }
 }

--
Gitblit v1.7.1