yupeng
2025-03-10 8c7d2f03421ccca369373bc940cfe082434b3a7e
feat: 确认已缴费接口,添加支付类型现金的逻辑
4个文件已修改
89 ■■■■■ 已修改文件
generator/src/test/java/com/xizang/CodeGeneratorTests.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/TencentMailUtil.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/OfflinePayCheckDto.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
generator/src/test/java/com/xizang/CodeGeneratorTests.java
@@ -35,9 +35,9 @@
        // 全局配置
        GlobalConfig gc = new GlobalConfig();
        String projectPath = "F:\\workSpace\\xizang\\generator";
        String projectPath = "D:\\workspaces\\Project\\company\\changyun\\xizang\\xizang\\generator";
        gc.setOutputDir(projectPath + "/src/main/java")
                .setAuthor("xiaochen")
                .setAuthor("yupeng")
                .setMapperName("%sMapper")
                .setXmlName("%sMapper")
                .setServiceName("%sService")
@@ -144,7 +144,7 @@
//         strategy.setTablePrefix(pc.getModuleName() + "");
//        strategy.setLikeTable(new LikeTable("room"));
        //strategy.setLikeTable(new LikeTable("member"));
        strategy.setLikeTable(new LikeTable("t_bank_flow"));// 生成表名
        strategy.setLikeTable(new LikeTable("sys_file"));// 生成表名
//        strategy.setLikeTable(new LikeTable("t_hotel"));// 生成表名
//        strategy.setLikeTable(new LikeTable("t_scan_message"));// 生成表名
//        strategy.setNotLikeTable(new LikeTable("hotel_info"));// 不生成表名
ruoyi-common/src/main/java/com/ruoyi/common/utils/TencentMailUtil.java
@@ -43,7 +43,8 @@
        // 访问SMTP服务时需要提供的密码(在控制台选择发信地址进行设置)
        props.put("mail.password", properties.getPassword());
        props.setProperty("mail.smtp.socketFactory.fallback", "false");
        props.put("mail.smtp.ssl.enable", "false");
        props.put("mail.smtp.ssl.enable", "true");
        props.put("mail.smtp.ssl.protocols", "TLSv1.2");
        // 构建授权信息,用于进行SMTP进行身份验证
        Authenticator authenticator = new Authenticator() {
            @Override
@@ -101,7 +102,7 @@
        TencentMailUtil tencentMailUtil = new TencentMailUtil();
        MailProperties properties = new MailProperties();
        tencentMailUtil.properties = properties;
        tencentMailUtil.send("214491528@qq.com","大学城揽院24栋");
        tencentMailUtil.send("645025773@qq.com","大学城揽院24栋");
    }
ruoyi-system/src/main/java/com/ruoyi/system/dto/OfflinePayCheckDto.java
@@ -38,7 +38,11 @@
    @ApiModelProperty("支付凭证")
    private String voucher;
    @ApiModelProperty("银行流水ID")
    @NotEmpty(message = "银行流水ID不能为空")
    private String flowId;
    @ApiModelProperty("支付类型")
    @NotEmpty(message = "支付类型不能为空")
    private Integer payType;
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java
@@ -241,42 +241,68 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean checkOfflinePay(OfflinePayCheckDto dto) {
        TBankFlow bankflow = tBankFlowService.getById(dto.getFlowId());
        TBillDto bill = getDetailByBillId(dto.getBillId());
        if (bankflow.getRemainingMoney().compareTo(BigDecimal.ZERO)<=0){
            throw new ServiceException("该流水已无可抵扣剩余金额");
        }
        if (bankflow.getRemainingMoney().compareTo(dto.getAmount())<0){
            throw new ServiceException("实付金额不能高于于流水可抵扣剩余金额");
        }
        //如果实付金额大于欠费金额
        if (dto.getAmount().compareTo(bill.getOutstandingMoney())>0){
            throw new ServiceException("实付金额不能高于该账单欠费金额");
        }
        if (dto.getPayType()==1){ //银行
            if (StringUtils.isEmpty(dto.getFlowId())){
                throw new ServiceException("银行流水ID不能为空");
            }
            TBankFlow bankflow = tBankFlowService.getById(dto.getFlowId());
            if (bankflow.getRemainingMoney().compareTo(BigDecimal.ZERO)<=0){
                throw new ServiceException("该流水已无可抵扣剩余金额");
            }
            if (bankflow.getRemainingMoney().compareTo(dto.getAmount())<0){
                throw new ServiceException("实付金额不能高于于流水可抵扣剩余金额");
            }
            //如果实付金额大于欠费金额
            if (dto.getAmount().compareTo(bill.getOutstandingMoney())>0){
                throw new ServiceException("实付金额不能高于该账单欠费金额");
            }
            TBill billSave = new TBill();
            billSave.setId(bill.getId());
            billSave.setPayFeesMoney(dto.getAmount());
            billSave.setBankSerialNumber(bankflow.getBankSerialNumber());
            billSave.setPayFeesTime(bankflow.getPayTime());
            billSave.setVoucher(dto.getVoucher());
            billSave.setPayFeesType(2);
            TBill back = lockAndUpdateInfo(billSave, 2);
            TBankFlow saveBankFlow = new TBankFlow();
            saveBankFlow.setId(bankflow.getId());
            saveBankFlow.setDeductionMoney(bankflow.getDeductionMoney().add(dto.getAmount()));
            saveBankFlow.setRemainingMoney(bankflow.getRemainingMoney().subtract(dto.getAmount()));
            tBankFlowService.updateById(saveBankFlow);
            //更新银行流水的已抵扣金额和剩余可抵扣金额
            //存流水
            TFlowManagement save = new TFlowManagement();
            save.setPayType(3);
            save.setPayer(dto.getPayer());
            save.setPayTime(bankflow.getPayTime());
            save.setSysSerialNumber(OrderNos.getDid(30));
            save.setBankSerialNumber(bankflow.getBankSerialNumber());
            save.setFlowType(2);
            save.setPaymentBillId(back.getId());
            save.setDeductionMoney(back.getDeductionMoney());
            save.setFlowMoney(dto.getAmount());
            save.setRemainingMoney(back.getOutstandingMoney());
            save.setPreOutstand(back.getPreOutstand());
            tFlowManagementService.save(save);
            return true;
        }
        //现金支付
        TBill billSave = new TBill();
        billSave.setId(bill.getId());
        billSave.setPayFeesMoney(dto.getAmount());
        billSave.setBankSerialNumber(bankflow.getBankSerialNumber());
        billSave.setPayFeesTime(bankflow.getPayTime());
        billSave.setPayFeesTime(dto.getPayTime()!=null?dto.getPayTime():DateUtils.dateToLocalDateTime(new Date()));
        billSave.setVoucher(dto.getVoucher());
        billSave.setPayFeesType(2);
        TBill back = lockAndUpdateInfo(billSave, 2);
        //更新银行流水的已抵扣金额和剩余可抵扣金额
        TBankFlow saveBankFlow = new TBankFlow();
        saveBankFlow.setId(bankflow.getId());
        saveBankFlow.setDeductionMoney(bankflow.getDeductionMoney().add(dto.getAmount()));
        saveBankFlow.setRemainingMoney(bankflow.getRemainingMoney().subtract(dto.getAmount()));
        tBankFlowService.updateById(saveBankFlow);
        //存流水
        TFlowManagement save = new TFlowManagement();
        save.setPayType(3);
        save.setPayer(dto.getPayer());
        save.setPayTime(bankflow.getPayTime());
        save.setPayTime(billSave.getPayFeesTime());
        save.setSysSerialNumber(OrderNos.getDid(30));
        save.setBankSerialNumber(bankflow.getBankSerialNumber());
        save.setFlowType(2);
        save.setFlowType(1);
        save.setPaymentBillId(back.getId());
        save.setDeductionMoney(back.getDeductionMoney());
        save.setFlowMoney(dto.getAmount());