预约转账、基金购买、定投;收款人管理

周期性转账、基金购买、定投

周期性汇款說明:

a. 将按照客户预约当天上午九点进行转账,若当次转账失败,此次转账记录失败次数,不再进行相应的汇款。

b. 预约日期不受节假日影响,仅受当月天数影响,如预约31日汇款,当月最后一天(有31日,则31日汇款,无则在2月28日或29日,或30日)进行汇款。

c. 手续费、转账金额预先扣减(收款人收到款项之前,汇款单创建即扣减),使用此业务时请保证账户内资金充足!

d. 如涉及手续费调整,则按汇款时的手续费进行收费。

jpa查询满足条件的周期性汇款单

    public Specification<Booking> getBookingSpecification() {
        return (root, query, builder) -> {
            List<Predicate> predicates = new ArrayList<>();
            predicates.add(builder.equal(root.get("status"), 1));

            Date start = new Date();
            int dayOfMonth = DateUtil.getDay(start);
            int lastDayOfMonth = DateUtil.getLastDayOfMonthByDate(start);
            List<Integer> days = new ArrayList<>();
            boolean oneDay = false;
            if (lastDayOfMonth == dayOfMonth && lastDayOfMonth == 28) {
                days = Arrays.asList(28, 29, 30, 31);
            } else if (lastDayOfMonth == dayOfMonth && lastDayOfMonth == 29) {
                days = Arrays.asList(29, 30, 31);
            } else if (lastDayOfMonth == dayOfMonth && lastDayOfMonth == 30) {
                days = Arrays.asList(30, 31);
            } else {
                oneDay = true;
                days = Arrays.asList(dayOfMonth);
            }

            String startDate = DateUtil.formatTime(start).substring(0, 10);
            cn.hutool.core.date.DateUtil.parse(startDate, "yyyy-MM-dd");
            if (oneDay) {
                predicates.add(builder.or(builder.equal(root.get("dayOfMonth"), dayOfMonth),
                        builder.equal(root.get("firstTransferDate"), cn.hutool.core.date.DateUtil.parse(startDate, "yyyy-MM-dd"))));
            } else {
                predicates.add(builder.or(root.get("dayOfMonth").in(days),
                        builder.equal(root.get("firstTransferDate"), cn.hutool.core.date.DateUtil.parse(startDate, "yyyy-MM-dd"))));
            }

            Predicate[] p = new Predicate[predicates.size()];
            return builder.and(predicates.toArray(p));
        };
    }

日期工具类

收款人管理

添加收款人

校验用户信息(额度已开通,身份证信息验证)、银行卡校验(银联三要素) --> 查询流水表,获取汇款人进件流水号 --> 组装收款人进件信息 --> 进件成功,记录流水 --> 添加收款账户、记录成功日志 --> 若银联接口进件失败,记录失败日志请求记录及失败原因

删除收款人

校验用户是否有预约单未完结、汇款单是否尚未完结 --> 调用银联接口删除 --> 银联处理OK --> 查询银行卡进件流水信息,删除进件记录、收款人 、记录删除日志 --> 若是默认账户删除,查询最近添加的账户,存在设为新的默认

设为默认账户

见代码逻辑

public void recommendPayee(CifNoAndIdReq req) {
        int count = this.iPayeeRepository.countByCifNo(req.getCifNo());
        if (count >= 2) {
            Payee entity = this.iPayeeRepository.findByPayeeIdAndCifNo(req.getPayeeId(), req.getCifNo());
            if (entity == null) {
                throw new CommonException("默認賬戶設置失敗,賬戶不存在");
            } else {
                Payee recommend = this.iPayeeRepository.findByCifNoAndRecommend(req.getCifNo(), 1);
                if (recommend != null) {
                    if (recommend.getPayeeId() == req.getPayeeId()) {
                        return;
                    }

                    recommend.setRecommend(0);
                    this.iPayeeRepository.save(recommend);
                }

                entity.setRecommend(1);
                this.iPayeeRepository.save(entity);
            }
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值