# member_server **Repository Path**: guyexiangyun/member_server ## Basic Information - **Project Name**: member_server - **Description**: init commit - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-07-12 - **Last Updated**: 2023-07-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 用户钱包 业务背景:电商业务中,需要给电商app设计一个用户钱包,用户可以往钱包中充值,购买商品时用户可以使用钱包中的钱消费,商品申请退款成功后钱会退回钱包中,用户也可以申请提现把钱提到银行卡中 用程序实现如下api接口 1. 查询用户钱包余额 2. 用户消费100元的接口 3. 用户退款20元接口 4. 查询用户钱包金额变动明细的接口 请给出建表语句和对应的代码(只要能实现上面api接口要求即可,不相关的表和代码不用写) 设计思路: 1. 一个用户(Member)可以绑定多个钱包(Account); 2. 支付时,支持多个钱包联合扣款,扣款顺序按照余额由多到少进行。 3. 退款时,支持多个钱包联合退款,退款顺序按照支付金额由多到少进行。 4. 每笔交易(支付、充值、退款)都会对应一条流水(Record),每种业务都有其对应的流水详情:支付(RecordAccountPay)、充值(RecordAccountRecharge)、退款(RecordAccountRefund)。详情中包含该类型业务特有字段。在一笔交易中,一个钱包的变动信息对应一条详情。由于存在联合支付、联合退款,所以支付和退款的流水可能存在多条详情。 5. 每条完成状态(status:finish)的流水都会产生余额变动记录(AccountLog)。一条余额变动记录只涉及一个钱包,所以一条完成状态的流水可能会产生多条余额变动记录。 接口: 1. 创建用户: /member/save 2. 创建钱包: /member/create-account 3. 支付:/account/pay 4. 充值:/account/recharge 5. 退款:/account/refund 6. 查询用户余额:/account/query/member-account 7. 查询用户余额变动记录:/account/query/member-account-logs