• 信贷业务(Ali)


    1、信贷业务视角

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

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

    2、一达通·流水贷

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

    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、

  • 相关阅读:
    check the manual that corresponds to your MySQL server version for the right syntax to use near 'desc
    Invalid bound statement (not found): com.example.managerdemo.mapper.SingleTableMapper.selectAllValuesByConditionsNoPage
    Aspose.words Java基于模板生成word之循环图片
    Aspose.words Java基于模板生成word之纯文本内容
    spring boot之创建web项目并访问jsp页面
    Google APAC----Africa 2010, Qualification Round(Problem B. Reverse Words)----Perl 解法
    Google APAC----Africa 2010, Qualification Round(Problem A. Store Credit)----Perl 解法
    Perl学习笔记(3)----遍历哈希表的一个容易疏忽的地方
    Perl学习笔记(1)----入门
    Perl学习笔记(2)----正则表达式数字匹配的一个疏忽
  • 原文地址:https://www.cnblogs.com/RunForLove/p/5778890.html
Copyright © 2020-2023  润新知