From 32bd52ec49d25021b6a35d8ee5f32c70df788165 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期三, 05 七月 2023 21:30:21 +0800
Subject: [PATCH] bug 用户端

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java |  122 ++++++++++++++++++++++++++++++++++++----
 1 files changed, 109 insertions(+), 13 deletions(-)

diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
index ec6cfb0..c2de81f 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -354,7 +354,7 @@
         order.setOrderId(orderId);
         order.setDelFlag(0);
         //为对接支付 直接付款成功
-        order.setOrderStatus(2);
+        order.setOrderStatus(1);
         order.setOrderNo(orderNo);
         order.setOrderFrom(1);
         order.setShopId(appPlaceOrderDto.getShopId());
@@ -364,6 +364,7 @@
         order.setDiscountMoney(couponDiscount);
         order.setReceivableMoney(orderPayMoney);
         order.setReceivableDeposit(orderPayDeposit);
+        order.setChangeReceivableMoney(orderPayMoney);
         order.setPayType(appPlaceOrderDto.getPayType());
         if (order.getPayType() == 1) {
             order.setPayMoney(orderPayMoney);
@@ -528,11 +529,17 @@
      * @return
      */
     @Override
-    public MerVerifyOrderVo verifyOrder(String orderId) {
+    public MerVerifyOrderVo verifyOrder(String orderId,Long shopId) {
         // 创建返回对象
         MerVerifyOrderVo merVerifyOrderVo = new MerVerifyOrderVo();
         // 根据订单ID获取订单信息
         Order order = this.getById(orderId);
+        if(order.getOrderStatus()!=2){
+            throw new ServiceException(AppErrorConstant.VERIFY_USED);
+        }
+        if(!order.getShopId().equals(shopId)){
+            throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+        }
         // 根据订单ID获取订单商品列表
         List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId);
         // 设置返回对象的属性值
@@ -573,13 +580,17 @@
         Date nowTime = new Date();
         //更新订单信息
         Order order = this.getById(orderId);
+        if(order.getOrderStatus()!=2){
+            throw new ServiceException(AppErrorConstant.VERIFY_USED);
+        }
         order.setOrderStatus(3);
         order.setUseTime(nowTime);
         order.setUseUserId(merVerifyOrderDto.getUserId());
         order.setOfflinePayMoney(relPayMoney);
         order.setOffPayTime(nowTime);
-        order.setPayMoney(relReceiveMoney.add(relPayMoney));
+        order.setPayMoney(order.getPayMoney().add(relPayMoney));
         order.setCloseFlag(1);
+        order.setChangeReceivableMoney(relReceiveMoney);
         this.saveOrUpdate(order);
         //创建服务商品
         List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId);
@@ -853,7 +864,6 @@
         if (null != appMemberCouponVoList) {
             appMemberCouponVoMap = appMemberCouponVoList.stream().collect(Collectors.toMap(AppMemberCouponVo::getMemberCouponId, Function.identity()));
         }
-
         AppMemberCouponVo appMemberCouponVo;
         Integer couponType;
         BigDecimal moneyThreshold;
@@ -972,15 +982,15 @@
         order.setReceivableMoney(orderPayMoney);
         order.setReceivableDeposit(new BigDecimal("0.00"));
         order.setPayType(1);
-        if (order.getPayType() == 1) {
-            order.setPayMoney(orderPayMoney);
-            order.setOnlinePayMoney(orderPayMoney);
-            order.setCloseFlag(1);
-        } else if (order.getPayType() == 2) {
-            order.setPayMoney(orderPayDeposit);
-            order.setOnlinePayMoney(orderPayDeposit);
-            order.setCloseFlag(0);
+        if(merNewOrderDto.getChangeMoney()!=null){
+            order.setChangeReceivableMoney(merNewOrderDto.getChangeMoney());
+        }else{
+            order.setChangeReceivableMoney(orderPayMoney);
         }
+        order.setPayMoney(orderPayMoney);
+        order.setOnlinePayMoney(new BigDecimal("0.00"));
+        order.setOfflinePayMoney(orderPayMoney);
+        order.setCloseFlag(1);
         order.setOrderRemark(merNewOrderDto.getOrderRemark());
         order.setGoodsNum(goodsNum);
         order.setCreateTime(nowTime);
@@ -1347,6 +1357,16 @@
                 }
                 BigDecimal unPaidMoney = mgtShopOrderPageVo.getReceivableMoney().subtract(mgtShopOrderPageVo.getPayMoney());
                 mgtShopOrderPageVo.setUnPaidMoney(unPaidMoney == null ? zeroBig : unPaidMoney);
+            }
+            //处理商品信息
+            List<MgtOrderGoodsPageVo> mgtOrderGoodsVoList;
+            String goodsString;
+            for(MgtShopOrderPageVo entity : shopOrderPageVoList){
+                mgtOrderGoodsVoList = entity.getMgtOrderGoodsPageVoList();
+                goodsString = mgtOrderGoodsVoList.stream()
+                        .map(goods -> goods.getGoodsName() + "*" + goods.getBuyNum())
+                        .collect(Collectors.joining(";"));
+                entity.setGoodsInfo(goodsString);
             }
         }
         return shopOrderPageVoList;
@@ -1999,11 +2019,24 @@
      * @date 2023/6/27 11:10
      */
     @Override
-    public MerVerifyCouponVo verifyCoupon(String verifyCode) {
+    public MerVerifyCouponVo verifyCoupon(String verifyCode,Long shopId) {
         // 创建MerVerifyCouponVo对象
         MerVerifyCouponVo merVerifyCouponVo = new MerVerifyCouponVo();
         // 调用remoteCouponService的getVerifyCoupon方法获取MerVerifyCouponGetVo对象
         MerVerifyCouponGetVo verifyCouponGetVo = remoteCouponService.getVerifyCoupon(verifyCode).getData();
+        MemberCoupon memberCoupon = verifyCouponGetVo.getMemberCoupon();
+        // 检查优惠券状态
+        int couponStatus = memberCoupon.getCouponStatus();
+        if (couponStatus == 0) {
+            throw new ServiceException(AppErrorConstant.COUPON_EXPIRED);
+        } else if (couponStatus == 2) {
+            throw new ServiceException(AppErrorConstant.COUPON_USED);
+        } else if (couponStatus != 0) {
+            throw new ServiceException(AppErrorConstant.COUPON_NO_FIND);
+        }
+        if(!memberCoupon.getShopId().equals(shopId)){
+            throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+        }
         List<Goods> goodsList = verifyCouponGetVo.getGoodsList();
         Long userId = verifyCouponGetVo.getUserId();
         // 调用remoteMemberService的getMember方法获取Member对象
@@ -2230,4 +2263,67 @@
         }
         return merOrderFromRankVo;
     }
+
+    /**
+     * @description  商户端订单管理统计
+     * @author  jqs
+     * @date    2023/7/4 16:27
+     * @param merBaseDto
+     * @return  MerTotalOrderVo
+     */
+    @Override
+    public MerTotalOrderVo totalMerOrder(MerBaseDto merBaseDto){
+        return orderMapper.totalMerOrder(merBaseDto.getShopId());
+    }
+
+    /**
+     * @description  平台获取商户订单记录
+     * @author  jqs
+     * @date    2023/7/5 20:17
+     * @param page
+     * @param mgtShopAllOrderPageDto
+     * @return  List<MgtShopAllOrderPageVo>
+     */
+    @Override
+    public List<MgtShopAllOrderPageVo> pageMgtShopAllOrder(Page page, MgtShopAllOrderPageDto mgtShopAllOrderPageDto){
+        List<MgtShopAllOrderPageVo> shopAllOrderPageVoList = orderMapper.pageMgtShopAllOrder(page, mgtShopAllOrderPageDto);
+        if(!shopAllOrderPageVoList.isEmpty()){
+            // 定义变量
+            HashSet<Long> userIdSet = new HashSet<>();
+            BigDecimal zeroBig = new BigDecimal("0.00");
+            // 遍历列表,获取店铺 ID 和用户 ID
+            for (MgtShopAllOrderPageVo mgtShopOrderPageVo : shopAllOrderPageVoList) {
+                userIdSet.add(mgtShopOrderPageVo.getUserId());
+            }
+            // 从远程服务获取店铺和用户信息
+            Map<Long, MgtSimpleMemberVo> userMap = null;
+            if (userIdSet != null && !userIdSet.isEmpty()) {
+                String userJoinedString = String.join(",", userIdSet.stream().map(Object::toString).collect(Collectors.toList()));
+                MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
+                mgtBaseBathDto.setIds(userJoinedString);
+                List<MgtSimpleMemberVo> simpleMemberVoList = remoteMemberService.listSimpleVoByIds(mgtBaseBathDto).getData();
+                userMap = simpleMemberVoList.stream()
+                        .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
+            }
+            // 遍历列表,设置店铺名称、用户名称和未支付金额
+            for (MgtShopAllOrderPageVo mgtShopOrderPageVo : shopAllOrderPageVoList) {
+                if (userMap != null && !userMap.isEmpty()) {
+                    if (userMap.get(mgtShopOrderPageVo.getUserId()) != null) {
+                        mgtShopOrderPageVo.setUserInfo(userMap.get(mgtShopOrderPageVo.getUserId()).getNickName()+"("+userMap.get(mgtShopOrderPageVo.getUserId()).getUserMobile()+")");
+                    }
+                }
+            }
+            //处理商品信息
+            List<MgtOrderGoodsPageVo> mgtOrderGoodsVoList;
+            String goodsString;
+            for(MgtShopAllOrderPageVo entity : shopAllOrderPageVoList){
+                mgtOrderGoodsVoList = entity.getMgtOrderGoodsPageVoList();
+                goodsString = mgtOrderGoodsVoList.stream()
+                        .map(goods -> goods.getGoodsName() + "*" + goods.getBuyNum())
+                        .collect(Collectors.joining(";"));
+                entity.setGoodsInfo(goodsString);
+            }
+        }
+        return shopAllOrderPageVoList;
+    }
 }

--
Gitblit v1.7.1