From 58d3e3d9d6a129c687044eef0418def8ad6e7cad Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期日, 27 八月 2023 19:10:27 +0800
Subject: [PATCH] bug

---
 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java          |    2 
 ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml                             |   32 ++-
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java        |    1 
 ruoyi-modules/ruoyi-order/src/test/java/com/ruoyi/order/orderTest.java                                |    9 -
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeptSimpleVo.java                 |   23 +++
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/staff/SysStaffMapper.java            |   12 +
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java |   77 ++++++++++
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtSysStaffImportDto.java        |    6 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java    |   26 ---
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalOrderTotalVo.java           |    1 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java               |    9 +
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java      |  141 ++++++++++++++-----
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/MsgUtils.java                            |    1 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java |    2 
 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java      |    1 
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/staff/StaffSysController.java    |    9 +
 ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtStaffEditDto.java             |    3 
 ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml                                |    1 
 ruoyi-modules/ruoyi-system/src/main/resources/mapper/staff/SysStaffMapper.xml                         |    8 +
 19 files changed, 266 insertions(+), 98 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java
index 6be6e36..24fb50d 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/constant/AppErrorConstant.java
@@ -74,6 +74,8 @@
 
     String SHOP_USER_DOUBLE = "账号已经关联其他商户登录";
 
+    String SHOP_CLOSED = "商户在审核中暂时无法购买商品";
+
     String COUPON_AUDIT_EDIT = "只能编辑审核拒绝的优惠券";
 
     String VERIFY_USED = "该核销码已核销,请更换";
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java
index e364ec0..802ae68 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/MgtTotalController.java
@@ -83,7 +83,7 @@
         return R.ok(totalDataTotalVoList);
     }
 
-    @RequestMapping(value = "/getPlTotalDataTotal", method = RequestMethod.POST)
+    @RequestMapping(value = "/exportPlTotalDataTotal", method = RequestMethod.POST)
     @ApiOperation(value = "导出平台商户数据统计(统计-店铺数据统计)")
     public void exportPlTotalDataTotal(MgtBasePlatformDto mgtBasePlatformDto, HttpServletResponse response) {
         Long userId = SecurityUtils.getUserId();
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java
index b6a88f8..9554c09 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/miniapp/AppOrderController.java
@@ -1,18 +1,13 @@
 package com.ruoyi.order.controller.miniapp;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.github.binarywang.wxpay.bean.ecommerce.PartnerTransactionsResult;
 import com.ruoyi.common.core.domain.R;
-import com.ruoyi.common.core.utils.DateUtils;
 import com.ruoyi.common.core.web.controller.BaseController;
 import com.ruoyi.common.redis.service.RedisService;
 import com.ruoyi.common.security.utils.SecurityUtils;
 import com.ruoyi.order.domain.dto.*;
-import com.ruoyi.order.domain.pojo.order.Order;
 import com.ruoyi.order.domain.vo.*;
 import com.ruoyi.order.service.order.OrderService;
-import com.ruoyi.system.api.constant.DelayTaskEnum;
-import com.ruoyi.system.api.constant.SecurityConstant;
 import com.ruoyi.system.api.domain.dto.AppBaseGetDto;
 import com.ruoyi.system.api.domain.dto.AppMemberBindingDto;
 import com.ruoyi.system.api.domain.poji.member.Member;
@@ -186,26 +181,11 @@
     }
 
     @RequestMapping(value = "/payOrder", method = RequestMethod.POST)
-    @ApiOperation(value = "支付订单(临时)")
-    public R<AppPlaceOrderVo> placeOrder(@RequestBody AppBaseGetDto appBaseGetDto) {
+    @ApiOperation(value = "支付订单")
+    public R<AppPlaceOrderVo> payOrder(@RequestBody AppBaseGetDto appBaseGetDto) {
         Long userId = SecurityUtils.getUserId();
         AppPlaceOrderVo appPlaceOrderVo = new AppPlaceOrderVo();
-        Order order = orderService.getById(appBaseGetDto.getId());
-        PartnerTransactionsResult transaction = new PartnerTransactionsResult();
-        transaction.setOutTradeNo(appBaseGetDto.getId());
-        orderService.payBack(transaction);
-        appPlaceOrderVo.setOrderId(order.getOrderId());
-        appPlaceOrderVo.setOrderNo(order.getOrderNo());
-        appPlaceOrderVo.setPayType(order.getPayType());
-        appPlaceOrderVo.setPayMoney(order.getPayMoney());
-        appPlaceOrderVo.setUnpaidMoney(order.getPayMoney());
-        Integer delayTime = 30;
-        if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
-            delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
-        }
-        redisService.deleteObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + order.getOrderId());
-        remoteConfigService.deleteDelayTask(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + order.getOrderId());
-        appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
+
         return R.ok(appPlaceOrderVo);
     }
 
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java
index ddf8b54..b442666 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtPlTotalActivityTotalVo.java
@@ -70,7 +70,6 @@
     private Integer[] orderTotalValue;
 
     @ApiModelProperty(value = "订单分布金额")
-    @JsonSerialize(using = ToStringSerializer.class)
     private BigDecimal[] orderMoneyValue;
 
     @ApiModelProperty(value = "销售占比数量")
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java
index 3f7ce2e..d646a39 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalActivityTotalVo.java
@@ -70,7 +70,6 @@
     private Integer[] orderTotalValue;
 
     @ApiModelProperty(value = "订单分布金额")
-    @JsonSerialize(using = ToStringSerializer.class)
     private BigDecimal[] orderMoneyValue;
 
     @ApiModelProperty(value = "销售占比数量")
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalOrderTotalVo.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalOrderTotalVo.java
index 1a7cd0c..7ea30ae 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalOrderTotalVo.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/vo/MgtTotalOrderTotalVo.java
@@ -76,7 +76,6 @@
     private Integer[] orderTotalValue;
 
     @ApiModelProperty(value = "订单分布金额")
-    @JsonSerialize(using = ToStringSerializer.class)
     private BigDecimal[] orderMoneyValue;
 
     @ApiModelProperty(value = "销售占比数量")
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 7d059dd..27c19ec 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
@@ -67,6 +67,7 @@
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
@@ -156,6 +157,10 @@
     @Override
     public AppSureOrderVo buyGoods(AppSureOrderDto appSureOrderDto) {
         Long userId = appSureOrderDto.getUserId();
+        Shop shop = remoteShopService.getShop(appSureOrderDto.getShopId()).getData();
+        if(shop!=null&&shop.getShopStatus()!=1){
+            throw new ServiceException(AppErrorConstant.SHOP_CLOSED);
+        }
         // 初始化订单对象
         AppSureOrderVo appSureOrderVo = new AppSureOrderVo();
         // 初始化订单商品列表
@@ -414,6 +419,10 @@
     @Override
     public AppPanicBuyVo panicBuyGoods(AppPanicBuyDto appPanicBuyDto) {
         Long userId = appPanicBuyDto.getUserId();
+        Shop shop = remoteShopService.getShop(appPanicBuyDto.getShopId()).getData();
+        if(shop!=null&&shop.getShopStatus()!=1){
+            throw new ServiceException(AppErrorConstant.SHOP_CLOSED);
+        }
         AppPanicBuyVo appPanicBuyVo = new AppPanicBuyVo();
         String activityId = appPanicBuyDto.getActivityId();
         String goodsId = appPanicBuyDto.getGoodsId();
@@ -762,28 +771,27 @@
         }
         if(appPlaceOrderVo.getPayMoney().compareTo(BigDecimal.ZERO)>0){
             String outTradeNo = IdUtils.simpleUUID();
-
             // 保存订单 交易流水
             order.setOutTradeNo(outTradeNo);
             this.saveOrUpdate(order);
-
+            Integer delayTime = 30;
+            if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
+                delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
+            }
+            appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
             // 小程序微信下单支付
             createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), goodsName, outTradeNo,
                     orderId, order.getPayMoney(), appPlaceOrderDto.getOpenid(),
                     appPlaceOrderDto.getSpbillCreateIp(), goodsNameList,1);
             //生成自动取消订单延时任务
-            Integer delayTime = 30;
-            if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
-                delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
-            }
-            redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, orderId, delayTime.longValue(), TimeUnit.MINUTES);
+            String payStr = appPlaceOrderVo.getAppId()+"-"+appPlaceOrderVo.getTimeStamp()+"-"+appPlaceOrderVo.getNonceStr()+"-"+appPlaceOrderVo.getPackageStr()+"-"+appPlaceOrderVo.getSignType()+"-"+appPlaceOrderVo.getSignType()+"-"+appPlaceOrderVo.getPaySign();
+            redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, payStr , delayTime.longValue(), TimeUnit.MINUTES);
             DelayTask delayTask = new DelayTask();
             delayTask.setDelFlag(0);
             delayTask.setCreateTime(new Date());
             delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime));
             delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId);
             remoteConfigService.addDelayTask(delayTask);
-            appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
         }else{
             order.setOrderStatus(2);
             this.saveOrUpdate(order);
@@ -846,7 +854,10 @@
             amount.setTotal(totalFee);
             amount.setCurrency("CNY");
             request.setAmount(amount);
-
+            Date endTime = appPlaceOrderVo.getEndTime();
+            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
+            String rfc3339Format = formatter.format(endTime);
+            request.setTimeExpire(rfc3339Format);
             // 支付者
             PartnerTransactionsRequest.Payer payer = new PartnerTransactionsRequest.Payer();
             payer.setSpOpenid(openid);
@@ -1163,23 +1174,25 @@
             // 保存订单 交易流水
             order.setOutTradeNo(outTradeNo);
             this.saveOrUpdate(order);
+            Integer delayTime = 30;
+            if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
+                delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
+            }
+            appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
             // 小程序微信下单支付
             createWxPayInfo(appPlaceOrderVo, userId, order.getShopId(), orderGoods.getGoodsName(), orderNo,
                     orderId, order.getPayMoney(), appPlaceActivityDto.getOpenid(),
                     appPlaceActivityDto.getSpbillCreateIp(), goodsNameList,2);
             //生成自动取消订单延时任务
-            Integer delayTime = 30;
-            if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
-                delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
-            }
-            redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, orderId, delayTime.longValue(), TimeUnit.MINUTES);
+            String payStr = appPlaceOrderVo.getAppId()+"-"+appPlaceOrderVo.getTimeStamp()+"-"+appPlaceOrderVo.getNonceStr()+"-"+appPlaceOrderVo.getPackageStr()+"-"+appPlaceOrderVo.getSignType()+"-"+appPlaceOrderVo.getSignType()+"-"+appPlaceOrderVo.getPaySign();
+            redisService.setCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId, payStr , delayTime.longValue(), TimeUnit.MINUTES);
             DelayTask delayTask = new DelayTask();
             delayTask.setDelFlag(0);
             delayTask.setCreateTime(new Date());
             delayTask.setEndTime(DateUtils.addMinutes(new Date(), delayTime));
             delayTask.setRedisKey(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode() + "-" + orderId);
             remoteConfigService.addDelayTask(delayTask);
-            appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
+
         }else{
             order.setOrderStatus(2);
             this.saveOrUpdate(order);
@@ -1305,6 +1318,47 @@
         } else {
             throw new ServiceException(AppErrorConstant.CANCEL_ERROR_ORDER);
         }
+    }
+
+    /**
+     * @description  支付订单
+     * @author  jqs
+     * @date    2023/8/27 15:26
+     * @param orderId
+     * @return  AppPlaceOrderVo
+     */
+    @Override
+    public AppPlaceOrderVo payOrder(String orderId){
+        Order order = this.getById(orderId);
+        if(order.getOrderStatus()!=1){
+            throw new ServiceException(AppErrorConstant.CANCEL_CANCEL_ORDER);
+        }
+        String payStr = redisService.getCacheObject(DelayTaskEnum.ORDER_AUTOMATIC_CANCEL.getCode()+orderId);
+        if(StringUtils.isBlank(payStr)){
+            throw new ServiceException(AppErrorConstant.CANCEL_CANCEL_ORDER);
+        }
+        Integer delayTime = 30;
+        if (redisService.hasKey(SecurityConstant.AUTO_CANCEL_ORDER_TIME)) {
+            delayTime = redisService.getCacheObject(SecurityConstant.AUTO_CANCEL_ORDER_TIME);
+        }
+        AppPlaceOrderVo appPlaceOrderVo = new AppPlaceOrderVo();
+        OrderPayment orderPayment = orderPaymentService.getByOrderId(orderId);
+        String[] payArr = payStr.split("-");
+        appPlaceOrderVo.setOrderId(order.getOrderId());
+        appPlaceOrderVo.setOrderNo(order.getOrderNo());
+        appPlaceOrderVo.setPayType(order.getPayType());
+        appPlaceOrderVo.setPayMoney(order.getPayMoney());
+        appPlaceOrderVo.setUnpaidMoney(order.getReceivableMoney().subtract(order.getPayMoney()));
+        appPlaceOrderVo.setEndTime(DateUtils.addMinutes(order.getCreateTime(), delayTime));
+        appPlaceOrderVo.setAppId(payArr[0]);
+        appPlaceOrderVo.setMchId(orderPayment.getSubMchId());
+        appPlaceOrderVo.setTimeStamp(payArr[1]);
+        appPlaceOrderVo.setNonceStr(payArr[2]);
+        appPlaceOrderVo.setPackageStr(payArr[3]);
+        appPlaceOrderVo.setSignType(payArr[4]);
+        appPlaceOrderVo.setPaySign(payArr[5]);
+        appPlaceOrderVo.setPrepayId(orderPayment.getPrepayId());
+        return appPlaceOrderVo;
     }
 
     /**
@@ -1602,39 +1656,42 @@
                     List<ProfitSharingRequest.Receiver> receiverList = new ArrayList<>();
 
                     String description = "订单:" + orderNo + " 平台抽取佣金";
+                    //获取商户分成
                     BigDecimal proportionPercent = shopProportion.getProportionPercent();
                     if (null == proportionPercent) {
                         proportionPercent = BigDecimal.ZERO;
                     }
+                    //平台分成
+                    proportionPercent = new BigDecimal("100.00").subtract(proportionPercent);
+                    if(proportionPercent.compareTo(BigDecimal.ZERO)>0){
+                        ProfitSharingResult result = new ProfitSharingResult();
+                        result.setOutOrderNo(orderNo);
+                        result.setStatus("FINISHED");
+                        // 计算分成金额
+                        int amount = orderMoney.multiply(proportionPercent).setScale(0, RoundingMode.UP).intValue();
+                        log.info("订单分账:{} 分账金额: {}", orderNo, amount);
+                        if (amount > 0) {
+                            // 分账创建
+                            ProfitSharingRequest.Receiver receiver = new ProfitSharingRequest.Receiver();
+                            receiver.setType("MERCHANT_ID");
+                            receiver.setReceiverAccount(platformTyMacId);
+                            receiver.setAmount(amount);
+                            receiver.setDescription(description);
 
-                    ProfitSharingResult result = new ProfitSharingResult();
-                    result.setOutOrderNo(orderNo);
-                    result.setStatus("FINISHED");
+                            receiverList.add(receiver);
+                            request.setReceivers(receiverList);
+                            // 分账完成
+                            request.setFinish(true);
+                            result = wxService.getEcommerceService().profitSharing(request);
+                        }
 
-                    // 计算分成金额
-                    int amount = orderMoney.multiply(proportionPercent).setScale(0, RoundingMode.UP).intValue();
-                    log.info("订单分账:{} 分账金额: {}", orderNo, amount);
-                    if (amount > 0) {
-                        // 分账创建
-                        ProfitSharingRequest.Receiver receiver = new ProfitSharingRequest.Receiver();
-                        receiver.setType("MERCHANT_ID");
-                        receiver.setReceiverAccount(platformTyMacId);
-                        receiver.setAmount(amount);
-                        receiver.setDescription(description);
+                        // 创建分账记录
+                        profitSharingService.saveProfitSharing(shopId, orderId, orderMoney, result);
 
-                        receiverList.add(receiver);
-                        request.setReceivers(receiverList);
-                        // 分账完成
-                        request.setFinish(true);
-                        result = wxService.getEcommerceService().profitSharing(request);
+                        // 保存请求信息
+                        sendMessage = JSONObject.toJSONString(request);
+                        resultMessage = JSONObject.toJSONString(result);
                     }
-
-                    // 创建分账记录
-                    profitSharingService.saveProfitSharing(shopId, orderId, orderMoney, result);
-
-                    // 保存请求信息
-                    sendMessage = JSONObject.toJSONString(request);
-                    resultMessage = JSONObject.toJSONString(result);
                 } else {
                     resultMessage = String.format("订单分账:%s 获取商户分成失败", orderNo);
                     log.info(resultMessage);
@@ -3116,6 +3173,10 @@
             }
         }
         List<Long> shopIdList = remoteShopService.listShopIdByPlTotal(mgtBasePlatformDto).getData();
+        if(mgtBasePlatformDto.getShopId()!=null){
+            shopIdList = new ArrayList<>();
+            shopIdList.add(mgtBasePlatformDto.getShopId());
+        }
         mgtBasePlatformDto.setShopIdList(shopIdList);
         //获取基础统计
         MgtTotalOrderTotalVo mgtTotalOrderTotalVo = orderMapper.getPlTotalOrderTotalOrderFrom(mgtBasePlatformDto);
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
index 95fb5a5..fec45aa 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/order/OrderService.java
@@ -82,6 +82,15 @@
     void cancelOrder(String orderId);
 
     /**
+     * @description  支付订单
+     * @author  jqs
+     * @date    2023/8/27 15:26
+     * @param orderId
+     * @return  AppPlaceOrderVo
+     */
+    AppPlaceOrderVo payOrder(String orderId);
+
+    /**
      * 获取用户订单统计
      * @param userId
      * @return
diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/MsgUtils.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/MsgUtils.java
index ad0d481..d8243a8 100644
--- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/MsgUtils.java
+++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/MsgUtils.java
@@ -23,7 +23,6 @@
 
 public class MsgUtils {
 
-
     public static void sendMsg(String phoneNumber,Integer sendType,String sendContent) throws Exception {
 
         StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
diff --git a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
index ed04016..86bd659 100644
--- a/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
+++ b/ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -939,19 +939,22 @@
         SELECT
         DATE_FORMAT(create_time, '%Y-%m-%d') AS mapKey,
         COUNT(DISTINCT order_id) AS mapValueFirst,
-        SUM(order_money) AS mapValueSecond,
-        FROM
-        t_order
-        WHERE
-        del_flag = 0 AND order_from = 2
-        AND Date(create_time) >= DATE_SUB(CURDATE(), INTERVAL 6 DAY)
+        SUM(order_money) AS mapValueSecond
+        FROM t_order
+        WHERE del_flag = 0 AND order_from = 2 AND order_status IN (2,3)
         <if test="param.shopId != null and param.shopId != ''">
             AND shop_id = #{param.shopId}
         </if>
+        <if test="param.startDate!=null and param.startDate!=''">
+            AND Date(create_time) &gt;= #{param.startDate}
+        </if>
+        <if test="param.endDate!=null and param.endDate!=''">
+            AND Date(create_time) &lt;= #{param.endDate}
+        </if>
         GROUP BY
-        DATE_FORMAT(create_time, '%Y-%m-%d')
+        mapKey
         ORDER BY
-        DATE_FORMAT(create_time, '%Y-%m-%d') ASC
+        mapKey ASC
     </select>
 
     <select id="getUserIdAgeRank" resultType="java.lang.Long">
@@ -1224,6 +1227,12 @@
                 #{item}
             </foreach>
         </if>
+        <if test="param.startDate!=null and param.startDate!=''">
+            AND Date(toc.create_time) &gt;= #{param.startDate}
+        </if>
+        <if test="param.endDate!=null and param.endDate!=''">
+            AND Date(toc.create_time) &lt;= #{param.endDate}
+        </if>
         GROUP BY tog.goods_type
     </select>
 
@@ -1331,11 +1340,8 @@
         FROM t_order toc
         INNER JOIN t_order_goods tog ON tog.order_id = toc.order_id
         WHERE toc.del_flag = 0 AND toc.order_from = 2 AND toc.order_status = 3 AND toc.new_member_flag = 1
-        <if test="param.shopIdList != null and param.shopIdList.size() > 0">
-            AND toc.shop_id IN
-            <foreach collection="param.shopIdList" item="item" open="(" separator="," close=")">
-                #{item}
-            </foreach>
+        <if test="param.shopId != null and param.shopId != ''">
+            AND toc.shop_id = #{param.shopId}
         </if>
         <if test="param.startDate!=null and param.startDate!=''">
             AND Date(toc.create_time) &gt;= #{param.startDate}
diff --git a/ruoyi-modules/ruoyi-order/src/test/java/com/ruoyi/order/orderTest.java b/ruoyi-modules/ruoyi-order/src/test/java/com/ruoyi/order/orderTest.java
index a73a88d..7a97d3b 100644
--- a/ruoyi-modules/ruoyi-order/src/test/java/com/ruoyi/order/orderTest.java
+++ b/ruoyi-modules/ruoyi-order/src/test/java/com/ruoyi/order/orderTest.java
@@ -24,14 +24,9 @@
 
     /*@Test
     public void main() {
+        MgtBasePlatformDto mgtBasePlatformDto = new MgtBasePlatformDto();
+        orderService.getPlTotalOrderTotal(mgtBasePlatformDto);
 
-        AppPlaceOrderVo appPlaceOrderVo = new AppPlaceOrderVo();
-
-        orderService.createWxPayInfo( appPlaceOrderVo, 280L, 50L,
-                "测试支付商品", "SC202308160046",
-                "0fa36ad3edcc40bebc2795cc505b5272", new BigDecimal("0.1"),
-                "oL-gp5GG6-KRVSIAE_qYLMULPFjw", "127.0.0.1", Arrays.asList("测试支付商品"));
-        System.out.println(appPlaceOrderVo.toString());
     }*/
 
 
diff --git a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
index 6534a3d..82a2e80 100644
--- a/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
+++ b/ruoyi-modules/ruoyi-shop/src/main/resources/mapper/shop/ShopMapper.xml
@@ -439,6 +439,7 @@
                SIN((105.43587830688473 * PI() / 180 - ts.shop_longitude * PI() / 180) / 2), 2
                ))) AS distance
         FROM t_shop ts
+        WHERE del_flag = 0 AND shop_status = 1
         ORDER BY distance ASC LIMIT 1
     </select>
 
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/staff/StaffSysController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/staff/StaffSysController.java
index 150f3ce..9c75106 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/staff/StaffSysController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/staff/StaffSysController.java
@@ -83,5 +83,14 @@
         return R.ok(page.setRecords(staffSuggestPageVoList));
     }
 
+    @ApiOperation(value = "导入员工")
+    @PostMapping("/importSysStaffData")
+    public AjaxResult importGoodsTagData(@RequestPart("file")MultipartFile file) throws Exception
+    {
+        ExcelUtil<MgtSysStaffImportDto> util = new ExcelUtil<MgtSysStaffImportDto>(MgtSysStaffImportDto.class);
+        List<MgtSysStaffImportDto> tagList = util.importExcel(file.getInputStream());
+        String message = sysStaffService.importSysStaff(tagList);
+        return success(message);
+    }
 
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtStaffEditDto.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtStaffEditDto.java
index d325404..8d842b0 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtStaffEditDto.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtStaffEditDto.java
@@ -59,4 +59,7 @@
         @NotNull(message = "负责人标记不能为空")
         private String headFlag;
 
+        @ApiModelProperty(value = "微信userId")
+        private String wxUserId;
+
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtSysStaffImportDto.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtSysStaffImportDto.java
index f6ff933..52bfa3e 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtSysStaffImportDto.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/dto/MgtSysStaffImportDto.java
@@ -16,10 +16,10 @@
     @Excel(name = "姓名")
     private String staffName;
 
-    @Excel(name = "账号")
+    @Excel(name = "帐号")
     private String userName;
 
-    @Excel(name = "昵称")
+    @Excel(name = "别名")
     private String nickName;
 
     @Excel(name = "职务")
@@ -37,6 +37,6 @@
     @Excel(name = "座机")
     private String phone;
 
-    @Excel(name = "邮箱")
+    @Excel(name = "个人邮箱")
     private String email;
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeptSimpleVo.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeptSimpleVo.java
new file mode 100644
index 0000000..55d16b4
--- /dev/null
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/DeptSimpleVo.java
@@ -0,0 +1,23 @@
+package com.ruoyi.system.domain.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @ClassName DeptSimpleVo
+ * @Description TODO
+ * @Author jqs
+ * @Date 2023/8/27 17:45
+ * @Version 1.0
+ */
+@Data
+public class DeptSimpleVo {
+
+
+
+    @ApiModelProperty(value = "部门id")
+    private Long deptId;
+
+    @ApiModelProperty(value = "部门名字")
+    private String deptName;
+}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/staff/SysStaffMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/staff/SysStaffMapper.java
index 7bc4909..74bb0f6 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/staff/SysStaffMapper.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/staff/SysStaffMapper.java
@@ -1,9 +1,10 @@
 package com.ruoyi.system.mapper.staff;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.system.domain.dto.MgtStaffPageDto;
 import com.ruoyi.system.domain.pojo.staff.SysStaff;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.system.domain.vo.DeptSimpleVo;
 import com.ruoyi.system.domain.vo.MgtDeptStaffListVo;
 import com.ruoyi.system.domain.vo.MgtStaffPageVo;
 import org.apache.ibatis.annotations.Param;
@@ -47,4 +48,13 @@
      * @return  List<MgtStaffPageVo>
      */
     List<MgtStaffPageVo> pageMgtStaff(Page page, @Param("param")MgtStaffPageDto mgtStaffPageDto);
+
+    /**
+     * @description
+     * @author  jqs
+     * @date    2023/8/27 17:46
+     * @param
+     * @return  List<DeptSimpleVo>
+     */
+    List<DeptSimpleVo> listSimpleDept();
 }
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java
index e6c6f4f..16ea7c2 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/staff/SysStaffServiceImpl.java
@@ -20,6 +20,7 @@
 import com.ruoyi.system.domain.dto.MgtStaffPageDto;
 import com.ruoyi.system.domain.dto.MgtSysStaffImportDto;
 import com.ruoyi.system.domain.pojo.staff.SysStaff;
+import com.ruoyi.system.domain.vo.DeptSimpleVo;
 import com.ruoyi.system.domain.vo.MgtDeptStaffListVo;
 import com.ruoyi.system.domain.vo.MgtStaffPageVo;
 import com.ruoyi.system.mapper.staff.SysStaffMapper;
@@ -31,7 +32,10 @@
 import javax.annotation.Resource;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 import java.util.concurrent.TimeUnit;
+import java.util.function.Function;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -165,6 +169,7 @@
         sysStaff.setStaffPost(mgtStaffEditDto.getStaffPost());
         sysStaff.setStaffAvatar(mgtStaffEditDto.getStaffAvatar());
         sysStaff.setHeadFlag(mgtStaffEditDto.getHeadFlag());
+        sysStaff.setWxUserId(mgtStaffEditDto.getWxUserId());
         this.saveOrUpdate(sysStaff);
         MgtShopStaffEditDto mgtShopStaffEditDto = new MgtShopStaffEditDto();
         mgtShopStaffEditDto.setUserId(sysStaff.getUserId());
@@ -303,16 +308,76 @@
         String mobile;
         String userName;
         String department;
+        String departmentFirst;
+        String departmentSecond;
+        String departmentThird;
         int lastIndex;
-
+        int firstIndex;
+        int secondIndex;
+        int thirdIndex;
+        DeptSimpleVo deptSimpleVo;
+        SysUser sysUser;
+        List<DeptSimpleVo> deptSimpleVoList = sysStaffMapper.listSimpleDept();
+        Map<String, DeptSimpleVo> deptMap = deptSimpleVoList.stream()
+                .collect(Collectors.toMap(DeptSimpleVo::getDeptName, Function.identity()));
         for (MgtSysStaffImportDto entity : staffImportDtoList) {
             try {
-                mobile = entity.getMobile();
-                userName = entity.getUserName();
                 department = entity.getDepartment();
-                lastIndex = department.lastIndexOf("/");
-                department = department.substring(lastIndex + 1);
-
+                lastIndex = department.indexOf(";");
+                department = (lastIndex != -1) ? department.substring(0, lastIndex) : department;
+                firstIndex = department.lastIndexOf("/");
+                secondIndex = department.lastIndexOf('/', firstIndex - 1);
+                thirdIndex = department.lastIndexOf('/', secondIndex - 1);
+                departmentFirst = department.substring(firstIndex + 1);
+                deptSimpleVo = deptMap.get(departmentFirst);
+                if(deptSimpleVo==null){
+                    departmentSecond = department.substring(secondIndex + 1, firstIndex);
+                    deptSimpleVo = deptMap.get(departmentSecond);
+                }
+                if(deptSimpleVo==null){
+                    departmentThird = department.substring(thirdIndex + 1, secondIndex);
+                    deptSimpleVo = deptMap.get(departmentThird);
+                }
+                if(deptSimpleVo!=null&&StringUtils.isNotBlank(entity.getMobile())){
+                    LambdaQueryWrapper<SysStaff> queryWrapper = new LambdaQueryWrapper();
+                    queryWrapper.eq(SysStaff::getDelFlag,0);
+                    queryWrapper.eq(SysStaff::getStaffMobile,entity.getMobile());
+                    SysStaff sysStaffSame = this.getOne(queryWrapper, false);
+                    if(sysStaffSame!=null){
+                        sysStaffSame.setStaffName(entity.getStaffName());
+                        sysStaffSame.setStaffPost(entity.getPost());
+                        sysStaffSame.setWxUserId(entity.getUserName());
+                        if(StringUtils.isNotBlank(entity.getEmail())){
+                            sysStaffSame.setStaffEmail(entity.getEmail());
+                        }
+                        this.saveOrUpdate(sysStaffSame);
+                        sysUser = sysUserService.selectUserById(sysStaffSame.getUserId());
+                        sysUser.setDeptId(deptSimpleVo.getDeptId());
+                        sysUser.setNickName(entity.getStaffName());
+                        if(entity.getGender().equals("男")){
+                            sysUser.setSex("0");
+                        }else if(entity.getGender().equals("女")){
+                            sysUser.setSex("1");
+                        }else{
+                            sysUser.setSex("2");
+                        }
+                        if(StringUtils.isNotBlank(entity.getEmail())){
+                            sysUser.setEmail(entity.getEmail());
+                        }
+                        sysUserService.updateOnlyUser(sysUser);
+                    }else{
+                        MgtStaffEditDto mgtStaffEditDto = new MgtStaffEditDto();
+                        mgtStaffEditDto.setDeptId(deptSimpleVo.getDeptId());
+                        mgtStaffEditDto.setStaffName(entity.getStaffName());
+                        mgtStaffEditDto.setStaffMobile(entity.getMobile());
+                        mgtStaffEditDto.setStaffEmail(entity.getEmail());
+                        mgtStaffEditDto.setStaffPost(entity.getPost());
+                        mgtStaffEditDto.setStaffAvatar("https://hongruitang.oss-cn-beijing.aliyuncs.com/2023/8/26/362e964917304255aaa36a874063d198.jpg");
+                        mgtStaffEditDto.setHeadFlag("0");
+                        mgtStaffEditDto.setWxUserId(entity.getUserName());
+                        this.mgtStaffEdit(mgtStaffEditDto);
+                    }
+                }
                 /*tagName = entity.getTagName();
                 sysTagSame = null;
                 // 验证是否存在这个用户
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/staff/SysStaffMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/staff/SysStaffMapper.xml
index 52f110d..379559d 100644
--- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/staff/SysStaffMapper.xml
+++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/staff/SysStaffMapper.xml
@@ -58,4 +58,12 @@
             AND tss.staff_name LIKE CONCAT('%',#{param.staffName},'%')
         </if>
     </select>
+
+    <select id="listSimpleDept" resultType="com.ruoyi.system.domain.vo.DeptSimpleVo">
+        SELECT
+            dept_id deptId,
+            dept_name deptName
+        FROM sys_dept
+        WHERE del_flag = '0'
+    </select>
 </mapper>

--
Gitblit v1.7.1