getMbSpecialByID($special_id,'*',true); if(empty($special_info)) { $err = ['code' => errcode::ErrParamter,'msg' => "该专题不存在"]; return false; } $special = new ugc\special($special_info); if($special->published()) { $err = ['code' => errcode::ErrParamter,'msg' => "文章发布之后,不可以编辑."]; return false; } $setting = new ugc\setting($setting,$special); $rule = $setting->format(); $rule['pubtime'] = time(); $ret = $mod_special->editUserSpecial($special_id,['special_id' => $special_id,'member_id' => session_helper::memberid()],$rule); if($ret != false) { $type = $setting->reader_type(); $spid = intval($special_id); QueueClient::push('onPublishSpecial',['user_id' => session_helper::memberid(),'specials'=> array(['type' => $type,'spid' => $spid])]); } return $ret; } public static function del_special($special_id,&$err) { $mod_special = Model('mb_special'); $special_info = $mod_special->getMbSpecialByID($special_id,'*',true); if(empty($special_info)) { $err = ['code' => errcode::ErrParamter,'msg' => "该专题不存在"]; return false; } $special = new ugc\special($special_info); if($special->memberid() != session_helper::memberid()) { $err = ['code' => errcode::ErrSpecial,'msg' => "您不能删除该内容"]; return false; } $ret = $mod_special->delMbSpecialByID($special_id); if($ret != false) { $type = $special->reader_type(); $spid = intval($special_id); QueueClient::push('onDelSpecial',['user_id' => session_helper::memberid(),'specials'=> array(['type' => $type,'spid' => $spid])]); return $ret; } else { $err = ['code' => errcode::ErrSpecial,'msg' => "删除失败"]; return false; } } public static function vote($special_id,$options,&$err) { $voter = new special_vote($special_id); if($voter->voted()) { $err = ['code' => errcode::ErrSpecial,"您已经投过票"]; return false; } else { $mod_special = Model('mb_special'); $special_info = $mod_special->getMbSpecialByID($special_id,'*',true); $special = new special($special_info); $vote_result = $voter->vote($options); if($vote_result != false) { $rule = $special->submit_rule(); if($rule != false) { $type_sn = $rule->make_bonus(1); return ['vote_result' => $vote_result,'type_sn' => $type_sn]; } } return ['vote_result' => $vote_result,'type_sn' => '']; } } public static function init_server() { $initer = new ugciniter(); $initer->init_fellows(); $initer->init_special(); } } class ugciniter { public function init_fellows() { $i = 0; while (true) { $start = $i * 1000; $items = Model()->table('member')->field('member_id,inviter_id')->order('member_id asc')->limit("{$start},1000")->select(); if(empty($items)) { return; } $i++; foreach ($items as $item) { $this->add_fellow($item['member_id'],$item['inviter_id']); } } } private function add_fellow($member_id,$inviter_id) { $member_id = intval($member_id); $inviter_id = intval($inviter_id); if($inviter_id > 0) { search\relation_client::instance()->add_follow(array('user_id' => $member_id,'friends'=>[$inviter_id])); search\relation_client::instance()->add_follow(array('user_id' => $inviter_id,'friends'=>[$member_id])); } if($member_id > 0) { $iRelation = new \relation\mem_relation($member_id); $follows = $iRelation->subscriber(); $uids = []; foreach ($follows as $val) { $uid = intval($val); if($uid > 0) { $uids[] = $uid; } } if(!empty($uids)) { search\relation_client::instance()->add_follow(array('user_id' => $member_id,'friends' => $uids)); } } if($member_id > 0) { $mod_member = Model('member'); $items = $mod_member->getMemberList(['inviter_id' => $member_id],'member_id'); $uids = []; foreach ($items as $val) { $uid = intval($val['member_id']); if($uid > 0) { $uids[] = $uid; } } if(!empty($uids)) { search\relation_client::instance()->add_follow(array('user_id' => $member_id,'friends' => $uids)); } } } public function init_special() { $i = 0; while (true) { $start = $i * 1000; $items = Model()->table('mb_special')->where(['from_user' => 1])->field('special_id,member_id,reader_type')->order('member_id asc')->limit("{$start},1000")->select(); if(empty($items)) { return; } $i++; foreach ($items as $item) { $this->add_special($item); } } } private function add_special($item) { $user_id = intval($item['member_id']); $special_id = intval($item['special_id']); $reader_type = intval($item['reader_type']); if($user_id >0 && $special_id > 0) { search\relation_client::instance()->add_special(array('user_id' => $user_id,'specials'=> [['type' => $reader_type,'spid' => $special_id]])); } } }