钱包表用双主键:user表id和钱包类型。
钱包类型可以有余额、提现、待支付和优惠及提成收入等。
比如我们支付到商家买商品,是把我们的余额类型转到待支付,使用优惠券是增加优惠类型的金额;交易成功商户余额和用户提成账户收到待支付和优惠的转移。用户提成和优惠可以方便统计用户价值和获客及维护成本。
这样设计的好处:
1可以避免一些锁,比如用户充值和一个交易自动成功的同时执行,待支付和余额放同一行,就会有竞争,分开少考虑这部分锁的情况,方便一点,并发高一点。
2方便扩展,数据库加字段不方便,mysql会锁表。要加个白条功能或者理财功能,钱包类型表(能过外键限制类型)加一行就好了。用户申请相关功能然后用户id+相关类型插入一行就可以了。