-
Notifications
You must be signed in to change notification settings - Fork 0
数据库模型
Zhenfei You edited this page Apr 1, 2015
·
16 revisions
//组织用户
OrganizationUser
{
ObjectId _id, //用户id
String email,
String password,
Number phone, //联系人手机号码
String name, //组织名称
String type, //组织类型('校级组织','职能社团','院级组织','校级社团','院级社团')
String school, //大学内部的学院
String university, //大学(为了支持后期多个大学使用)
String logoUrl, //logo图片地址
Number internalOrder, //内部顺序,默认1000,000
String description, //组织介绍 200字以内
String photoUrl: ['xxx', 'xxxx'], //组织展示图片,0-3张可选
String weChat, //组织微信号
Date updatedAt, //更新时间
departments:
[
{
ObjectId id,
String name,
String description, //介绍,60字以内
Date updatdAt:
}
]
}
//微信用户
WeChatUser
{
ObjectId _id,
String uid, //微信提供的uid
Number sex, //0未知,1男,2女
String province,
String city,
String country,
String headImgUrl,
String privilege,
Date updatedAt,
String university, //所在大学
Number studentId,
String studentName,
Date verifiedDate, //完成学号密码验证的时间
histories:
[
{
String university,
Number studentId,
String studentName,
Date verifiedDate, //完成该学号密码验证的时间
Date updatedAt //更改认证信息的时间
}
] //记录用户更改认证的历史记录
}
//微信公众平台
WeChatMP
{
ObjectId _id,
DBRef organizationUid: {$ref: "orgUser", $id: _id},
String mpOriginId, //公众号原始id
String interfaceUrl,
String interfaceToken,
String interfaceKey, //用于AES加密的key
String appId,
String appSecret,
String redirectUri,
Date updatedAt,
autoReplies:
[
{
Number id,
Array keyword: ["", ""],
String type, // text | news,
String text, //文字内容,只有文字回复才有
news:
[
{
Number order //图文的顺序
String title, //标题
String description, //底部描述
String cover, //封面图片地址
String url, //指向的url
}
], //图文消息内容,只有图文回复才有,并且是一个array of WeChatMPNews, 不是内嵌文档
Date updatedAt
}
]
}
//团团一家服务号专用的活动二维码,所有项必填
WeChatEtuanQR
{
ObjectId _id,
String itemType, //项目类型
ObjectId itemId, //项目id
Number qrNumber, //二维码传递的参数
String imageUrl //二维码图片的url
}
//-------base models start--------
//以下内容用于继承,不公开包,含所有项目常用的共有属性
//项目基类
BaseItem
{
ObjectId _id,
String title, //表单标题,必填
String description, //对于本项目的文字说明,200字以内,可选
String logoUrl, //logo图片地址,每个表单一张logo,可选
String adPicture, //广告图片地址
String adUrl, //广告指向地址
String verifyRule, //验证规则,验证哪些人可以参与(后期再做)
Date updatedAt
DBRef organizationUid: {$ref: "organizationUser", $id: _id},
DBRef qrCode: {$ref: "WeChatEtuanQR", $id: _id}
}
//结果基类
BaseResult
{
ObjectId _id,
DBRef weChatUid: {$ref: "WeChatUser", $id: _id}, //用户id
String ip
}
//-------base models end---------
//表单(报名表,调查表)
//继承自BaseItem
Form
{
Date startTime,
Date stopTime,
questions:
[
{
Number id, //问题序号,从0开始,标记项目
Number type, //问题类型,采用数字编号,1表示选择题,2表示陈述题,3表示陈述题,4表示判断题
String label, //问题标签(题干)
Array content: ["", ""] //问题包含内容(例如选项),可选
}
]
}
//用户填写表单的结果
//继承自BaseResult
FormResult:
{
Date startTime,
Date stopTime,
DBRef formId: {$ref: "Form", $id: _id}, //对应的表单id
answers:
[
{
Number qestionId,
String content, //填写的内容
}
]
}
//投票
//继承自BaseItem
Vote
{
subitems:
[
{
Number id, //id,从0开始
String name, //投票项名称
String detailUrl, //投票详情链接
Number count //投票项获得的票数,默认为0,只有后台有权限更新
}
]
}
//用户填写表单的结果
//继承自BaseResult
VoteResult
{
DBRef voteId: {$ref: "Vote", $id: _id}, //对应的表单id
results:[ Number subitemId ] //一个数组,包含投票的内容
}
//秒杀
//继承自BaseItem
Seckill
{
arrangement: //秒杀场次安排
[
{
Number id, //id,从0开始
Date startTime, //开始时间
Date stopTime, //结束时间
Number total //秒杀总量
}
]
}
//秒杀结果
//继承自BaseResult,所有合法的参与者都会被记录,不管是否抢到
SeckillResult
{
DBRef seckillId: {$ref: "Seckill", $id: _id},
Number arrangementId,
Number verifyId,
Boolean isGet //是否抢票成功
}
//活动宣传
//继承自BaseItem
Activity
{
Date startTime,
Date stopTime,
String contentUrl //活动介绍详情内容,类似微信推送,使用UEditor
}