[关闭]
@zhou333666 2017-03-30T08:56:28.000000Z 字数 4394 阅读 1109

设计方案集合

zhouja方案

平台

状态开关记录表

  • 对应表状态status增加禁用状态,值为4
  • 增加状态开关记录表ly_ban_his

表结构

列名 字段 类型 说明
id id long
目标类别 target_type VARCHAR(50)
目标Id target_id long
类型 type int 禁用:4,启用:1
说明 instruction varchar(1000)
创建时间 createtime date

账单

流程

  • 每个账期的账单明细的结算周期会在下个账期初始时间结算,生成账单,账单的金额是账单明细的金额的总和。账期目前为一个月。
Created with Raphaël 2.1.2账单明细下个账期初始时间生成账单

表结构

  • 账单表 Bill
  • 账单表 BillDetail

财务管理

账户

流程

  • 账户的金额转入、转出,要有对应的账户明细记录。转入时,账单明细的金额为正数;转出时,账单明细的金额为负数
  • 账户的金额转入的一种情况:每个账期生成的账单的金额,会打款到账户中
流程图
Created with Raphaël 2.1.2金额转入、转出账户生成账户明细更改账户金额转入、转出账户完成

表结构

账户表
  • 表名 ly_finance_account java类名 account
列名 字段 类型 说明
id id long
目标类型 target_type VARCHAR(50) 目标类型:商户,服务员
目标id target_id long
总金额 amount bigDecimal(15,2)
冻结金额 freeze_amt bigDecimal(15,2) 可提现金额 = 总金额 - 冻结金额,冻结金额初始化为0.00元
修改时间 update_time date
创建时间 createtime date
账户状态 status int 生效:1,冻结:2,注销:3
账户明细表
  • 表名 ly_finance_account_detail java类名 accountDetail
列名 字段 类型 说明
id id long
账户Id account_id long
相关类型 relevant_type VARCHAR(50)
相关Id relevant_id long
金额 amount bigDecimal(15,2)
备注 remark VARCHAR(1000)
创建时间 createtime Date
状态 status int

提现

  • 提现方式: 手动,自动。
  • 手动,自动都有最低额度限制
  • 用户提现资格:手动,账户的金额大于最低额度限制

流程

  • 手动提现:当账户的金额大于最低额度限制,用户可以申请提现,生成申请提现单,平台财务人员根据申请提现单进行打款
  • 自动提现:每月初,当账户的金额大于最低额度限制,则自动生成申请提现单,平台财务人员根据申请提现单进行打款
手动提现流程图
Created with Raphaël 2.1.2申请提现判断提现资格 生成提现申请单,交易状态:提现申请中生成账户明细。改变账户金额,账户金额=账户金额-提现金额财务人员打款设置流水号,状态为提现成功yes
自动提现流程图
Created with Raphaël 2.1.2每月初查询每个账户符合提现 生成提现申请单,交易状态:提现申请中生成账户明细。改变账户金额,账户金额=账户金额-提现金额财务人员打款状态更改为打款中打款成功。财务人员设置流水号。状态为提现成功yes

表结构

  • 表名 ly_finance_withdraw java类名Withdraw
列名 字段 类型 说明
id id long
目标类型 target_type VARCHAR(50)
目标Id target_id long
交易号 trade_no VARCHAR(100) 打款流水号
提现方式 method VARCHAR(50) WX,Alipay
提现账号 account VARCHAR(50)
金额 amount bigDecimal(15,2)
备注 remark VARCHAR(1000)
创建时间 createtime Date
状态 status int 申请中:1,打款中:2,提现成功:3,提现失败:4

信息变更历史记录

表结构

  • 表名 change_his
  • 变更信息的格式:json类型。
    例如{status=1, status_n=2, name='wang',name_n='ya'}
    表示status由1变2,name由'wang'变'ya'
列名 字段 类型 说明
id id long
目标类别 target_type varchar(50) 变更数据java的类名
目标id target_id long 变更数据的id
变更信息 info text 变更信息
操作人 operatorId long
创建时间 createtime date

消息通知

  • 用户做出某一行为时,要给其发送消息,像用户购物发货;或者平台要向用户告知,像平台促销活动。有些信息保留到用户的信息记录中,我们称之为持久化信息;有些信息不必让用户看到以及匿名的信息,我们称之为非持久化信息。
  • 消息通知涉及4张表:模板表、消息表,我的消息表,消息记录表
    模板表:发送用户消息的模板内容,以及发送消息的渠道
    消息表:记录发送后持久化消息的内容
    我的消息表:记录消息的接收者,已读状态,与消息表关联。
    消息记录表:记录非持久化,持久化的消息。

模板

  • 模板有短信,微信,app,邮件,持久化等
  • 持久化模板主要用于保存消息记录,用来在“我的消息”记录展示
  • 模板有category信息,对模板进行分类。比如系统,购物,惠民,商户。运营制订。
/ 模板号 标题 概要 内容 链接
app
wx
短信
邮件
持久化消息 可选择 可选择

表结构增加字段

列名 字段 类型 说明
app消息模板标题 app_tpl_title varchar(100)
app消息模板文本 app_tpl_text varchar(1000)
邮件消息模板标题 mail_tpl_title varchar(100)
邮件消息模板文本 mail_tpl_text varchar(1000)
分类 category varchar(50)
持久化消息模板标题 app_tpl_title varchar(100)
持久化消息模板概要 app_tpl_summary varchar(1000)
消息模板文本 persist_tpl_text varchar(1000)
消息模板链接 persist_tpl_url varchar(1000)

我的消息

  • 用户个人消息

表结构

  • 表名 ly_my_message
列名 字段 类型 说明
id id long
相关类型 relevant_type varchar(50) 关联角色类型,如用户、服务员、商户
相关id relevant_Id long 关联角色编号
messageId message_Id long 关联消息表
已读 has_read boolean true:已读,false:未读
创建时间 createtime datetime
状态 status int

消息

  • 消息详情

表结构

  • 表名 ly_message
列名 字段 类型 说明
id id long
类型 type int 群发,单发
标签 tag varchar(50) 标记不同的群体。类型群发专用
分类 category varchar(50) 同模板的category
标题 title varchar(1000)
内容 content varchar(1000)
网址 url varchar(1000)
定时发送时间 sendtime datetime 发送时间表示在未来某一个时间发送该消息,适用于群发
创建时间 createtime datetime

消息推送

  • 记录用户持久化,非持久化的消息
  • 表结构待整理,由于发送消息是动态变化的,无法适应于群发消息

表结构

  • 表名 ly_push_message
列名 字段 类型 说明
id id long
接收者 receivers varchar(5000) 接收者,json格式
渠道 channel varchar(50) app,WX,SMS,MAIL
模板 tpl varchar(5000) 模板相关信息,json格式
过期时间 expiredtime datetime 默认三分钟,运营定
创建时间 createtime datetime
状态 status int 已发送、未发送、发送失败

消息通知业务逻辑

  • 消息通知流程
    1)通知消息队列要给某一用户或某一群体发送消息
    2)消息记录在“消息推送”表中,状态为未发送
    3)消息发送
    4)发送成功后,如果是app推送的,记录在“我的消息”,“消息”表中,表中标题字段存放的是持久化消息的模板
    5)“消息推送”表中,状态为已发送
    6)如果发送失败,“消息推送”表中,状态为发送失败
  • 消息已读流程
    1)“我的消息”、“系统消息”数据新建时,对应的“消息状态”为空,所以消息为未读状态
    2)用户点击消息后,后台在“消息状态”新增对应的数据,则代表消息已读
  • “消息推送”一项作用
    当消息的状态为未发送、发送失败,可以再一次向用户发送。可以满足不是非常及时的消息通知。

操作行为记录

业务逻辑

  • 用来记录数据的新增,更改,删除,导入导出的操作行为
  • 当表中关键的信息变更时,需要记录变更的信息
    使用注解做 在service的update方法上使用注解
    更新数据时,大家要养成使用service的update方法
  • 变更信息的格式:json类型
列名 字段 类型 说明
id id long
相关类型 relevant_type varchar(50) 操作角色类型,如用户、服务员、商户,运营人员
相关id relevant_Id long 操作角色编号
bizType biz_type varchar(50) 操作对象
bizId biz_id long
操作行为 action varchar(50) create,update,delete,import,export
输入文本 input_content text json格式,数据变更前的结果
输入附件 input_attach varchar(200) json格式,{name:文件名,url:文件绝对路径}
操作结果 result boolean
输出文本 output__content text json格式,数据变更后的结果
输出附件 output_attach varchar(200) json格式,{name:文件名,url:文件绝对路径}
创建时间 createtime datetime

例子

类型 bizType bizId 操作行为 输入文本 输入文本附件 操作结果success 结果内容 结果内容附件
提现文件导出 withdraw export true 路径名
提现文件导入成功 withdraw import 路径名 true
提现文件导入失败 withdraw import 路径名 false {数据格式}
用户地址更改 user userId update {数据格式} true {数据格式}

思考问题

* 群发动态内容如何实现
* 消息推送表结构需要更改

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注