From 3adbcc42d5f84c3c83d220543189361add81e04d Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期一, 11 九月 2023 15:22:19 +0800
Subject: [PATCH] bug

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java |  361 +++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 276 insertions(+), 85 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 277a0af..fb7a43d 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
@@ -1,5 +1,5 @@
 package com.ruoyi.order.service.impl.order;
-import com.google.common.collect.Lists;
+
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -11,6 +11,7 @@
 import com.github.binarywang.wxpay.config.WxPayConfig;
 import com.github.binarywang.wxpay.exception.WxPayException;
 import com.github.binarywang.wxpay.service.WxPayService;
+import com.google.common.collect.Lists;
 import com.google.gson.Gson;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.exception.ServiceException;
@@ -52,7 +53,6 @@
 import com.ruoyi.system.api.domain.poji.member.MemberCoupon;
 import com.ruoyi.system.api.domain.poji.member.MemberGiftRecord;
 import com.ruoyi.system.api.domain.poji.shop.Shop;
-import com.ruoyi.system.api.domain.vo.ShopProportionVo;
 import com.ruoyi.system.api.domain.poji.sys.SysUser;
 import com.ruoyi.system.api.domain.vo.*;
 import com.ruoyi.system.api.service.*;
@@ -145,7 +145,6 @@
 
     @Resource
     private OrderRefundService orderRefundService;
-
 
 
     /**
@@ -516,6 +515,12 @@
     public AppPlaceOrderVo placeOrder(AppPlaceOrderDto appPlaceOrderDto) {
         // 获取用户ID
         Long userId = appPlaceOrderDto.getUserId();
+        Member member = remoteMemberService.getMember(userId).getData();
+        appPlaceOrderDto.setUserId(userId);
+        if (member != null) {
+            appPlaceOrderDto.setOpenid(member.getMiniOpenid());
+            appPlaceOrderDto.setShopId(member.getRelationShopId());
+        }
         // 创建下单视图对象
         AppPlaceOrderVo appPlaceOrderVo = new AppPlaceOrderVo();
         // 创建商品列表
@@ -747,6 +752,11 @@
         order.setOrderRemark(appPlaceOrderDto.getOrderRemark());
         order.setGoodsNum(goodsNum);
         order.setCreateTime(new Date());
+        if(member.getBindingFlag()==0){
+            order.setUnbindingFlag(1);
+        }else{
+            order.setUnbindingFlag(0);
+        }
         // 保存订单
         this.save(order);
         appPlaceOrderVo.setOrderId(orderId);
@@ -908,6 +918,12 @@
     @GlobalTransactional(rollbackFor = Exception.class)
     public AppPlaceOrderVo placeActivityOrder(AppPlaceActivityDto appPlaceActivityDto) {
         Long userId = appPlaceActivityDto.getUserId();
+        Member member = remoteMemberService.getMember(userId).getData();
+        appPlaceActivityDto.setUserId(userId);
+        if (member != null && member.getRelationShopId() != null) {
+            appPlaceActivityDto.setOpenid(member.getMiniOpenid());
+            appPlaceActivityDto.setShopId(member.getRelationShopId());
+        }
         // 创建订单对象
         AppPlaceOrderVo appPlaceOrderVo = new AppPlaceOrderVo();
         // 定义商品订单对象
@@ -1095,8 +1111,11 @@
             order.setOrderRemark(appPlaceActivityDto.getOrderRemark());
             order.setGoodsNum(goodsNum);
             order.setCreateTime(new Date());
-            if(appPlaceActivityDto.getNewMemberFlag()!=null&&appPlaceActivityDto.getNewMemberFlag()==1){
-                order.setNewMemberFlag(1);
+            //订单是否未绑定时下单
+            if(member.getBindingFlag()==0){
+                order.setUnbindingFlag(1);
+            }else{
+                order.setUnbindingFlag(0);
             }
             // 保存订单
             this.save(order);
@@ -1185,7 +1204,10 @@
      */
     @Override
     public List<AppUserOrderPageVo> pageUserOrder(Page page, AppUserOrderPageDto appUserOrderPageDto) {
+        Long userId = appUserOrderPageDto.getUserId();
+        Member member = remoteMemberService.getMember(userId).getData();
         List<AppUserOrderPageVo> appUserOrderPageVoList = orderMapper.pageUserOrder(page, appUserOrderPageDto);
+        //处理商户名称显示
         if (appUserOrderPageVoList != null && !appUserOrderPageVoList.isEmpty()) {
             Long shopId;
             String activityId;
@@ -1210,13 +1232,17 @@
                 delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
             }
             for (AppUserOrderPageVo appUserOrderPageVo : appUserOrderPageVoList) {
-                shop = shopMap.get(appUserOrderPageVo.getShopId());
-                appUserOrderPageVo.setShopName(shop.getShopName());
-                appUserOrderPageVo.setShopServicePhone(shop.getShopServicePhone());
-                if (appUserOrderPageVo.getShopId().equals(appUserOrderPageDto.getShopId())) {
-                    appUserOrderPageVo.setSameShop(1);
-                } else {
-                    appUserOrderPageVo.setSameShop(0);
+                if(member.getBindingFlag()==0&&appUserOrderPageVo.getOrderFrom()==2){
+                    appUserOrderPageVo.setShopName("全部店铺");
+                }else{
+                    shop = shopMap.get(appUserOrderPageVo.getShopId());
+                    appUserOrderPageVo.setShopName(shop.getShopName());
+                    appUserOrderPageVo.setShopServicePhone(shop.getShopServicePhone());
+                    if (appUserOrderPageVo.getShopId().equals(appUserOrderPageDto.getShopId())) {
+                        appUserOrderPageVo.setSameShop(1);
+                    } else {
+                        appUserOrderPageVo.setSameShop(0);
+                    }
                 }
                 appUserOrderPageVo.setVerifyCode("1-" + appUserOrderPageVo.getOrderId());
                 appUserOrderPageVo.setEndTime(DateUtils.addMinutes(appUserOrderPageVo.getCreateTime(), delayTime));
@@ -1258,7 +1284,7 @@
         appUserOrderGetVo.setShopName(shop.getShopName());
         appUserOrderGetVo.setAppUserOrderGoodsPageVoList(appUserOrderGoodsPageVoList);
         appUserOrderGetVo.setVerifyCode("1-" + orderId);
-        //生成自动取消订单延时任务
+        //获取订单取消时间
         Integer delayTime = 30;
         if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
             delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
@@ -1279,6 +1305,9 @@
         if (order.getOrderStatus() == 0) {
             throw new ServiceException(AppErrorConstant.CANCEL_CANCEL_ORDER);
         } else if (order.getOrderStatus() == 1) {
+            //删除待支付超时取消延时任务
+            redisService.deleteObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId);
+            remoteConfigService.deleteDelayTask(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+"-"+orderId);
             this.autoCancelOrder(orderId);
         } else if (order.getOrderStatus() == 2) {
             // 2.待核销 -> 订单退款
@@ -1297,21 +1326,31 @@
      */
     @Override
     public AppPlaceOrderVo payOrder(String orderId){
+        // 根据订单ID获取订单
         Order order = this.getById(orderId);
-        if(order.getOrderStatus()!=1){
+        // 如果订单状态不是1(待支付),抛出异常
+        if(order.getOrderStatus() != 1){
             throw new ServiceException(AppErrorConstant.CANCEL_CANCEL_ORDER);
         }
-        String payStr = redisService.getCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+ "-"+orderId);
+        // 从缓存中获取支付信息
+        String payStr = redisService.getCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId);
+        // 如果支付信息为空,抛出异常
         if(StringUtils.isBlank(payStr)){
             throw new ServiceException(AppErrorConstant.CANCEL_CANCEL_ORDER);
         }
+        // 默认延迟时间为30分钟
         Integer delayTime = 30;
+        // 如果缓存中存在自动取消订单时间,使用缓存中的值作为延迟时间
         if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
             delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
         }
+        // 创建AppPlaceOrderVo对象
         AppPlaceOrderVo appPlaceOrderVo = new AppPlaceOrderVo();
+        // 根据未支付订单ID获取订单支付信息
         OrderPayment orderPayment = orderPaymentService.getByUnpaidOrderId(orderId);
+        // 将支付信息拆分为数组
         String[] payArr = payStr.split("-");
+        // 设置AppPlaceOrderVo对象的属性
         appPlaceOrderVo.setOrderId(order.getOrderId());
         appPlaceOrderVo.setOrderNo(order.getOrderNo());
         appPlaceOrderVo.setPayType(order.getPayType());
@@ -1326,6 +1365,7 @@
         appPlaceOrderVo.setSignType(payArr[4]);
         appPlaceOrderVo.setPaySign(payArr[5]);
         appPlaceOrderVo.setPrepayId(orderPayment.getPrepayId());
+        // 返回AppPlaceOrderVo对象
         return appPlaceOrderVo;
     }
 
@@ -1388,21 +1428,57 @@
         if (order.getOrderStatus() != 2) {
             throw new ServiceException(AppErrorConstant.VERIFY_USED);
         }
+        //判断商户是否有分账权限
+        Shop shop = remoteShopService.getShop(shopId).getData();
+        if(shop.getAccountFlag()!=1){
+            throw new ServiceException(AppErrorConstant.SHOP_NO_VERIFY);
+        }
         // 根据订单用户ID获取用户信息
         Member member = remoteMemberService.getMember(order.getUserId()).getData();
         // 根据订单ID获取订单商品列表
         List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId);
-        //绑定用户判断核销商户
+        //判断用户是否绑定
         if(member.getBindingFlag()==1){
-            //绑定用户需直接判断商户
-            if (!order.getShopId().equals(shopId)) {
-                throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+            //绑定用户判断核销商户
+            if(order.getOrderFrom()==2&&order.getUnbindingFlag()==1){
+                if (!member.getRelationShopId().equals(shopId)) {
+                    throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+                }
+                //未绑定时下的活动订单只需要判断店铺是否支持
+                String activityId = order.getActivityId();
+                MerActivityShopDto merActivityShopDto = new MerActivityShopDto();
+                merActivityShopDto.setShopId(shopId);
+                merActivityShopDto.setActivityId(activityId);
+                Boolean judge = remoteActivityService.judgeActivityShop(merActivityShopDto).getData();
+                if(!judge){
+                    throw new ServiceException(AppErrorConstant.SHOP_NO_ACTIVITY);
+                }
+            }else{
+                //商城订单和绑定后活动订单判断核销商户和订单商户和用户关联商户是否统一
+                if (!order.getShopId().equals(shopId)) {
+                    throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+                }
+                if (!member.getRelationShopId().equals(shopId)) {
+                    throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+                }
             }
         }else{
+            //未绑定用户判断核销商户
             //商城订单需判断商户
             if(order.getOrderFrom()==1){
                 if (!order.getShopId().equals(shopId)) {
                     throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+                }
+            }
+            //未绑定用户的活动订单需判断活动订单是否支持该店铺
+            if(order.getOrderFrom()==2){
+                String activityId = order.getActivityId();
+                MerActivityShopDto merActivityShopDto = new MerActivityShopDto();
+                merActivityShopDto.setShopId(shopId);
+                merActivityShopDto.setActivityId(activityId);
+                Boolean judge = remoteActivityService.judgeActivityShop(merActivityShopDto).getData();
+                if(!judge){
+                    throw new ServiceException(AppErrorConstant.SHOP_NO_ACTIVITY);
                 }
             }
             //未绑定用户需判断核销商城订单判断商品单价和优惠券
@@ -1519,15 +1595,38 @@
         List<AppUserOrderGoodsPageVo> appUserOrderGoodsPageVoList = orderGoodsService.listAppVoByOrderId(orderId);
         //绑定用户判断核销商户
         if(member.getBindingFlag()==1){
-            //绑定用户需直接判断商户
-            if (!order.getShopId().equals(shopId)) {
-                throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+            //未绑定的活动订单只需要判断店铺是否支持
+            if(order.getOrderFrom()==2&&order.getUnbindingFlag()==1){
+                String activityId = order.getActivityId();
+                MerActivityShopDto merActivityShopDto = new MerActivityShopDto();
+                merActivityShopDto.setShopId(shopId);
+                merActivityShopDto.setActivityId(activityId);
+                Boolean judge = remoteActivityService.judgeActivityShop(merActivityShopDto).getData();
+                if(!judge){
+                    throw new ServiceException(AppErrorConstant.SHOP_NO_ACTIVITY);
+                }
+            }else{
+                //绑定用户需直接判断商户一致
+                if (!order.getShopId().equals(shopId)) {
+                    throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+                }
             }
         }else{
             //商城订单需判断商户
             if(order.getOrderFrom()==1){
                 if (!order.getShopId().equals(shopId)) {
                     throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR);
+                }
+            }
+            //未绑定用户需判断活动订单是否支持该店铺
+            if(order.getOrderFrom()==2){
+                String activityId = order.getActivityId();
+                MerActivityShopDto merActivityShopDto = new MerActivityShopDto();
+                merActivityShopDto.setShopId(shopId);
+                merActivityShopDto.setActivityId(activityId);
+                Boolean judge = remoteActivityService.judgeActivityShop(merActivityShopDto).getData();
+                if(!judge){
+                    throw new ServiceException(AppErrorConstant.SHOP_NO_ACTIVITY);
                 }
             }
             //未绑定用户需判断核销商城订单判断商品单价和优惠券
@@ -1706,9 +1805,17 @@
             appMemberBindingDto.setShopId(order.getShopId());
             appMemberBindingDto.setUserId(order.getUserId());
             appMemberBindingDto.setBindingFlag(1);
-            appMemberBindingDto.setBindingType(1);
+            if(order.getOrderFrom()==1){
+                appMemberBindingDto.setBindingType(1);
+            }else if(order.getOrderFrom()==2){
+                appMemberBindingDto.setBindingType(2);
+            }
             remoteMemberService.updateMemberBinding(appMemberBindingDto);
+            order.setNewMemberFlag(1);
+        }else{
+            order.setNewMemberFlag(0);
         }
+        this.saveOrUpdate(order);
         // 订单金额大于0时进行分账
         if (order.getOnlinePayMoney().compareTo(BigDecimal.ZERO)>0) {
             submitProfitSharing(orderId, order.getOrderNo(), order.getShopId(), order.getOnlinePayMoney(),order.getOrderFrom());
@@ -1730,6 +1837,17 @@
         return merVerifyOrderVo;
     }
 
+    /**
+     * @description  分账实现
+     * @author  jqs
+     * @date    2023/9/8 11:56
+     * @param orderId
+     * @param orderNo
+     * @param shopId
+     * @param orderMoney
+     * @param orderFrom
+     * @return  void
+     */
     private void submitProfitSharing(String orderId, String orderNo, Long shopId, BigDecimal orderMoney, Integer orderFrom) {
         String sendMessage = "";
         String resultMessage = "";
@@ -1744,13 +1862,13 @@
             }
             // 平台特约商户号,用户平台收取服务费 2023-09-05改变分账方式
             String platformTyMacId = WxPayConfiguration.getPlatformTyMacId();
-            if (!StringUtils.isEmpty(subMchId)) {
+            if (!StringUtils.isEmpty(platformTyMacId)) {
                 WxPayConfig config = wxService.getConfig();
                 ShopProportionVo shopProportion = null;
                 BigDecimal proportionPercent = null;
                 //商户订单获取统一分成 活动订单获取活动分成
                 if(orderFrom==1){
-                    proportionPercent = redisService.getCacheObject(SecurityConstant.SHOP_COMMON_PROPORTION);
+                    proportionPercent = new BigDecimal(redisService.getCacheObject(SecurityConstant.SHOP_COMMON_PROPORTION).toString());
                 }else{
                     R<ShopProportionVo> resultShopProportion = remoteShopService.getShopProportion(shopId);
                     shopProportion = resultShopProportion.getData();
@@ -1764,8 +1882,7 @@
                     request.setOutOrderNo(IdUtils.simpleUUID());
                     List<ProfitSharingRequest.Receiver> receiverList = new ArrayList<>();
                     String description = "订单:" + orderNo + " 平台分账";
-                    //平台分成
-                    proportionPercent = new BigDecimal("100.00").subtract(proportionPercent);
+                    //商户分成
                     if(proportionPercent.compareTo(BigDecimal.ZERO)>0){
                         ProfitSharingResult result = new ProfitSharingResult();
                         result.setOutOrderNo(orderNo);
@@ -1924,6 +2041,7 @@
         merVerifyMemberCouponDto.setShopId(shopId);
         remoteCouponService.sureMemberCoupon(merVerifyMemberCouponDto);
         consumerGoodsService.saveBatchConsumerGoods(consumerGoodsList);
+        //绑定未绑定用户
         if (member.getBindingFlag() != 1) {
             AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto();
             appMemberBindingDto.setBindingFlag(1);
@@ -2042,6 +2160,7 @@
         merVerifyPrizeFinalDto.setPrizeId(memberGiftRecord.getPrizeId());
         merVerifyPrizeFinalDto.setShopId(shop.getShopId());
         remoteMemberService.verifyPrize(merVerifyPrizeFinalDto);
+        //绑定未绑定用户
         if (member.getBindingFlag() != 1) {
             AppMemberBindingDto appMemberBindingDto = new AppMemberBindingDto();
             appMemberBindingDto.setBindingFlag(1);
@@ -2066,7 +2185,7 @@
      */
     @Override
     public List<MerMemberNoClearOrderVo> pageMerMemberNoClearOrder(Page page, MerMemberNoClearOrderDto merMemberNoClearOrderDto) {
-        List<MerMemberNoClearOrderVo> merMemberNoClearOrderVoList = orderMapper.pageMerMemberNoClearOrder(page, merMemberNoClearOrderDto.getMemberUserId());
+        List<MerMemberNoClearOrderVo> merMemberNoClearOrderVoList = orderMapper.pageMerMemberNoClearOrder(page, merMemberNoClearOrderDto);
         if (merMemberNoClearOrderVoList != null && !merMemberNoClearOrderVoList.isEmpty()) {
             BigDecimal zeroBig = new BigDecimal("0.00");
             for (MerMemberNoClearOrderVo merMemberNoClearOrderVo : merMemberNoClearOrderVoList) {
@@ -2092,6 +2211,7 @@
         order.setOfflinePayMoney(order.getOfflinePayMoney().add(merCloseOrderDto.getPayMoney()));
         order.setOffPayTime(new Date());
         order.setPayMoney(order.getPayMoney().add(merCloseOrderDto.getPayMoney()));
+        //支付金额大于实收金额时结清
         if (order.getPayMoney().compareTo(order.getChangeReceivableMoney()) >= 0) {
             order.setCloseFlag(1);
         } else {
@@ -2114,6 +2234,8 @@
      * @param merNewOrderDto
      */
     @Override
+    @Transactional
+    @GlobalTransactional(rollbackFor = Exception.class)
     public void createNewOrder(MerNewOrderDto merNewOrderDto) {
         Long userId = merNewOrderDto.getBuyUserId();
         Date nowTime = new Date();
@@ -2188,10 +2310,10 @@
         OrderGoods orderGoods;
         String orderGoodsId;
         GoodsFile goodsFile;
-        BigDecimal cycleMoney = new BigDecimal("0.00");
-        BigDecimal experienceMoney = new BigDecimal("0.00");
-        BigDecimal serviceMoney = new BigDecimal("0.00");
-        BigDecimal goodsMoney = new BigDecimal("0.00");
+        //BigDecimal cycleMoney = new BigDecimal("0.00");
+        //BigDecimal experienceMoney = new BigDecimal("0.00");
+        //BigDecimal serviceMoney = new BigDecimal("0.00");
+        //BigDecimal goodsMoney = new BigDecimal("0.00");
         List<OrderGoods> orderGoodsList = new ArrayList<>();
         ConsumerGoods consumerGoods;
         String consumerGoodsId;
@@ -2334,7 +2456,7 @@
             }
 
             //商户变更计算
-            switch (orderGoods.getGoodsType()) {
+            /*switch (orderGoods.getGoodsType()) {
                 case 1:
                     cycleMoney = cycleMoney.add(orderGoods.getGoodsReceivableMoney());
                     break;
@@ -2349,7 +2471,7 @@
                     break;
                 default:
                     break;
-            }
+            }*/
         }
         //创建订单
         Order order = new Order();
@@ -2401,6 +2523,7 @@
             appMemberBindingDto.setBindingType(3);
             remoteMemberService.updateMemberBinding(appMemberBindingDto);
             order.setNewMemberFlag(1);
+            order.setUnbindingFlag(0);
         }
         //保存订单和服务
         this.save(order);
@@ -2564,8 +2687,13 @@
             BigDecimal zeroBig = new BigDecimal("0.00");
             // 遍历MgtMemberOrderPageVoList,获取shopId并添加到set中
             for (MgtMemberOrderPageVo mgtMemberOrderPageVo : mgtMemberOrderPageVoList) {
-                shopId = mgtMemberOrderPageVo.getShopId();
-                set.add(shopId.toString());
+                if(mgtMemberOrderPageVo.getShopId()!=null){
+                    if(mgtMemberOrderPageVo.getShopId()!=null){
+                        shopId = mgtMemberOrderPageVo.getShopId();
+                        set.add(shopId.toString());
+                    }
+                }
+
             }
             // 将set中的shopId转换为逗号分隔的字符串
             String joinedString = String.join(",", set);
@@ -2578,10 +2706,15 @@
                     .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity()));
             // 遍历MgtMemberOrderPageVoList,根据shopId获取对应的MgtSimpleShopVo并将其shopName设置到MgtMemberOrderPageVo中
             for (MgtMemberOrderPageVo mgtMemberOrderPageVo : mgtMemberOrderPageVoList) {
-                shopId = mgtMemberOrderPageVo.getShopId();
-                mgtMemberOrderPageVo.setShopName(map.get(shopId).getShopName());
-                BigDecimal unPaidMoney = mgtMemberOrderPageVo.getReceivableMoney().subtract(mgtMemberOrderPageVo.getPayMoney());
-                mgtMemberOrderPageVo.setUnPaidMoney(unPaidMoney == null ? zeroBig : unPaidMoney);
+                if(mgtMemberOrderPageVo.getShopId()!=null){
+                    if(mgtMemberOrderPageVo.getShopId()!=null){
+                        shopId = mgtMemberOrderPageVo.getShopId();
+                        mgtMemberOrderPageVo.setShopName(map.get(shopId).getShopName());
+                        BigDecimal unPaidMoney = mgtMemberOrderPageVo.getReceivableMoney().subtract(mgtMemberOrderPageVo.getPayMoney());
+                        mgtMemberOrderPageVo.setUnPaidMoney(unPaidMoney == null ? zeroBig : unPaidMoney);
+                    }
+                }
+
             }
         }
         // 返回MgtMemberOrderPageVoList
@@ -2628,7 +2761,10 @@
             BigDecimal zeroBig = new BigDecimal("0.00");
             // 遍历列表,获取店铺 ID 和用户 ID
             for (MgtActivityOrderPageVo mgtActivityOrderPageVo : activityOrderPageVoList) {
-                shopIdSet.add(mgtActivityOrderPageVo.getShopId());
+                if(mgtActivityOrderPageVo.getShopId()!=null){
+                    shopIdSet.add(mgtActivityOrderPageVo.getShopId());
+
+                }
                 userIdSet.add(mgtActivityOrderPageVo.getUserId());
             }
             // 将店铺 ID 和用户 ID 转换为逗号分隔的字符串
@@ -2647,7 +2783,10 @@
                     .collect(Collectors.toMap(MgtSimpleMemberVo::getUserId, Function.identity()));
             // 遍历列表,设置店铺名称、用户名称和未支付金额
             for (MgtActivityOrderPageVo mgtActivityOrderPageVo : activityOrderPageVoList) {
-                mgtActivityOrderPageVo.setShopName(shopMap.get(mgtActivityOrderPageVo.getShopId()).getShopName());
+                if(mgtActivityOrderPageVo.getShopId()!=null){
+                    mgtActivityOrderPageVo.setShopName(shopMap.get(mgtActivityOrderPageVo.getShopId()).getShopName());
+
+                }
                 if (userMap.get(mgtActivityOrderPageVo.getUserId()) != null) {
                     mgtActivityOrderPageVo.setNickName(userMap.get(mgtActivityOrderPageVo.getUserId()).getNickName());
                     mgtActivityOrderPageVo.setUserName(userMap.get(mgtActivityOrderPageVo.getUserId()).getRealName());
@@ -3658,9 +3797,6 @@
      */
     @Override
     public MgtPlTotalActivityTotalVo getPlTotalActivityTotal(MgtBasePlatformDto mgtBasePlatformDto) {
-        if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom() == 2){
-            return new MgtPlTotalActivityTotalVo();
-        }
         MgtPlTotalActivityTotalVo totalActivityTotalVo = new MgtPlTotalActivityTotalVo();
         totalActivityTotalVo.setOrderTotal(0);
         totalActivityTotalVo.setCycleTotal(0);
@@ -3688,7 +3824,16 @@
         totalActivityTotalVo.setJoinMemberTotalValue(new Integer[0]);
         totalActivityTotalVo.setGetMemberTotalKey(new String[0]);
         totalActivityTotalVo.setGetMemberTotalValue(new Integer[0]);
+        //店铺活动返回空
+        if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom()==2){
+            return totalActivityTotalVo;
+        }
         List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData();
+        if (StringUtils.isNotBlank(mgtBasePlatformDto.getShopProvinceCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopCityCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopAreaCode())) {
+            if(shopIdList==null||shopIdList.isEmpty()){
+                return totalActivityTotalVo;
+            }
+        }
         if(mgtBasePlatformDto.getShopId()!=null){
             shopIdList = new ArrayList<>();
             shopIdList.add(mgtBasePlatformDto.getShopId());
@@ -3798,26 +3943,6 @@
             totalActivityTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
             totalActivityTotalVo.setGoodsTypeMoneyList(goodsTypeMoneyList);
         }
-        //日期全部时固定为5天
-        if(StringUtils.isBlank(mgtBasePlatformDto.getStartDate())){
-            mgtBasePlatformDto.setEndDate(DateUtils.getDate());
-            mgtBasePlatformDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4)));
-        }
-        //获取订单分布
-        List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listPlTotalActivityTotal(mgtBasePlatformDto);
-        if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) {
-            String[] orderTotalKey = new String[MgtMapIntTotalVos.size()];
-            Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()];
-            BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()];
-            for (int i = 0; i < MgtMapIntTotalVos.size(); i++) {
-                orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey();
-                orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst();
-                orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond();
-            }
-            totalActivityTotalVo.setOrderTotalKey(orderTotalKey);
-            totalActivityTotalVo.setOrderTotalValue(orderTotalValue);
-            totalActivityTotalVo.setOrderMoneyValue(orderMoneyValue);
-        }
         HashSet<String> set = new HashSet<>();
         // 遍历MgtMemberOrderPageVoList,获取shopId并添加到set中
         for (Long shopId : mgtBasePlatformDto.getShopIdList()) {
@@ -3870,6 +3995,27 @@
             List<Long> userIdList = remoteMemberService.listUserIdByAgeType(mgtBasePlatformDto.getAgeType()).getData();
             mgtBasePlatformDto.setUserIdList(userIdList);
         }
+        //日期全部时固定为5天
+        if(StringUtils.isBlank(mgtBasePlatformDto.getStartDate())){
+            mgtBasePlatformDto.setEndDate(DateUtils.getDate());
+            mgtBasePlatformDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4)));
+        }
+        //获取订单分布
+        List<MgtMapTotalPlusVo> MgtMapIntTotalVos = orderMapper.listPlTotalActivityTotal(mgtBasePlatformDto);
+        if (MgtMapIntTotalVos != null && MgtMapIntTotalVos.size() > 0) {
+            String[] orderTotalKey = new String[MgtMapIntTotalVos.size()];
+            Integer[] orderTotalValue = new Integer[MgtMapIntTotalVos.size()];
+            BigDecimal[] orderMoneyValue = new BigDecimal[MgtMapIntTotalVos.size()];
+            for (int i = 0; i < MgtMapIntTotalVos.size(); i++) {
+                orderTotalKey[i] = MgtMapIntTotalVos.get(i).getMapKey();
+                orderTotalValue[i] = MgtMapIntTotalVos.get(i).getMapValueFirst();
+                orderMoneyValue[i] = MgtMapIntTotalVos.get(i).getMapValueSecond();
+            }
+            totalActivityTotalVo.setOrderTotalKey(orderTotalKey);
+            totalActivityTotalVo.setOrderTotalValue(orderTotalValue);
+            totalActivityTotalVo.setOrderMoneyValue(orderMoneyValue);
+        }
+
         //参与人数  2023-09-06 另开接口
         /*List<MgtMapIntTotalVo> joinList = orderMapper.getMgtActivityMemberTotal(mgtBasePlatformDto);
         // 将查询结果转为Map
@@ -3921,9 +4067,18 @@
 
     @Override
     public MgtPlTotalActivityTotalVo getPlTotalActivityJoinMemberTotal(MgtBasePlatformDto mgtBasePlatformDto) {
-        if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom() == 2){
-            return new MgtPlTotalActivityTotalVo();
+        //店铺活动返回空
+        MgtPlTotalActivityTotalVo totalActivityTotalVo = new MgtPlTotalActivityTotalVo();
+        totalActivityTotalVo.setJoinMemberTotalKey(new String[0]);
+        totalActivityTotalVo.setJoinMemberTotalValue(new Integer[0]);
+        totalActivityTotalVo.setGetMemberTotalKey(new String[0]);
+        totalActivityTotalVo.setGetMemberTotalValue(new Integer[0]);
+        if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom()==2){
+            return totalActivityTotalVo;
         }
+        /*if(mgtBasePlatformDto.getActivityType()!=null&&mgtBasePlatformDto.getActivityType()!=1){
+            return new MgtPlTotalActivityTotalVo();
+        }*/
         //获取需要关联的用户id集合
         /*if (mgtBasePlatformDto.getDeptId() != null) {
             List<Long> userIdList = new ArrayList<>();
@@ -3939,22 +4094,34 @@
                 mgtBasePlatformDto.setUserIdList(userIdList);
             }
         }*/
-        if(mgtBasePlatformDto.getAgeType()!=null){
-            List<Long> userIdList = remoteMemberService.listUserIdByAgeType(mgtBasePlatformDto.getAgeType()).getData();
-            mgtBasePlatformDto.setUserIdList(userIdList);
-        }
+
         List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData();
+        log.info("shopIdList1-----"+shopIdList.toString());
+        log.debug("shopIdList1-----"+shopIdList.toString());
+        if (StringUtils.isNotBlank(mgtBasePlatformDto.getShopProvinceCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopCityCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopAreaCode())) {
+            log.info("shopIdList2-----"+shopIdList.toString());
+            log.debug("shopIdList2-----"+shopIdList.toString());
+            if(shopIdList==null||shopIdList.isEmpty()){
+                return totalActivityTotalVo;
+            }
+        }
         if(mgtBasePlatformDto.getShopId()!=null){
             shopIdList = new ArrayList<>();
             shopIdList.add(mgtBasePlatformDto.getShopId());
         }
         mgtBasePlatformDto.setShopIdList(shopIdList);
-        MgtPlTotalActivityTotalVo totalActivityTotalVo = new MgtPlTotalActivityTotalVo();
+        if(mgtBasePlatformDto.getAgeType()!=null){
+            List<Long> userIdList = remoteMemberService.listUserIdByAgeType(mgtBasePlatformDto.getAgeType()).getData();
+            log.info("userIdList-----"+userIdList.toString());
+            log.debug("userIdList-----"+userIdList.toString());
+            mgtBasePlatformDto.setUserIdList(userIdList);
+        }
         //日期全部时固定为5天
         if(StringUtils.isBlank(mgtBasePlatformDto.getStartDate())){
             mgtBasePlatformDto.setEndDate(DateUtils.getDate());
             mgtBasePlatformDto.setStartDate(DateUtils.parseDateToStr("yyyy-MM-dd",DateUtils.addDays(new Date(),-4)));
         }
+        log.info("mgtBasePlatformDto-----"+mgtBasePlatformDto.toString());
         //参与人数
         List<MgtMapIntTotalVo> joinList = orderMapper.getMgtActivityMemberTotal(mgtBasePlatformDto);
         // 将查询结果转为Map
@@ -3985,9 +4152,18 @@
 
     @Override
     public MgtPlTotalActivityTotalVo getPlTotalActivityGetMemberTotal(MgtBasePlatformDto mgtBasePlatformDto) {
-        if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom() == 2){
-            return new MgtPlTotalActivityTotalVo();
+        //店铺活动返回空
+        MgtPlTotalActivityTotalVo totalActivityTotalVo = new MgtPlTotalActivityTotalVo();
+        totalActivityTotalVo.setJoinMemberTotalKey(new String[0]);
+        totalActivityTotalVo.setJoinMemberTotalValue(new Integer[0]);
+        totalActivityTotalVo.setGetMemberTotalKey(new String[0]);
+        totalActivityTotalVo.setGetMemberTotalValue(new Integer[0]);
+        if(mgtBasePlatformDto.getActivityFrom()!=null&&mgtBasePlatformDto.getActivityFrom()==2){
+            return totalActivityTotalVo;
         }
+        /*if(mgtBasePlatformDto.getActivityType()!=null&&mgtBasePlatformDto.getActivityType()!=1){
+            return new MgtPlTotalActivityTotalVo();
+        }*/
         //获取需要关联的用户id集合
         /*if (mgtBasePlatformDto.getDeptId() != null) {
             List<Long> userIdList = new ArrayList<>();
@@ -4003,17 +4179,21 @@
                 mgtBasePlatformDto.setUserIdList(userIdList);
             }
         }*/
-        if(mgtBasePlatformDto.getAgeType()!=null){
-            List<Long> userIdList = remoteMemberService.listUserIdByAgeType(mgtBasePlatformDto.getAgeType()).getData();
-            mgtBasePlatformDto.setUserIdList(userIdList);
-        }
         List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData();
+        if (StringUtils.isNotBlank(mgtBasePlatformDto.getShopProvinceCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopCityCode()) || StringUtils.isNotBlank(mgtBasePlatformDto.getShopAreaCode())) {
+            if(shopIdList==null||shopIdList.isEmpty()){
+                return totalActivityTotalVo;
+            }
+        }
         if(mgtBasePlatformDto.getShopId()!=null){
             shopIdList = new ArrayList<>();
             shopIdList.add(mgtBasePlatformDto.getShopId());
         }
         mgtBasePlatformDto.setShopIdList(shopIdList);
-        MgtPlTotalActivityTotalVo totalActivityTotalVo = new MgtPlTotalActivityTotalVo();
+        if(mgtBasePlatformDto.getAgeType()!=null){
+            List<Long> userIdList = remoteMemberService.listUserIdByAgeType(mgtBasePlatformDto.getAgeType()).getData();
+            mgtBasePlatformDto.setUserIdList(userIdList);
+        }
         //日期全部时固定为5天
         if(StringUtils.isBlank(mgtBasePlatformDto.getStartDate())){
             mgtBasePlatformDto.setEndDate(DateUtils.getDate());
@@ -4830,8 +5010,6 @@
             }
             activityTotalChangeDto.setUserId(order.getUserId());
             remoteActivityService.changeActivityTotal(activityTotalChangeDto);
-
-
             //活动订单进行分账
             /*ProfitSharingApplyRequest request=new ProfitSharingApplyRequest();
             request.setAppid(this.appId);
@@ -4841,7 +5019,6 @@
         }
         //修改支付记录生成支付记录
         orderPaymentService.updatePaySuccess(transaction.getOutTradeNo(), transaction.getTransactionId());
-
         PayRecord payRecord = new PayRecord();
         payRecord.setDelFlag(0);
         payRecord.setOrderId(orderId);
@@ -4849,6 +5026,9 @@
         payRecord.setPayTime(order.getPayTime());
         payRecord.setPayType(1);
         payRecordService.save(payRecord);
+        //删除超时取消延时任务
+        redisService.deleteObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId);
+        remoteConfigService.deleteDelayTask(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+"-"+orderId);
     }
 
     @Override
@@ -5022,6 +5202,7 @@
         // 更新会员统计信息
         remoteMemberService.changeMemberTotal(memberTotalChangeDto);
         // 如果订单来源于活动,则更新活动统计信息
+        //TODO 可考虑改成定时任务统一查询后增加 减少服务器压力但会增加延后性
         if (order.getOrderFrom() == 2) {
             ActivityTotalChangeDto activityTotalChangeDto = new ActivityTotalChangeDto();
             activityTotalChangeDto.setActivityId(order.getActivityId());
@@ -5656,9 +5837,6 @@
         List<MerOrderPageVo> merOrderPageVoList = orderMapper.pageMerMemberPayOrder(page, merOrderPageDto);
         if (merOrderPageVoList != null && !merOrderPageVoList.isEmpty()) {
             Long userId;
-            Member member;
-            Integer orderFrom;
-            String orderFromDesc;
             BigDecimal zeroBig = new BigDecimal("0.00");
             StringJoiner userIdSj = new StringJoiner(",");
             for (MerOrderPageVo merOrderPageVo : merOrderPageVoList) {
@@ -5735,4 +5913,17 @@
     public MerMemberSimpleTotalVo getMerMemberSimpleTotalVo(MerBaseDto merBaseDto){
         return orderMapper.getMerMemberSimpleTotalVo(merBaseDto);
     }
+
+    @Override
+    public ProfitSharingResult queryBill(String orderId) throws WxPayException {
+        OrderPayment orderPayment = orderPaymentService.getByOrderId(orderId);
+        ProfitSharing profitSharing = profitSharingService.getByOrderId(orderId);
+
+        ProfitSharingQueryRequest request = new ProfitSharingQueryRequest();
+        request.setSubMchid("1650744551");
+        request.setTransactionId(orderPayment.getTransactionId());
+        request.setOutOrderNo(profitSharing.getShareId());
+        ProfitSharingResult profitSharingResult = wxService.getEcommerceService().queryProfitSharing(request);
+        return profitSharingResult;
+    }
 }

--
Gitblit v1.7.1