引言
我們MyFlag的創意很新穎,市面上目前還沒有與此同類的APP或者軟件,所以我們的在沒有相關的參考的情況下進行嘗試性的討論並將MyFlag的初步的雛形進行初步的構建。並且在開發過程中做好一系列的規定與規範。
我整理並且總結髮布的第二篇團隊博客:MyFlag Step2:APP雛形的展現以及相關規範
進行完MyFlag的產品定位以及相關的核心功能之後,我們團隊開始考慮到這個想法的落地。今天我們團隊主要針對了以下幾點進行了討論:
- 具體需求的細化
- 根據需求初步確定mysql表,並進行相關優化
- 後臺提供的功能以及接口規範
- 客戶端的功能模塊
- 相關框架、技術的初步確定
- 微信小程序的移植可行性(可選)
需求細化
初步需求獲取之後完成的用例圖如下:
- 整個系統只有用戶這一個角色
- 用戶首先可以進行註冊賬號並填寫個人信息
- 註冊之後纔可以登錄當前賬號
- 登錄才能退出
- 用戶可以進行相關的設置,其中包括個人資料的設置比如用戶名、性別、個性簽名等,還可以進行密碼的修改
- 用戶的好友功能,可以添加好友和刪除好友
- 對於核心功能MyFlag,可以新建一個Flag,同時可以邀請好友監督我的Flag並且設置監督獎勵,根據每天的情況打卡接受好友的監督
- 社區功能可以顯示我以及好友的Flag,並且可以主動申請成爲好友某一個Flag的監督人,並且監督好友Flag的完成情況
MySql表
數據庫中共包含六個表user(用戶)表,friend(好友)表,flag(立的flag)表,member(團隊成員)表,supervise(監督表),tempFriend(添加好友)表:
相應的E-R圖(暫未優化)如下:
`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) DEFA ULT '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清晰的邏輯結構以及功能完全可以移植進微信小程序。
總結
團隊初步的將整體的框架設想出來並且經過充分的討論達到一致的看法,僅僅是剛剛開始,有困難的日子還在後面,但我們相信我們一定可以逐步完成我們的項目。最後,初步確定了MyFlag的雛形,負責前臺頁面的我也有了界面間轉換的大體流程,下一步的任務就是前臺框架的選用和界面的設計。