$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, '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 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); $gold = 0; foreach ($addItems as $item){ if ($item['item_id'] == V_ITEM_GOLD){ $gold += $item['item_num']; } } $awardService = new services\AwardService(); $propertyChgService = new services\PropertyChgService(); $this->_addItems($addItems, $awardService, $propertyChgService); if ($gold > 0){ //埋点 $event = [ 'name' => LogService::SIGN_AWARD, 'val' => $gold ]; LogService::productGold($event); } $fieldKv = array( 'is_receive' => 1, 'modifytime' => myself()->_getNowTime() ); SignLog::update($fieldKv); $this->_rspData(array( 'award' => $awardService->toDto(), 'property_chg' => $propertyChgService->toDto(), )); } }