引言
进行完MyFlag的产品定位以及相关的核心功能之后,我们团队开始考虑到这个想法的落地。今天我们团队主要针对了以下几点进行了讨论:
- 具体需求的细化
- 根据需求初步确定mysql表,并进行相关优化
- 后台提供的功能以及接口规范
- 客户端的功能模块
- 相关框架、技术的初步确定
- 微信小程序的移植可行性(可选)
需求细化
初步需求获取之后完成的用例图如下:
- 整个系统只有用户这一个角色
- 用户首先可以进行注册账号并填写个人信息
- 注册之后才可以登录当前账号
- 登录才能退出
- 用户可以进行相关的设置,其中包括个人资料的设置比如用户名、性别、个性签名等,还可以进行密码的修改
- 用户的好友功能,可以添加好友和删除好友
- 对于核心功能MyFlag,可以新建一个Flag,同时可以邀请好友监督我的Flag并且设置监督奖励,根据每天的情况打卡接受好友的监督
- 社区功能可以显示我以及好友的Flag,并且可以主动申请成为好友某一个Flag的监督人,并且监督好友Flag的完成情况
MySql表
数据库中共包含六个表user(用户)表,friend(好友)表,flag(立的flag)表,member(团队成员)表,supervise(监督表),tempFriend(添加好友)表:
`CREATE TABLE `fg_flag` (
`fid` int(10) NOT NULL AUTO_INCREMENT,
`uid` int(10) NOT NULL,
`content` blob NOT NULL,
`award` blob NOT NULL COMMENT '奖励',
`achieve` tinyint(1) DEFAULT NULL COMMENT '是否完成',
`isTeam` tinyint(1) NOT NULL COMMENT '单人或团队',
`startTime` int(11) NOT NULL COMMENT '开始时间',
`endTime` int(11) NOT NULL,
`createTime` int(11) NOT NULL,
PRIMARY KEY (`fid`),
KEY `uid` (`uid`),
CONSTRAINT `uid` FOREIGN KEY (`uid`) REFERENCES `fg_user` (`uid`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;
CREATE TABLE `fg_friend` (
`aUid` int(11) NOT NULL COMMENT '邀请者',
`bUid` int(10) NOT NULL COMMENT '被邀请人',
`remark` varchar(10) CHARACTER SET latin1 DEFAULT NULL COMMENT '备注',
KEY `aUId` (`aUid`),
KEY `bUid` (`bUid`),
CONSTRAINT `aUId` FOREIGN KEY (`aUid`) REFERENCES `fg_user` (`uid`) ON DELETE CASCADE,
CONSTRAINT `bUid` FOREIGN KEY (`bUid`) REFERENCES `fg_user` (`uid`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `fg_member` (
`fid` int(10) NOT NULL,
`uid` int(10) NOT NULL,
PRIMARY KEY (`fid`,`uid`),
KEY `muid` (`uid`),
CONSTRAINT `mfid` FOREIGN KEY (`fid`) REFERENCES `fg_flag` (`fid`) ON DELETE CASCADE,
CONSTRAINT `muid` FOREIGN KEY (`uid`) REFERENCES `fg_user` (`uid`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `fg_supervise` (
`fid` int(10) NOT NULL,
`uid` int(10) NOT NULL,
`agree` smallint(1) DEFAULT '0' COMMENT '是否同意监管,0表示不确定,1失败,2成功',
`achieve` smallint(1) DEFAULT '0' COMMENT '是否完成',
`evaluate` blob COMMENT '评语',
`time` int(11) DEFAULT NULL COMMENT '评定时间',
PRIMARY KEY (`fid`,`uid`),
KEY `uid` (`uid`),
CONSTRAINT `fg_supervise_ibfk_1` FOREIGN KEY (`uid`) REFERENCES `fg_user` (`uid`) ON DELETE CASCADE,
CONSTRAINT `fid` FOREIGN KEY (`fid`) REFERENCES `fg_flag` (`fid`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `fg_tempfriend` (
`uid` int(10) NOT NULL,
`requestUid` int(10) NOT NULL,
`message` varchar(20) CHARACTER SET latin1 DEFAULT NULL,
`remark` varchar(10) CHARACTER SET latin1 DEFAULT NULL,
`agree` int(5) DEFAULT '0' COMMENT '1表示不同意',
PRIMARY KEY (`uid`,`requestUid`),
KEY `kl` (`requestUid`),
CONSTRAINT `kl` FOREIGN KEY (`requestUid`) REFERENCES `fg_user` (`uid`) ON DELETE CASCADE,
CONSTRAINT `ui` FOREIGN KEY (`uid`) REFERENCES `fg_user` (`uid`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;、
CREATE TABLE `fg_user` (
`uid` int(10) NOT NULL AUTO_INCREMENT,
`nickname` varchar(20) CHARACTER SET latin1 NOT NULL,
`password` varchar(20) CHARACTER SET latin1 NOT NULL,
`phone` bigint(11) NOT NULL,
`email` varchar(30) CHARACTER SET latin1 NOT NULL,
`information` text CHARACTER SET latin1,
`sex` varchar(10) DEFAULT '男',
PRIMARY KEY (`uid`,`phone`),
UNIQUE KEY `un` (`phone`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;
`
后台支持
根据需求可以将后台服务器所提供的功能大体分为以下几个方面:
- 关于用户
- 用户注册
- 用户登录
- 修改个人信息
- 修改密码
- 查找用户
- 关于添加好友
- 添加好友
- 确认添加好友
- 改变备注
- 我的朋友
- 获得好友请求列表
- 创建Flag
- 创立Flag
- 查看我的Flag
- 查看朋友Flag
- 删除Flag
- 处理要求监督Flag的要求
- 评价Flag
- 获得邀请我监督的请求
- 获得一个flag
- 获取我监督的flag
- 请求监督
- 确认别人的请求监督
- 得到别人想要申请监督我的flag的 消息列表
- 得到我申请监督别人的flag的 消息列表
具体的接口规范大致按照如下格式:
1 用户注册
URL:/user/Register
Parameter: nickname 用户昵称
password 用户密码
phone 手机号 (11位)
email 电子邮件
information 个人信息
sex 性别(男或者女 String类型 )
return:json格式的id(用户id)
2 登陆
URL:/user/Login
Parameter:
id 用户的id
password 用户密码
return:json格式的user
客户端功能模块
该系统许多操作都需要与服务器进行通信,而这些网络通信又都具有一定的共性,故将所有基本的网络通信方法封装在类util包下NetUtil类中,将具体处理留给实现了接口的子类来实现。
其中已经确定的功能模块有:
- 网络请求工具类,封装了与服务器通信的方法
- 登录
- 注册
- 创建Flag
相关框架、技术
- axure构件原型
- 安卓的界面使用materim design
- Retrofit2+OkHttp3+RxJava搭建网络框架
- daggar2依赖注入
- 服务器端与数据库连接的C3P0
微信小程序移植可行性(可选)
微信小程序,用一个不贴切的说法就是,微信内嵌web view 控件,本质上就是一个定制化的web浏览器,与普通浏览器相比只是增加了一些丰富的内部交互,比如可以轻松用户信息等等,以及可以存放独立缓存等数据,属于虚拟机范畴的优化。MyFlag清晰的逻辑结构以及功能完全可以移植进微信小程序。
总结
团队初步的将整体的框架设想出来并且经过充分的讨论达到一致的看法,仅仅是刚刚开始,有困难的日子还在后面,但我们相信我们一定可以逐步完成我们的项目。