微糖需求分析及功能分析

一、用户模块User

【用户表:User】

|字段|类型|默认值|描述
| ------------- |:-------------:|
|_id|ObjectId||默认生成的唯一Id|
|email|String||邮箱|
|nickname|String||昵称|
|password|String||密码|
|phone|String||手机号|
|sex|Number|0|性别:0-未知、1-男、2-女|
|birthday|Number|0|生日|
|qq|Number||QQ号|
|province|String||省份|
|city|String||城市|
|identity|Number||职业:0-未知、1-学生、2-已工作|
|company|String||公司|
|job|String||岗位:前端开发工程师、iOS开发工程师等等。|
|school|String||学校|
|profession|String||专业|
|intro|String||简介|
|WXQrcodeUrl|String||微信二维码地址|
|followingNum|Number|0|关注个数|
|followersNum|Number|0|粉丝个数|
|articlesNum|Number|0|文章总数(已发布的)
|wordsNum|Number|0|总字数(已发布的)
|likesNum|Number|0|喜欢的文章总数
|collLimitNum|Number|5|可创建的专题数量|
|collNum|Number|0|已创建的专题数量
|subNum|Number|0|订阅的专题数量
|subNoteNum|Number |0|订阅的文集数量
|notebooksNum|Number|0|创建的文集数量|
|headimgurl|String||用户头像地址|
|createTime|Number||加入时间|
|updateTime|Number||最后更新日期|
|resetTicket|String||重置密码Ticket|
|resetToken|String||重置密码token
|openid|String||用户微信OpenId|
|activeTicket|String||激活帐号Ticket
|activeToken|String||激活帐号token

【用户关系表:UserRelation】

|字段|类型|默认值|描述
| ------------- |:-------------:|
|_id|ObjectId||默认生成的唯一Id|
|followingId|ObjectId||发起关注用户Id|
|followerId|ObjectId||被关注用户Id|
|createTime|Number||文集创建时间|

【相关操作】

新增用户:User.newUser(email, nickname, password, callback)

根据用户Id查找用户信息:User.findUserById(_id, callback)
根据邮箱地址查找用户信息:User.findUserByEmail(email, callback)
根据用户昵称查找用户:User.findUsersByNickname(key, callback)

修改用户关注个数:User.updateFollowingNum(_id, num, callback)
修改用户粉丝个数:User.updateFollowersNum(_id, num, callback)
修改用户文章总数:User.updateArticlesNum(_id, num, callback)
修改用户总字数:User.updateWordsNum(_id, num, callback)
修改喜欢的文章数:User.updateLikesNum(_id, num, callback)
修改可创建的专题数量:User.updateCollLimitNum(_id, num, callback)
修改已创建的专题数量:User.updateCollNum(_id, num, callback)
修改订阅的专题数量:User.updateSubNum(_id, num, callback)
修改订阅的文集数量:User.updateSubNoteNum(_id, num, callback)
修改已创建的文集数量:User.updateNotebooksNum(_id, num, callback)

关注:新建一条关注记录,发起关注用户对应的关注个数+1,被关注用户对应的粉丝个数+1。
UserRelation.newOne(followingId, followerId, callback)
User.updateFollowingNum(followingId, 1, callback)
User.updateFollowersNum(followerId, 1, callback)

取消关注:删除一条关注记录,发起取消关注用户对应的关注个数-1,被关注用户对应的粉丝个数-1.
UserRelation.removeOne(followingId, followerId, callback)
User.updateFollowingNum(doc.followingId, -1, callback)
User.updateFollowersNum(doc.followerId, -1, callback)

分页查询我关注的:UserRelation.findFollowingsByPage(followingId, pageSize, pageStart, callback)
分页查询我的粉丝:UserRelation.findFollowersByPage(followerId, pageSize, pageStart, callback)

二、文集模块

【文集表:Notebook】

|字段|类型|默认值|描述
| ------------- |:-------------:|
|_id|ObjectId||默认生成的唯一Id|
|belongToUserId|ObjectId||文集作者Id|
|name|String||文集名字|
|articlesNum|Number|0|文集总文章数(已发布文章的总数)|
|wordsNum|Number|0|文集总字数(已发布文章的总字数)|
|subsNum|Number|0|文集总订阅数|
|createTime|Number|创建时系统时间|文集创建时间|
|updateTime|Number|创建时系统时间|文集更新时间|

【文集订阅表:NotebookSub】

|字段|类型|默认值|描述
| ------------- |:-------------:|
|_id|ObjectId||默认生成的唯一Id|
|belongToUserId|ObjectId||订阅者Id|
|belongToNotebookId|ObjectId||文集Id|
|createTime|Number|创建时系统时间|创建时间|

【相关操作】

新建文集:newNotebook(name, belongToUserId, callback)
删除文集:deleteNotebookById(_id, callback)

根据文集Id查询文集:findNotebookById(_id, callback)
根据文集名字查询文集:findNotebooksByName(name, callback)

修改文集名字:updateName(_id, name, callback)
修改文集总文章数:updateArticlesNum(_id, num, callback)
修改文集总字数:updateWordsNum(_id, num, callback)
修改文集总订阅数:updateSubsNum(_id, num, callback)

订阅文集:新建一条订阅记录,订阅者订阅的文集数量+1,对应文集总订阅数+1
NotebookSub.newNotebookSub(belongToUserId, belongToNotebookId, callback)
User.updateSubNoteNum(belongToUserId, 1, callback)
Notebook.updateSubsNum(belongToNotebookId, 1, callback)

取消订阅文集:删除一条订阅记录,订阅者订阅的文集数-1,对应文集总订阅数-1
NotebookSub.removeOneNotebookSub(belongToUserId, belongToNotebookId, callback)
User.updateSubNoteNum(belongToUserId, -1, callback)
Notebook.updateSubsNum(belongToNotebookId, -1, callback)

查询某用户创建的所有文集:findAllByUserId(userId, callback)
查找某用户创建的所有文集(文章数>=1):findAllByUserIdAnd(userId, callback)

三、专题模块

【专题表:Collection】

|字段|类型|默认值|描述
| ------------- |:-------------:|
|_id|ObjectId||默认生成的唯一Id|
|name|String||专题名|
|description|String||专题描述|
|sourceUrl|String||专题封面原图Url地址|
|mThumbnailUrl|String||专题封面中缩略图Url地址|
|sThumbnailUrl|String||专题封面小缩略图Url地址|
|tags|Array||专题标签|
|belongToUserId|ObjectId||关联用户Id
|subscriptionsNum|Number||专题被订阅次数|
|articlesNum|Numbe||专题下的文章数|
|createTime|Number||创建时间|
|updateTime|Number||最后更新时间|
|hasSub|Boolean|false|是否订阅,动态判断|

【专题订阅表:CollectionSub】

|字段|类型|默认值|描述
| ------------- |:-------------:|
|_id|ObjectId||默认生成的唯一Id|
|userId|ObjectId||关联用户Id
|collectionId|ObjectId||关联专题Id|
|createTime|Number||创建时间|

【相关操作】

新建专题:新建一个专题,相应用户创建的专题数+1
Collection.newCollection(name, description, sourceUrl, mThumbnailUrl, sThumbnailUrl, tags, belongToUserId, callback)
User.updateCollNum(belongToUserId, 1, callback)
删除专题:Collection.deleteCollectionById(_id, callback)

根据Id查询某个专题:Collection.findCollectionById(_id, callback)
根据专题名字查询专题:Collection.findCollectionsByName(name, callback)

更新专题信息:Collection.updateCollectionById(_id, name, description, sourceUrl, mThumbnailUrl, sThumbnailUrl, tags)
修改专题订阅次数:Collection.updateSubscriptionsNum(_id, num, callback)
修改专题下的文章数:Collection.updateArticlesNum(_id, num, callback)

订阅专题:新建一条专题订阅记录,订阅用户对应的专题订阅数+1,被订阅专题对应的总订阅数+1
CollectionSub.newCollectionSub(userId, collectionId, callback)
User.updateSubNum(userId, 1, callback)
Collection.updateSubscriptionsNum(collectionId, 1, callback)

取消订阅专题:删除一条订阅记录,订阅用户对应的专题订阅数-1,被订阅专题对应的总订阅数-1
CollectionSub.removeOneCollectionSub(userId, collectionId, callback)
User.updateSubNum(userId, -1, callback)
Collection.updateSubscriptionsNum(collectionId, -1, callback)

查询某用户创建的所有专题:findAllByUserId(userId, callback)

四、文章模块

【文章表:Article】

|字段|类型|默认值|描述
| ------------- |:-------------:|
|_id|ObjectId||默认生成的唯一Id|
|title|String||标题|
|content|String||内容(markdown)|
|intro|String||简介|
|status|Number|0|状态:0-草稿,1-发布|
|belongToUserId|ObjectId||文章作者Id|
|belongToNotebookId|ObjectId||文章所属文集Id|
|belongToCollectionIds|ObjectId数组||文章入选的专题Id数组列表|
|wordsNum|Number|0|文章字数|
|viewsNum|Number|0|文章被查看次数|
|likesNum|Number|0|文章被喜欢次数|
|commentsNum|Number|0|文章被评论次数|
|createTime|Number|Date.now()|创建日期|
|updateTime|Number|Date.now()|更新日期|

【文章喜欢表:ArticleLike】

|字段|类型|默认值|描述
| ------------- |:-------------:|
|_id|ObjectId||默认生成的唯一Id|
|belongToUserId|ObjectId||关联用户Id|
|belongToArticleId|ObjectId||关联文章Id|
|createTime|Number|Date.now()|创建日期|

【文章专题表:ArticleCollection】

|字段|类型|默认值|描述
| ------------- |:-------------:|
|_id|ObjectId||默认生成的唯一Id|
|belongToCollectionId|ObjectId||关联专题Id|
|belongToArticleId|ObjectId||关联文章Id|
|createTime|Number|Date.now()|创建日期|

【文章评论表:ArticleComment】

|字段|类型|默认值|描述
| ------------- |:-------------:|
|_id|ObjectId||默认生成的唯一Id|
|belongToArticleId|ObjectId||关联文章Id|
|belongToUserId|ObjectId||关联用户Id|
|content|String||评论内容|
|createTime|Number|Date.now()|创建日期|

【文章书签表:ArticleBookmark】

|字段|类型|默认值|描述
| ------------- |:-------------:|
|_id|ObjectId||默认生成的唯一Id|
|belongToUserId|ObjectId||关联用户Id|
|belongToArticleId|ObjectId||关联文章Id|
|createTime|Number|Date.now()|创建日期|

【相关操作】

新建文章:Article.newArticle(title, content, belongToUserId, belongToNotebookId, callback)
删除文章:Article.deleteArticleById(_id, callback)
删除某个文集下的所有文章:Article.deleteAllByNotebookId(belongToNotebookId, callback)

根据文章Id查询某个文章:Article.findArticleById(_id, callback)
根据文章名查询:Article.findArticlesByTitle(title, callback)
查询某个文集下的所有文章:Article.findAllByNotebookId(belongToNotebookId, callback)
查询某个文集下的所有文章(已发布):Article.findAllPublishedByNotebookId(belongToNotebookId, callback)

更新文章:Article.updateArticleById(articleId, title, content, intro, wordsNum, callback)
发布、取消发布文章:Article.updateStatus(_id, status, callback)

注意:
文集与文章的关系:一个文集可以有多篇文章,一篇文章只能属于一个文集。
专题与文章的关系:一个专题可以有多篇文章,一篇文章可以加入多个专题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容

  • # 一度蜜v3.0协议 --- # 交互协议 [TOC] ## 协议说明 ### 请求参数 下表列出了v3.0版协...
    c5e350bc5b40阅读 640评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,596评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,571评论 18 399
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,441评论 25 707
  • 时过境迁,很多事,如果再回到当初依然是美好。 马美丽——认识她的时候,正好是我应聘,她不是我的直属领导,却也算负责...
    苏穆凉阅读 243评论 0 0