$meta['condition']){ $state = 1; }elseif ($day == $meta['condition']){ $state = $row['is_receive']; }else{ $state = -1; } $award = \mt\Sign::getAward($meta); array_push($data,array( 'sign_id' => $meta['sign_id'], 'days' => $day, 'condition' => $meta['condition'], 'is_receive' => $state, // 'item_id' => $meta['item_id'], // 'item_num' => $meta['num'], 'award' => $award )); } $paramMeta = \mt\Parameter::getByName('sign_daily_duration'); $start_time = myself()->_getDaySeconds($row['createtime']); $end_time = myself()->_getDaySeconds($row['createtime'])+$paramMeta['param_value']*24*60*60; $this->_rspData(array( 'data' => $data, 'time' => array( 'start_time' =>$start_time, 'end_time' =>$end_time ) )); } //首次登录 签到活动开始 public function sign(){ // ...用户登录-login //用户是否有签到记录 if (SignLog::isSignRecord()){ //有签到记录 $row = SignLog::find(); $paramMeta = \mt\Parameter::getByName('sign_daily_duration'); $end_time = myself()->_getDaySeconds($row['createtime']) + $paramMeta['param_value']*24*60*60; //判断当前时间是否结束 并且 上次签到是否领取 并且 签到时间是否满足第二天签到 if (myself()->_getNowTime() < $end_time && $row['is_receive'] && $row['sign_time'] < myself()->_getNowDaySeconds() + 6*60*60){ if($row['sign_time'] > myself()->_getNowDaySeconds()){ return; } $fieldKv = array( 'days' => function(){ return "days + 1"; }, 'is_receive' => 0, 'sign_time' => myself()->_getNowTime(), 'modifytime' => myself()->_getNowTime() ); SignLog::update($fieldKv); } }else{ //未有签到记录 SignLog::create(); } } public function receive(){ $sign_id = getReqVal('sign_id', ''); $meta = \mt\Sign::get($sign_id); if (!$meta){ $this->_rspErr(1, 'sign_id param error'); return; } $row = SignLog::find(); if (!$row || $row['days'] != $meta['condition']){ $this->_rspErr(1, 'Condition not met'); return; } if ($row['is_receive']){ $this->_rspErr(1, 'Have received'); return; } $paramMeta = \mt\Parameter::getByName('sign_daily_duration'); $end_time = myself()->_getDaySeconds($row['createtime'])+$paramMeta['param_value']*24*60*60; if (myself()->_getNowTime() > $end_time){ $this->_rspErr(1, 'End of activity time'); return; } $addItems = \mt\Sign::getAward($meta); $awardService = new services\AwardService(); $propertyChgService = new services\PropertyChgService(); $this->_addItems($addItems, $awardService, $propertyChgService); $fieldKv = array( 'is_receive' => 1, 'modifytime' => myself()->_getNowTime() ); SignLog::update($fieldKv); $this->_rspData(array( 'award' => $awardService->toDto(), 'property_chg' => $propertyChgService->toDto(), )); } }