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、

信贷业务(Ali)的更多相关文章

  1. 爬虫研究-主要针对ali

    公司一个同事想爬取ali的网页受挫,自己跟着尝试了下,发现存在anti-spdier.准备了解下反爬虫,看怎么处理ali. http://www.freebuf.com/news/topnews/96 ...

  2. HDU 4101 Ali and Baba

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4101 一看之下以为是博弈,后来分析才知道只是搜索题. 首先,我们需要从值为-1的位置由内向外搜索一次, ...

  3. Ali OSS 服务端签名并设置回调,客户端上传文件

    一.最近做阿里云oss文件上传开发,一点收获分享给大家,帮助大家绕过一些坑.关于阿里云oss服务的介绍,我这里不做赘述了,可以查看阿里云OSS开发api文档. 在这里我主要介绍下,文件上传流程比较复杂 ...

  4. 几何入门合集 gym101968 problem F. Mirror + gym102082 Problem F Fair Chocolate-Cutting + gym101915 problem B. Ali and Wi-Fi

    abstract: V const & a 加速 F. Mirror 题意 链接 问题: 有n个人在y=0的平面上(及xoz平面).z=0平面上有一面镜子(边平行于坐标轴).z=a平面上有q个 ...

  5. 在 Ali Kubernetes 系统中,我们这样实践混沌工程

    在传统的软件测试中,我们通常通过一个给定的条件来判断系统的反馈,通过断言来判断是否符合预期,测试条件和结果通常比较明确和固定.而混沌工程,是通过注入一些“不确定”因素,象放进了一群淘气的猴子,在系统资 ...

  6. docker-使用ali云加速

    ali专用网络加速地址; https://yq.aliyun.com/articles/29941 使用ali加速 vim /etc/sysconfig/docker 添加: ADD_REGISTRY ...

  7. ali验证码推送接口调用

    /** * 发送接口 * @param $info 发送信息的某些参数 * @return bool */ public function send($info) { $config = target ...

  8. ali数据分析面试题

    表A结构如下 Member_ID   --用户的Id,字符型 Log_time  --用户访问页面时间,日期型(只有一天的数据) URL ---访问的页面地址,字符型 要求:提取每个用户访问的第一个U ...

  9. Microsoft.Baidu.Ali.语音识别/人脸识别

    在第一篇博客里提过图片识别的底层.最精准的图片识别需要海量的数据磨炼.自己写的底层没有以亿为单位的数据支持其实也是个残废品. 此篇不是为了教学.而且在需要的时候抄下来就能用 在此介绍Microsoft ...

随机推荐

  1. [OC] NSURLSession

    有的程序员老了,还没听过NSURLSession 有的程序员还嫩,没用过NSURLConnection 有的程序员很单纯,他只知道AFN. NSURLConnection在iOS9被宣布弃用,NSUR ...

  2. oracle常用函数及示例

    学习oracle也有一段时间了,发现oracle中的函数好多,对于做后台的程序猿来说,大把大把的时间还要学习很多其他的新东西,再把这些函数也都记住是不太现实的,所以总结了一下oracle中的一些常用函 ...

  3. 【Star CCM+实例】开发一个简单的计算流程.md

    流程开发在CAE过程中处于非常重要的地位. 主要的作用可能包括: 将一些经过验证的模型隐藏在流程中,提高仿真的可靠性 将流程封装成更友好的界面,降低软件的学习周期 流程开发实际上需要做非常多的工作,尤 ...

  4. Struts的文件上传下载

    Struts的文件上传下载 1.文件上传 Struts2的文件上传也是使用fileUpload的组件,这个组默认是集合在框架里面的.且是使用拦截器:<interceptor name=" ...

  5. Thinking in Unity3D:基于物理着色(PBS)的材质系统

    关于<Thinking in Unity3D> 笔者在研究和使用Unity3D的过程中,获得了一些Unity3D方面的信息,同时也感叹Unity3D设计之精妙.不得不说,笔者最近几年的引擎 ...

  6. [转载]:STM32为什么必须先配置时钟再配置GPIO

    转载来源 :http://blog.csdn.net/fushiqianxun/article/details/7926442 [原创]:我来添两句,就是很多同学(包括我)之前搞低端单片机,到了stm ...

  7. node之path模块

    node之path模块 原文链接 //引用该模块 var path = require("path"); 1.路径解析,得到规范化的路径格式 对window系统,目录分隔为'', ...

  8. WCF学习之旅—基于ServiceDebug的异常处理(十七)

    WCF学习之旅—WCF中传统的异常处理(十六) 二.基于ServiceDebug的异常处理 从前面的示例中,可以看到客户端捕获了异常,这是我们处理异常的前提.为了有利于我们进行有效的调试,WCF提供了 ...

  9. Qt5 开发 iOS 应用之访问 SQLite 数据库

    开发环境: macOS 10.12.1 Xcode 8.1 Qt 5.8 iPhone 6S+iOS 10.1.1   源代码: 我在 Qt 程序里指定了数据库的名称来创建数据库,在 Win10.An ...

  10. 【.net 深呼吸】将目录树转化为文本

    大伙都知道,文件系统是树形结构的,有时候我们会想到把目录的层次结构变为纯文本形式,就像这样: ├─Windows-universal-samples-master │ ├─Samples │ │ ├─ ...