From d34b3987a7c89c29a74eb7d3525b2a486eeaca10 Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期三, 08 一月 2025 17:17:55 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/JiaDianHuiShou

---
 ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/request/ChangeDispatchRequest.java   |    2 
 ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OrderController.java          |   35 +++-
 ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/importExcel/FrozenBuckleImportDTO.java   |   31 ++-
 ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/vo/MoneyRecentQuery.java                 |    2 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/Order.java                        |   25 +++
 ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/MenuServiceImpl.java        |   30 ++-
 ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/ChangeDispatchController.java |   18 +
 ruoyi-service/ruoyi-admin/src/main/resources/template/加盟商余额记录.xlsx                               |    0 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChangeDispatchController.java |    1 
 ruoyi-service/ruoyi-admin/src/main/resources/template/加盟商扣款记录.xlsx                               |    0 
 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GaoDeMapUtil.java       |    2 
 ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/TFranchiseeBalanceChange.java     |    5 
 ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/FranchiseeController.java     |  215 +++++++++++++++++++-------
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java          |    3 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java       |   51 ++----
 ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/RoleController.java           |    1 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/ChangeDispatchRequest.java       |    2 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vx/GetTransferBatchByOutNo.java          |    2 
 ruoyi-service/ruoyi-admin/src/main/resources/template/导表录单导入模板 .xlsx                             |    0 
 ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/utils/TencentCosUtil.java                |    2 
 ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderMapper.java                  |    2 
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/ChangeDispatchMapper.xml               |    8 
 ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml                        |   10 +
 23 files changed, 316 insertions(+), 131 deletions(-)

diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/request/ChangeDispatchRequest.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/request/ChangeDispatchRequest.java
index 3101f4b..759b2c1 100644
--- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/request/ChangeDispatchRequest.java
+++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/request/ChangeDispatchRequest.java
@@ -13,6 +13,7 @@
 public class ChangeDispatchRequest {
 
     private String workerName;
+    private String reservationName;
 
     private String orderNumber;
 
@@ -25,5 +26,6 @@
     private List<String> cityList;
     private String [] siteIds;
     private String reservationAddress;
+    private String reservationPhone;
 
 }
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GaoDeMapUtil.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GaoDeMapUtil.java
index 8b48a51..65d978f 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GaoDeMapUtil.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/GaoDeMapUtil.java
@@ -193,6 +193,8 @@
         String queryResult = getResponse(queryUrl);
         GaoDeAddressInfoVO data = JSONObject.parseObject(queryResult, GaoDeAddressInfoVO.class);
         List<Geocodes> geocodes = data.getGeocodes();
+        if (geocodes==null||geocodes.isEmpty())
+            return Result.failed(null, "计算失败");
         Geocodes info = geocodes.get(0);
         String adcode = info.getAdcode();
         String city = info.getCity();
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/ChangeDispatchController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/ChangeDispatchController.java
index 520c342..4d40e73 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/ChangeDispatchController.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/ChangeDispatchController.java
@@ -61,13 +61,16 @@
     @GetMapping(value = "/page")
     @ApiImplicitParams({
             @ApiImplicitParam(value = "师傅名称", name = "workerName", dataType = "String"),
+            @ApiImplicitParam(value = "预约人名称", name = "reservationName", dataType = "String"),
             @ApiImplicitParam(value = "订单编号", name = "orderNumber", dataType = "String"),
             @ApiImplicitParam(value = "下单用户名称", name = "userName", dataType = "String"),
+            @ApiImplicitParam(value = "下单用户手机号", name = "reservationPhone", dataType = "String"),
             @ApiImplicitParam(value = "地址", name = "reservationAddress", dataType = "String"),
             @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
             @ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true)
     })
     public R<Page<ChangeDispatch>> queryPageList(String workerName, String orderNumber, String userName,String reservationAddress,
+                                                 String reservationName,String reservationPhone,
                                                  @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
                                                  @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
         LoginUser loginUser = tokenService.getLoginUser();
@@ -83,7 +86,8 @@
         changeDispatchRequest.setPageNum(pageNum);
         changeDispatchRequest.setPageSize(pageSize);
         changeDispatchRequest.setCityList(cityList);
-
+        changeDispatchRequest.setReservationName(reservationName);
+        changeDispatchRequest.setReservationPhone(reservationPhone);
         Integer franchiseeId = loginUser.getSysUser().getFranchiseeId();
         if (franchiseeId!=null) {
             Franchisee byId = franchiseeService.getById(franchiseeId);
@@ -163,10 +167,14 @@
     @ApiOperation(value = "订单改派师傅", tags = {"后台-系统设置-订单改派管理"})
     @GetMapping(value = "/changeWorker")
     @ApiImplicitParams({
-            @ApiImplicitParam(value = "改派订单id", name = "changeId", dataType = "Integer", required = true),
-            @ApiImplicitParam(value = "师傅id", name = "workerId", dataType = "Integer", required = true)
+            @ApiImplicitParam(value = "改派订单id", name = "changeId", dataType = "String", required = true),
+            @ApiImplicitParam(value = "订单id", name = "orderId", dataType = "String", required = true),
+            @ApiImplicitParam(value = "师傅id", name = "workerId", dataType = "Integer", required = true),
+            @ApiImplicitParam(value = "时间", name = "arriveTime", dataType = "String", required = true),
     })
-    public R<String> changeWorker(@RequestParam String changeId, @RequestParam Integer workerId,@RequestParam String orderId,@RequestParam String reason,
+    public R<String> changeWorker(@RequestParam String changeId,
+                                  @RequestParam String orderId,
+                                  @RequestParam Integer workerId,
                                   @RequestParam  String arriveTime) {
         MasterWorker masterWorker = masterWorkerService.lambdaQuery()
                 .eq(MasterWorker::getId, workerId).eq(MasterWorker::getIsDelete, 0).one();
@@ -184,7 +192,7 @@
                 NettyWebSocketController.sendMsgToClient(context, "您有一条新的订单,请注意查收!");
             }
 
-            dispatchClient.changeReason(orderId, reason);
+//            dispatchClient.changeReason(orderId, reason);
             orderClient.updateArrivalTime(orderId,arriveTime);
             return R.ok();
 //            try {
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/FranchiseeController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/FranchiseeController.java
index 857b0a4..1998405 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/FranchiseeController.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/FranchiseeController.java
@@ -9,6 +9,7 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.alipay.api.AlipayApiException;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -115,24 +116,50 @@
 
 
     @ApiOperation(value = "加盟商列表余额", tags = {"后台2.0-加盟商列表余额"})
-    @PostMapping(value = "/recent/money")
-    public R<RencentBalance> recentmoney() {
+    @GetMapping(value = "/recent/money")
+    @ApiImplicitParams({
+            @ApiImplicitParam(value = "加盟商名称", name = "name", dataType = "String"),
+            @ApiImplicitParam(value = "管理员", name = "head", dataType = "String"),
+            @ApiImplicitParam(value = "手机号码", name = "phone", dataType = "String"),
+            @ApiImplicitParam(value = "管辖城市", name = "city", dataType = "String"),
+            @ApiImplicitParam(value = "充值/扣款起始时间", name = "date1", dataType = "String"),
+            @ApiImplicitParam(value = "充值/扣款结束时间", name = "date2", dataType = "String"),
+            @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
+            @ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true)
+    })
+    public R<RencentBalance> recentmoney(String name, String head, String phone, String city,
+                                         String date1,String date2,
+                                         @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
+                                         @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
         BigDecimal balance = new BigDecimal(0);
-        List<Franchisee> list = franchiseeService.lambdaQuery().list();
+        LambdaQueryWrapper<Franchisee> franchiseeLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        franchiseeLambdaQueryWrapper = StringUtils.isNotBlank(name) ? franchiseeLambdaQueryWrapper.like(Franchisee::getName, name) : franchiseeLambdaQueryWrapper;
+        franchiseeLambdaQueryWrapper = StringUtils.isNotBlank(head) ? franchiseeLambdaQueryWrapper.like(Franchisee::getHead, head) : franchiseeLambdaQueryWrapper;
+        franchiseeLambdaQueryWrapper = StringUtils.isNotBlank(phone) ? franchiseeLambdaQueryWrapper.like(Franchisee::getHeadPhone, phone) : franchiseeLambdaQueryWrapper;
+        franchiseeLambdaQueryWrapper = StringUtils.isNotBlank(city) ? franchiseeLambdaQueryWrapper.like(Franchisee::getCity, city) : franchiseeLambdaQueryWrapper;
+        List<Franchisee> list = franchiseeService.list(franchiseeLambdaQueryWrapper);
+        List<Integer> collect = list.stream().map(Franchisee::getId).collect(Collectors.toList());
+        if (collect.isEmpty())collect.add(-1);
         for (Franchisee franchisee : list) {
             balance = balance.add(franchisee.getBalance());
         }
-
         //充值的金额
         BigDecimal balance1 = new BigDecimal(0);
-        List<TFranchiseeBalanceChange> list1 = balanceChangeService.lambdaQuery().eq(TFranchiseeBalanceChange::getType, 1).list();
+        List<TFranchiseeBalanceChange> list1 = balanceChangeService.lambdaQuery()
+                .in(TFranchiseeBalanceChange::getFranchiseeId,collect)
+                .between(date1!=null,TFranchiseeBalanceChange::getCreateTime, date1, date2)
+                .eq(TFranchiseeBalanceChange::getType, 1).list();
         for (TFranchiseeBalanceChange franchiseeBalanceChange : list1) {
             balance1 = balance1.add(franchiseeBalanceChange.getAmount());
         }
         //扣除的金额
         BigDecimal balance2 = new BigDecimal(0);
-        List<TFranchiseeBalanceChange> list2 = balanceChangeService.lambdaQuery().eq(TFranchiseeBalanceChange::getType, 2).list();
-        for (TFranchiseeBalanceChange franchiseeBalanceChange : list1) {
+        List<TFranchiseeBalanceChange> list2 = balanceChangeService.lambdaQuery()
+                .in(TFranchiseeBalanceChange::getFranchiseeId,collect)
+                .eq(TFranchiseeBalanceChange::getType, 2)
+                .between(date1!=null,TFranchiseeBalanceChange::getCreateTime, date1, date2)
+                .eq(TFranchiseeBalanceChange::getIs_pay,1).list();
+        for (TFranchiseeBalanceChange franchiseeBalanceChange : list2) {
             balance2 = balance2.add(franchiseeBalanceChange.getAmount());
         }
 
@@ -144,24 +171,28 @@
         return R.ok(balance3);
     }
 
-
     @ApiOperation(value = "详情",tags = {"师傅段2.0-统一充值扣款列表"})
     @PostMapping(value = "/change/detail")
     public R<TFranchiseeBalanceChange> detail1(@RequestParam Integer id) throws AlipayApiException {
-        TFranchiseeBalanceChange byId = balanceChangeService.getById(id);
-        return R.ok(byId);
-
+        TFranchiseeBalanceChange balanceChange = balanceChangeService.getById(id);
+        if (balanceChange.getType()==2){
+            balanceChange.setPayStr("微信支付");
+        }
+        return R.ok(balanceChange);
     }
 
 
     @ApiOperation(value = "扣款记录及充值记录", tags = {"后台2.0-统一充值扣款列表","师傅段2.0-统一充值扣款列表"})
     @PostMapping(value = "/recent/money/list")
     public R<Page<TFranchiseeBalanceChange>> recentmoneylist(@RequestBody MoneyRecentQuery moneyRecentQuery) {
+        Long userid = tokenService.getLoginUser().getUserid();
+        SysUser sysUser = sysUserService.getById(userid);
         Page<TFranchiseeBalanceChange> page = balanceChangeService.lambdaQuery().eq(moneyRecentQuery.getType() != null, TFranchiseeBalanceChange::getType, moneyRecentQuery.getType())
-                .eq(moneyRecentQuery.getFranchId() != null, TFranchiseeBalanceChange::getFranchiseeId, moneyRecentQuery.getFranchId())
-                .eq(moneyRecentQuery.getFranchName() != null && !"".equals(moneyRecentQuery.getFranchName()), TFranchiseeBalanceChange::getFranchiseeName, moneyRecentQuery.getFranchName())
+                .eq(sysUser.getFranchiseeId() != null, TFranchiseeBalanceChange::getFranchiseeId, sysUser.getFranchiseeId())
+                .like(moneyRecentQuery.getName() != null && !"".equals(moneyRecentQuery.getName()), TFranchiseeBalanceChange::getFranchiseeName, moneyRecentQuery.getName())
                 .ge(moneyRecentQuery.getDate1() != null, TFranchiseeBalanceChange::getCreateTime, moneyRecentQuery.getDate1())
                 .le(moneyRecentQuery.getDate2() != null, TFranchiseeBalanceChange::getCreateTime, moneyRecentQuery.getDate2())
+                .eq(moneyRecentQuery.getFranchId()!=null, TFranchiseeBalanceChange::getFranchiseeId, moneyRecentQuery.getFranchId())
                 .eq(TFranchiseeBalanceChange::getIs_pay,1)
                 .orderByDesc(TFranchiseeBalanceChange::getCreateTime)
                 .page(Page.of(moneyRecentQuery.getPageNum(), moneyRecentQuery.getPageSize()));
@@ -173,12 +204,17 @@
                 String siteIds = franchisee.getSiteIds();
                 List<Site> list1 = siteService.lambdaQuery().in(Site::getId, siteIds.split(",")).list();
                 record.setList1(list1);
-
             }
             String cityCode = franchisee.getCityCode();
             List<Region> list = regionService.lambdaQuery().in(Region::getCode, cityCode.split(",")).list();
             record.setList(list);
             record.setFranchiseeName(franchisee.getName());
+            if (record.getType()==1){
+                record.setPayStr("扣除旧机款");
+            }
+            if (record.getType()==2){
+                record.setPayStr("充值");
+            }
         }
         return R.ok(page);
     }
@@ -186,14 +222,24 @@
     @ApiOperation(value = "导出", tags = {"后台2.0-统一充值扣款列表"})
     @PostMapping(value = "/recent/money/list/export")
     public R<Page<TFranchiseeBalanceChange>> export(@RequestBody MoneyRecentQuery moneyRecentQuery, HttpServletResponse response) {
+        Long userid = tokenService.getLoginUser().getUserid();
+        SysUser sysUser = sysUserService.getById(userid);
         if (moneyRecentQuery.getType()==2) {
             List<TFranchiseeBalanceChange> page = balanceChangeService.lambdaQuery().eq(moneyRecentQuery.getType() != null, TFranchiseeBalanceChange::getType, moneyRecentQuery.getType())
-                    .eq(moneyRecentQuery.getFranchId() != null, TFranchiseeBalanceChange::getFranchiseeId, moneyRecentQuery.getFranchId())
-                    .eq(moneyRecentQuery.getFranchName() != null && !"".equals(moneyRecentQuery.getFranchName()), TFranchiseeBalanceChange::getFranchiseeName, moneyRecentQuery.getFranchName())
+                    .eq(sysUser.getFranchiseeId() != null, TFranchiseeBalanceChange::getFranchiseeId, sysUser.getFranchiseeId())
+                    .eq(moneyRecentQuery.getName() != null && !"".equals(moneyRecentQuery.getName()), TFranchiseeBalanceChange::getFranchiseeName, moneyRecentQuery.getName())
                     .ge(moneyRecentQuery.getDate1() != null, TFranchiseeBalanceChange::getCreateTime, moneyRecentQuery.getDate1())
                     .le(moneyRecentQuery.getDate2() != null, TFranchiseeBalanceChange::getCreateTime, moneyRecentQuery.getDate2())
+                    .eq(moneyRecentQuery.getFranchId()!=null, TFranchiseeBalanceChange::getFranchiseeId, moneyRecentQuery.getFranchId())
+                    .eq(TFranchiseeBalanceChange::getIs_pay,1)
+                    .orderByDesc(TFranchiseeBalanceChange::getCreateTime)
                     .list();
-
+            for (TFranchiseeBalanceChange tFranchiseeBalanceChange : page) {
+                tFranchiseeBalanceChange.setPayStr("微信支付");
+                LocalDateTime createTime = tFranchiseeBalanceChange.getCreateTime();
+                // 转化为String类型的格式字符串yyyy-MM-dd HH:mm:ss
+                tFranchiseeBalanceChange.setCreateTimeStr(createTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+            }
             try {
                 response.setCharacterEncoding(Constants.UTF8);
                 response.setContentType("application/vnd.ms-excel");
@@ -221,13 +267,17 @@
             return R.ok();
         }else {
             List<TFranchiseeBalanceChange> page = balanceChangeService.lambdaQuery().eq(moneyRecentQuery.getType() != null, TFranchiseeBalanceChange::getType, moneyRecentQuery.getType())
-                    .eq(moneyRecentQuery.getFranchId() != null, TFranchiseeBalanceChange::getFranchiseeId, moneyRecentQuery.getFranchId())
-                    .eq(moneyRecentQuery.getFranchName() != null && !"".equals(moneyRecentQuery.getFranchName()), TFranchiseeBalanceChange::getFranchiseeName, moneyRecentQuery.getFranchName())
+                    .eq(sysUser.getFranchiseeId() != null, TFranchiseeBalanceChange::getFranchiseeId, sysUser.getFranchiseeId())
+                    .eq(moneyRecentQuery.getName() != null && !"".equals(moneyRecentQuery.getName()), TFranchiseeBalanceChange::getFranchiseeName, moneyRecentQuery.getName())
                     .ge(moneyRecentQuery.getDate1() != null, TFranchiseeBalanceChange::getCreateTime, moneyRecentQuery.getDate1())
                     .le(moneyRecentQuery.getDate2() != null, TFranchiseeBalanceChange::getCreateTime, moneyRecentQuery.getDate2())
+                    .orderByDesc(TFranchiseeBalanceChange::getCreateTime)
                     .list();
-
-
+            for (TFranchiseeBalanceChange tFranchiseeBalanceChange : page) {
+                LocalDateTime createTime = tFranchiseeBalanceChange.getCreateTime();
+                // 转化为String类型的格式字符串yyyy-MM-dd HH:mm:ss
+                tFranchiseeBalanceChange.setCreateTimeStr(createTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
+            }
             try {
                 response.setCharacterEncoding(Constants.UTF8);
                 response.setContentType("application/vnd.ms-excel");
@@ -299,7 +349,7 @@
         map.put("p4_Cur", "1"); /**交易币种 */
         map.put("q5_OpenId", openId);
         map.put("p5_ProductName", "加盟商充值"); /** 商品名称 */
-        map.put("p9_NotifyUrl", "http://www.zhipingwang.com.cn:9100/admin/franchisee/callBack"); /** 服务器异步通知地址 */
+        map.put("p9_NotifyUrl", "https://v7ro848ar5jx.ngrok.xiaomiqiu123.top/admin/franchisee/callBack"); /** 服务器异步通知地址 */
         map.put("q1_FrpCode", "WEIXIN_APP3"); /** 交易类型*/
         map.put("q7_AppId", "wx1a4a7760be53a835"); /** 交易类型*/
         map.put("qa_TradeMerchantNo", "777165000859101"); /** 777开头的报备商户号   必填!*/
@@ -357,6 +407,7 @@
         tFranchiseeBalanceChange.setFranchiseeName(byId.getName());
         tFranchiseeBalanceChange.setFranchiseeId(String.valueOf(byId.getId()));
         tFranchiseeBalanceChange.setType(2);
+        tFranchiseeBalanceChange.setRemark("微信支付");
         tFranchiseeBalanceChange.setCode(code);
         balanceChangeService.save(tFranchiseeBalanceChange);
 
@@ -392,52 +443,86 @@
 
     @ApiOperation(value = "扫码支付",tags = {"后台2.0-加盟商列表余额"})
     @PostMapping(value = "/code/buy")
-    public R buy(@RequestParam BigDecimal money) throws AlipayApiException {
+    public R buy(@RequestParam BigDecimal money) throws AlipayApiException, IOException {
         Long userid = tokenService.getLoginUser().getUserid();
         SysUser byId1 = sysUserService.getById(userid);
         Franchisee byId = franchiseeService.getById(byId1.getFranchiseeId());
         String code = generateTradeNumber();
         int i = money.multiply(BigDecimal.valueOf(100)).intValue();
-        com.wechat.pay.java.service.payments.nativepay.model.PrepayRequest prepayRequest = new com.wechat.pay.java.service.payments.nativepay.model.PrepayRequest();
-            prepayRequest.setAppid(weChatConfig.appId);
-            prepayRequest.setMchid(weChatConfig.merchantId);
-            prepayRequest.setOutTradeNo(code);
-            prepayRequest.setDescription("购买资料");
-            prepayRequest.setNotifyUrl("http://www.zhipingwang.com.cn:9090/admin/franchisee/callBack");
-            com.wechat.pay.java.service.payments.nativepay.model.Amount amount = new com.wechat.pay.java.service.payments.nativepay.model.Amount();
-            amount.setTotal(i);
-            prepayRequest.setAmount(amount);
-            // 调用下单方法,得到应答
-            com.wechat.pay.java.service.partnerpayments.app.model.PrepayResponse response;
-            try {
-                com.wechat.pay.java.service.payments.nativepay.model.PrepayResponse prepay = nativePayService.prepay(prepayRequest);
-                //预支付成功,创建预支付订单
-                TFranchiseeBalanceChange tFranchiseeBalanceChange = new TFranchiseeBalanceChange();
-                tFranchiseeBalanceChange.setAmount(money);
-                tFranchiseeBalanceChange.setIs_pay(0);
-                tFranchiseeBalanceChange.setFranchiseeName(byId.getName());
-                tFranchiseeBalanceChange.setFranchiseeId(String.valueOf(byId.getId()));
-                tFranchiseeBalanceChange.setType(2);
-                tFranchiseeBalanceChange.setCode(code);
-                balanceChangeService.save(tFranchiseeBalanceChange);
+        String key = "ad273ceb5e1b49e68d5c565d28d1d305";/** md5密钥商户后台-商户中心-商户设置-密钥管理获取 必填!*/
+        Map<String, String> map = new HashMap<String, String>();
+        map.put("p0_Version", "2.5");/** 版本号 */
+        map.put("p1_MerchantNo", "888122400007793");/** 商户编号 */
+        map.put("p2_OrderNo", code); /**商户订单号*/
+        map.put("p3_Amount", String.valueOf(money));/**订单金额*/
+        map.put("p4_Cur", "1"); /**交易币种 */
+        map.put("p5_ProductName", "充值"); /** 商品名称 */
+        map.put("p6_ProductDesc", "加盟商充值"); /** 商品名称 */
+//        map.put("p7_Mp", ""); /** 如果商户请求时传递了该参数,则返回给商户时会原值传 回。 */
+        map.put("p9_NotifyUrl", "https://v7ro848ar5jx.ngrok.xiaomiqiu123.top/admin/franchisee/callBack"); /** 服务器异步通知地址 */
+        map.put("q1_FrpCode", "WEIXIN_NATIVE"); /** 微信扫码(主扫)【注:此为用户主扫,商户被扫】*/
+        map.put("q4_IsShowPic", "1"); /** 是否展示二 维码图片 1表示输出*/
+        map.put("q7_AppId", "wx1a4a7760be53a835"); /** 交易类型*/
+        map.put("qa_TradeMerchantNo", "777165000859101"); /** 777开头的报备商户号   必填!*/
+        map.put("qi_FqSellerPercen", "0"); /** 卖家承担收 费比例 目前仅支持传入 0 ,即用户承 担手续费!*/
+
+        String Strmap = CreateLinkStringByGet1.createLinkStringByGet(map);
+
+        // 签名
+        String sign = "";
+        sign = Md5_Sign.SignByMD5(Strmap, key);
+        map.put("hmac", sign);/** 签名数据 */
+        System.out.println("发送:" + JSON.toJSONString(map).toString());
+
+        // post请求参数内容
+        HttpRequester hr = new HttpRequester();
+        HttpRespons HP = hr.sendPost("https://trade.joinpay.com/tradeRt/uniPay", map);
+        System.out.println("接收返回参数:" + HP.getContent());
+        JSONObject jsonObject = JSONObject.parseObject(HP.getContent());
+        String rcResult = jsonObject.getString("rd_Pic");
+        Map<String, Object> map2 = new HashMap<>();
+        map2.put("rcResult", rcResult);
+//        com.wechat.pay.java.service.payments.nativepay.model.PrepayRequest prepayRequest = new com.wechat.pay.java.service.payments.nativepay.model.PrepayRequest();
+//            prepayRequest.setAppid(weChatConfig.appId);
+//            prepayRequest.setMchid(weChatConfig.merchantId);
+//            prepayRequest.setOutTradeNo(code);
+//            prepayRequest.setDescription("购买资料");
+//            prepayRequest.setNotifyUrl("http://www.zhipingwang.com.cn:9090/admin/franchisee/callBack");
+//            com.wechat.pay.java.service.payments.nativepay.model.Amount amount = new com.wechat.pay.java.service.payments.nativepay.model.Amount();
+//            amount.setTotal(i);
+//            prepayRequest.setAmount(amount);
+//            // 调用下单方法,得到应答
+//            com.wechat.pay.java.service.partnerpayments.app.model.PrepayResponse response;
+        try {
+//                com.wechat.pay.java.service.payments.nativepay.model.PrepayResponse prepay = nativePayService.prepay(prepayRequest);
+            //预支付成功,创建预支付订单
+            TFranchiseeBalanceChange tFranchiseeBalanceChange = new TFranchiseeBalanceChange();
+            tFranchiseeBalanceChange.setAmount(money);
+            tFranchiseeBalanceChange.setIs_pay(0);
+            tFranchiseeBalanceChange.setFranchiseeName(byId.getName());
+            tFranchiseeBalanceChange.setFranchiseeId(String.valueOf(byId.getId()));
+            tFranchiseeBalanceChange.setType(2);
+            tFranchiseeBalanceChange.setCode(code);
+            tFranchiseeBalanceChange.setRemark("加盟商扫码充值");
+            balanceChangeService.save(tFranchiseeBalanceChange);
 
 
 
-                PayDto payDto = new PayDto();
-                payDto.setOrderId(tFranchiseeBalanceChange.getId());
-                payDto.setQrCode(prepay.getCodeUrl());
+            PayDto payDto = new PayDto();
+            payDto.setOrderId(tFranchiseeBalanceChange.getId());
+            payDto.setQrCode(rcResult);
 
-                return R.ok(payDto);
-            } catch (HttpException e) { // 发送HTTP请求失败
+            return R.ok(payDto);
+        } catch (HttpException e) { // 发送HTTP请求失败
 //                log.error("发送HTTP请求失败: {}", e.getHttpRequest());
-            } catch (ServiceException e) { // 服务返回状态小于200或大于等于300,例如500
+        } catch (ServiceException e) { // 服务返回状态小于200或大于等于300,例如500
 //                log.error("服务返回状态异常: {}", e.getResponseBody());
-            } catch (MalformedMessageException e) { // 服务返回成功,返回体类型不合法,或者解析返回体失败
+        } catch (MalformedMessageException e) { // 服务返回成功,返回体类型不合法,或者解析返回体失败
 //                log.error("返回体类型不合法: {}", e.getMessage());
-            } catch (Exception e) {
+        } catch (Exception e) {
 //                log.error("预下单异常: {}", e.getMessage());
-            }
-            return null;
+        }
+        return null;
 
     }
 
@@ -461,6 +546,22 @@
     public R payNotify(HttpServletRequest request,String r2_OrderNo) throws Exception{
         System.err.println("======回调开始");
         System.err.println("======回调开始"+r2_OrderNo);
+        System.err.println("请求"+request.getParameterMap());
+        Map<String, String[]> parameterMap = request.getParameterMap();
+        String r6Status = request.getParameter("r6_Status");
+        if (org.springframework.util.StringUtils.hasLength(r6Status)){
+            if (r6Status.equals("101")){
+                return R.errorCode("支付失败");
+            }
+        }
+        // 循环打印
+        for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) {
+            String key = entry.getKey();
+            String[] values = entry.getValue();
+            for (String value : values) {
+                System.err.println("======回调开始"+key + ":" + value);
+            }
+        }
 //        Transaction transaction;
 //        transaction = notificationParser.parse(WeChatUtil.handleNodifyRequestParam(request), Transaction.class);
 //        if (transaction.getTradeState() == Transaction.TradeStateEnum.SUCCESS) {
@@ -473,11 +574,11 @@
                 franchiseeService.updateById(byId);
                 one.setIs_pay(1);
                 balanceChangeService.updateById(one);
-
+                return R.ok(null,"success");
 //            }
 
         }
-        return R.ok(null,"SUCCESS");
+        return R.ok(null,"error");
     }
 
     public static String generateTradeNumber() {
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OrderController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OrderController.java
index f468f8b..f7787ac 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OrderController.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/OrderController.java
@@ -21,6 +21,7 @@
 import com.ruoyi.common.core.constant.Constants;
 import com.ruoyi.common.core.domain.BaseEntity;
 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.GaoDeMapUtil;
 import com.ruoyi.common.core.utils.SnowflakeIdWorker;
@@ -52,6 +53,7 @@
 import java.net.URLEncoder;
 import java.nio.file.Files;
 import java.nio.file.Paths;
+import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -187,13 +189,13 @@
 
 
         Page<Order> data = orderClient.queryPage(orderQueryRequest).getData();
+        List<MasterWorker> list = masterWorkerService.lambdaQuery()
+                .eq(MasterWorker::getIsDelete, 0).list();
         if (null != data) {
             for (Order record : data.getRecords()) {
                 // 回收服务信息
                 Integer serverId = record.getServerId();
-                MasterWorker masterWorker = masterWorkerService.lambdaQuery()
-                        .eq(MasterWorker::getId, serverId)
-                        .eq(MasterWorker::getIsDelete, 0).one();
+                MasterWorker masterWorker = list.stream().filter(e -> e.getId().equals(serverId)).findFirst().orElse(null);
                 if (null != masterWorker) {
                     record.setServerName(masterWorker.getRealName());
                     record.setServerPhone(masterWorker.getPhone());
@@ -769,9 +771,7 @@
     public R<String> importTemplate(HttpServletResponse response) throws Exception {
         List<FrozenBuckleImportDTO> list = new ArrayList<>();
         FrozenBuckleImportDTO bean = new FrozenBuckleImportDTO();
-
         list.add(bean);
-
         // 这里URLEncoder.encode可以防止中文乱码
         String fileName = URLEncoder.encode("订单导入模板", "UTF-8");
         response.setContentType("application/vnd.ms-excel");
@@ -841,8 +841,25 @@
             String area = frozenBuckleImportDTO.getArea();
             String address = frozenBuckleImportDTO.getReservationAddress();
 
+            String time = frozenBuckleImportDTO.getTime();
+            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+            try{
+                format.parse(time);
+            }catch (Exception e){
+                throw new ServiceException("上门时间格式错误");
+            }
+
+            if(!StringUtils.hasLength(address)){
+                return R.fail("详细地址不能为空");
+            }
             // 解析地址经纬度
-            CityInfoVO cityInfoVO = GaoDeMapUtil.getAddressInfo(province + city + area + address).getDatas();
+            CityInfoVO cityInfoVO = GaoDeMapUtil.getAddressInfo((province==null?"":province)
+                    + (city==null?"":city)
+                    + (area==null?"":area)
+                    + address).getDatas();
+            if(cityInfoVO==null||Objects.isNull(cityInfoVO.getLongitude()) || Objects.isNull(cityInfoVO.getLatitude())){
+                return R.fail("地址输入不正确");
+            }
             String areaCode = cityInfoVO.getCode();
             String provinceCode = areaCode.substring(0, 2) + "0000";
             String cityCode = areaCode.substring(0, 4) + "00";
@@ -851,7 +868,9 @@
             order.setAreaCode(areaCode);
             order.setLongitude(cityInfoVO.getLongitude());
             order.setLatitude(cityInfoVO.getLatitude());
-
+            if (!StringUtils.hasLength(city)){
+                order.setCity(cityInfoVO.getCity());
+            }
             // 站点信息
             Site site = sites.stream().filter(e -> e.getSiteName().equals(frozenBuckleImportDTO.getSiteName())).findFirst().orElse(null);
             if(Objects.nonNull(site)){
@@ -885,7 +904,7 @@
                 order.setServeId(recoveryServe.getId());
                 order.setServePrice(recoveryServe.getDefaultPrice());
             }else {
-                return R.fail("回收服务不存在");
+                return R.fail("服务信息不存在");
             }
             RecoveryServePrice one = recoveryServePriceService.lambdaQuery().eq(RecoveryServePrice::getCity, order.getCityCode()).eq(RecoveryServePrice::getRecoveryServeId, order.getServeId()).eq(BaseEntity::getIsDelete, 0).one();
             if (one==null) {
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/RoleController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/RoleController.java
index d3b99a9..d1afa4a 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/RoleController.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/RoleController.java
@@ -65,6 +65,7 @@
     public R<IPage<Role>> queryPageList(@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum,
                                         @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
         return R.ok(roleService.lambdaQuery().eq(Role::getDelFlag, 0)
+                        .ne(Role::getRoleName,"加盟商")
                 .orderByDesc(Role::getCreateTime).page(Page.of(pageNum, pageSize)));
     }
 
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/TFranchiseeBalanceChange.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/TFranchiseeBalanceChange.java
index d98162b..8f3fd9e 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/TFranchiseeBalanceChange.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/entity/TFranchiseeBalanceChange.java
@@ -71,7 +71,8 @@
     @TableField("createTime")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime createTime;
-
+    @TableField(exist = false)
+    private String createTimeStr;
     @TableField("updateTime")
 
     private LocalDateTime updateTime;
@@ -85,7 +86,7 @@
     @TableLogic
     private Integer isDelete;
     @TableField(exist = false)
-    private String payStr = "微信支付";
+    private String payStr;
     @TableField(exist = false)
     private List<Region> list;
     @TableField(exist = false)
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/importExcel/FrozenBuckleImportDTO.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/importExcel/FrozenBuckleImportDTO.java
index 6dac7dd..56e13a0 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/importExcel/FrozenBuckleImportDTO.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/importExcel/FrozenBuckleImportDTO.java
@@ -1,7 +1,9 @@
 package com.ruoyi.admin.importExcel;
 
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.HeadFontStyle;
 import lombok.Data;
+import org.apache.poi.ss.usermodel.IndexedColors;
 
 import java.io.Serializable;
 
@@ -10,29 +12,40 @@
  */
 @Data
 public class FrozenBuckleImportDTO implements Serializable {
-    @ExcelProperty(value = "站点名称")
+    @ExcelProperty(value = "*站点名称")
+    @HeadFontStyle(fontName = "黑体", fontHeightInPoints = 11,color = 10)
     private String siteName;
 
-    @ExcelProperty(value = "服务信息")
+    @ExcelProperty(value = "*服务信息")
+    @HeadFontStyle(fontName = "黑体", fontHeightInPoints = 11,color = 10)
     private String serveName;
 
-    @ExcelProperty(value = "预约姓名")
+    @ExcelProperty(value = "*预约姓名")
+    @HeadFontStyle(fontName = "黑体", fontHeightInPoints = 11,color = 10)
     private String reservationName;
-    @ExcelProperty(value = "预约电话")
+    @ExcelProperty(value = "*预约电话")
+    @HeadFontStyle(fontName = "黑体", fontHeightInPoints = 11,color = 10)
     private String reservationPhone;
-    @ExcelProperty(value = "省份")
+    @ExcelProperty(value = "省份(四川省)")
+    @HeadFontStyle(fontName = "黑体", fontHeightInPoints = 11)
     private String province;
-    @ExcelProperty(value = "市")
+    @ExcelProperty(value = "市(成都市)")
+    @HeadFontStyle(fontName = "黑体", fontHeightInPoints = 11)
     private String city;
-    @ExcelProperty(value = "区")
+    @ExcelProperty(value = "区(武侯区)")
+    @HeadFontStyle(fontName = "黑体", fontHeightInPoints = 11)
     private String area;
-    @ExcelProperty(value = "详细地址")
+    @ExcelProperty(value = "*详细地址")
+    @HeadFontStyle(fontName = "黑体", fontHeightInPoints = 11,color = 10)
     private String reservationAddress;
-    @ExcelProperty(value = "上门时间")
+    @ExcelProperty(value = "*上门时间(2024-02-28)")
+    @HeadFontStyle(fontName = "黑体", fontHeightInPoints = 11,color = 10)
     private String time;
     @ExcelProperty(value = "服务人员")
+    @HeadFontStyle(fontName = "黑体", fontHeightInPoints = 11)
     private String serverName;
     @ExcelProperty(value = "备注")
+    @HeadFontStyle(fontName = "黑体", fontHeightInPoints = 11)
     private String reservationRemark;
 
     private Integer siteId;
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/MenuServiceImpl.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/MenuServiceImpl.java
index 065451f..d7d6c1d 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/MenuServiceImpl.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/service/impl/MenuServiceImpl.java
@@ -2,17 +2,17 @@
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.admin.entity.Menu;
+import com.ruoyi.admin.entity.SysUser;
 import com.ruoyi.admin.mapper.MenuMapper;
+import com.ruoyi.admin.mapper.SysUserMapper;
 import com.ruoyi.admin.service.MenuService;
 import com.ruoyi.common.core.constant.RedisConstants;
+import com.ruoyi.common.security.service.TokenService;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
@@ -29,17 +29,29 @@
 
     @Resource
     private RedisTemplate<Object, Object> redisTemplate;
-
+    @Resource
+    private SysUserMapper sysUserMapper;
+    @Resource
+    private TokenService tokenService;
     @Override
     public List<Menu> menuTree() {
         // redis缓存
         Map<Object, Object> regionList = redisTemplate.opsForHash().entries(RedisConstants.MENU_TREE);
         // 获取所有地区信息 省市区三级
         List<Menu> regions = getReginList(regionList);
-        // 所有地区
-        Map<String, Menu> courseTypeMap = regions.stream().
-                collect(Collectors.toMap(region -> region.getMenuId().toString()
-                        , region -> region));
+        Map<String, Menu> courseTypeMap = new HashMap<>();
+        Long userid = tokenService.getLoginUser().getUserid();
+        SysUser sysUser = sysUserMapper.selectById(userid);
+        if (sysUser.getFranchiseeId()==null){
+            // 加盟商才有加盟商余额管理
+            courseTypeMap = regions.stream().filter(region -> region.getMenuId() != 88900&&
+                            region.getMenuId() != 88901&&
+                            region.getMenuId() != 88902&&
+                            region.getMenuId() != 88903).
+                    collect(Collectors.toMap(region -> region.getMenuId().toString()
+                            , region -> region));
+        }
+
         redisTemplate.opsForHash().putAll(RedisConstants.MENU_TREE, courseTypeMap);
         redisTemplate.expire(RedisConstants.MENU_TREE, 30, TimeUnit.MINUTES);
         // 生成map集合
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/utils/TencentCosUtil.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/utils/TencentCosUtil.java
index a7dc989..21e5c5e 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/utils/TencentCosUtil.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/utils/TencentCosUtil.java
@@ -94,7 +94,7 @@
             //上传文件
             PutObjectResult putResult = getCosClient().putObject(bucketName, key, inputStream, objectMetadata);
             // 创建文件的网络访问路径
-            String url = rootSrc + key;
+            String url = "https://huishou-1323682843.cos.ap-nanjing.myqcloud.com/" + key;
             //关闭 cosClient,并释放 HTTP 连接的后台管理线程
             getCosClient().shutdown();
             return url;
diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/vo/MoneyRecentQuery.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/vo/MoneyRecentQuery.java
index cf32302..a2fd25a 100644
--- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/vo/MoneyRecentQuery.java
+++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/vo/MoneyRecentQuery.java
@@ -11,7 +11,7 @@
     @ApiModelProperty("加盟商id")
     private Integer franchId;
     @ApiModelProperty("加盟商名字,查询用")
-    private Integer franchName;
+    private String name;
     @ApiModelProperty("1扣款2充值")
     private Integer type;
     @ApiModelProperty("扣款时间1")
diff --git "a/ruoyi-service/ruoyi-admin/src/main/resources/template/\345\212\240\347\233\237\345\225\206\344\275\231\351\242\235\350\256\260\345\275\225.xlsx" "b/ruoyi-service/ruoyi-admin/src/main/resources/template/\345\212\240\347\233\237\345\225\206\344\275\231\351\242\235\350\256\260\345\275\225.xlsx"
index 78cf2c3..81d7b79 100644
--- "a/ruoyi-service/ruoyi-admin/src/main/resources/template/\345\212\240\347\233\237\345\225\206\344\275\231\351\242\235\350\256\260\345\275\225.xlsx"
+++ "b/ruoyi-service/ruoyi-admin/src/main/resources/template/\345\212\240\347\233\237\345\225\206\344\275\231\351\242\235\350\256\260\345\275\225.xlsx"
Binary files differ
diff --git "a/ruoyi-service/ruoyi-admin/src/main/resources/template/\345\212\240\347\233\237\345\225\206\346\211\243\346\254\276\350\256\260\345\275\225.xlsx" "b/ruoyi-service/ruoyi-admin/src/main/resources/template/\345\212\240\347\233\237\345\225\206\346\211\243\346\254\276\350\256\260\345\275\225.xlsx"
index 49739c2..52aebfb 100644
--- "a/ruoyi-service/ruoyi-admin/src/main/resources/template/\345\212\240\347\233\237\345\225\206\346\211\243\346\254\276\350\256\260\345\275\225.xlsx"
+++ "b/ruoyi-service/ruoyi-admin/src/main/resources/template/\345\212\240\347\233\237\345\225\206\346\211\243\346\254\276\350\256\260\345\275\225.xlsx"
Binary files differ
diff --git "a/ruoyi-service/ruoyi-admin/src/main/resources/template/\345\257\274\350\241\250\345\275\225\345\215\225\345\257\274\345\205\245\346\250\241\346\235\277 .xlsx" "b/ruoyi-service/ruoyi-admin/src/main/resources/template/\345\257\274\350\241\250\345\275\225\345\215\225\345\257\274\345\205\245\346\250\241\346\235\277 .xlsx"
new file mode 100644
index 0000000..dd5e7e7
--- /dev/null
+++ "b/ruoyi-service/ruoyi-admin/src/main/resources/template/\345\257\274\350\241\250\345\275\225\345\215\225\345\257\274\345\205\245\346\250\241\346\235\277 .xlsx"
Binary files differ
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChangeDispatchController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChangeDispatchController.java
index 19966a4..0d7415f 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChangeDispatchController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/ChangeDispatchController.java
@@ -53,6 +53,7 @@
     @PostMapping(value = "/page")
     @ApiImplicitParams({
             @ApiImplicitParam(value = "师傅名称", name = "workerName", dataType = "String"),
+            @ApiImplicitParam(value = "预约人姓名", name = "reservationName", dataType = "String"),
             @ApiImplicitParam(value = "订单编号", name = "orderNumber", dataType = "String"),
             @ApiImplicitParam(value = "下单用户名称", name = "userName", dataType = "String"),
             @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
index 4a5ad8c..b080f34 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
@@ -592,7 +592,8 @@
                                      @RequestParam("siteIds") List<String> siteIds
     ) {
         Page<Order> page = orderService.lambdaQuery().eq(Order::getUserId, userId)
-                .eq(Order::getIsDelete, 0).in(!siteIds.isEmpty(),Order::getSiteId, siteIds).in(!cityList.isEmpty(),Order::getCityCode, cityList).page(Page.of(pageNum, pageSize));
+                .eq(Order::getIsDelete, 0)
+                .in(!cityList.isEmpty(),Order::getCityCode, cityList).page(Page.of(pageNum, pageSize));
         return R.ok(page);
     }
 
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/Order.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/Order.java
index 2918b8e..6f5d07f 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/Order.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/entity/Order.java
@@ -177,6 +177,31 @@
     @TableField(exist = false)
     private String applyReason;
 
+    @ApiModelProperty("代派单")
+    @TableField(exist = false)
+    private Integer toBeDispatched=0;
+    @ApiModelProperty("待上门")
+    @TableField(exist = false)
+    private Integer stayDoorstep=0;
+    @ApiModelProperty("带完工")
+    @TableField(exist = false)
+    private Integer toBeCompleted=0;
+    @ApiModelProperty("已完结")
+    @TableField(exist = false)
+    private Integer completed=0;
+    @ApiModelProperty("已取消")
+    @TableField(exist = false)
+    private Integer canceled =0;
+    @ApiModelProperty("再投数量")
+    @TableField(exist = false)
+    private Integer reInvestment=0;
+
+
+
+
+
+
+
     @ApiModelProperty("是否为再投单")
     @TableField("is_reinvest")
     private Integer isReinvest;
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderMapper.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderMapper.java
index 0263b89..6747f6a 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderMapper.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/mapper/OrderMapper.java
@@ -112,7 +112,7 @@
      * @param orderQueryRequest 筛选参数
      * @return 统计数量
      */
-    List<Order> orderPageCount(@Param("data") OrderQueryRequest orderQueryRequest);
+    Order orderPageCount(@Param("data") OrderQueryRequest orderQueryRequest);
 
     /**
      * 根据所选id查询
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/ChangeDispatchRequest.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/ChangeDispatchRequest.java
index 477a8d7..723ca9e 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/ChangeDispatchRequest.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/request/ChangeDispatchRequest.java
@@ -18,6 +18,8 @@
     private String reservationAddress;
 
     private String userName;
+    private String reservationPhone;
+    private String reservationName;
 
     private Integer pageNum;
 
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
index 42de2ee..1f61d32 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -1,4 +1,5 @@
 package com.ruoyi.order.service.impl;
+import java.util.Date;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -131,12 +132,12 @@
         Page<Order> page = Page.of(orderQueryRequest.getPageNum(), orderQueryRequest.getPageSize());
         // 基础查询
         Page<Order> pageList = baseMapper.queryPage(orderQueryRequest, page);
+        List<ChangeDispatch> list = changeDispatchService.lambdaQuery()
+                .eq(ChangeDispatch::getIsDelete, 0)
+                .orderByDesc(ChangeDispatch::getCreateTime).list();
         for (Order order : pageList.getRecords()) {
-            ChangeDispatch changeDispatch = changeDispatchService.lambdaQuery()
-                    .eq(ChangeDispatch::getOrderId, order.getId())
-                    .eq(ChangeDispatch::getIsDelete, 0)
-                    .orderByDesc(ChangeDispatch::getCreateTime)
-                    .last("limit 1").one();
+            ChangeDispatch changeDispatch = list.stream().filter(e -> e.getOrderId().equals(order.getId()))
+                    .findFirst().orElse(null);
             if (null != changeDispatch) {
                 order.setApplyReason(changeDispatch.getApplyReason());
             }
@@ -160,34 +161,18 @@
 
     @Override
     public OrderPageCountVO orderPageCount(OrderQueryRequest orderQueryRequest) {
-        List<Order> orderList = baseMapper.orderPageCount(orderQueryRequest);
-        int total = 0;
-        int toBeDispatched = 0;
-        int stayDoorstep = 0;
-        int toBeCompleted = 0;
-        int completed = 0;
-        int canceled = 0;
-        int reInvestment = 0;
-        for (Order order : orderList) {
-            total++;
-            Integer state = order.getState();
-            if (Constants.ZERO.equals(state)) {
-                toBeDispatched++;
-            } else if (Constants.ONE.equals(state)) {
-                stayDoorstep++;
-            } else if (Constants.TWO.equals(state)) {
-                toBeCompleted++;
-            } else if (Constants.THREE.equals(state)) {
-                completed++;
-            } else if (Constants.FOUR.equals(state)) {
-                canceled++;
-            }
-            if (order.getState().equals(Constants.SIX)) {
-                reInvestment++;
-            }
-        }
-        return new OrderPageCountVO(total, toBeDispatched, stayDoorstep,
-                toBeCompleted, completed, canceled, reInvestment);
+        Order order = baseMapper.orderPageCount(orderQueryRequest);
+
+            Integer toBeDispatched = order.getToBeDispatched();
+            Integer stayDoorstep = order.getStayDoorstep();
+            Integer toBeCompleted = order.getToBeCompleted();
+            Integer completed = order.getCompleted();
+            Integer canceled = order.getCanceled();
+            Integer reInvestment = order.getReInvestment();
+            int total = toBeDispatched + stayDoorstep + toBeCompleted + completed + canceled + reInvestment;
+            return new OrderPageCountVO(total, toBeDispatched, stayDoorstep,
+                    toBeCompleted, completed, canceled, reInvestment);
+
     }
 
     @Override
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vx/GetTransferBatchByOutNo.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vx/GetTransferBatchByOutNo.java
index 8b2c37a..2afd669 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vx/GetTransferBatchByOutNo.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/vx/GetTransferBatchByOutNo.java
@@ -9,7 +9,7 @@
 public class GetTransferBatchByOutNo {            /** 商户号 */
   public static String merchantId = "1665330417"; /** 商户API私钥路径 */
   public static String privateKeyPath =
-      "/usr/local/vx/apiclient_key.pem"; /** 商户证书序列号 */
+      "E:/cert/ershou/apiclient_key.pem"; /** 商户证书序列号 */
   public static String merchantSerialNumber =
       "7EEA04429B006E12AAA421C002EC48BBEED5BE94"; /** 商户APIV3密钥 */
   public static String apiV3Key = "TA2npSNWmS0GcB0tFFRWA94rm1M0iSFs";
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/ChangeDispatchMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/ChangeDispatchMapper.xml
index 167c122..fd84ad8 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/ChangeDispatchMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/ChangeDispatchMapper.xml
@@ -40,7 +40,13 @@
                 and c.user_name like concat('%', #{data.userName}, '%')
             </if>
             <if test="data.reservationAddress != null and data.reservationAddress != ''">
-                and o.reservationAddress like concat('%', #{data.reservationAddress}, '%')
+                and o.reservation_address like concat('%', #{data.reservationAddress}, '%')
+            </if>
+            <if test="data.reservationPhone != null and data.reservationPhone != ''">
+                and o.reservation_phone like concat('%', #{data.reservationPhone}, '%')
+            </if>
+            <if test="data.reservationName != null and data.reservationName != ''">
+                and o.reservation_name like concat('%', #{data.reservationName}, '%')
             </if>
             <if test="data.cityList != null and data.cityList.size() != 0">
                 and o.city_code in
diff --git a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
index 450257e..463026a 100644
--- a/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
+++ b/ruoyi-service/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -377,8 +377,14 @@
         order by o.createTime desc
     </select>
 
-    <select id="orderPageCount" resultMap="BaseResultMap">
-        select o.*
+    <select id="orderPageCount" resultType="com.ruoyi.order.entity.Order">
+        select
+        sum(case when o.state = 0 then 1 end) as toBeDispatched,
+        sum(case when o.state = 1 then 1 end) as stayDoorstep,
+        sum(case when o.state = 2 then 1 end) as toBeCompleted,
+        sum(case when o.state = 3 then 1 end) as completed,
+        sum(case when o.state = 4 then 1 end) as canceled,
+        sum(case when o.state = 6 then 1 end) as reInvestment
         from t_order o
         <where>
             o.is_delete = 0

--
Gitblit v1.7.1