admin_obj = Db::name('admin'); $this->journal_obj = Db::name('journal'); $this->article_obj = Db::name('article'); $this->article_author_obj = Db::name('article_author'); $this->article_ltai_obj = Db::name('article_ltai'); $this->journal_topic_obj = Db::name('journal_topic'); $this->journal_stage_obj = Db::name('journal_stage'); $this->journal_notices_obj = Db::name('journal_notices'); $this->journal_abs_obj = Db::name('journal_abstracting'); $this->journal_cfp_obj = Db::name('journal_cfp'); $this->journal_line_obj = Db::name('journal_line'); $this->article_to_topic_obj = Db::name('article_to_topic'); $this->article_to_line_obj = Db::name('article_to_line'); $this->journal_paper_obj = Db::name('journal_paper'); $this->journal_paper_art_obj = Db::name('journal_paper_art'); $this->subscribe_journal_obj = Db::name('subscribe_journal'); $this->subscribe_topic_obj = Db::name('subscribe_topic'); $this->super_danger_obj = Db::name('super_danger'); } /** * @title 获取期刊列表 * @description 获取期刊列表 * @author wangjinlei * @url /super/Publish/getMain * @method POST * * @return journals:期刊信息array# */ public function getMain(){ $journals = $this->journal_obj->where('state',0)->select(); foreach ($journals as $k => $v){ $journals[$k]['mark'] = $this->calMark($v['journal_id']); $last_stage = $this->journal_stage_obj ->where('journal_id',$v['journal_id']) ->where('is_publish',1) ->where('state',0) ->order('journal_stage_id desc') ->limit(1) ->select(); $stage_now = $last_stage?$last_stage[0]:['issue_date'=>'2020-05-15']; $ctime = strtotime($stage_now['issue_date']); $cs = []; $cs['issn'] = $v['issn']; $cs['ctime'] = $ctime; $cache_arts = $this->object_to_array(json_decode(myPost(self::JURL,$cs))); $journals[$k]['arts'] = $cache_arts['data']; $journals[$k]['artCount'] = count($cache_arts['data']); } $re['journals'] = $journals; return jsonSuccess($re); } /** * 自动任务存储危险值 */ public function autoDanger(){ $journals = $this->journal_obj->where('state',0)->select(); foreach ($journals as $k => $v){ $cah_res = $this->calMark($v['journal_id']); $insert['journal_id'] = $v['journal_id']; $insert['date'] = date('Ymd'); $insert['danger'] = $cah_res['mk']; $this->super_danger_obj->insert($insert); } } /** * @title 获取历史危险值 * @description 获取历史危险值 * @author wangjinlei * @url /super/Publish/getDangerHistory * @method POST * * @return dates:日期数组# * @return journals:期刊信息array# */ public function getDangerHistory(){ $dates = []; for ($index = 8; $index > 0; $index--) { $dates[] = date("Ymd",strtotime("-$index week Sunday")); } $re['dates'] = $dates; $journals = $this->journal_obj->where('state',0)->select(); foreach ($journals as $k => $v){ $fr = []; $cache = $this->super_danger_obj ->where('journal_id',$v['journal_id']) ->where('state',0) ->order('super_danger_id desc') ->limit(8) ->column('danger'); for($in=0;$in<8-count($cache);$in++){ $fr[] = 0; } foreach ($cache as $val){ $fr[] = $val; } $journals[$k]['ma'] = $fr; } $re['journals'] = $journals; return jsonSuccess($re); } public function test(){ echo strtotime('2021-02-24'); } public function index() { echo THINK_VERSION; } /** * 计算危险指数 */ private function calMark($journal_id){ $journal_info = $this->journal_obj->where('journal_id',$journal_id)->find(); $stages = $this->journal_stage_obj->where('journal_id',$journal_id)->where('is_publish',0)->where('state',0)->column('journal_stage_id'); $count = $this->article_obj->where('journal_stage_id','in',$stages) ->where('state',0) ->count(); $last_stage = $this->journal_stage_obj ->where('journal_id',$journal_id) ->where('is_publish',1) ->where('state',0) ->order('journal_stage_id desc') ->limit(1) ->select(); $stage_now = $last_stage?$last_stage[0]:['issue_date'=>'2020-05-15']; $cday = intval((time()-strtotime($stage_now['issue_date']))/(3600*24)); $cycle = $journal_info['cycle']==0?2:$journal_info['cycle']; $art_num = $journal_info['art_num']==0?5:$journal_info['art_num']; $frag = []; $frag['count'] = $count; $frag['sy'] = $cycle*30 - $cday; $frag['ntime'] = strtotime($stage_now['issue_date'])+($cycle*30*3600*24); if($cday>($cycle*30)){ $frag['mk'] = 100; return $frag; } $lart = intval($cday*$art_num/($cycle*30)); if($count>=$lart){ $frag['mk'] = 0; }else{ $frag['mk'] = intval(($lart - $count)*100/$art_num); } return $frag; } public function object_to_array($obj){ $_arr=is_object($obj)?get_object_vars($obj):$obj; $arr = null; foreach($_arr as $key=>$val){ $val=(is_array($val))||is_object($val)?$this->object_to_array($val):$val; $arr[$key]=$val; } return $arr; } }