20201112
This commit is contained in:
@@ -38,6 +38,7 @@ class Publish extends Controller{
|
||||
protected $board_obj = '';
|
||||
protected $board_group_obj = '';
|
||||
protected $visit_log_obj = '';
|
||||
protected $article_cite_obj = '';
|
||||
|
||||
public function __construct(\think\Request $request = null) {
|
||||
parent::__construct($request);
|
||||
@@ -62,6 +63,7 @@ class Publish extends Controller{
|
||||
$this->board_obj = Db::name('board');
|
||||
$this->board_group_obj = Db::name('board_group');
|
||||
$this->visit_log_obj = Db::name('visit_log');
|
||||
$this->article_cite_obj = Db::name('article_cite');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -257,6 +259,7 @@ class Publish extends Controller{
|
||||
*/
|
||||
public function addVisitNum(){
|
||||
$data = $this->request->post();
|
||||
// $data['type'] = 1;
|
||||
$data['is_detail'] = isset($data['is_detail'])?$data['is_detail']:0;
|
||||
$up_id = 0;
|
||||
if($data['type']=='de'){//数据库访问
|
||||
@@ -280,7 +283,7 @@ class Publish extends Controller{
|
||||
}
|
||||
}
|
||||
else{//期刊访问
|
||||
$res = $this->visit_log_obj->where('type',$data['type'])->where('stime',date('Ym'))->find();
|
||||
$res = $this->visit_log_obj->where('type',$data['type'])->where('is_detail',0)->where('stime',date('Ym'))->find();
|
||||
if($res==null){
|
||||
$insert['type']= $data['type'];
|
||||
$insert['stime'] = date('Ym');
|
||||
@@ -524,4 +527,222 @@ class Publish extends Controller{
|
||||
}
|
||||
return $arr;
|
||||
}
|
||||
|
||||
/**
|
||||
* @title 获取全部期刊
|
||||
* @description 获取全部期刊
|
||||
* @author wangjinlei
|
||||
* @url /super/Publish/getAllJournals
|
||||
* @method POST
|
||||
*
|
||||
* @return journals:期刊列表#
|
||||
*/
|
||||
public function getAllJournals(){
|
||||
$list = $this->journal_obj->where('state',0)->select();
|
||||
|
||||
$re['journals'] = $list;
|
||||
return jsonSuccess($re);
|
||||
}
|
||||
|
||||
/**
|
||||
* @title 获取引用数据统计
|
||||
* @description 获取引用数据统计
|
||||
* @author wangjinlei
|
||||
* @url /super/Publish/getCiteDate
|
||||
* @method POST
|
||||
*
|
||||
* @param name:journal_id type:int require:1 desc:期刊id
|
||||
*
|
||||
*/
|
||||
public function getCiteDate(){
|
||||
$data = $this->request->post();
|
||||
// $data['journal_id'] = 1;
|
||||
$list = $this->article_cite_obj->where('journal_id',$data['journal_id'])->select();
|
||||
$frag = [];
|
||||
$frag['country'] = [];
|
||||
$frag['topic'] = [];
|
||||
$frag['time'] = [];
|
||||
$frag['type'] = [];
|
||||
$frag['articles'] = [];
|
||||
foreach ($list as $v){
|
||||
$cache_article = $this->article_obj->where('article_id',$v['article_id'])->find();
|
||||
//判断国家
|
||||
$cou_res = $this->checkCountry($cache_article);
|
||||
if($cou_res=='n'){
|
||||
isset($frag['country']['n'])?$frag['country']['n']++:$frag['country']['n']=1;
|
||||
}else{
|
||||
isset($frag['country']['w'])?$frag['country']['w']++:$frag['country']['w']=1;
|
||||
}
|
||||
//判断领域
|
||||
$topic_res = $this->checkTopic($cache_article);
|
||||
foreach ($topic_res as $key=>$val){
|
||||
if(isset($frag['topic'][$val['title']])){
|
||||
$frag['topic'][$val['title']] += 1;
|
||||
}else{
|
||||
$frag['topic'][$val['title']] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
//关键词
|
||||
$gjz = explode(',', $cache_article['keywords']);
|
||||
foreach ($gjz as $key => $val){
|
||||
if(isset($frag['gjz'][$val])){
|
||||
$frag['gjz'][$val] +=1;
|
||||
}else{
|
||||
$frag['gjz'][$val] = 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//时间
|
||||
$ca_time = $this->journal_stage_obj->where('journal_stage_id',$cache_article['journal_stage_id'])->find();
|
||||
if(isset($frag['time'][$ca_time['stage_year']])){
|
||||
$frag['time'][$ca_time['stage_year']] += 1;
|
||||
}else{
|
||||
$frag['time'][$ca_time['stage_year']] = 1;
|
||||
}
|
||||
//文章类型
|
||||
if(isset($frag['type'][$cache_article['type']])){
|
||||
$frag['type'][$cache_article['type']] += 1;
|
||||
}else{
|
||||
$frag['type'][$cache_article['type']] = 1;
|
||||
}
|
||||
//组成文章数组构建
|
||||
if(isset($frag['articles'][$cache_article['article_id']])){
|
||||
$frag['articles'][$cache_article['article_id']] += 1;
|
||||
}else{
|
||||
$frag['articles'][$cache_article['article_id']] =1;
|
||||
}
|
||||
}
|
||||
//阅读和下载量
|
||||
$articles = $this->article_obj->field('j_article.*,(abs_num+pdf_num+html_num) num')
|
||||
->where('journal_id',$data['journal_id'])
|
||||
->where('state',0)
|
||||
->order('num desc')->select();
|
||||
|
||||
foreach ($frag['articles'] as $k => $v){
|
||||
$art = $this->article_obj->where('article_id',$k)->find();
|
||||
$cnum = $v;
|
||||
$frag['articles'][$k] = $art;
|
||||
$frag['articles'][$k]['cite_num'] = $cnum;
|
||||
//阅读和下载数
|
||||
foreach ($articles as $key => $val){
|
||||
if($val['article_id']==$k){
|
||||
$frag['articles'][$k]['read_pm'] = $key+1;//阅读量排名
|
||||
$frag['articles'][$k]['read_num'] = $val["num"];//阅读数
|
||||
}
|
||||
}
|
||||
}
|
||||
$frag['read'] = $this->sort_art($frag['articles']);
|
||||
//标题吸引力
|
||||
$bty_articles = $this->article_obj->where('journal_id',$data['journal_id'])->where('state',0)->orderRaw('LENGTH(title) desc')->limit(10)->select();
|
||||
|
||||
|
||||
foreach ($bty_articles as $k => $v){
|
||||
foreach ($frag['articles'] as $key => $val){
|
||||
if($v['article_id'] == $val['article_id']){
|
||||
$bty_articles[$k]['cite_num'] = $val['cite_num'];
|
||||
break;
|
||||
}else{
|
||||
$bty_articles[$k]['cite_num'] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
$frag['zs_title'] = $bty_articles;//标题字数
|
||||
$btzf_articles = $this->article_obj
|
||||
->where('journal_id',$data['journal_id'])
|
||||
->where('state',0)
|
||||
->where('title',['like','%?%'],['like','%!%'],'or')
|
||||
->select();
|
||||
foreach ($btzf_articles as $k => $v){
|
||||
foreach ($frag['articles'] as $key => $val){
|
||||
if($v['article_id'] == $val['article_id']){
|
||||
$btzf_articles[$k]['cite_num'] = $val['cite_num'];
|
||||
break;
|
||||
}else{
|
||||
$btzf_articles[$k]['cite_num'] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
$frag['zf_title'] = $btzf_articles;
|
||||
//摘要吸引力
|
||||
$ab_articles = $this->article_obj->where('journal_id',$data['journal_id'])->where('state',0)->orderRaw('LENGTH(abstract) desc')->limit(10)->select();
|
||||
foreach ($ab_articles as $k => $v){
|
||||
foreach ($frag['articles'] as $key => $val){
|
||||
if($v['article_id'] == $key){
|
||||
$ab_articles[$k]['cite_num'] = $val['cite_num'];
|
||||
break;
|
||||
}else{
|
||||
$ab_articles[$k]['cite_num'] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
$frag['zs_abstract'] = $ab_articles;//摘要字数
|
||||
$abzf_articles = $this->article_obj
|
||||
->where('journal_id',$data['journal_id'])
|
||||
->where('state',0)
|
||||
->where('abstract',['like','%?%'],['like','%!%'],'or')
|
||||
->select();
|
||||
foreach ($abzf_articles as $k => $v){
|
||||
foreach ($frag['articles'] as $key => $val){
|
||||
if($v['article_id'] == $key){
|
||||
$abzf_articles[$k]['cite_num'] = $val['cite_num'];
|
||||
break;
|
||||
}else{
|
||||
$abzf_articles[$k]['cite_num'] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
$frag['zf_abstract'] = $abzf_articles;
|
||||
|
||||
return jsonSuccess($frag);
|
||||
}
|
||||
|
||||
private function sort_art($articles){
|
||||
$arr = array_values($articles);
|
||||
for($i = 0;$i<count($arr);$i++){
|
||||
for($j= $i;$j<count($arr)-1;$j++){
|
||||
if($arr[$i]['read_num']<$arr[$j+1]['read_num']){
|
||||
$data = $arr[$i];
|
||||
$arr[$i] = $arr[$j+1];
|
||||
$arr[$j+1] = $data;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $arr;
|
||||
}
|
||||
|
||||
|
||||
private function checkTopic($article){
|
||||
$tops = $this->article_to_topic_obj->where('article_id',$article['article_id'])->where('state',0)->select();
|
||||
$frag = [];
|
||||
foreach ($tops as $v){
|
||||
$ca = $this->journal_topic_obj->where('journal_topic_id',$v['topic_id'])->find();
|
||||
if($ca['level']==3){
|
||||
$cac = $this->journal_topic_obj->where('journal_topic_id',$ca['parent_id'])->find();
|
||||
if(isset($frag[$cac['journal_topic_id']])){
|
||||
$frag[$cac['journal_topic_id']]['num'] += 1;
|
||||
}else{
|
||||
$frag[$cac['journal_topic_id']] = $cac;
|
||||
$frag[$cac['journal_topic_id']]['num'] = 1;
|
||||
}
|
||||
}else{
|
||||
if(isset($frag[$ca['journal_topic_id']])){
|
||||
$frag[$ca['journal_topic_id']]['num'] += 1;
|
||||
}else{
|
||||
$frag[$ca['journal_topic_id']] = $ca;
|
||||
$frag[$ca['journal_topic_id']]['num'] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
return $frag;
|
||||
}
|
||||
|
||||
private function checkCountry($article){
|
||||
$res = $this->article_author_obj->where('article_id',$article['article_id'])->where('state',0)->where('author_country','<>','China')->find();
|
||||
return $res==null?'n':'w';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user