From 156e141e55a8abf486157d1fa89d25e23f4a06a3 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期五, 25 八月 2023 19:32:30 +0800
Subject: [PATCH] bug

---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java |  149 +++++++++++++++++++++++++++++++++++++------------
 1 files changed, 111 insertions(+), 38 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 a77412b..6ff0f42 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
@@ -5,10 +5,7 @@
 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.github.binarywang.wxpay.bean.ecommerce.PartnerTransactionsRequest;
-import com.github.binarywang.wxpay.bean.ecommerce.PartnerTransactionsResult;
-import com.github.binarywang.wxpay.bean.ecommerce.RefundNotifyResult;
-import com.github.binarywang.wxpay.bean.ecommerce.TransactionsResult;
+import com.github.binarywang.wxpay.bean.ecommerce.*;
 import com.github.binarywang.wxpay.bean.ecommerce.enums.TradeTypeEnum;
 import com.github.binarywang.wxpay.bean.profitsharingV3.ProfitSharingNotifyResult;
 import com.github.binarywang.wxpay.config.WxPayConfig;
@@ -16,6 +13,7 @@
 import com.github.binarywang.wxpay.service.WxPayService;
 import com.google.common.base.Joiner;
 import com.google.gson.Gson;
+import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.exception.ServiceException;
 import com.ruoyi.common.core.utils.DateUtils;
 import com.ruoyi.common.core.utils.StringUtils;
@@ -754,11 +752,12 @@
             goodsName = String.join(",", goodsNameList);
         }
 
-        // 小程序微信下单支付
-        /*createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), goodsName, orderNo,
-                orderId, order.getPayMoney(), appPlaceOrderDto.getOpenid(),
-                appPlaceOrderDto.getSpbillCreateIp(), goodsNameList);*/
-
+        if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.TEN)<0){
+            // 小程序微信下单支付
+            createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), goodsName, orderNo,
+                    orderId, order.getPayMoney(), appPlaceOrderDto.getOpenid(),
+                    appPlaceOrderDto.getSpbillCreateIp(), goodsNameList,1);
+        }
 
         //减去优惠券
         if (StringUtils.isNotBlank(memberCouponSJ.toString())) {
@@ -797,11 +796,11 @@
     public void createWxPayInfo(AppPlaceOrderVo appPlaceOrderVo, Long userId, Long shopId,
                                  String goodsName, String orderNo,
                                  String orderId, BigDecimal payMoney,
-                                 String openid, String payerClientIp, List<String> goodsNameList){
+                                 String openid, String payerClientIp, List<String> goodsNameList,Integer orderFrom){
         try {
             // 创建支付订单
-            //R<String> resultMch = remoteShopService.getShopSubMchId(shopId);
-            String subMchId = "1650744551";
+            R<String> resultMch = remoteShopService.getShopSubMchId(shopId);
+            String subMchId = resultMch.getData();
             if (StringUtils.isEmpty(subMchId)) {
                 throw new ServiceException("获取微信商户号失败");
             }
@@ -820,7 +819,11 @@
             request.setNotifyUrl(config.getNotifyUrl());
             // 结算信息
             PartnerTransactionsRequest.SettleInfo settleInfo = new PartnerTransactionsRequest.SettleInfo();
-            settleInfo.setProfitSharing(true);
+            if(orderFrom==2){
+                settleInfo.setProfitSharing(true);
+            }else{
+                settleInfo.setProfitSharing(false);
+            }
             settleInfo.setSubsidyAmount(BigDecimal.ZERO);
             request.setSettleInfo(settleInfo);
 
@@ -1134,7 +1137,18 @@
         appPlaceOrderVo.setPackageStr(res.getPackageVal());
         appPlaceOrderVo.setTradeType(res.getSignType());
         appPlaceOrderVo.setPaySign(res.getPaySign());
+
 */
+        List<String> goodsNameList = new ArrayList<>();
+        goodsNameList.add(orderGoods.getGoodsName());
+
+
+        if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.TEN)<0){
+            // 小程序微信下单支付
+            createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), orderGoods.getGoodsName(), orderNo,
+                    orderId, order.getPayMoney(), appPlaceActivityDto.getOpenid(),
+                    appPlaceActivityDto.getSpbillCreateIp(), goodsNameList,2);
+        }
         //生成活动参加记录
         ActivityRecord activityRecord = new ActivityRecord();
         activityRecord.setDelFlag(0);
@@ -3490,6 +3504,9 @@
             merTotalDto.setShopIdList(shopIdList);
             merTotalDto.setShopId(null);
         }
+        if(merTotalDto.getGoodsType()!=null&&merTotalDto.getGoodsType()==0){
+            merTotalDto.setGoodsType(null);
+        }
         MerOrderDistributionTotalVo orderDistributionTotalVo = new MerOrderDistributionTotalVo();
         // 获取订单年龄用户列表
         //List<MerOrderAgeUserVo> orderAgeUserVoList = remoteMemberService.listOrderAgeUser(merTotalDto).getData();
@@ -3537,10 +3554,10 @@
                 }
             }*/
         List<MgtMapTotalPlusVo> mgtMapTotalPlusVoList = orderMapper.listMerOrderDistributionTotal(merTotalDto);
+        String[] orderTotalKey = new String[mgtMapTotalPlusVoList.size()];
+        Integer[] orderTotalValue = new Integer[mgtMapTotalPlusVoList.size()];
+        BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalPlusVoList.size()];
         if (mgtMapTotalPlusVoList != null && !mgtMapTotalPlusVoList.isEmpty()) {
-            String[] orderTotalKey = new String[mgtMapTotalPlusVoList.size()];
-            Integer[] orderTotalValue = new Integer[mgtMapTotalPlusVoList.size()];
-            BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalPlusVoList.size()];
             MgtMapTotalPlusVo mgtMapTotalPlusVo;
             for (int i = 0; i < mgtMapTotalPlusVoList.size(); i++) {
                 mgtMapTotalPlusVo = mgtMapTotalPlusVoList.get(i);
@@ -3549,6 +3566,10 @@
                 orderMoneyValue[i] = mgtMapTotalPlusVo.getMapValueSecond();
             }
             orderDistributionTotalVo = fillOrderTotalKeyAndValuesToRecentFiveDays(orderTotalKey,orderTotalValue,orderMoneyValue);
+        }else{
+            orderDistributionTotalVo.setOrderTotalKey(orderTotalKey);
+            orderDistributionTotalVo.setOrderTotalValue(orderTotalValue);
+            orderDistributionTotalVo.setOrderMoneyValue(orderMoneyValue);
         }
         // 返回订单分布总数对象
         return orderDistributionTotalVo;
@@ -3574,28 +3595,44 @@
         List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>();
         List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>();
         if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) {
-            MgtMapIntTotalVo MgtMapIntTotalVo;
+            MgtMapIntTotalVo mgtMapIntTotalVo;
             MgtMapBigTotalVo mgtMapBigTotalVo;
+            Integer intTotal = 0;
+            BigDecimal bigTotal = BigDecimal.ZERO;
+            for(MgtMapTotalPlusVo mgtMapTotalPlusVo : MgtMapIntTotalVoGoodsType){
+                intTotal = intTotal + mgtMapTotalPlusVo.getMapValueFirst();
+                bigTotal = bigTotal.add(mgtMapTotalPlusVo.getMapValueSecond());
+            }
+            BigDecimal hundredBig = new BigDecimal("100");
+            BigDecimal intTotalBig = hundredBig;
+            if(intTotal!=0){
+                intTotalBig = new BigDecimal(intTotal.toString());
+            }
+            if(bigTotal.compareTo(BigDecimal.ZERO)<1){
+                bigTotal = hundredBig;
+            }
             // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
             for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) {
-                MgtMapIntTotalVo = new MgtMapIntTotalVo();
+                mgtMapIntTotalVo = new MgtMapIntTotalVo();
                 mgtMapBigTotalVo = new MgtMapBigTotalVo();
-                MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                mgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                mgtMapIntTotalVo.setMapPercent(BigDecimal.valueOf(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()).divide(intTotalBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig));
                 mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond());
+                mgtMapBigTotalVo.setMapPercent(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond().divide(bigTotal,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig));
                 if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) {
-                    MgtMapIntTotalVo.setMapKey("周期");
+                    mgtMapIntTotalVo.setMapKey("周期");
                     mgtMapBigTotalVo.setMapKey("周期");
                 } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) {
-                    MgtMapIntTotalVo.setMapKey("服务");
+                    mgtMapIntTotalVo.setMapKey("服务");
                     mgtMapBigTotalVo.setMapKey("服务");
                 } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) {
-                    MgtMapIntTotalVo.setMapKey("体验");
+                    mgtMapIntTotalVo.setMapKey("体验");
                     mgtMapBigTotalVo.setMapKey("体验");
                 } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) {
-                    MgtMapIntTotalVo.setMapKey("单品");
+                    mgtMapIntTotalVo.setMapKey("单品");
                     mgtMapBigTotalVo.setMapKey("单品");
                 }
-                goodsTypeTotalList.add(MgtMapIntTotalVo);
+                goodsTypeTotalList.add(mgtMapIntTotalVo);
                 goodsTypeMoneyList.add(mgtMapBigTotalVo);
             }
             orderTypeTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
@@ -4104,7 +4141,7 @@
         BigDecimal onlinePayMoney = order.getOnlinePayMoney();
         if(BigDecimal.ZERO.compareTo(onlinePayMoney) < 0){
             // 订单支付金额大于0,可发起退款
-            //orderWxApplyRefund(orderId, refundId, onlinePayMoney, orderRefund);
+            orderWxApplyRefund(orderId, refundId, onlinePayMoney, orderRefund);
         }
 
         orderRefund.setRefundStatus(1);
@@ -4114,7 +4151,7 @@
     /**
      * 申请退款API
      */
-    /*private void orderWxApplyRefund(String orderId, String outRefundNo, BigDecimal payMoney, OrderRefund orderRefund){
+    private void orderWxApplyRefund(String orderId, String outRefundNo, BigDecimal payMoney, OrderRefund orderRefund){
         try {
             // 创建支付订单
             OrderPayment orderPayment = orderPaymentService.getByOrderId(orderId);
@@ -4153,7 +4190,7 @@
         } catch (WxPayException e) {
             throw new ServiceException(e.getMessage());
         }
-    }*/
+    }
 
     /**
      * @param staffTotalDto
@@ -4200,6 +4237,9 @@
      */
     @Override
     public MerOrderDistributionTotalVo getStaffOrderDistributionTotal(StaffTotalDto staffTotalDto) {
+        if(staffTotalDto.getGoodsType()!=null&&staffTotalDto.getGoodsType()==0){
+            staffTotalDto.setGoodsType(null);
+        }
         MerOrderDistributionTotalVo orderDistributionTotalVo = new MerOrderDistributionTotalVo();
         // 获取订单年龄用户列表
         //MerTotalDto merTotalDto = new MerTotalDto();
@@ -4255,10 +4295,10 @@
         }*/
         if(staffTotalDto.getActivityFrom()==1){
             List<MgtMapTotalPlusVo> mgtMapTotalPlusVoList = orderMapper.listStaffActivityOrderDistributionTotal(staffTotalDto);
+            String[] orderTotalKey = new String[mgtMapTotalPlusVoList.size()];
+            Integer[] orderTotalValue = new Integer[mgtMapTotalPlusVoList.size()];
+            BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalPlusVoList.size()];
             if (mgtMapTotalPlusVoList != null && !mgtMapTotalPlusVoList.isEmpty()) {
-                String[] orderTotalKey = new String[mgtMapTotalPlusVoList.size()];
-                Integer[] orderTotalValue = new Integer[mgtMapTotalPlusVoList.size()];
-                BigDecimal[] orderMoneyValue = new BigDecimal[mgtMapTotalPlusVoList.size()];
                 MgtMapTotalPlusVo mgtMapTotalPlusVo;
                 for (int i = 0; i < mgtMapTotalPlusVoList.size(); i++) {
                     mgtMapTotalPlusVo = mgtMapTotalPlusVoList.get(i);
@@ -4267,6 +4307,10 @@
                     orderMoneyValue[i] = mgtMapTotalPlusVo.getMapValueSecond();
                 }
                 orderDistributionTotalVo = fillOrderTotalKeyAndValuesToRecentFiveDays(orderTotalKey,orderTotalValue,orderMoneyValue);
+            }else{
+                orderDistributionTotalVo.setOrderTotalKey(orderTotalKey);
+                orderDistributionTotalVo.setOrderTotalValue(orderTotalValue);
+                orderDistributionTotalVo.setOrderMoneyValue(orderMoneyValue);
             }
         }
         // 返回订单分布总数对象
@@ -4341,28 +4385,44 @@
             List<MgtMapIntTotalVo> goodsTypeTotalList = new ArrayList<>();
             List<MgtMapBigTotalVo> goodsTypeMoneyList = new ArrayList<>();
             if (MgtMapIntTotalVoGoodsType != null && MgtMapIntTotalVoGoodsType.size() > 0) {
-                MgtMapIntTotalVo MgtMapIntTotalVo;
+                MgtMapIntTotalVo mgtMapIntTotalVo;
                 MgtMapBigTotalVo mgtMapBigTotalVo;
+                Integer intTotal = 0;
+                BigDecimal bigTotal = BigDecimal.ZERO;
+                for(MgtMapTotalPlusVo mgtMapTotalPlusVo : MgtMapIntTotalVoGoodsType){
+                    intTotal = intTotal + mgtMapTotalPlusVo.getMapValueFirst();
+                    bigTotal = bigTotal.add(mgtMapTotalPlusVo.getMapValueSecond());
+                }
+                BigDecimal hundredBig = new BigDecimal("100");
+                BigDecimal intTotalBig = hundredBig;
+                if(intTotal!=0){
+                    intTotalBig = new BigDecimal(intTotal.toString());
+                }
+                if(bigTotal.compareTo(BigDecimal.ZERO)<1){
+                    bigTotal = hundredBig;
+                }
                 // 遍历不同商品类型的会员数列表,设置商品类型数组和对应的会员数数组
                 for (int i = 0; i < MgtMapIntTotalVoGoodsType.size(); i++) {
-                    MgtMapIntTotalVo = new MgtMapIntTotalVo();
+                    mgtMapIntTotalVo = new MgtMapIntTotalVo();
                     mgtMapBigTotalVo = new MgtMapBigTotalVo();
-                    MgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                    mgtMapIntTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst());
+                    mgtMapIntTotalVo.setMapPercent(BigDecimal.valueOf(MgtMapIntTotalVoGoodsType.get(i).getMapValueFirst()).divide(intTotalBig,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig));
                     mgtMapBigTotalVo.setMapValue(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond());
+                    mgtMapBigTotalVo.setMapPercent(MgtMapIntTotalVoGoodsType.get(i).getMapValueSecond().divide(bigTotal,2,BigDecimal.ROUND_HALF_UP).multiply(hundredBig));
                     if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("1")) {
-                        MgtMapIntTotalVo.setMapKey("周期");
+                        mgtMapIntTotalVo.setMapKey("周期");
                         mgtMapBigTotalVo.setMapKey("周期");
                     } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("2")) {
-                        MgtMapIntTotalVo.setMapKey("服务");
+                        mgtMapIntTotalVo.setMapKey("服务");
                         mgtMapBigTotalVo.setMapKey("服务");
                     } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("3")) {
-                        MgtMapIntTotalVo.setMapKey("体验");
+                        mgtMapIntTotalVo.setMapKey("体验");
                         mgtMapBigTotalVo.setMapKey("体验");
                     } else if (MgtMapIntTotalVoGoodsType.get(i).getMapKey().equals("4")) {
-                        MgtMapIntTotalVo.setMapKey("单品");
+                        mgtMapIntTotalVo.setMapKey("单品");
                         mgtMapBigTotalVo.setMapKey("单品");
                     }
-                    goodsTypeTotalList.add(MgtMapIntTotalVo);
+                    goodsTypeTotalList.add(mgtMapIntTotalVo);
                     goodsTypeMoneyList.add(mgtMapBigTotalVo);
                 }
                 orderTypeTotalVo.setGoodsTypeTotalList(goodsTypeTotalList);
@@ -4691,4 +4751,17 @@
         MerHomeShopTotalVo serviceTotalVo = orderMapper.getMerHomeShopServiceTotalVo(shopId);
         return serviceTotalVo;
     }
+
+    /**
+     * @description  获取区域统计
+     * @author  jqs
+     * @date    2023/8/25 11:49
+     * @param shopIdList
+     * @return  AgencyTotalVo
+     */
+    @Override
+    public AgencyTotalVo getAgencyTotalVo(List<Long> shopIdList){
+        AgencyTotalVo agencyTotalVo = orderMapper.getAgencyTotalVo(shopIdList);
+        return agencyTotalVo;
+    }
 }

--
Gitblit v1.7.1