1. 计费表/扣费表/账单表
fee
字段名 | 字段 | 类型 | 说明 |
---|---|---|---|
账户ID | uid | string | 这个计费的用户,这里用令牌里的own字段来做计费账户 |
应用ID | aid | string | 这个扣费的应用,这里用令牌里的aud字段来做计费应用 |
令牌ID | tid | string | 这个扣费的令牌,这里用令牌里的tid字段来做计费应用. 注意这个地方,如果登录令牌,要用一个常量"UsrToken"来代替。 |
动作 | action | string | 费用修改的动作。 |
服务名 | name | string | API名,存储对象,上行对象,下行对象,存储文件,上行文件,下行文件 |
服务数 | count | int | 成功的次数 |
状态 | state | int | 0=还没有扣费,1=扣费成功 |
状态 | stato | string | 0=还没有扣费,1=扣费成功 |
修前余额 | bal0 | int | 动作前余额 |
修后余额 | bal1 | int | 动作后余额 |
修改额度 | amount | int | 修改的额度 |
创建时间 | ctime | int | 创建时间 |
更新时间 | ctime | int | 更新时间 |
创建时戳 | cstamp | timestatmp | 创建时间 |
更新时戳 | cstamp | timestamp | 更新时间 |
创建时间 | ctime | int | 创建时间 |
更新时间 | ctime | int | 更新时间 |
创建时戳 | cstamp | timestatmp | 创建时间 |
更新时戳 | cstamp | timestamp | 更新时间 |
为什么计费表名是fee而不是bill?
因为除了扣费,这里面还有充值。那为什么不建两个表,分别表示fee和bill,那样,账户费用的变化就体现不出来。就无法同一个表表达。
那充值的时候,aid和tid字段怎么办?
充值的时候,这两个字段可以默认是常量值,或者充值本身的aid,tid。总之可以避免。充值的时候count必须是1
为什么要把令牌ID放到账单表?
因为大部分扣费场合都需要多令牌,在开发者的角度,自己开发的数据服务,算法服务,可以根据多令牌的方式分发给不同使用用户,令牌存在过期,废弃的情况。所以此时就存在保持应用ID不变,改变令牌的需求。
[!note|label=难道不能通过创建不同应用来应付这个情况吗?] 因为令牌是会被迫不断变化的,而在商业角度,需要一个不变化的扣费ID,这个时候就需要扣费应用ID来做。