无关风月
2024-12-16 fd88d7b527e99bbf7272d28bf0826b05e3c175d8
代码提交
6个文件已修改
688 ■■■■ 已修改文件
xinquan-common/xinquan-common-core/src/main/java/com/xinquan/common/core/utils/JuHeFuUtil.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/client/ClientOrderController.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/controller/management/MgtOrderController.java 499 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xinquan-modules/xinquan-order/src/main/java/com/xinquan/order/domain/export/WaterExport.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
xinquan-modules/xinquan-system/src/main/java/com/xinquan/system/controller/HomeController.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xinquan-modules/xinquan-user/src/main/java/com/xinquan/user/controller/client/ClientAppUserWithdrawController.java 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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 {
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,6 +718,7 @@
//                                                    appUserById.getBalance().add(bigDecimal))
//                                            .build(), SecurityConstants.INNER);
                            // 新增分佣流水明细
                            if (bigDecimal.compareTo(new BigDecimal("0"))>0){
                            AppUserWalletRecord appUserWalletRecord = new AppUserWalletRecord();
                            appUserWalletRecord.setAppUserId(data.getInviteUserId());
                            appUserWalletRecord.setChangeType(1);
@@ -724,6 +729,7 @@
                            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();
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());
            }
        }
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;
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);
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,11 +518,13 @@
            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());
            if (user.equals("success")){
            byId.setFenzhangId(s1);
            appUserService.updateById(byId);
        }
        }
        return R.ok();
    }
    @PostMapping("/deleteBank")