信贷业务(Ali)

摘要:
QuotaSource。toString()){returnCreditSource.bank_cmb;quotaSource.toString()),

1、信贷业务视角

  信贷业务主要有两个视角,借款人和出资机构。借款人关心借多少钱,还多少钱,多少利息;机构关心信贷资产风险,收益。

  领域模型上两个视角分开:个人--->账单、机构--->资产。出资机构可以多样化(机构对接)。多一个机构(多一种类型的对接)。账单--机构资产--机构对接。借记账务,贷记账务,资产账务,资信调查,信贷管理。

2、一达通·流水贷

  一达通·流水贷业务:面向使用一达通出口基础服务的客户,以出口额度积累授信额度的无抵押、免担保、纯信用贷款服务,该服务由**联合多家银行共同推出。下面流向图是业务的基本流程。

信贷业务(Ali)第1张

3、代码中减少if...else...的使用

在我们的代码中有很多是基于类型的不同而有不同的处理逻辑,最典型的,不同枚举类型的转换:

public static CreditSource convertCreditSource(Short quotaSource) {
        if (quotaSource == null) {
            return null;
        }
        if (StringUtils.equals(QuotaSourceEnum.CMBSX.getValue(), quotaSource.toString())) {
            return CreditSource.bank_cmb;
        }
        if (StringUtils.equals(QuotaSourceEnum.SUNSHINESX.getValue(), quotaSource.toString())) {
            return CreditSource.ecreditbao_sun;
        }
        if (StringUtils.equals(QuotaSourceEnum.CMBCREDITLOANSX.getValue(), quotaSource.toString())) {
            return CreditSource.creditloan_cmb;
        }
        if (StringUtils.equals(QuotaSourceEnum.CREDITBUY_BUYERSX.getValue(), quotaSource.toString())) {
            return CreditSource.creditbuy_buyer;
        }
        if (StringUtil.equals(QuotaSourceEnum.CREDITBUY_SELLERSX.getValue(), quotaSource.toString())) {
            return CreditSource.creditbuy_seller;
        }
        return null;
    }

如果可以将这段代码修改成如下方式,会不会看起来更简洁一些?

    public static CreditSource convertCreditSource(Short quotaSource) {
        if (quotaSource == null) {
            return null;
        }
        return QuotaSourceEnum.parse(quotaSource.toString()).getCreditSource();
    }

要实现这种修改,即我们需要改造如下QuotaSourceEnum枚举类:

    public enum QuotaSourceEnum {
        /** 保证金授信来源 **/
        BZJSX("1"),
        /** 即时到账下的行业授信 **/
        INSTANT_HYSX("2"),
        /** 账期交易下的行业授信 **/
        ZHANGQI_HYSX("3"),
        /** 关系授信 **/
        GXSX("4"),
        /** 协议授信 **/
        XYSX("5"),
        /** 招行授信 **/
        CMBSX("6"),
        /** 阳光授信 **/
        SUNSHINESX("7"),
        /** 招行贷款 **/
        CMBCREDITLOANSX("8"),
        /** 买家赊购买家授信 **/
        CREDITBUY_BUYERSX("9"),
        /** 买家赊购卖家授信 **/
        CREDITBUY_SELLERSX("10");

        String value;

        QuotaSourceEnum(String value){
            this.value = value;
        }

        public String getValue() {
            return value;
        }

        public void setValue(String value) {
            this.value = value;
        }

        public static QuotaSourceEnum parse(String value) {
            if (StringUtils.isBlank(value)) {
                return null;
            }
            for (QuotaSourceEnum quotaSource : QuotaSourceEnum.values()) {
                if (value.equals(quotaSource.value)) {
                    return quotaSource;
                }
            }
            return null;
        }
    }

修改成:

public enum QuotaSourceEnum {
    /** 保证金授信来源 **/
    BZJSX("1", null),
    /** 即时到账下的行业授信 **/
    INSTANT_HYSX("2", null),
    /** 账期交易下的行业授信 **/
    ZHANGQI_HYSX("3", null),
    /** 关系授信 **/
    GXSX("4", null),
    /** 协议授信 **/
    XYSX("5", null),
    /** 招行授信 **/
    CMBSX("6", CreditSource.bank_cmb),
    /** 阳光授信 **/
    SUNSHINESX("7", CreditSource.ecreditbao_sun),
    /** 招行贷款 **/
    CMBCREDITLOANSX("8", CreditSource.creditloan_cmb),
    /** 买家赊购买家授信 **/
    CREDITBUY_BUYERSX("9", CreditSource.creditbuy_buyer),
    /** 买家赊购卖家授信 **/
    CREDITBUY_SELLERSX("10", CreditSource.creditbuy_seller);
 
    final String value;
    final CreditSource creditSource;
 
    QuotaSourceEnum(String value, CreditSource creditSource){
        this.value = value;
        this.creditSource = creditSource;
    }
....
}

个人感觉使用Map的方式比这种if-else要简洁一些。还有字符串的比较,统一使用:

StringUtils.equals(str1, str2);
StringUtils.equalsIgnoreCase(str1, str2);

4、枚举类Enum中添加逻辑

  Enum中并不仅仅是一种枚举类型,它其实是一种特殊的类。比如在《Effective Java》中推荐使用enum来实现单例模式。既然作为类,我们就可以向它内部添加逻辑,把和它相关的逻辑放在它的内部,而不是仅仅把它作为枚举,然后在外部做if-else判断。比如我们代码中有如下的逻辑

5、

免责声明:文章转载自《信贷业务(Ali)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Entity Framework 学习第一天Linux--多网卡的7种Bond模式和交换机配置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Springboot 整合Jersey

  在查看EurekaServer 服务端代码时偶然看到Jersey这个东西,简单记录下。 1. 简介   Jersey是一个RESTFUL请求服务JAVA框架,与常规的JAVA编程使用的struts框架类似,它主要用于处理业务逻辑层。   1.X的版本是sun公司提供的独立的jar包,在2.X版本中已经将jersey融合到JavaSE中,在javax.w...

STM32 LED闪烁 初学笔记

LED的硬件电路 我的电路: LED 共阴极指的是LED共同的接点是GND(接地),而共阳极指的是LED共同的接点是电源。LED亮灯的条件是两端有电势差。 1.共阴极: 当LED另一端接入5V电源的时候,与另一端产生电势差因此会有电流从正极流到GND,最后会亮灯 当LED另一端接入0V的时候,则不会产生电势差也就不会亮灯。 优点是符合人类的正向思维,送...

MVC4 js里给对象赋值

如果需要用js给control传一个对象,那么对象的属性在c#的model必须加public,不然在js赋值时赋不了的,但是不报错,等你调试到control时,这些属性无聊如何都是null,这样会很郁闷的。 controller方法: [HttpPost] public JsonResult SaveSelectedAcPoint(Acu...

spring 状态机

前言:“状态机”见名知意,用状态去管理业务操作,打个比方:0~1岁(出生状态),1~3岁(认知状态),3~6岁(启蒙状态),6~22岁(学习状态),22~60(工作状态),60以后(退休状态),那么人一生成长经历则是(状态跳转):出生状态  -> 认知状态  -> 启蒙状态  -> 学习状态 ->  工作状态  -> 退休状态...

IDEA中导入多个包自动合并为星号

  IDEA中导入同一个包下的几个class会自动合并为星号,如下图。可以通过设置让其不自动合并为星号。 1、选择File→Settings→Editor→Code style→Java,再点击右边的Imports,将Class count to use import with '*'的数量调高即可。 还可以设置一些规则: Names count to...

springboot redis 监听过期key值事件

redis 中的key值过期后,触发通知事件   1、创建springboot工程,创建监听类   maven配置 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <ar...