Account Manager
用户管理,存放用户相关信息,包括基础信息,签到信息,等级,装备以及加成...
目录
基础信息/功能
用户的基础信息,在登陆的时候需要初始化用户信息
- 不需要存TG头像
- 存TG_id的nickname,第一次登陆的时候需要初始化,后续不需要更新
- 在第一次登陆的时候生成invite_code, 创建邀请者关系,邀请奖励
数据库 Account
| name | type | uniqueIndex | not null | default | description |
|---|---|---|---|---|---|
| telegram_id | int64/string | 1 | TelegramID | ||
| account_id | int64/string | 1 | 账号ID | ||
| nickname | string | 昵称 | |||
| avatar | string | 头像 | |||
| invite_code | string | 邀请码 | |||
| enable | bool | 启用 |
数据库 AccountBoundWallet(后期扩展)
| name | type | uniqueIndex | not null | default | description |
|---|---|---|---|---|---|
| account_id | int64/string | bound_wallet_unique | 1 | 账号ID | |
| ecology | AccountBoundWalletEcology | bound_wallet_unique | 1 | 钱包生态 | |
| chain | string | 1 | 钱包链 | ||
| chain_id | int64 | 1 | 钱包链ID | ||
| address | string | bound_wallet_unique | 1 | 钱包地址 |
枚举 AccountBoundWalletEcology(后期扩展)
| index | value |
|---|---|
| 0 | ETH |
| 1 | SOLANA |
Token
维护用户的登陆token,保证实效性,唯一性.
使用jwt生成token, 衍生: config.jwtSecret
- 利用
jwt过期时间自校验实效性衍生:config.jwtTimeout - 利用
Redis维持每个token的唯一登陆衍生:Redis
jwt中的内容
| name | description |
|---|---|
| account_id | 用户ID |
| exp | 过期时间 |
| iat | 签发时间 |
邀请功能
用户在登陆的时候如果携带invite_code,需要创建邀请者关系
绑定关系是一对多的关系,一个用户可以邀请任意人,但是只能被邀请一次
邀请关系是弱关联,通过数据库查询绑定者/被绑定着的account_id来获取邀请者/被邀请者列表
邀请奖励
邀请奖励在被邀请的时候根据邀请配置和是否是会员,给予不同奖励,奖励是实时发放
INFO
当前奖励是固定奖励,双方都会获得奖励,没有上限
数据库 account_referral
| name | type | uniqueIndex | not null | default | description |
|---|---|---|---|---|---|
| account_id | int64/string | 1 | 账号ID | ||
| inviter_code | string | 邀请者 | |||
| invitee_code | string | 被邀请者 | |||
| enable | bool | 启用 |
数据库 account_referral_config
| name | type | uniqueIndex | not null | default | description |
|---|---|---|---|---|---|
| reward | int | 奖励内容 |
签到信息
用户的签到信息,包括总签到次数,连续签到天数.
需要维护一个签到奖励表,表示已N天为一个循环,连续签到每天的奖励,断签或者N+1都相当于第一天的奖励
签到奖励在签到的时候根据签到奖励表,给予不同奖励.
数据库 account_checkin
TODO..
数据库 account_checkin_reward
TODO..