文章目录
- 方案一,将资金账户抽象出来
- 虚拟资金账户
- 余额流水记录实体
- 方案二,用户表直接保存资金余额
- 余额流水记录实体
方案一,将资金账户抽象出来
虚拟资金账户
P.S. 如果机构代码和消费代码有区分类型,那么资金账户表中就不必保存“账户所属机构ID”、“账户所属机构类型”、“账户所有者ID”、“所有者类型”,只要保存“账户所属机构代码”和“账户所有者代码”就可以了
- 资金账号
其中第1-7位账户所属机构代码,第8-15位为顺序位,第16位为校验位。
机构代码的第一位,为机构类型,代表机构所属类型,目前系统有四种类型:
机构类型代码 | 机构类型名称 |
---|---|
1 | 租户 |
2 | 商城 |
3 | 店铺 |
4 | 供应商 |
- 校验码算法
校验码采用LUHN算法,亦称模10算法。计算方法如下:
第一步:从右边第1个数字开始每隔一位乘以2;
第二步: 把在第一步中获得的乘积的各位数字相加,然后再与原号码中未乘2的各位数字相加;
第三步:对于第二步求和值中个位数求10的补数,如果个位数为0则该校验码为0。
举例:625965087177209(不含校验码的账号)
第一步:6 * 2=12,5 * 2=10,6 * 2=12,0 * 2=0,7 * 2=14,7 * 2=14,2 * 2=4,9 * 2=18
第二步:1+2 + 1+0 + 1+2 + 0 + 1+4 + 1+4 + 4 + 1+8 = 30
30 + 2+9+5+8+1+7+0 = 62
第三步:10-2=8
所以,校验码是8,完整的账号应该是6259650871772098。
余额流水记录实体
- 流水类型:
货款转入(01)
佣金转入(02)
返现转入(03)
退款转入(04)
消费转出(05)
奖励转入(06)
充值转入(07)
提现转出(08)
- 流水备注:
关联的单据ID保存在该字段中,例如:销售入账关联销售货款结算单,就保存结算单ID;消费关联销售单,就保存销售单ID;提现关联提现单,就保存提现单ID…
- 流水编号
流水类型代码+设备ID(即MAC地址,转换成10进制数)+ 时间戳
方案二,用户表直接保存资金余额
实际业务中,用户并不会用到资金账号,也不关心账户所属机构,所以通常是在用户表中增加一个“资金余额”字段,用来直接保存资金余额就可以了。