通过前端的开发,我拿到了的页面是这个样子的
很明显页面中的活动标题,活动开始时间都是来自于数据库的读出然后直传就可以了,然后我们看到,还有三个内容是不可以直接传的,分别是:图标,活动是否满额,活动的状态。
1.图标(activityType)
图标喇叭的意思是活动是用户召集的,图标放大镜的意思是活动是用户参与的,这个逻辑很简单,因为我们的后台数据库里有两个集合,activity集合和signupInfo集合,activity集合里面存着用户发起活动的信息,signupInfo里面则是用户报名活动的信息,当有关这条记录的内容是从哪个集合取出来的,我们就给相应的activityType这个变量赋予一个状态参数(activityType: 0-我召集的,1-我参与的),所以当activityType为0时对应图标是喇叭,为1则是放大镜
2.活动是否满额(quota)
quota是判断此活动是活动人员是否满额的检测(quota: 0-未满额,1-满额),正如我上面所说,所有的报名者信息都存在signupInfo集合里,这个最简单的想法是,你拿着活动去数据库里一个个看,有多少人报了此活动。在我们的signupInfo集合里,唯一能与用户与活动搭上钩的就是这个活动的id了,这个活动id并不是我们设定的,它是创建者创建活动存在activity集合里的id
我们拿出这条id,让报名者报名的时候,存在于报名者的报名信息中。
当我们在进行活动遍历时,每一个活动的quota 值,通过数据库查询方法,拿activityId对signupInfo集合进行查找遍历,合适的我们进行记录下来,当所报名的人数超过members_limit用户设定的值时,我们对该活动的quota 赋上我们的状态参数
3.活动的状态(activityStatus)
活动状态的状态逻辑值(0-正在报名中,1-报名截止,2-活动开始,3-活动结束)
先说一下,因为我们之前的时间方法的问题,我们存在数据里的时间都是一个长度为5的数组,通过.join("-") 这个方法,我们可以把数组串起来进行比较
因为年份只有两位,所有我给每个年份之前拼接了“20” 来 把他凑成一个正常的年份时间
前面的时间获取工作已经做好了,下面就是比较确认时间状态了
if(现在时间<活动结束时间) {
活动已经结束
} else {
//活动没有结束
if((活动报名时间<活动开始时间)&&(活动开始时间<活动结束时间)) {
活动进行中
}
if(活动报名时间<现在时间) {
报名截止
}
if(活动报名时间>现在时间) {
报名中
}
}
到时我们只需要在打印的同时,给activityStatus赋值上它的逻辑关系值就好了