信贷业务(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 ...
随机推荐
- GitHub管理代码-随笔
公司一直用的SVN进行项目管理,平时便自己折腾了下Git,这里做下GitHub的最简单的记录... 在git上创建仓库等就免谈了,网上也有好多教程,直接从创建之后记录: 在github的readme文 ...
- 《Ansible权威指南》笔记(2)——Inventory配置
四.Inventory配置ansible通过Inventory来定义主机和组,使用时通过-i指定读取,默认/etc/ansible/hosts.可以存在多个Inventory,支持动态生成.1.定义主 ...
- 如何利用mono把.net windows service程序迁移到linux上
How to migrate a .NET Windows Service application to Linux using mono? 写在最前:之所以用要把windows程序迁移到Linux上 ...
- AutoMapper(五)
返回总目录 Dynamic和ExpandoObject映射 AutoMapper不用任何配置就可以从dynamic(动态)对象映射或映射到dynamic对象. namespace FifthAutoM ...
- 深入解析js异步编程利器Generator
我们在编写Nodejs程序时,经常会用到回调函数,在一个操作执行完成之后对返回的数据进行处理,我简单的理解它为异步编程. 如果操作很多,那么回调的嵌套就会必不可少,那么如果操作非常多,那么回调的嵌套就 ...
- 如何在 Visual Studio 中使用 Git 同步代码到 CodePlex
开源社区不管在国内还是国外都很火热,微软也曾因为没有开源而倍受指责,但是随着 .Net framework.ASP.Net MVC等框架的逐渐开源,也让大家看到了微软开源的步伐.CodePlex 则是 ...
- [转]keil使用详解
第一节 系统概述 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上.结构性.可读性.可维护性上有明显的优势,因而易学易用.用过 ...
- Android View.setId(int id) 用法
Android View.setId(int id) 用法 当要在代码中动态的添加View并且为其设置id时,如果直接用一个int值时,Studio会警告. 经过查询,动态设置id的方法有两种; 1. ...
- Vue 给子组件传递参数
Vue 给子组件传递参数 首先看个例子吧 原文 html <div class="container" id="app"> <div clas ...
- 使用Red Gate Sql Data Compare 数据库同步工具进行SQL Server的两个数据库的数据比较、同步
Sql Data Compare 是比较两个数据库的数据是否相同.生成同步sql的工具. 这一款工具由Red Gate公司出品,我们熟悉的.NET Reflector就是这个公司推出的,它的SQLTo ...