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. Entity Framework 教程——DBContext

    DBContext: 在之前的章节<创建实体数据模型>中,EDM为我们创建了SchoolDBEntities 类,它派生子System.Data.Entity.DbContext这个类,这 ...

  2. iOS 后台处理

    iOS 后台处理的常见用途 1.进入后台时候删除资源:应用处于挂起状态的时候所占用的资源越少,该应用被iOS终止的风险就越低.通过从内存中清理那些易于重新创建的资源,可以增加应用驻留内存的机会,因此可 ...

  3. Android 中的mvvm

    我们来了解一下MVVM模式与Databinding ,MVVM是一种模式,Databinding 是一种框架.DataBinding是一个实现数据和UI绑定的框架.而ViewModel和View可以通 ...

  4. Oracle Standard Error 列表

    今天,我特意从网上找了一些,以及自己平时总结的,关于错误编号和说明,平时我们在写项目的时候,往往是可能会出现下面这些错误,例如:违反唯一约束,无效的会话ID,等等.希望对大家有点帮助!可以看看,如果有 ...

  5. 第13章 Linux日志管理

    1. 日志管理 (1)简介 在CentOS 6.x中日志服务己经由rsyslogd取代了原先的syslogd服务.rsyslogd日志服务更加先进,功能更多.但是不论该服务的使用,还是日志文件的格式其 ...

  6. WinRT自定义控件第一 - 转盘按钮控件

    之前的文章中,介绍了用WPF做一个转盘按钮控件,后来需要把这个控件移植到WinRT时,遇到了很大的问题,主要原因在于WPF和WinRT还是有很大不同的.这篇文章介绍了这个移植过程,由于2次实现的控件功 ...

  7. (转)C++语言的15个晦涩特性

    原文链接: Evan Wallace   翻译: 伯乐在线- 敏敏 译文链接: http://blog.jobbole.com/54140/ 这个列表收集了 C++ 语言的一些晦涩(Obscure)特 ...

  8. 玩转Windows服务系列——Debug、Release版本的注册和卸载,及其原理

    Windows服务Debug版本 注册 Services.exe -regserver 卸载 Services.exe -unregserver Windows服务Release版本 注册 Servi ...

  9. ABP(现代ASP.NET样板开发框架)系列之10、ABP领域层——实体

    点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之10.ABP领域层——实体 ABP是“ASP.NET Boilerplate Project (ASP.NET样板 ...

  10. Maven pom文件常用配置,转载

    什么是POM Project Object Model,项目对象模型.通过xml格式保存的pom.xml文件.作用类似ant的build.xml文件,功能更强大.该文件用于管理:源代码.配置文件.开发 ...