信贷业务(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、
信贷业务(Ali)的更多相关文章
- 爬虫研究-主要针对ali
公司一个同事想爬取ali的网页受挫,自己跟着尝试了下,发现存在anti-spdier.准备了解下反爬虫,看怎么处理ali. http://www.freebuf.com/news/topnews/96 ...
- HDU 4101 Ali and Baba
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4101 一看之下以为是博弈,后来分析才知道只是搜索题. 首先,我们需要从值为-1的位置由内向外搜索一次, ...
- Ali OSS 服务端签名并设置回调,客户端上传文件
一.最近做阿里云oss文件上传开发,一点收获分享给大家,帮助大家绕过一些坑.关于阿里云oss服务的介绍,我这里不做赘述了,可以查看阿里云OSS开发api文档. 在这里我主要介绍下,文件上传流程比较复杂 ...
- 几何入门合集 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个 ...
- 在 Ali Kubernetes 系统中,我们这样实践混沌工程
在传统的软件测试中,我们通常通过一个给定的条件来判断系统的反馈,通过断言来判断是否符合预期,测试条件和结果通常比较明确和固定.而混沌工程,是通过注入一些“不确定”因素,象放进了一群淘气的猴子,在系统资 ...
- docker-使用ali云加速
ali专用网络加速地址; https://yq.aliyun.com/articles/29941 使用ali加速 vim /etc/sysconfig/docker 添加: ADD_REGISTRY ...
- ali验证码推送接口调用
/** * 发送接口 * @param $info 发送信息的某些参数 * @return bool */ public function send($info) { $config = target ...
- ali数据分析面试题
表A结构如下 Member_ID --用户的Id,字符型 Log_time --用户访问页面时间,日期型(只有一天的数据) URL ---访问的页面地址,字符型 要求:提取每个用户访问的第一个U ...
- Microsoft.Baidu.Ali.语音识别/人脸识别
在第一篇博客里提过图片识别的底层.最精准的图片识别需要海量的数据磨炼.自己写的底层没有以亿为单位的数据支持其实也是个残废品. 此篇不是为了教学.而且在需要的时候抄下来就能用 在此介绍Microsoft ...
随机推荐
- Jvm 内存浅析 及 GC个人学习总结
从诞生至今,20多年过去,Java至今仍是使用最为广泛的语言.这仰赖于Java提供的各种技术和特性,让开发人员能优雅的编写高效的程序.今天我们就来说说Java的一项基本但非常重要的技术内存管理 了解C ...
- Flexible 弹性盒子模型之CSS flex-grow 属性
实例 让第二个元素的宽度为其他元素的三倍: div:nth-of-type(1){flex-grow:1;} div:nth-of-type(2){flex-grow:3;} div:nth-of-t ...
- 嵌入式&iOS:回调函数(C)与block(OC)回调对比
学了OC的block,再写C的回调函数有点别扭,对比下区别,回忆记录下. C的回调函数: callBack.h 1).定义一个回调函数的参数数量.类型. typedef void (*CallBack ...
- 【转】组件化的Web王国
本文由 埃姆杰 翻译.未经许可,禁止转载!英文出处:Future Insights. 内容提要 使用许多独立组件构建应用程序的想法并不新鲜.Web Component的出现,是重新回顾基于组件的应用程 ...
- Windows下Redis缓存服务器的使用 .NET StackExchange.Redis Redis Desktop Manager
Redis缓存服务器是一款key/value数据库,读110000次/s,写81000次/s,因为是内存操作所以速度飞快,常见用法是存用户token.短信验证码等 官网显示Redis本身并没有Wind ...
- MongoDB学习笔记三—增删改文档上
插入insert 单条插入 > db.foo.insert({"bar":"baz"}) WriteResult({ }) 批量插入 > db.fo ...
- μCos-ii学习笔记1_概述
一.μCos-ii _概述 网上关于μCosii的文章多不胜数,本人学习的过程中也参考了很多人的理解和想法,看的是卢有亮老师的<嵌入式实时操作系统-μC/OS原理与实践>(第2版),同时也 ...
- .NET面试题系列[7] - 委托与事件
委托和事件 委托在C#中具有无比重要的地位. C#中的委托可以说俯拾即是,从LINQ中的lambda表达式到(包括但不限于)winform,wpf中的各种事件都有着委托的身影.C#中如果没有了事件,那 ...
- Java中的Checked Exception——美丽世界中潜藏的恶魔?
在使用Java编写应用的时候,我们常常需要通过第三方类库来帮助我们完成所需要的功能.有时候这些类库所提供的很多API都通过throws声明了它们所可能抛出的异常.但是在查看这些API的文档时,我们却没 ...
- iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
--iOS多媒体 概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制, ...