方案一,將資金賬戶抽象出來
虛擬資金賬戶
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進制數)+ 時間戳
方案二,用戶表直接保存資金餘額
實際業務中,用戶並不會用到資金賬號,也不關心賬戶所屬機構,所以通常是在用戶表中增加一個“資金餘額”字段,用來直接保存資金餘額就可以了。