最近有点想做一个会员系统-----什么网站都需要会员模块吧?所以抽时间设计了一下,并且将数据表的结构也放出来了---不过我尚未实现,实现起来麻烦,前端后端数据库,数据验证,读取存储都是问题,博主只有一个人,需要相当时间才能实现。废话不表,下面将个人的想法贴出来:
假如大家想知道如何得到领域模型,不妨分析每一个业务,然后写出来,再找关键字,然后将对象列出来,属性分别填入对象里面就ok了,不过博主懒,直接憋出一个表出来,下面就是数据了:
/*账号基础信息*/
id pk 自增
name varchar(20) 账号
pwd 密码
email varchar(20) 邮箱地址
/*账号状态控制*/
regTime Timestamp 注册时间
lastLoginTime TimeStamp 最近登陆时间
lastLoginIP varchar(20) 最近登陆IP
realName varchar(20) 真实名称
isLock tinyint(1) 是否锁定
isActive tinyint(1) 是否激活
activeCode varchar(40) 激活码
activeBeginTime timestamp 激活码有效期(开始)
activeEndTime timestamp 激活码有效期(结束)
loginFailedTimes tinyint(4) 连续登陆失败的次数
lastLoginFailedTime timestamp 最近登陆失败的时间
loginLimitation tinyint(1) 是否限制登陆
loginLimitBeginTime 限制登陆时间(开始)
loginLimitEndTime 限制登陆时间(结束)
/*账号详细信息*/
realName varchar(20) 真实姓名
idcard varchar(40) 身份证号
Mobile varchar(20) 手机号码
Telphone varchar(20) 座机号码
birthday timestamp 生日
hometown varchar(100) 家乡地址
remark varchar(200) 个人简介或者座右铭
/*账号额外信息*/
hasHeadPhoto tinyint(1) 是否有头像
headPhotoPath varchar(100) 头像路径
下面是部分业务解释:
用户列表特殊字段解释:
1、isActive,activeCode,activeBeginTime,activeEndTime:
这四个字段都用于激活账号,流程大约为:
A、用户新注册后,系统设置激活状态为false,生成激活码及激活码过期时间,保存到数据库方便用户激活时候核对;
B、系统将该激活码及需要激活的账号以url形式发送到用户邮箱;
c、用户点击该url激活账号,系统将判断需要激活账号是否已经激活,激活码是否正确,激活码是否过期,假如激活码过期则跳回步骤A,重新生成激活码及激活期限;
D、激活成功后修改数据库账号的激活状态,将其他三个参数更新为null。
2、限制登陆的流程:
A、系统判断账号是否被限制,假如是,判断登陆时间是否在限制期限内假如是,那么跳刀步骤B(1),否则跳到步骤B(2),假如否,那么跳到步骤C;
B(1)、不允许用户登陆,流程结束;
B(2)、修改账号状态,将限制登陆设为false,将限制登陆的两个时间都设为null,跳到步骤c进行一般验证;
C、判断用户的账号密码是否正确假如正确,那么登陆成功,修改最近登陆IP,最近登陆状态,流程结束,否则继续步骤D;
D、判断最近登陆失败时间是否在附近(譬如:这次登陆失败是今天12:01,而上次登陆失败时间是12:00,那么可以肯定是连续输入错误),假如不是附近,那么修改最近登陆失败时间为当前时间,修改失败次数为1,提示用户密码或账号错误。流程结束;假如是附近,那么修改最近登陆失败时间为当前时间,并且将连续登陆失败次数+1,然后判断是否已经到了最大失败次数,假如没到,提示登陆失败,流程结束;假如到了,那么修改限制登陆为true,修改限制登陆的两个时间,开始时间为当前时间,结束时间需要明确账号冻结时间才能确定---一般为30分钟,提示用户当前账号失败次数过多,请xx分钟后再试,然后流程结束。
看吧?一个简陋的会员系统就出现了?