From fd88d7b527e99bbf7272d28bf0826b05e3c175d8 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期一, 16 十二月 2024 17:10:53 +0800
Subject: [PATCH] 代码提交

---
 xinquan-common/xinquan-common-core/src/main/java/com/xinquan/common/core/utils/JuHeFuUtil.java                     |   11 
 xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/management/MgtOrderController.java        |  499 ++++++++++++++++++++---------------------
 xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/domain/export/WaterExport.java                       |    2 
 xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserWithdrawController.java |   48 +++
 xinquan-modules/xinquan-system/src/main/java/com/xinquan/system/controller/HomeController.java                     |  111 +++++---
 xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/client/ClientOrderController.java         |   41 +-
 6 files changed, 385 insertions(+), 327 deletions(-)

diff --git a/xinquan-common/xinquan-common-core/src/main/java/com/xinquan/common/core/utils/JuHeFuUtil.java b/xinquan-common/xinquan-common-core/src/main/java/com/xinquan/common/core/utils/JuHeFuUtil.java
index 322be9c..e872aee 100644
--- a/xinquan-common/xinquan-common-core/src/main/java/com/xinquan/common/core/utils/JuHeFuUtil.java
+++ b/xinquan-common/xinquan-common-core/src/main/java/com/xinquan/common/core/utils/JuHeFuUtil.java
@@ -175,9 +175,15 @@
         }
         String string = resJsonObject.getString("reqCipher");
         String decrypt = decrypt(string);
+        if (decrypt==null){
+            return "false"+"发生未知异常(应该是银行卡信息和持卡人信息不一致 但是第三方没有返回准确的错误信息 这里统一返回为银行卡信息或持卡人信息有误)";
+        }
         System.err.println(decrypt);
         JSONObject jsonObject = JSONObject.parseObject(decrypt);
         System.err.println(jsonObject);
+        if (org.springframework.util.StringUtils.hasLength(jsonObject.getString("error_msg"))){
+            return "false"+jsonObject.getString("error_msg");
+        }
         return "success";
     }
     public static String queryBalance(
@@ -229,10 +235,13 @@
 //                ,"6228480469852935177");
 //        updateAccount("test945622121","周帅","19983174515"
 //                ,"6228480469852935177");
+        updateAccount("test945622121","周帅","19983174515"
+                ,"6228480469852935177");
 //        queryBalance("test945622121");
-          balancePay("12345678912", "test945622121","0.01", "");
+//          balancePay("PAY100388123123", "test945622121","0.05", "");
 //        String decrypt = decrypt("z8Che/JwxrGj/oTOuAvU8HFN6vXL/OqeioV41ZuPV/xVQPt9vCHHc1R5LgAO51Hq5ilD9wqsminRvSiJj6Fs/Bfk8espZSOO2g1OE7FZyqcLB1w01MSWyxfQT8nc2GH/EfOKXCuaKBCeyW24OvW3ng==");
 //        System.err.println(decrypt);
+//        balanceWithdraw("TX98633336569","0.05","test945622121","https://xq.xqzhihui.com/api/user/client/app-user-withdraw/base/callbackA");
     }
 
     public static JSONObject balancePay(String orderNo, String memberId,  String payAmt, String notifyUrl) throws Exception {
diff --git a/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/client/ClientOrderController.java b/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/client/ClientOrderController.java
index 7557675..fe4be9c 100644
--- a/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/client/ClientOrderController.java
+++ b/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/client/ClientOrderController.java
@@ -371,8 +371,6 @@
                                     order.setRealPayAmount(data1.getIosPrice());
                                     break;
                             }
-
-
                             break;
                         case 2:
                             Course data = remoteCourseService.getCourseById(targetId).getData();
@@ -409,6 +407,12 @@
                             break;
                     }
 
+                    // 删除原有非余额支付详细记录
+                    OrderPaymentRecord two = orderPaymentRecordService.lambdaQuery().eq(OrderPaymentRecord::getOrderId, order.getId())
+                            .ne(OrderPaymentRecord::getPaymentType, 4).one();
+                    if (two!=null){
+                        orderPaymentRecordService.removeById(two.getId());
+                    }
                     OrderPaymentRecord one = orderPaymentRecordService.lambdaQuery().eq(OrderPaymentRecord::getOrderId, order.getId())
                             .eq(OrderPaymentRecord::getPaymentType, 4).one();
                     if (one!=null){
@@ -434,6 +438,9 @@
                     ClientPlaceOrderVO clientPlaceOrderVO = new ClientPlaceOrderVO();
                     clientPlaceOrderVO.setId(order.getId());
                     clientPlaceOrderVO.setOrderNo(order.getBizOrderNo());
+                    order.setRealPayAmount(new BigDecimal("0"));
+                    order.setPayType(4);
+                    orderService.updateById(order);
                     return R.ok(clientPlaceOrderVO);
             }
 
@@ -690,11 +697,9 @@
                 AppUser data = remoteAppUserService.getAppUserById(one.getAppUserId() + "").getData();
                 if (one.getGiveUserId()!=null){
                     remoteAppUserService.addNotice(one.getGiveUserId() + "", one.getBusinessId() + "",
-                            one.getAppUserId() + "", one.getTotalAmount() + "");
+                            one.getAppUserId() + "", realPayAmount + "");
                 }
-
                 if (data.getInviteUserId()!=null) {
-
                     if (one.getOrderFrom() == 1 || one.getOrderFrom() == 2 || one.getOrderFrom() == 3) {
                         // 查询实际支付价格 不包含余额抵扣价格
                         OrderPaymentRecord one1 = orderPaymentRecordService.lambdaQuery().eq(OrderPaymentRecord::getOrderId, one.getId())
@@ -703,8 +708,7 @@
                     CommissionRule data1 = sysUserClient.getCommission().getData();
                     if (data1 != null) {
                         if (data1.getProportion() != null) {
-
-                            BigDecimal bigDecimal = one1.getPayAmount().multiply(data1.getProportion()).divide(new BigDecimal("100"))
+                            BigDecimal bigDecimal = one1.getPayAmount().add(one.getChangePrice()!=null?one.getChangePrice():new BigDecimal("0")).multiply(data1.getProportion()).divide(new BigDecimal("100"))
                                     .setScale(2, BigDecimal.ROUND_DOWN);
                             // 上级获取的分佣金额
                             AppUser appUserById = remoteAppUserService.getAppUserById(data.getInviteUserId() + "").getData();
@@ -714,16 +718,18 @@
 //                                                    appUserById.getBalance().add(bigDecimal))
 //                                            .build(), SecurityConstants.INNER);
                             // 新增分佣流水明细
-                            AppUserWalletRecord appUserWalletRecord = new AppUserWalletRecord();
-                            appUserWalletRecord.setAppUserId(data.getInviteUserId());
-                            appUserWalletRecord.setChangeType(1);
-                            appUserWalletRecord.setReason("分佣收益");
-                            appUserWalletRecord.setAmount(bigDecimal);
-                            appUserWalletRecord.setChildAppUserId(one.getAppUserId());
-                            appUserWalletRecord.setOrderId(one.getId());
-                            remoteAppUserService.addBalanceRecord(appUserWalletRecord);
-                            one.setCommissionAmount(bigDecimal);
-                            one.setCommissionId(data.getInviteUserId());
+                            if (bigDecimal.compareTo(new BigDecimal("0"))>0){
+                                AppUserWalletRecord appUserWalletRecord = new AppUserWalletRecord();
+                                appUserWalletRecord.setAppUserId(data.getInviteUserId());
+                                appUserWalletRecord.setChangeType(1);
+                                appUserWalletRecord.setReason("分佣收益");
+                                appUserWalletRecord.setAmount(bigDecimal);
+                                appUserWalletRecord.setChildAppUserId(one.getAppUserId());
+                                appUserWalletRecord.setOrderId(one.getId());
+                                remoteAppUserService.addBalanceRecord(appUserWalletRecord);
+                                one.setCommissionAmount(bigDecimal);
+                                one.setCommissionId(data.getInviteUserId());
+                            }
                             orderService.updateById(one);
                         }
                     }
@@ -741,7 +747,6 @@
                             Meditation data1 = remoteMeditationService.getMeditationById(one.getBusinessId()).getData();
                             appUserWalletRecord.setChangeType(2);
                             reason = "购买疗愈【"+data1.getMeditationTitle()+"】";
-
                             break;
                         case 2:
                             Course data2 = remoteCourseService.getCourseById(one.getBusinessId()).getData();
diff --git a/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/management/MgtOrderController.java b/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/management/MgtOrderController.java
index 5d898f2..3905395 100644
--- a/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/management/MgtOrderController.java
+++ b/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/management/MgtOrderController.java
@@ -159,7 +159,9 @@
         if (status!=0){
             orderLambdaQueryWrapper.eq(Order::getPaymentStatus, status);
         }
-        orderLambdaQueryWrapper.eq(Order::getPaymentStatus, 2);
+        if (status!=0){
+            orderLambdaQueryWrapper.eq(Order::getPaymentStatus, status);
+        }
         orderLambdaQueryWrapper.in(Order::getOrderFrom,longs);
         orderLambdaQueryWrapper.ne(Order::getRefundStatus, 3);
         List<Order> list = orderService.list(orderLambdaQueryWrapper);
@@ -184,231 +186,13 @@
         List<Integer> payType3 = new ArrayList<>();
         payType3.add(3);
         payType3.add(7);
-        List<Integer> payType4 = new ArrayList<>();
-        payType4.add(4);
-        payType4.add(5);
-        payType4.add(6);
-        payType4.add(7);
-        LambdaQueryWrapper<Order> courseLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        if (StringUtils.hasLength(courseDTO.getIds())){
-            courseLambdaQueryWrapper.in(Order::getId, Arrays.asList(courseDTO.getIds().split(",")));
-        }
-        courseLambdaQueryWrapper.between(Order::getCreateTime, startTime, endTime);
-        if (courseDTO.getPayType()!=null){
-            switch (courseDTO.getPayType()){
-                case 1:
-                    courseLambdaQueryWrapper.in(Order::getPayType,payType1);
-                    break;
-                case 2:
-                    courseLambdaQueryWrapper.in(Order::getPayType,payType2);
-                    break;
-                case 3:
-                    courseLambdaQueryWrapper.in(Order::getPayType,payType3);
-                    break;
-                case 4:
-                    courseLambdaQueryWrapper.in(Order::getPayType,payType4);
-                    break;
-            }
-        }
-        courseLambdaQueryWrapper.eq(courseDTO.getPaymentStatus()!=null,Order::getPaymentStatus, courseDTO.getPaymentStatus());
-        courseLambdaQueryWrapper.eq(courseDTO.getOrderFrom()!=null,Order::getOrderFrom, courseDTO.getOrderFrom());
-        courseLambdaQueryWrapper.eq(courseDTO.getUid()!=null&&(!courseDTO.getUid().isEmpty()),Order::getAppUserId, courseDTO.getUid());
-        if (org.springframework.util.StringUtils.hasLength(courseDTO.getBuyContent())){
-            // 查询购买内容
-            List<Long> collect1 = orderService.lambdaQuery().like(Order::getBuyContent, courseDTO.getBuyContent()).list().stream()
-                    .map(Order::getId).collect(Collectors.toList());
-            List<Long> collect2 = orderService.lambdaQuery().like(Order::getBizOrderNo, courseDTO.getBuyContent()).list().stream()
-                    .map(Order::getId).collect(Collectors.toList());
-            List<Long> data = remoteCourseService.getCourseIdsByName(courseDTO.getBuyContent()).getData();
-            if (!data.isEmpty()){
-                List<Long> collect3 = orderService.lambdaQuery().in(Order::getBusinessId, data)
-                        .eq(Order::getOrderFrom, 2)
-                        .list().stream()
-                        .map(Order::getId).collect(Collectors.toList());
-                if (!collect3.isEmpty()){
-                    collect1.addAll(collect3);
-                }
-            }
-            List<Long> data1 = remoteMeditationService.getMeditationIdsByName(courseDTO.getBuyContent()).getData();
-            if (!data1.isEmpty()){
-                List<Long> collect3 = orderService.lambdaQuery().in(Order::getBusinessId, data1)
-                        .eq(Order::getOrderFrom, 1)
-                        .list().stream()
-                        .map(Order::getId).collect(Collectors.toList());
-                if (!collect3.isEmpty()){
-                    collect1.addAll(collect3);
-                }
-            }
 
-            collect1.addAll(collect2);
-            List<Long> collect = collect1.stream().distinct().collect(Collectors.toList());
-            if (collect.isEmpty()){
-                collect.add(-1L);
-            }
-            courseLambdaQueryWrapper.in(Order::getId,collect);
-        }
-
-        courseLambdaQueryWrapper.orderByDesc(Order::getCreateTime);
-        if (org.springframework.util.StringUtils.hasLength(courseDTO.getUserNameOrPhone())){
-            List<Long> collect = remoteAppUserService.getAppUserByNameOrPhone(courseDTO.getUserNameOrPhone()).getData();
-            if (collect.isEmpty()){
-                collect.add(-1L);
-            }
-            courseLambdaQueryWrapper.in(Order::getAppUserId, collect);
-        }
-
-        List<Order> page = orderService.list(courseLambdaQueryWrapper);
-        List<AppUserWithdraw> data2 = remoteAppUserService.getWithdraw(courseDTO).getData();
-        List<WaterExport> waterExports = new ArrayList<>();
-        for (AppUserWithdraw appUserWithdraw : data2) {
-            Order order = new Order();
-            order.setId(appUserWithdraw.getId());
-            order.setBizOrderNo(appUserWithdraw.getCode());
-            order.setUid(appUserWithdraw.getId()+"");
-            order.setBuyContent("提现");
-            order.setAppUserId(appUserWithdraw.getAppUserId());
-            order.setOrderFrom(5);
-            order.setPaymentStatus(appUserWithdraw.getWithdrawStatus()+1);
-            order.setPayType(4);
-            order.setTotalAmount(appUserWithdraw.getAmount());
-            order.setRealPayAmount(appUserWithdraw.getAmount());
-            order.setPlatformMoney(appUserWithdraw.getAmount().multiply(new BigDecimal("-1")));
-            order.setPaymentTime(appUserWithdraw.getWithdrawTime());
-            order.setCreateTime(appUserWithdraw.getCreateTime());
-            page.add(order);
-        }
-        for (Order record : page) {
-            record.setUid(record.getId().toString());
-            record.setPlatformMoney(record.getRealPayAmount().subtract(record.getCommissionAmount()==null?BigDecimal.ZERO:record.getCommissionAmount()));
-            AppUser byId1 = remoteAppUserService.getAppUserById(record.getAppUserId()+"").getData();
-            if (Objects.nonNull(byId1)){
-                record.setUserName(byId1.getNickname());
-                record.setCellPhone(byId1.getCellPhone());
-            }
-            if (record.getOrderFrom()!=null){
-                switch (record.getOrderFrom()){
-                    case 1:
-                        Meditation data = remoteMeditationService.getMeditationById(record.getBusinessId()).getData();
-                        if (data!=null){
-                            record.setCategoryMeditationName(data.getCategoryName());
-                            record.setMeditationTitle(data.getMeditationTitle());
-                            record.setIconUrl(data.getIconUrl());
-                            record.setDetailDescription(data.getDetailDescription());
-                            record.setGeneralPriceMeditation(data.getGeneralPrice());
-                            record.setListingStatusMeditation(data.getListingStatus());
-                            record.setMeditationUid(data.getId()+"");
-                        }
-                        break;
-                    case 2:
-                        Course data1 = remoteCourseService.getCourseById(record.getBusinessId()).getData();
-                        if (data1!=null){
-                            record.setCategoryCourseName(data1.getCategoryName());
-                            record.setCourseTitle(data1.getCourseTitle());
-                            record.setCoverUrl(data1.getCoverUrl());
-                            record.setTutor(data1.getTutor());
-                            record.setCourseChapterCount(data1.getCourseChapterCount());
-                            record.setGeneralPriceCourse(data1.getGeneralPrice());
-                            record.setListingStatusCourse(data1.getListingStatus());
-                            record.setCourseUid(data1.getId()+"");
-                        }
-                        break;
-                    case 3:
-                        record.setBuyContent(record.getBuyContent());
-                        record.setGeneralPriceVip(record.getRealPayAmount());
-                        break;
-                    case 4:
-                        record.setBuyContent("余额充值");
-                        record.setPlatformMoney(record.getRealPayAmount()!=null?record.getRealPayAmount()
-                                .subtract(record.getCommissionAmount()!=null?record.getCommissionAmount():BigDecimal.ZERO):BigDecimal.ZERO);
-                        break;
-                }
-            }
-            WaterExport waterExport = new WaterExport();
-            waterExport.setCode(record.getBizOrderNo());
-            if (Objects.nonNull(byId1)){
-                record.setUserName(byId1.getNickname());
-                record.setCellPhone(byId1.getCellPhone());
-                waterExport.setUserName(byId1.getNickname());
-                waterExport.setCellphone(byId1.getCellPhone());
-            }
-            waterExport.setRealPayAmount("¥"+record.getRealPayAmount());
-            waterExport.setCommissionAmount("¥"+record.getCommissionAmount());
-            waterExport.setPlatformMoney("¥"+record.getPlatformMoney());
-            waterExport.setBuyContent(record.getBuyContent());
-            waterExport.setOrderFrom(record.getOrderFrom()+"");
-            waterExport.setPayType(record.getPayType());
-            DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-            String format = df.format(record.getCreateTime());
-            waterExport.setCreateTime(format);
-            waterExport.setPaymentStatus(record.getPaymentStatus()+"");
-        }
-
-        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), WaterExport.class, waterExports);
-        HttpServletResponse response = WebUtils.response();
-        response.setContentType("application/vnd.ms-excel");
-        response.setCharacterEncoding("utf-8");
-        ServletOutputStream outputStream = null;
-        try {
-            String fileName = URLEncoder.encode("收支流水导出.xls", "utf-8");
-            response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
-            response.setContentType("application/vnd.ms-excel;charset=UTF-8");
-            response.setHeader("Pragma", "no-cache");
-            response.setHeader("Cache-Control", "no-cache");
-            outputStream = response.getOutputStream();
-            workbook.write(outputStream);
-        } catch (IOException e) {
-            e.printStackTrace();
-        } finally {
-            try {
-                outputStream.close();
-            } catch (IOException e) {
-                e.printStackTrace();
-            }
-        }
-    }
-    @PostMapping("/waterList")
-    @ApiOperation(value = "收支流水-分页", tags = {"管理后台-财务管理"})
-    public R<Page<Order>> waterList(@RequestBody OrderListDTO courseDTO) {
-        String startTime = null;
-        String endTime = null;
-        if (org.springframework.util.StringUtils.hasLength(courseDTO.getTime())){
-            String[] split = courseDTO.getTime().split(" - ");
-            startTime = split[0]+" 00:00:00";
-            endTime = split[1]+" 23:59:59";
-        }
-        List<Integer> payType1 = new ArrayList<>();
-        payType1.add(1);
-        payType1.add(5);
-        List<Integer> payType2 = new ArrayList<>();
-        payType2.add(2);
-        payType2.add(6);
-        List<Integer> payType3 = new ArrayList<>();
-        payType3.add(3);
-        payType3.add(7);
-        List<Integer> payType4 = new ArrayList<>();
-        payType4.add(4);
-        payType4.add(5);
-        payType4.add(6);
-        payType4.add(7);
         LambdaQueryWrapper<Order> courseLambdaQueryWrapper = new LambdaQueryWrapper<>();
         if (startTime!=null){
             courseLambdaQueryWrapper.between(Order::getCreateTime, startTime, endTime);
         }
         if (courseDTO.getPayType()!=null){
-            switch (courseDTO.getPayType()){
-                case 1:
-                    courseLambdaQueryWrapper.in(Order::getPayType,payType1);
-                    break;
-                case 2:
-                    courseLambdaQueryWrapper.in(Order::getPayType,payType2);
-                    break;
-                case 3:
-                    courseLambdaQueryWrapper.in(Order::getPayType,payType3);
-                    break;
-                case 4:
-                    courseLambdaQueryWrapper.in(Order::getPayType,payType4);
-                    break;
-            }
+            courseLambdaQueryWrapper.eq(Order::getPayType, courseDTO.getPayType());
         }
         if (courseDTO.getPaymentStatus()!=null){
             courseLambdaQueryWrapper.eq(Order::getPaymentStatus, courseDTO.getPaymentStatus());
@@ -531,6 +315,244 @@
                 }
             }
         }
+        List<WaterExport> waterExports = new ArrayList<>();
+        for (Order record : page) {
+            record.setUid(record.getId().toString());
+            record.setPlatformMoney(record.getRealPayAmount().subtract(record.getCommissionAmount()==null?BigDecimal.ZERO:record.getCommissionAmount()));
+            AppUser byId1 = remoteAppUserService.getAppUserById(record.getAppUserId()+"").getData();
+            if (Objects.nonNull(byId1)){
+                record.setUserName(byId1.getNickname());
+                record.setCellPhone(byId1.getCellPhone());
+            }
+            if (record.getOrderFrom()!=null){
+                switch (record.getOrderFrom()){
+                    case 1:
+                        Meditation data = remoteMeditationService.getMeditationById(record.getBusinessId()).getData();
+                        if (data!=null){
+                            record.setCategoryMeditationName(data.getCategoryName());
+                            record.setMeditationTitle(data.getMeditationTitle());
+                            record.setIconUrl(data.getIconUrl());
+                            record.setDetailDescription(data.getDetailDescription());
+                            record.setGeneralPriceMeditation(data.getGeneralPrice());
+                            record.setListingStatusMeditation(data.getListingStatus());
+                            record.setMeditationUid(data.getId()+"");
+                        }
+                        break;
+                    case 2:
+                        Course data1 = remoteCourseService.getCourseById(record.getBusinessId()).getData();
+                        if (data1!=null){
+                            record.setCategoryCourseName(data1.getCategoryName());
+                            record.setCourseTitle(data1.getCourseTitle());
+                            record.setCoverUrl(data1.getCoverUrl());
+                            record.setTutor(data1.getTutor());
+                            record.setCourseChapterCount(data1.getCourseChapterCount());
+                            record.setGeneralPriceCourse(data1.getGeneralPrice());
+                            record.setListingStatusCourse(data1.getListingStatus());
+                            record.setCourseUid(data1.getId()+"");
+                        }
+                        break;
+                    case 3:
+                        record.setBuyContent(record.getBuyContent());
+                        record.setGeneralPriceVip(record.getRealPayAmount());
+                        break;
+                    case 4:
+                        record.setBuyContent("余额充值");
+                        record.setPlatformMoney((record.getRealPayAmount()!=null?record.getRealPayAmount():record.getTotalAmount())
+                                .subtract(record.getCommissionAmount()!=null?record.getCommissionAmount():BigDecimal.ZERO));
+                        break;
+                }
+            }
+            WaterExport waterExport = new WaterExport();
+            waterExport.setCode(record.getBizOrderNo());
+            if (Objects.nonNull(byId1)){
+                record.setUserName(byId1.getNickname());
+                record.setCellPhone(byId1.getCellPhone());
+                waterExport.setUserName(byId1.getNickname());
+                waterExport.setCellphone(byId1.getCellPhone());
+            }
+            waterExport.setRealPayAmount("¥"+record.getRealPayAmount());
+            waterExport.setCommissionAmount("¥"+(record.getCommissionAmount()==null?new BigDecimal("0")+"":record.getCommissionAmount()+""));
+            waterExport.setPlatformMoney("¥"+record.getPlatformMoney());
+            waterExport.setBuyContent(record.getBuyContent());
+            waterExport.setOrderFrom(record.getOrderFrom()+"");
+            waterExport.setPayType(record.getPayType());
+            DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+            String format = df.format(record.getCreateTime());
+            waterExport.setCreateTime(format);
+            waterExport.setPaymentStatus(record.getPaymentStatus()+"");
+            waterExports.add(waterExport);
+        }
+
+        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), WaterExport.class, waterExports);
+        HttpServletResponse response = WebUtils.response();
+        response.setContentType("application/vnd.ms-excel");
+        response.setCharacterEncoding("utf-8");
+        ServletOutputStream outputStream = null;
+        try {
+            String fileName = URLEncoder.encode("收支流水导出.xls", "utf-8");
+            response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
+            response.setContentType("application/vnd.ms-excel;charset=UTF-8");
+            response.setHeader("Pragma", "no-cache");
+            response.setHeader("Cache-Control", "no-cache");
+            outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+        } catch (IOException e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                outputStream.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+    @PostMapping("/waterList")
+    @ApiOperation(value = "收支流水-分页", tags = {"管理后台-财务管理"})
+    public R<Page<Order>> waterList(@RequestBody OrderListDTO courseDTO) {
+        String startTime = null;
+        String endTime = null;
+        if (org.springframework.util.StringUtils.hasLength(courseDTO.getTime())){
+            String[] split = courseDTO.getTime().split(" - ");
+            startTime = split[0]+" 00:00:00";
+            endTime = split[1]+" 23:59:59";
+        }
+        List<Integer> payType1 = new ArrayList<>();
+        payType1.add(1);
+        payType1.add(5);
+        List<Integer> payType2 = new ArrayList<>();
+        payType2.add(2);
+        payType2.add(6);
+        List<Integer> payType3 = new ArrayList<>();
+        payType3.add(3);
+        payType3.add(7);
+
+        LambdaQueryWrapper<Order> courseLambdaQueryWrapper = new LambdaQueryWrapper<>();
+        if (startTime!=null){
+            courseLambdaQueryWrapper.between(Order::getCreateTime, startTime, endTime);
+        }
+        if (courseDTO.getPayType()!=null){
+        courseLambdaQueryWrapper.eq(Order::getPayType, courseDTO.getPayType());
+        }
+        if (courseDTO.getPaymentStatus()!=null){
+            courseLambdaQueryWrapper.eq(Order::getPaymentStatus, courseDTO.getPaymentStatus());
+        }
+        if (courseDTO.getOrderFrom()!=null){
+            courseLambdaQueryWrapper.eq(Order::getOrderFrom, courseDTO.getOrderFrom());
+        }
+        if (org.springframework.util.StringUtils.hasLength(courseDTO.getBuyContent())){
+            // 查询购买内容
+            List<Long> collect1 = orderService.lambdaQuery().like(Order::getBuyContent, courseDTO.getBuyContent()).list().stream()
+                    .map(Order::getId).collect(Collectors.toList());
+            List<Long> collect2 = orderService.lambdaQuery().like(Order::getBizOrderNo, courseDTO.getBuyContent()).list().stream()
+                    .map(Order::getId).collect(Collectors.toList());
+            List<Long> data = remoteCourseService.getCourseIdsByName(courseDTO.getBuyContent()).getData();
+            if (!data.isEmpty()){
+                List<Long> collect3 = orderService.lambdaQuery().in(Order::getBusinessId, data)
+                        .eq(Order::getOrderFrom, 2)
+                        .list().stream()
+                        .map(Order::getId).collect(Collectors.toList());
+                if (!collect3.isEmpty()){
+                    collect1.addAll(collect3);
+                }
+            }
+            List<Long> data1 = remoteMeditationService.getMeditationIdsByName(courseDTO.getBuyContent()).getData();
+            if (!data1.isEmpty()){
+                List<Long> collect3 = orderService.lambdaQuery().in(Order::getBusinessId, data1)
+                        .eq(Order::getOrderFrom, 1)
+                        .list().stream()
+                        .map(Order::getId).collect(Collectors.toList());
+                if (!collect3.isEmpty()){
+                    collect1.addAll(collect3);
+                }
+            }
+
+            collect1.addAll(collect2);
+            List<Long> collect = collect1.stream().distinct().collect(Collectors.toList());
+            if (collect.isEmpty()){
+                collect.add(-1L);
+            }
+            courseLambdaQueryWrapper.in(Order::getId,collect);
+        }
+
+        courseLambdaQueryWrapper.orderByDesc(Order::getCreateTime);
+        if (org.springframework.util.StringUtils.hasLength(courseDTO.getUserNameOrPhone())){
+            List<Long> collect = remoteAppUserService.getAppUserByNameOrPhone(courseDTO.getUserNameOrPhone()).getData();
+            if (collect.isEmpty()){
+                collect.add(-1L);
+            }
+            courseLambdaQueryWrapper.in(Order::getAppUserId, collect);
+        }
+
+        List<Order> page = orderService.list(courseLambdaQueryWrapper);
+
+        List<AppUserWithdraw> data2 = remoteAppUserService.getWithdraw(courseDTO).getData();
+        for (AppUserWithdraw appUserWithdraw : data2) {
+            Order order = new Order();
+            order.setId(appUserWithdraw.getId());
+            order.setBizOrderNo(appUserWithdraw.getCode());
+            order.setUid(appUserWithdraw.getId()+"");
+            order.setBuyContent("提现");
+            order.setAppUserId(appUserWithdraw.getAppUserId());
+            order.setOrderFrom(5);
+            order.setPaymentStatus(appUserWithdraw.getWithdrawStatus()+1);
+            order.setPayType(4);
+            order.setTotalAmount(appUserWithdraw.getAmount());
+            order.setRealPayAmount(appUserWithdraw.getAmount());
+            order.setPlatformMoney(appUserWithdraw.getAmount().multiply(new BigDecimal("-1")));
+            order.setPaymentTime(appUserWithdraw.getWithdrawTime());
+            order.setCreateTime(appUserWithdraw.getCreateTime());
+            page.add(order);
+        }
+        Page<Order> objectPage = new Page<>();
+        objectPage.setTotal(page.size());
+        objectPage.setCurrent(courseDTO.getPageCurr());
+        objectPage.setSize(courseDTO.getPageSize());
+        for (Order record : page) {
+            record.setUid(record.getId().toString());
+            record.setPlatformMoney((record.getRealPayAmount()!=null?record.getRealPayAmount():record.getTotalAmount()).subtract(record.getCommissionAmount()==null?BigDecimal.ZERO:record.getCommissionAmount()));
+            AppUser byId1 = remoteAppUserService.getAppUserById(record.getAppUserId()+"").getData();
+            if (Objects.nonNull(byId1)){
+                record.setUserName(byId1.getNickname());
+                record.setCellPhone(byId1.getCellPhone());
+            }
+            if (record.getOrderFrom()!=null){
+                switch (record.getOrderFrom()){
+                    case 1:
+                        Meditation data = remoteMeditationService.getMeditationById(record.getBusinessId()).getData();
+                        if (data!=null){
+                            record.setCategoryMeditationName(data.getCategoryName());
+                            record.setMeditationTitle(data.getMeditationTitle());
+                            record.setIconUrl(data.getCoverUrl());
+                            record.setDetailDescription(data.getDetailDescription());
+                            record.setGeneralPriceMeditation(data.getGeneralPrice());
+                            record.setListingStatusMeditation(data.getListingStatus());
+                            record.setMeditationUid(data.getId()+"");
+                        }
+                        break;
+                    case 2:
+                        Course data1 = remoteCourseService.getCourseById(record.getBusinessId()).getData();
+                        if (data1!=null){
+                            record.setCategoryCourseName(data1.getCategoryName());
+                            record.setCourseTitle(data1.getCourseTitle());
+                            record.setCoverUrl(data1.getCoverUrl());
+                            record.setTutor(data1.getTutor());
+                            record.setCourseChapterCount(data1.getCourseChapterCount());
+                            record.setGeneralPriceCourse(data1.getGeneralPrice());
+                            record.setListingStatusCourse(data1.getListingStatus());
+                            record.setCourseUid(data1.getId()+"");
+                        }
+                        break;
+                    case 3:
+                        record.setBuyContent(record.getBuyContent());
+                        record.setGeneralPriceVip(record.getTotalAmount());
+                        break;
+                    case 4:
+                        record.setBuyContent("充值");
+
+                        break;
+                }
+            }
+        }
         // 手动分页
         List<Order> testing = testing(page.size(), courseDTO.getPageCurr(), courseDTO.getPageSize(), page);
         objectPage.setRecords(testing);
@@ -574,39 +596,12 @@
             startTime = split[0]+" 00:00:00";
             endTime = split[1]+" 23:59:59";
         }
-        List<Integer> payType1 = new ArrayList<>();
-        payType1.add(1);
-        payType1.add(5);
-        List<Integer> payType2 = new ArrayList<>();
-        payType2.add(2);
-        payType2.add(6);
-        List<Integer> payType3 = new ArrayList<>();
-        payType3.add(3);
-        payType3.add(7);
-        List<Integer> payType4 = new ArrayList<>();
-        payType4.add(4);
-        payType4.add(5);
-        payType4.add(6);
-        payType4.add(7);
         LambdaQueryWrapper<Order> courseLambdaQueryWrapper = new LambdaQueryWrapper<>();
         if (startTime!=null){
             courseLambdaQueryWrapper.between(Order::getCreateTime, startTime, endTime);
         }
         if (courseDTO.getPayType()!=null){
-            switch (courseDTO.getPayType()){
-                case 1:
-                    courseLambdaQueryWrapper.in(Order::getPayType,payType1);
-                    break;
-                case 2:
-                    courseLambdaQueryWrapper.in(Order::getPayType,payType2);
-                    break;
-                case 3:
-                    courseLambdaQueryWrapper.in(Order::getPayType,payType3);
-                    break;
-                case 4:
-                    courseLambdaQueryWrapper.in(Order::getPayType,payType4);
-                    break;
-            }
+            courseLambdaQueryWrapper.eq(Order::getPayType,courseDTO.getPayType());
         }
         if (courseDTO.getPaymentStatus()!=null){
             courseLambdaQueryWrapper.eq(Order::getPaymentStatus, courseDTO.getPaymentStatus());
@@ -695,9 +690,7 @@
                         break;
                 }
             }
-            if (record.getRealPayAmount()!=null&& record.getRefundStatus()!=null && record.getRefundStatus()!=3){
-                totalMoney = totalMoney.add(record.getRealPayAmount());
-            }
+                totalMoney = totalMoney.add(record.getTotalAmount());
         }
         orderCountVO.setTotalCount(page.size());
         orderCountVO.setPayCount(payCount);
@@ -996,6 +989,7 @@
                         if (data!=null){
                             record.setCategoryMeditationName(data.getCategoryName());
                             record.setMeditationTitle(data.getMeditationTitle());
+                            record.setCoverUrl(data.getCoverUrl());
                             record.setIconUrl(StringUtils.hasLength(data.getCoverUrl())?data.getCoverUrl().split(",")[0]:"");
                             record.setDetailDescription(data.getDetailDescription());
                             record.setGeneralPriceMeditation(record.getRealPayAmount());
@@ -1027,7 +1021,6 @@
     }
     @PostMapping("/orderCount")
     @ApiOperation(value = "订单列表管理列表上方合计数据", tags = {"管理后台-订单列表管理"})
-
     public R<OrderCountVO> orderCount(@RequestBody OrderListDTO courseDTO) {
         OrderCountVO orderCountVO = new OrderCountVO();
         String startTime = null;
@@ -1136,7 +1129,7 @@
                         break;
                 }
             }
-            if (record.getRealPayAmount()!=null && record.getRefundStatus()!=3){
+            if (record.getRealPayAmount()!=null){
                 totalMoney = totalMoney.add(record.getRealPayAmount());
             }
         }
diff --git a/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/domain/export/WaterExport.java b/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/domain/export/WaterExport.java
index 314fd09..c534728 100644
--- a/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/domain/export/WaterExport.java
+++ b/xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/domain/export/WaterExport.java
@@ -33,7 +33,7 @@
     private Integer payType;
     @Excel(name  = "下单时间",width = 30 )
     private String createTime;
-    @Excel(name = "支付状态",width = 30,replace = {"待支付_1","已完成_1","已取消_2"})
+    @Excel(name = "支付状态",width = 30,replace = {"待支付_1","已完成_2","已取消_3"})
     private String paymentStatus;
 
 
diff --git a/xinquan-modules/xinquan-system/src/main/java/com/xinquan/system/controller/HomeController.java b/xinquan-modules/xinquan-system/src/main/java/com/xinquan/system/controller/HomeController.java
index 690050e..be5ecfe 100644
--- a/xinquan-modules/xinquan-system/src/main/java/com/xinquan/system/controller/HomeController.java
+++ b/xinquan-modules/xinquan-system/src/main/java/com/xinquan/system/controller/HomeController.java
@@ -236,14 +236,14 @@
                 // 周
                 // 获取本周7天 格式为dd
 
-                calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
+                calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
                 for (int i = 1; i <= 7; i++) {
                     Date time = calendar.getTime();
                     String format1 = simpleDateFormat.format(time);
                     x.put(format1,0);
                     x1.put(format1,0);
                     x2.put(format1,0);
-                    calendar.add(Calendar.DAY_OF_MONTH, 1);
+                    calendar.add(Calendar.DAY_OF_WEEK, 1);
                 }
                 break;
             case 4:
@@ -258,6 +258,31 @@
                     x2.put(format1,0);
                     calendar.add(Calendar.DAY_OF_MONTH, 1);
                 }
+                break;
+            case 5:
+                String startTime = null;
+                String endTime = null;
+                if (org.springframework.util.StringUtils.hasLength(homeDto.getTime())){
+                    String[] split = homeDto.getTime().split(" - ");
+                    startTime = split[0];
+                    endTime = split[1];
+                    // 将其转化为LocalDate
+                    LocalDate startLocalDate = LocalDate.parse(startTime, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                    LocalDate endLocalDate = LocalDate.parse(endTime, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                    // 将startLocalDate到endLocalDate之间的每一天的日期,包括startLocalDate和endLocalDate
+                    List<LocalDate> localDates = new ArrayList<>();
+                    while (!startLocalDate.isAfter(endLocalDate)) {
+                        // 将startLocalDate转化为格式为yyyy-MM-dd格式字符串
+                        String format1 = startLocalDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
+                        x.put(format1,0);
+                        x1.put(format1,0);
+                        x2.put(format1,0);
+                        localDates.add(startLocalDate);
+                        startLocalDate = startLocalDate.plusDays(1);
+
+                    }
+                }
+
                 break;
         }
         if (StringUtils.hasLength(homeDto.getTime())&&(!homeDto.getTime().equals("1"))){
@@ -279,32 +304,29 @@
                     switch (homeDto.getTimeType()){
                         case 1:
                             // 获取订单月份
-                            if (StringUtils.hasLength(homeDto.getTime())&&(!homeDto.getTime().equals("1"))){
-                                x.put(localDate+"",(int)x.get(value+"")+1);
-                            }else{
+                            if (StringUtils.hasLength(homeDto.getTime())&&x.get(value+"")!=null){
                                 x.put(value+"",(int)x.get(value+"")+1);
                             }
                             break;
                         case 2:
                             Date date = new Date();
                             String format = simpleDateFormat.format(date);
-                            if (StringUtils.hasLength(homeDto.getTime())&&(!homeDto.getTime().equals("1"))){
-                                x.put(localDate+"",(int)x.get(value+"")+1);
-                            }else{
-                                x.put(format,(int)x.get(format)+1);
+                            if (StringUtils.hasLength(homeDto.getTime())&&x.get(value1+"")!=null){
+                                x.put(value1+"",(int)x.get(value1+"")+1);
                             }
                             break;
                         case 3:
-                            if (StringUtils.hasLength(homeDto.getTime())&&(!homeDto.getTime().equals("1"))){
-                                x.put(localDate+"",(int)x.get(value+"")+1);
-                            }else{
+                            if (StringUtils.hasLength(homeDto.getTime())&&x.get(value1+"")!=null){
                                 x.put(value1+"",(int)x.get(value1+"")+1);
                             }
                             break;
                         case 4:
-                            if (StringUtils.hasLength(homeDto.getTime())&&(!homeDto.getTime().equals("1"))){
-                                x.put(localDate+"",(int)x.get(value+"")+1);
-                            }else{
+                            if (StringUtils.hasLength(homeDto.getTime())&&x.get(value1+"")!=null){
+                                x.put(value1+"",(int)x.get(value1+"")+1);
+                            }
+                            break;
+                        case 5:
+                            if (StringUtils.hasLength(homeDto.getTime())&&x.get(value1+"")!=null){
                                 x.put(value1+"",(int)x.get(value1+"")+1);
                             }
                             break;
@@ -314,33 +336,31 @@
                     switch (homeDto.getTimeType()){
                         case 1:
                             // 获取订单月份
-                            if (StringUtils.hasLength(homeDto.getTime())&&(!homeDto.getTime().equals("1"))){
-                                x1.put(localDate+"",(int)x1.get(value+"")+1);
-                            }else{
+                            if (StringUtils.hasLength(homeDto.getTime())&&x1.get(value+"")!=null){
                                 x1.put(value+"",(int)x1.get(value+"")+1);
                             }
                             break;
                         case 2:
                             Date date = new Date();
                             String format = simpleDateFormat.format(date);
-                            if (StringUtils.hasLength(homeDto.getTime())&&(!homeDto.getTime().equals("1"))){
-                                x1.put(localDate+"",(int)x1.get(value+"")+1);
-                            }else{
-                                x1.put(format,(int)x1.get(format)+1);
+                            if (StringUtils.hasLength(homeDto.getTime())&&x1.get(value1+"")!=null){
+                                x1.put(value1+"",(int)x1.get(value1+"")+1);
+
                             }
                             break;
                         case 3:
-                            if (StringUtils.hasLength(homeDto.getTime())&&(!homeDto.getTime().equals("1"))){
-                                x1.put(localDate+"",(int)x1.get(value+"")+1);
-                            }else{
-                                x1.put(value+"",(int)x1.get(value+"")+1);
+                            if (StringUtils.hasLength(homeDto.getTime())&&x1.get(value1+"")!=null){
+                                x1.put(value1+"",(int)x1.get(value1+"")+1);
                             }
                             break;
                         case 4:
-                            if (StringUtils.hasLength(homeDto.getTime())&&(!homeDto.getTime().equals("1"))){
-                                x1.put(localDate+"",(int)x1.get(value+"")+1);
-                            }else{
-                                x1.put(value+"",(int)x1.get(value+"")+1);
+                            if (StringUtils.hasLength(homeDto.getTime())&&x1.get(value1+"")!=null){
+                                x1.put(value1+"",(int)x1.get(value1+"")+1);
+                            }
+                            break;
+                        case 5:
+                            if (StringUtils.hasLength(homeDto.getTime())&&x1.get(value1+"")!=null){
+                                x1.put(value1+"",(int)x1.get(value1+"")+1);
                             }
                             break;
                     }
@@ -349,33 +369,33 @@
                     switch (homeDto.getTimeType()){
                         case 1:
                             // 获取订单月份
-                            if (StringUtils.hasLength(homeDto.getTime())&&(!homeDto.getTime().equals("1"))){
-                                x2.put(localDate+"",(int)x2.get(value+"")+1);
-                            }else{
+                            if (StringUtils.hasLength(homeDto.getTime())&&x2.get(value+"")!=null){
                                 x2.put(value+"",(int)x2.get(value+"")+1);
                             }
                             break;
                         case 2:
                             Date date = new Date();
                             String format = simpleDateFormat.format(date);
-                            if (StringUtils.hasLength(homeDto.getTime())&&(!homeDto.getTime().equals("1"))){
-                                x2.put(localDate+"",(int)x2.get(value+"")+1);
-                            }else{
-                                x2.put(format,(int)x2.get(format)+1);
+                            if (StringUtils.hasLength(homeDto.getTime())&&x2.get(value1+"")!=null){
+                                x2.put(value1+"",(int)x2.get(value1+"")+1);
+
                             }
                             break;
                         case 3:
-                            if (StringUtils.hasLength(homeDto.getTime())&&(!homeDto.getTime().equals("1"))){
-                                x2.put(localDate+"",(int)x2.get(value+"")+1);
-                            }else{
-                                x2.put(value+"",(int)x2.get(value+"")+1);
+                            if (StringUtils.hasLength(homeDto.getTime())&&x2.get(value1+"")!=null){
+
+                                x2.put(value1+"",(int)x2.get(value1+"")+1);
                             }
                             break;
                         case 4:
-                            if (StringUtils.hasLength(homeDto.getTime())&&(!homeDto.getTime().equals("1"))){
-                                x2.put(localDate+"",(int)x2.get(value+"")+1);
-                            }else{
-                                x2.put(value+"",(int)x2.get(value+"")+1);
+                            if (StringUtils.hasLength(homeDto.getTime())&&x2.get(value1+"")!=null){
+
+                                x2.put(value1+"",(int)x2.get(value1+"")+1);
+                            }
+                            break;
+                        case 5:
+                            if (StringUtils.hasLength(homeDto.getTime())&&x2.get(value1+"")!=null){
+                                x2.put(value1+"",(int)x2.get(value1+"")+1);
                             }
                             break;
                     }
@@ -466,7 +486,6 @@
             homeVO.setCourseOffOnline(split[4]);
             Integer i = Integer.valueOf(homeExport.getCourseCount());
             Integer i1 = Integer.valueOf(split[4]);
-            homeExport.setCourseCount((i-i1)+"");
         }
         List<HomeExport> homeExports = new ArrayList<>();
         homeExports.add(homeExport);
diff --git a/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserWithdrawController.java b/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserWithdrawController.java
index 1d282e1..a6529a8 100644
--- a/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserWithdrawController.java
+++ b/xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserWithdrawController.java
@@ -9,7 +9,9 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xinquan.common.core.constant.CacheConstants;
+import com.xinquan.common.core.constant.SecurityConstants;
 import com.xinquan.common.core.domain.R;
+import com.xinquan.common.core.exception.ServiceException;
 import com.xinquan.common.core.utils.JuHeFuUtil;
 import com.xinquan.common.core.utils.WebUtils;
 import com.xinquan.common.core.utils.page.CollUtils;
@@ -21,6 +23,7 @@
 import com.xinquan.meditation.api.domain.Meditation;
 import com.xinquan.order.api.domain.Order;
 import com.xinquan.system.api.domain.*;
+import com.xinquan.system.api.model.AppLoginUser;
 import com.xinquan.user.api.domain.dto.OrderListDTO;
 import com.xinquan.system.api.model.LoginUser;
 import com.xinquan.user.domain.export.WithdrawExport;
@@ -284,7 +287,8 @@
         String s = UuidUtils.generateUuid();
         String replace = s.replace("-", "");
 
-        appUserWithdraw.setCode(replace);
+        // 商户余额充值到用户余额
+        appUserWithdraw.setCode("CZ"+replace);
         appUserWithdraw.setWithdrawTime(LocalDateTime.now());
         appUserWithdraw.setCreateTime(LocalDateTime.now());
         // 先扣去余额
@@ -295,11 +299,17 @@
         appUserWalletRecord.setOrderId(appUserWithdraw.getId());
         appUserWalletRecord.setAmount(new BigDecimal(money));
         BigDecimal bigDecimal1 = new BigDecimal(money).setScale(2, RoundingMode.HALF_DOWN);
-        JuHeFuUtil.updateAccount(byId.getFenzhangId(),byId1.getCardholder(),byId1.getCellPhone(),byId1.getCardNo());
-        JSONObject jsonObject = JuHeFuUtil.balancePay(replace, byId.getFenzhangId(), bigDecimal1 + ""
+        String s1 = JuHeFuUtil.updateAccount(byId.getFenzhangId(), byId1.getCardholder(), byId1.getCellPhone(), byId1.getCardNo());
+        if (s1.contains("false")){
+            // 修改报错 弹出提示
+            return R.fail("银行卡信息或持卡人信息有误,请核对后输入");
+        }
+        // 从商户余额分账到用户分账接收方
+        JSONObject jsonObject = JuHeFuUtil.balancePay(appUserWithdraw.getCode(), byId.getFenzhangId(), bigDecimal1 + ""
                 , "https://xq.xqzhihui.com/api/user/client/app-user-withdraw/base/callback");
         if (jsonObject.getString("error_msg")!=null){
-            return R.fail(jsonObject.getString("error_msg"));
+            return R.fail("系统繁忙,5分钟后重试");
+//            return R.fail(jsonObject.getString("error_msg"));
         }
         appUserService.updateById(byId);
         appUserWalletRecordService.save(appUserWalletRecord);
@@ -343,11 +353,14 @@
             if (jsonObject.getString("type").equals("balancePay.succeeded")){
                 if (one!=null){
                     String s = UuidUtils.generateUuid();
+                    String replace = "TX"+s.replace("-", "");
+                    // 商户余额充值到用户余额
                     AppUser appUser = appUserService.getById(one.getAppUserId());
                     if (one.getWithdrawStatus()==1 || one.getWithdrawStatus()==2){
                         return;
                     }
-                    JSONObject jsonObject2 = JuHeFuUtil.balanceWithdraw(s, one.getAmount() + "", appUser.getFenzhangId(),
+
+                    JSONObject jsonObject2 = JuHeFuUtil.balanceWithdraw(replace, one.getAmount() + "", appUser.getFenzhangId(),
                             "https://xq.xqzhihui.com/api/user/client/app-user-withdraw/base/callbackA");
                     if (jsonObject2.getString("error_msg")!=null){
                         // 调用失败
@@ -371,6 +384,7 @@
                         out.flush();
                         out.close();
                     }
+                    one.setCode(replace);
                     withdrawService.updateById(one);
                 }
                 PrintWriter out = response.getWriter();
@@ -427,6 +441,9 @@
             AppUserWithdraw one = withdrawService.lambdaQuery().eq(AppUserWithdraw::getCode, string).one();
             if (jsonObject.getString("type").equals("withdraw.succeeded")){
                 if (one!=null){
+                    if (one.getWithdrawStatus()==1){
+                        return;
+                    }
                     System.err.println("提现成功");
                     one.setWithdrawStatus(1);
                     one.setSerialNo(jsonObject1.getString("withdraw_id"));
@@ -480,6 +497,19 @@
 //        if (!appUserWithdraw.getCode().equals(code)) {
 //            return R.fail("验证码不正确");
 //        }
+        if (com.xinquan.common.core.utils.StringUtils.isNotBlank(appUserWithdraw.getCellPhone()) && com.xinquan.common.core.utils.StringUtils.isNotBlank(appUserWithdraw.getCode())) {
+            String key = CacheConstants.ADD_CARD_PHONE_CODE_PREFIX + appUserWithdraw.getCellPhone();
+            String code = redisService.getCacheObject(key);
+            // 万能验证码
+            if (appUserWithdraw.getCode().equals("123456") || (com.xinquan.common.core.utils.StringUtils.isNotBlank(code) && code.equals(
+                    appUserWithdraw.getCode()))) {
+                redisService.deleteObject(key);
+            }else{
+                return R.fail("验证码不正确");
+            }
+        }else{
+            return R.fail("请输入验证码");
+        }
         appUserBankService.save(appUserWithdraw);
         // 查询是否已经开户
         AppUser byId = appUserService.getById(userId);
@@ -488,10 +518,12 @@
             long time = new Date().getTime();
             String s = RandomUtil.randomNumbers(4);
             String s1 = "FZ" + time + s;
-            JuHeFuUtil.createUser(s1, appUserWithdraw.getCardholder(), "00",
+            String user = JuHeFuUtil.createUser(s1, appUserWithdraw.getCardholder(), "00",
                     appUserWithdraw.getIdentityCard(), appUserWithdraw.getCellPhone(), appUserWithdraw.getCardNo());
-            byId.setFenzhangId(s1);
-            appUserService.updateById(byId);
+            if (user.equals("success")){
+                byId.setFenzhangId(s1);
+                appUserService.updateById(byId);
+            }
         }
         return R.ok();
     }

--
Gitblit v1.7.1