diff --git a/application/api/controller/Admin.php b/application/api/controller/Admin.php
index 91d1d0a..d863c20 100644
--- a/application/api/controller/Admin.php
+++ b/application/api/controller/Admin.php
@@ -391,151 +391,6 @@ class Admin extends Controller {
return json($res);
}
- /**
- * 导入reviewer
- */
- public function reviewerImport() {
-
- die("server stoped");
- //接收信息
- $data = $this->request->post();
-
-// $data['journal'] = 5;
-// $data['url'] = 'reviewer/import/20210819/beb6de5c69e4878d995fd8de192d17af.xlsx';
-
- $journal = $data['journal'];
- $journal_info = $this->journal_obj->where('journal_id', $journal)->find();
-
- //读取excel
- $path = ROOT_PATH . 'public' . DS . $data['url'];
- $frag = self::readExcel($path);
-
- //check数据分开存储
- $su_data = [];
- $er_data = [];
- foreach ($frag as $v) {
-
- if($v['username']==''){
- continue;
- }
-
- //验证数据完整性
- if ($v['username'] == '' || $v['email'] == '' || $v['realname'] == '' || $v['major'] == '' || $v['username'] == null || $v['email'] == null || $v['realname'] == null || $v['major'] == null) {
- $er_data[] = [
- 'username' => trim($v['username']),
- 'realname' => trim($v['realname']),
- 'email' => $v['email'],
- 'reason' => 'Missing data'
- ];
- continue;
- }
- //验证major
- $major = self::get_major($v['major']);
- if ($major === null) {
- $er_data[] = [
- 'username' => trim($v['username']),
- 'realname' => trim($v['realname']),
- 'email' => $v['email'],
- 'reason' => 'major is error'
- ];
- continue;
- }
- //验证是否存在此用户并且存在对应关系
- $this_reviewer = self::get_username(trim($v['username']));
- $mme = self::get_userByEmail(trim($v['email']));
- if ($this_reviewer == null && $mme != null) {
- $er_data[] = [
- 'username' => trim($v['username']),
- 'realname' => trim($v['realname']),
- 'email' => $v['email'],
- 'reason' => 'Email occupied,and username is:'.$mme['account']
- ];
- continue;
- }
- if ($this_reviewer != null && $this_reviewer['type'] == 2) {
- $er_data[] = [
- 'username' => $v['username'],
- 'realname' => $v['realname'],
- 'email' => $v['email'],
- 'reason' => "Editor can't become reviewer"
- ];
- continue;
- }
- if ($this_reviewer != null && self::get_retojo($this_reviewer['user_id'], $journal) != null) {
- $su_data[] = [
- 'username' => trim($v['username']),
- 'realname' => trim($v['realname']),
- 'email' => $v['email'],
- 'reason' => 'success(has register)'
- ];
- continue;
- }
-
- //执行存储,按实际逻辑存储
- $cache_id = 0;
- if ($this_reviewer == null) {
- //添加user主体基本信息
- $cache_reviewer['account'] = trim($v['username']);
- $cache_reviewer['password'] = md5('123456qwe');
- $cache_reviewer['email'] = trim($v['email']);
- $cache_reviewer['realname'] = trim($v['realname']);
- $cache_reviewer['is_reviewer'] = 1;
- $cache_reviewer['ctime'] = time();
- $cache_id = $this->user_obj->insertGetId($cache_reviewer);
- //添加reviewer_info信息
- $cache_insert_info['reviewer_id'] = $cache_id;
- $cache_insert_info['gender'] = $v['gender'] == '女' ? 2 : 1;
- $cache_insert_info['technical'] = $v['technical'] == null ? '' : $v['technical'];
- $cache_insert_info['country'] = $v['country'] == null ? '' : $v['country'];
- $cache_insert_info['introduction'] = $v['introduction'] == null ? '' : $v['introduction'];
- $cache_insert_info['company'] = $v['company'] == null ? '' : $v['company'];
- $cache_insert_info['major'] = $major['major_id'];
- $cache_insert_info['field'] = $v['field'] == null ? '' : $v['field'];
- $this->user_reviewer_info_obj->insert($cache_insert_info);
- } else if ($this_reviewer != null && $this_reviewer['is_reviewer'] == 0) {
- $this->user_obj->where('user_id', $this_reviewer['user_id'])->update(['is_reviewer' => 1]);
- //添加reviewer_info信息
- $cache_insert_info['reviewer_id'] = $this_reviewer['user_id'];
- $cache_insert_info['gender'] = $v['gender'] == '女' ? 2 : 1;
- $cache_insert_info['technical'] = $v['technical'] == null ? '' : $v['technical'];
- $cache_insert_info['country'] = $v['country'] == null ? '' : $v['country'];
- $cache_insert_info['introduction'] = $v['introduction'] == null ? '' : $v['introduction'];
- $cache_insert_info['company'] = $v['company'] == null ? '' : $v['company'];
- $cache_insert_info['major'] = $major['major_id'];
- $cache_insert_info['field'] = $v['field'] == null ? '' : $v['field'];
- $this->user_reviewer_info_obj->insert($cache_insert_info);
- }
- //存储关系表信息
- $cache_insert_rtj['reviewer_id'] = $this_reviewer == null ? $cache_id : $this_reviewer['user_id'];
- $cache_insert_rtj['journal_id'] = $journal;
- $cache_insert_rtj['account'] = trim($v['username']);
- $cache_insert_rtj['journal_title'] = $journal_info['title'];
- $cache_insert_rtj['ctime'] = time();
- $this->reviewer_to_journal_obj->insert($cache_insert_rtj);
-
- //增加成功信息
- $su_data[] = [
- 'username' => trim($v['username']),
- 'realname' => trim($v['realname']),
- 'email' => $v['email'],
- 'reason' => 'success'
- ];
-
- //发送邮件提醒审稿人
- $content = "Thank you for registering as a " . $journal_info['title'] . " reviewer
". "At present, you have passed our examination
";
- $content .= 'Submission System
';
- $content .= '
username:' . trim($v['username']) . '
'; - $content .= 'Original Password: 123456qwe
';//$has_res ? '' : 'password:123456qwe
'; - - $maidata['email'] = $v['email']; - $maidata['title'] = $journal_info['title']; - $maidata['content'] = $content; - $maidata['tmail'] = $journal_info['email']; - $maidata['tpassword'] = $journal_info['epassword']; - Queue::push( 'app\api\job\mail@fire' , $maidata , "tmail" ); - } - return json(['sudata' => $su_data, 'erdata' => $er_data]); - } /** * 获取领域分类 diff --git a/application/api/controller/Article.php b/application/api/controller/Article.php index 1caa13e..f1bba4c 100644 --- a/application/api/controller/Article.php +++ b/application/api/controller/Article.php @@ -1478,7 +1478,7 @@ class Article extends Controller { public function addRecommentReviewer($reivewe,$journal_id,$user_id,$article_id){ $journal_info = $this->journal_obj->where('journal_id',$journal_id)->find(); //判断此用户是否存在 - $reviewer_info = $this->user_obj->where('email', $reivewe['email'])->where('state', 0)->find(); + $reviewer_info = $this->user_obj->where('email', trim($reivewe['email']))->where('state', 0)->find(); if ($reviewer_info == null) { //添加用户 $insert_user['account'] = $reivewe['email']; $insert_user['password'] = md5('123456qwe'); @@ -1768,6 +1768,9 @@ class Article extends Controller { ->join('t_user_reviewer_info', 't_article_reviewer.reviewer_id = t_user_reviewer_info.reviewer_id', 'LEFT') ->join('t_reviewer_major', 't_reviewer_major.major_id = t_user_reviewer_info.major', 'LEFT') ->where($where)->limit($limit_start, $data['pageSize'])->select(); + + + $count = $this->article_reviewer_obj->where($where)->count(); if ($res) { return json(['code' => 0, 'data' => $res, 'totle' => $count]); diff --git a/application/api/controller/Inbox.php b/application/api/controller/Inbox.php index 0a2a81f..50a476d 100644 --- a/application/api/controller/Inbox.php +++ b/application/api/controller/Inbox.php @@ -50,47 +50,47 @@ class Inbox extends Controller{ $insertData=[]; - foreach ($emailNums as $key=>$value){ + // foreach ($emailNums as $key=>$value){ - //2.1 获取邮件头部信息 - $head = $server->getHeaders($value); + // //2.1 获取邮件头部信息 + // $head = $server->getHeaders($value); - //2.2 处理邮件附件 - $files = $server->getAttach($value); - // 附件 - $head['url'] =[]; + // //2.2 处理邮件附件 + // $files = $server->getAttach($value); + // // 附件 + // $head['url'] =[]; - //2.3 处理正文中的图片 - $imageList=array(); - $section = 2; - if($files){ - foreach($files as $k => $file) - { + // //2.3 处理正文中的图片 + // $imageList=array(); + // $section = 2; + // if($files){ + // foreach($files as $k => $file) + // { - //type=1为附件,0为邮件内容图片 - if($file['type'] == 0) - { - $imageList[$k]=$file['pathname']; - } + // //type=1为附件,0为邮件内容图片 + // if($file['type'] == 0) + // { + // $imageList[$k]=$file['pathname']; + // } - if($file['type'] == 1) - { - array_push($head['url'],$file['url']); - } + // if($file['type'] == 1) + // { + // array_push($head['url'],$file['url']); + // } - if(($file['type'] == 0 || $file['type'] == 1) && !empty($file['url'])){ + // if(($file['type'] == 0 || $file['type'] == 1) && !empty($file['url'])){ - $section = 1.2 ; - } + // $section = 1.2 ; + // } - } - } + // } + // } - $webPath = ROOT_PATH.'public' . DS . 'contentImg' . DS . date('Ymd') .DS ; - // 正文内容 - $head['content'] = $server->getBody($value,$webPath,$imageList,$section); - array_push($insertData,$head); - } + // $webPath = ROOT_PATH.'public' . DS . 'contentImg' . DS . date('Ymd') .DS ; + // // 正文内容 + // $head['content'] = $server->getBody($value,$webPath,$imageList,$section); + // array_push($insertData,$head); + // } $this->insertData($insertData,$journal); } diff --git a/application/api/controller/Special.php b/application/api/controller/Special.php index 7697e19..8411b73 100644 --- a/application/api/controller/Special.php +++ b/application/api/controller/Special.php @@ -548,7 +548,7 @@ class Special extends Controller $journal_info = $this->journal_obj->where('journal_id', $article_info['journal_id'])->find(); Db::startTrans(); //判断此用户是否存在 - $reviewer_info = $this->user_obj->where('email', $data['email'])->where('state', 0)->find(); + $reviewer_info = $this->user_obj->where('email', trim($data['email']))->where('state', 0)->find(); if ($reviewer_info == null) { //添加用户 $insert_user['account'] = $data['email']; $insert_user['password'] = md5('123456qwe'); diff --git a/application/api/controller/Typeset.php b/application/api/controller/Typeset.php index 0efd293..c1091d8 100644 --- a/application/api/controller/Typeset.php +++ b/application/api/controller/Typeset.php @@ -11,7 +11,8 @@ use think\Validate; * @title 公共管理相关 * @description 公共管理相关 */ -class Typeset extends Controller { +class Typeset extends Controller +{ protected $article_obj = ''; protected $user_obj = ''; protected $user_act_obj = ''; @@ -38,7 +39,8 @@ class Typeset extends Controller { protected $ts_obj = ''; protected $ts_refer_obj = ''; - public function __construct(\think\Request $request = null) { + public function __construct(\think\Request $request = null) + { parent::__construct($request); $this->user_obj = Db::name('user'); $this->user_act_obj = Db::name('user_act'); @@ -66,65 +68,423 @@ class Typeset extends Controller { $this->ts_obj = Db::name('ts'); $this->ts_refer_obj = Db::name('ts_refer'); } - - - public function createTypeSet(){ + + public function getTypeSet() + { $data = $this->request->post(); // 验证规则 $rule = new Validate([ - 'article_id'=>'require|number' + 'article_id' => 'require|number' ]); - if(!$rule->check($data)){ + if (!$rule->check($data)) { return jsonError($rule->getError()); } - $article_info = $this->article_obj->where('article_id',$data['article_id'])->find(); + $article_info = $this->article_obj->where('article_id', $data['article_id'])->find(); + $ts_info = $this->ts_obj->where('article_id', $article_info['article_id'])->where('ts_state', 0)->find(); + if (!$ts_info) { + return jsonError('get ts error'); + } + $refers = $this->ts_refer_obj->where('ts_id', $ts_info['ts_id'])->where('refer_state', 0)->select(); + $ts_info['references'] = $refers; + $re['ts'] = $ts_info; + return jsonSuccess($re); + } + + /** + * 获取排版实例列表 + */ + public function getTsList() + { + $data = $this->request->post(); + // 验证规则 + $rule = new Validate([ + 'editor_id' => 'require|number', + 'journal_id' => 'require', + 'ts_state' => 'require', + 'pageIndex' => 'require', + 'pageSize' => 'require' + ]); + if (!$rule->check($data)) { + return jsonError($rule->getError()); + } + $journals = []; + if ($data['journal_id'] == 0) { //获取全部编辑名下的期刊 + $journals = $this->journal_obj->where('editor_id', $data['editor_id'])->where('state', 0)->column('journal_id'); + } else { + $journals[] = $data['journal_id']; + } + $limit_start = ($data['pageIndex'] - 1) * $data['pageSize']; + $ts_list = $this->ts_obj->join('t_article', 't_article.article_id = t_ts.article_id', 'left') + ->where('t_ts.ts_state', $data['ts_state']) + ->where('t_article.journal_id', 'in', $journals) + ->limit($limit_start, $data['pageSize']) + ->select(); + $count = $this->ts_obj->join('t_article', 't_article.article_id = t_ts.article_id', 'left')->where('t_ts.ts_state', $data['ts_state'])->where('t_article.journal_id', 'in', $journals)->count(); + $re['ts_list'] = $ts_list; + $re['count'] = $count; + return jsonSuccess($re); + } + + /** + * 编辑参考文献 + */ + public function editRefer() + { + $data = $this->request->post(); + // 验证规则 + $rule = new Validate([ + 'ts_refer_id' => 'require|number', + 'refer_content' => 'require' + ]); + if (!$rule->check($data)) { + return jsonError($rule->getError()); + } + $update['refer_content'] = $data['refer_content']; + if (isset($data['refer_doi']) && $data['refer_doi'] != '') { + $update['refer_doi'] = $data['refer_doi']; + } + if (isset($data['refer_frag']) && $data['refer_frag'] != '') { + $update['refer_frag'] = $data['refer_frag']; + } + $this->ts_refer_obj->where('ts_refer_id', $data['ts_refer_id'])->update($update); + return jsonSuccess([]); + } + + /** + * 删除参考文献 + */ + public function delRefer() + { + $data = $this->request->post(); + // 验证规则 + $rule = new Validate([ + 'ts_refer_id' => 'require|number' + ]); + if (!$rule->check($data)) { + return jsonError($rule->getError()); + } + $this->ts_refer_obj->where('ts_refer_id', $data['ts_refer_id'])->update(['refer_state' => 1]); + return jsonSuccess([]); + } + + + /** + * 参考文献识别doi + */ + public function referToDoi() + { + $data = $this->request->post(); + // 验证规则 + $rule = new Validate([ + 'article_id' => 'require|number' + ]); + if (!$rule->check($data)) { + return jsonError($rule->getError()); + } + $ts_info = $this->ts_obj->where('article_id', $data['article_id'])->find(); + $refers = $this->ts_refer_obj->where('ts_id', $ts_info['ts_id'])->where('refer_state', 0)->select(); + foreach ($refers as $v) { //处理doi + if (strpos($v['refer_content'], 'doi:') == false && strpos($v['refer_content'], 'doi.org/') == false) { + continue; + } + $doi = ''; + if (strpos($v['refer_content'], 'doi.org/') != false) { + $cache_arr = explode(' ', trim(substr($v['refer_content'], strpos($v['refer_content'], 'doi.org/') + 8))); + if (substr($cache_arr[0], -1) == '.') { + $doi = substr($cache_arr[0], 0, -1); + } else { + $doi = $cache_arr[0]; + } + } else { + $cache_arr = explode(' ', trim(substr($v['refer_content'], strpos($v['refer_content'], 'doi:') + 4))); + if (substr($cache_arr[0], -1) == '.') { + $doi = substr($cache_arr[0], 0, -1); + } else { + $doi = $cache_arr[0]; + } + } + $this->ts_refer_obj->where('ts_refer_id', $v['ts_refer_id'])->update(['refer_doi' => $doi]); + } + return jsonSuccess([]); + } + + /** + * doi获取格式化的参考文献信息 + */ + public function doiTofrag() + { + $data = $this->request->post(); + // 验证规则 + $rule = new Validate([ + 'article_id' => 'require|number' + ]); + if (!$rule->check($data)) { + return jsonError($rule->getError()); + } + $ts_info = $this->ts_obj->where('article_id', $data['article_id'])->find(); + $refers = $this->ts_refer_obj->where('ts_id', $ts_info['ts_id'])->where('refer_state', 0)->select(); + //清空frag,百分比用 + $this->ts_refer_obj->where('ts_id', $ts_info['ts_id'])->where('refer_doi', '<>', '')->update(['refer_frag' => '']); + foreach ($refers as $v) { + Queue::push('app\api\job\ts@fire', $v, 'ts'); + } + return jsonSuccess([]); + } + + + public function getFragBF() + { + $data = $this->request->post(); + // 验证规则 + $rule = new Validate([ + 'article_id' => 'require|number' + ]); + if (!$rule->check($data)) { + return jsonError($rule->getError()); + } + $ts_info = $this->ts_obj->where('article_id', $data['article_id'])->find(); + $list = $this->ts_refer_obj->where('ts_id', $ts_info['ts_id'])->where('refer_doi', '<>', '')->where('refer_state', 0)->select(); + $z = count($list); + $m = 0; + foreach ($list as $v) { + if ($v['refer_frag'] != '') { + $m++; + } + } + + if ($z == 0) { + return jsonError('system error!'); + } + + $f = intval($m * 100 / $z); + + $re['bf'] = $f; + return jsonSuccess($re); + } + + + + public function testdd() + { + $refer = $this->ts_refer_obj->where('ts_refer_id', 410)->find(); + my_doiToFrag($refer); + // $d = '10.1152/ajpendo.00039.2012'; + // $doi = str_replace('/','%2F',$d); + // $url = "https://citation.crosscite.org/format?doi=$doi&style=american-veterinary-medical-association&lang=en-US"; + // $res = myGet($url); + // $frag = trim(substr($res,strpos($res,'.')+1)); + // echo $frag; + } + + + /** + * 排版主方法入口 + */ + public function doTypeSetting() + { + $data = $this->request->post(); + // 验证规则 + $rule = new Validate([ + 'article_id' => 'require|number' + ]); + if (!$rule->check($data)) { + return jsonError($rule->getError()); + } + $article_info = $this->article_obj->where('article_id', $data['article_id'])->find(); + $journal_info = $this->journal_obj->where('journal_id', $article_info['journal_id'])->find(); + $editor_info = $this->user_obj->where('user_id', $journal_info['editor_id'])->find(); + $ts_info = $this->ts_obj->where('article_id', $data['article_id'])->find(); + + $typesetInfo = []; + $typesetInfo['info_title'] = $ts_info['ts_title']; + $typesetInfo['info_type'] = $ts_info['ts_type']; + $typesetInfo['doi'] = $ts_info['ts_doi']; + $typesetInfo['topic'] = $ts_info['ts_topic']; + $typesetInfo['mainText'] = $ts_info['ts_main']; + $typesetInfo['author'] = $ts_info['author']; + $typesetInfo['authorAddress'] = $ts_info['author_address']; + $typesetInfo['authorContribution'] = $ts_info['author_contribution']; + $typesetInfo['authorCorresponding'] = $ts_info['corresponding_author']; + $typesetInfo['authorCorrespondingEmail'] = $ts_info['corresponding_author_email']; + $typesetInfo['traditon'] = $ts_info['trdition']; + $typesetInfo['journal'] = $journal_info['title']; + $typesetInfo['jabbr'] = $journal_info['jabbr']; + $typesetInfo['stage'] = $ts_info['stage']; + $typesetInfo['little_author'] = $ts_info['little_author']; + $typesetInfo['website'] = $journal_info['website']; + $typesetInfo['acknowledgment'] = $ts_info['acknowledgment']; + $typesetInfo['received_date'] = $ts_info['received_date']; + $typesetInfo['accepted_date'] = $ts_info['accepted_date']; + $typesetInfo['online_date'] = $ts_info['online_date']; + $typesetInfo['abbreviation'] = $ts_info['abbreviation']; + $typesetInfo['abstractText'] = $ts_info['ts_abstract']; + $typesetInfo['keywords'] = $ts_info['keywords']; + $typesetInfo['userAccount'] = $editor_info['nickname']; + + + + //获取文件 $files = $this->article_file_obj - ->where('article_id',$article_info['article_id']) - ->where('type_name','manuscirpt') + ->where('article_id', $article_info['article_id']) + ->where('type_name', 'manuscirpt') ->order('ctime desc') ->limit(1) ->select(); - if(count($files)==0){ + if (count($files) == 0) { return jsonError('No Manuscript'); } + $typesetInfo['filename'] = "http://api.tmrjournals.com/public/" . $files[0]['file_url']; + + $rs = $this->ts_refer_obj->where('ts_id', $ts_info['ts_id'])->where('refer_state', 0)->select(); + $refers = []; + foreach ($rs as $v) { + $refers[] = $v['refer_frag']; + } + + $typesetInfo['refers'] = json_encode($refers); + + + $url = "http://localhost:8081/typeset/webGetDocx"; + // $url = "http://192.168.110.100:8080/typeset/webGetDocx"; + // $url = "http://ts.tmrjournals.com/api/typeset/webGetDocx"; + $res = object_to_array(json_decode(myPost1($url, $typesetInfo))); + var_dump($res);die; + $file_res = $res['data']['file']; + $this->ts_obj->where('ts_id', $ts_info['ts_id'])->update(['ts_url' => $file_res]); + return jsonSuccess([]); + } + + /** + * 编辑排版实例 + */ + public function editTypeSet() + { + $data = $this->request->post(); + // 验证规则 + $rule = new Validate([ + 'article_id' => 'require|number', + 'ts_title' => 'require', + 'ts_type' => 'require', + 'author' => 'require', + 'author_address' => 'require', + 'author_contribution' => 'require', + 'corresponding_author' => 'require', + 'corresponding_author_email' => 'require', + 'accepted_date' => 'require', + 'received_date' => 'require', + 'keywords' => 'require', + 'stage' => 'require', + 'little_author' => 'require', + 'online_date' => 'require', + 'ts_abstract' => 'require', + 'acknowledgment' => 'require', + 'abbreviation' => 'require', + 'ts_doi' => 'require', + 'trdition' => 'require', + 'ts_topic' => 'require', + ]); + if (!$rule->check($data)) { + return jsonError($rule->getError()); + } + $insert_ts['ts_title'] = $data['ts_title']; + $insert_ts['ts_type'] = $data['ts_type']; + $insert_ts['author'] = $data['author']; + $insert_ts['author_address'] = $data['author_address']; + $insert_ts['author_contribution'] = $data['author_contribution']; + //获取通讯作者信息 + $insert_ts['corresponding_author'] = $data['corresponding_author']; + $insert_ts['corresponding_author_email'] = $data['corresponding_author_email']; + $insert_ts['accepted_date'] = $data['accepted_date']; + $insert_ts['received_date'] = $data['received_date']; + $insert_ts['keywords'] = $data['keywords']; + $insert_ts['stage'] = $data['stage']; + $insert_ts['little_author'] = $data['little_author']; + $insert_ts['online_date'] = $data['online_date']; + $insert_ts['ts_abstract'] = $data['ts_abstract']; + $insert_ts['acknowledgment'] = $data['acknowledgment']; + $insert_ts['abbreviation'] = $data['abbreviation']; + $insert_ts['ts_doi'] = $data['ts_doi']; + $insert_ts['trdition'] = $data['trdition']; + $insert_ts['ts_topic'] = $data['ts_topic']; + $this->ts_obj->where('article_id', $data['article_id'])->update($insert_ts); + return jsonSuccess([]); + } + + /** + * 创建排版实例 + */ + public function createTypeSet() + { + $data = $this->request->post(); + // 验证规则 + $rule = new Validate([ + 'article_id' => 'require|number' + ]); + if (!$rule->check($data)) { + return jsonError($rule->getError()); + } + $article_info = $this->article_obj->where('article_id', $data['article_id'])->find(); + + //存在实例不可重复创建 + $check_ts = $this->ts_obj->where('article_id', $data['article_id'])->find(); + if ($check_ts) { + return jsonError("has created"); + } + $files = $this->article_file_obj + ->where('article_id', $article_info['article_id']) + ->where('type_name', 'manuscirpt') + ->order('ctime desc') + ->limit(1) + ->select(); + if (count($files) == 0) { + return jsonError('No Manuscript'); + } + //调用接口分解word, - $url = "http://localhost:8080/typeset/webReaddoc"; - $program['fileRoute'] = "https://submission.tmrjournals.com/public/".$files[0]['file_url']; - $res = object_to_array(json_decode(myPost($url,$program))); + // $url = "http://localhost:8080/typeset/webReaddoc"; + $url = "http://ts.tmrjournals.com/api/typeset/webReaddoc"; + $program['fileRoute'] = "https://submission.tmrjournals.com/public/" . $files[0]['file_url']; + $res = object_to_array(json_decode(myPost($url, $program))); + $file_runs = $res['data']; //整理信息 $frag = []; $aa = []; $frag['title'] = $article_info['title']; $start_refer = false; - foreach($file_runs as $k => $v){ - if($start_refer&&$v!=''){ + foreach ($file_runs as $k => $v) { + if ($start_refer && $v != '') { + if (strlen($v) > 500) { + $start_refer = false; + $frag['main'][] = $v; + continue; + } $frag['references'][] = $v; continue; } $g_val = trim(preg_replace('/\<.*?\>/', '', $v)); $aa[] = $g_val; - if($g_val == $article_info['title']){ + if ($g_val == $article_info['title']) { continue; } - if((strpos(strtolower(trim($g_val)),"keyword")==0||strpos(strtolower(trim($g_val)),"keyword")==1)&&!isset($frag['keywords'])){ + if ((strpos(strtolower(trim($g_val)), "keyword") == 0 || strpos(strtolower(trim($g_val)), "keyword") == 1) && !isset($frag['keywords'])) { $frag['keywords'] = $v; continue; } - if(strtolower($g_val) == "abstract"){ - $i = $k+1; - while($file_runs[$i]==''){ + if (strtolower($g_val) == "abstract") { + $i = $k + 1; + while ($file_runs[$i] == '') { $i++; } $frag['abstract'] = $file_runs[$i]; continue; } - if(isset($frag['abstract'])&&$frag['abstract']==$v){ + if (isset($frag['abstract']) && $frag['abstract'] == $v) { continue; } - if(strtolower($g_val) == 'references'||strtolower($g_val)=='reference'){ + if (strtolower($g_val) == 'reference:' || strtolower($g_val) == 'references:' || strtolower($g_val) == 'references' || strtolower($g_val) == 'reference') { $start_refer = true; continue; } @@ -141,54 +501,67 @@ class Typeset extends Controller { $insert_ts['author'] = $au_res['author']; $insert_ts['author_address'] = $au_res['address']; //获取通讯作者信息 - $report_author = $this->article_author_obj->where('article_id',$article_info['article_id'])->where('is_report',1)->where('state',0)->find(); - $insert_ts['corresponding_author'] = $report_author['firstname'].' '.$report_author['lastname']; + $report_author = $this->article_author_obj->where('article_id', $article_info['article_id'])->where('is_report', 1)->where('state', 0)->find(); + $insert_ts['corresponding_author'] = $report_author['firstname'] . ' ' . $report_author['lastname']; $insert_ts['corresponding_author_email'] = $report_author['email']; - $insert_ts['accepted_date'] = date("d F Y",$article_info['rtime']); - $insert_ts['received_date'] = date("d F Y",$article_info['ctime']); - $insert_ts['keywords'] = 'Keywords:'.$article_info['keywords']; - $insert_ts['ts_abstract'] = isset($frag['abstract'])?$frag['abstract']:''; - $insert_ts['ts_main'] = json_encode($frag['main']); + $insert_ts['accepted_date'] = date("d F Y", $article_info['rtime']); + $insert_ts['received_date'] = date("d F Y", $article_info['ctime']); + $insert_ts['keywords'] = 'Keywords:' . $article_info['keywords']; + $insert_ts['ts_abstract'] = isset($frag['abstract']) ? $frag['abstract'] : ''; + $insert_ts['ts_main'] = isset($frag['main']) ? json_encode($frag['main']) : ''; $insert_ts['ts_ctime'] = time(); - var_dump($insert_ts); - Db::startTrans();//开启事务 + Db::startTrans(); //开启事务 $ts_id = $this->ts_obj->insertGetId($insert_ts); - - - - - - + $res_refer = true; + //开始处理引用 + if (isset($frag['references']) && is_array($frag['references'])) { + $insert_all = []; + foreach ($frag['references'] as $k => $v) { + $cache_insert['ts_id'] = $ts_id; + $cache_insert['refer_content'] = trim($v); + $cache_insert['refer_ctime'] = time(); + $insert_all[] = $cache_insert; + } + $res_refer = $this->ts_refer_obj->insertAll($insert_all); + } + if ($ts_id && $res_refer) { + Db::commit(); + return jsonSuccess([]); + } else { + Db::rollback(); + return jsonError('system error'); + } } - private function authorFormate($article_id){ - $authors = $this->article_author_obj->where('article_id',$article_id)->where('state',0)->select(); + private function authorFormate($article_id) + { + $authors = $this->article_author_obj->where('article_id', $article_id)->where('state', 0)->select(); //组装地址数组 $address = []; - foreach($authors as $v){ - $adds = explode(';',$v['company']); - foreach($adds as $key => $val){ - $cache = is_numeric(substr(trim($val),0,1))?trim(substr(trim($val),1)):trim($val); - if(!in_array($cache,$address)){ + foreach ($authors as $v) { + $adds = explode(';', $v['company']); + foreach ($adds as $key => $val) { + $cache = is_numeric(substr(trim($val), 0, 1)) ? trim(substr(trim($val), 1)) : trim($val); + if (!in_array($cache, $address)) { $address[] = $cache; } } } //构建数组字符串 $author = ''; - foreach($authors as $v){ - $cache_str = $v['firstname'].' '.$v['lastname'].''; - $adds = explode(';',$v['company']); - foreach($adds as $key => $val){ - $cache = is_numeric(substr(trim($val),0,1))?trim(substr(trim($val),1)):trim($val); - $cache_str .= (intval(search_array_val($address,$cache))+1)." "; + foreach ($authors as $v) { + $cache_str = $v['firstname'] . ' ' . $v['lastname'] . ''; + $adds = explode(';', $v['company']); + foreach ($adds as $key => $val) { + $cache = is_numeric(substr(trim($val), 0, 1)) ? trim(substr(trim($val), 1)) : trim($val); + $cache_str .= (intval(search_array_val($address, $cache)) + 1) . " "; } - if($v['is_super']==1){ + if ($v['is_super'] == 1) { $cache_str .= '*'; } - if($v['is_report']==1){ + if ($v['is_report'] == 1) { $cache_str .= '#'; } $cache_str = trim($cache_str); @@ -197,12 +570,11 @@ class Typeset extends Controller { } //组装address $address_str = ''; - foreach($address as $k => $v){ - $address_str .= ($k+1).' '.$v.';'; + foreach ($address as $k => $v) { + $address_str .= ($k + 1) . ' ' . $v . ';%$%'; } $frag['author'] = $author; $frag['address'] = $address_str; return $frag; } - } diff --git a/application/api/controller/User.php b/application/api/controller/User.php index 31b53f8..521dae8 100644 --- a/application/api/controller/User.php +++ b/application/api/controller/User.php @@ -245,7 +245,7 @@ class User extends Controller $check = $this->user_obj ->where('state', 0) - ->where('account = "'.$data['account'].'" or email = "'.$data['email'].'"') + ->where('account = "' . trim($data['account']) . '" or email = "' . trim($data['email']) . '"') ->find(); if ($check) { return jsonError('用户已经存在'); @@ -263,11 +263,12 @@ class User extends Controller /** * 获取所有编辑 */ - public function getAllEditor(){ - $editors = $this->user_obj->where('type',2)->where('state',0)->select(); + public function getAllEditor() + { + $editors = $this->user_obj->where('type', 2)->where('state', 0)->select(); //获取编辑管理的期刊 - foreach($editors as $k => $v){ - $cache_journals = $this->journal_obj->where('editor_id',$v['user_id'])->where('state',0)->select(); + foreach ($editors as $k => $v) { + $cache_journals = $this->journal_obj->where('editor_id', $v['user_id'])->where('state', 0)->select(); $editors[$k]['journals'] = $cache_journals; } $re['editors'] = $editors; @@ -277,20 +278,21 @@ class User extends Controller /** * 修改编辑密码 */ - public function changeEditorPassword(){ + public function changeEditorPassword() + { $data = $this->request->post(); // 验证规则 $rule = new Validate([ - 'user_id'=>'require|number', - 'password'=>'require' + 'user_id' => 'require|number', + 'password' => 'require' ]); - if(!$rule->check($data)){ - return json(['code' => 1,'msg'=>$rule->getError()]); + if (!$rule->check($data)) { + return json(['code' => 1, 'msg' => $rule->getError()]); } - $this->user_obj->where('user_id',$data['user_id'])->update(['password'=>md5($data['password'])]); + $this->user_obj->where('user_id', $data['user_id'])->update(['password' => md5($data['password'])]); return jsonSuccess([]); } - + /** * @title 消除黑名单 @@ -370,22 +372,23 @@ class User extends Controller /** * 获取用户详细信息 */ - public function getUserDetail(){ + public function getUserDetail() + { $data = $this->request->post(); $rule = new Validate([ 'user_id' => 'require' ]); - if(!$rule->check($data)){ + if (!$rule->check($data)) { return jsonError($rule->getError()); } - $user_info = $this->user_obj->where("user_id",$data['user_id'])->where('state',0)->find(); + $user_info = $this->user_obj->where("user_id", $data['user_id'])->where('state', 0)->find(); $user_info['roles'] = $this->getUserRoles($user_info['account']); //获取用户的客座期刊的详细信息 - $list = $this->user_to_special_obj->where('user_id',$user_info['user_id'])->where('uts_state',0)->select(); + $list = $this->user_to_special_obj->where('user_id', $user_info['user_id'])->where('uts_state', 0)->select(); $specials = []; - foreach($list as $k => $v){ + foreach ($list as $k => $v) { $cache_info = $this->getSpecialDetailById($v['special_id']); - $cache_journal = $this->journal_obj->where('issn',$cache_info['journal_issn'])->find(); + $cache_journal = $this->journal_obj->where('issn', $cache_info['journal_issn'])->find(); $cache_info['journal_id'] = $cache_journal['journal_id']; $specials[] = $cache_info; } @@ -398,19 +401,20 @@ class User extends Controller /** * 获取用户所有客座专刊 */ - public function getUserAllSpecials(){ + public function getUserAllSpecials() + { $data = $this->request->post(); $rule = new Validate([ 'user_id' => 'require' ]); - if(!$rule->check($data)){ + if (!$rule->check($data)) { return jsonError($rule->getError()); } - $list = $this->user_to_special_obj->where('user_id',$data['user_id'])->where('uts_state',0)->select(); + $list = $this->user_to_special_obj->where('user_id', $data['user_id'])->where('uts_state', 0)->select(); $specials = []; - foreach($list as $k => $v){ + foreach ($list as $k => $v) { $cache_info = $this->getSpecialDetailById($v['special_id']); - $cache_journal = $this->journal_obj->where('issn',$cache_info['journal_issn'])->find(); + $cache_journal = $this->journal_obj->where('issn', $cache_info['journal_issn'])->find(); $cache_info['journal_id'] = $cache_journal['journal_id']; $specials[] = $cache_info; } @@ -419,10 +423,11 @@ class User extends Controller } - public function getSpecialDetailById($special_id){ + public function getSpecialDetailById($special_id) + { $base_url = Env::get('journal.base_url'); - $api_url = $base_url."/master/special/getSpecialDetailById"; - $res = object_to_array(json_decode(myPost($api_url,['journal_special_id'=>$special_id]))); + $api_url = $base_url . "/master/special/getSpecialDetailById"; + $res = object_to_array(json_decode(myPost($api_url, ['journal_special_id' => $special_id]))); $special_info = $res['data']['special']; unset($special_info['journal_id']); return $special_info; @@ -431,22 +436,23 @@ class User extends Controller /** * 添加用户身份 */ - public function addUserRole(){ + public function addUserRole() + { $data = $this->request->post(); $rule = new Validate([ 'user_id' => 'require', - 'role_type'=> 'require' + 'role_type' => 'require' ]); - if(!$rule->check($data)){ + if (!$rule->check($data)) { return jsonError($rule->getError()); } - if($data['role_type']=='special'){ - if(!isset($data['special_id'])){ + if ($data['role_type'] == 'special') { + if (!isset($data['special_id'])) { return jsonError("添加客座编辑身份时,客座id是必传项"); } - $check = $this->user_to_special_obj->where("user_id",$data['user_id'])->where('special_id',$data['special_id'])->where('uts_state',0)->find(); - if($check){ + $check = $this->user_to_special_obj->where("user_id", $data['user_id'])->where('special_id', $data['special_id'])->where('uts_state', 0)->find(); + if ($check) { return jsonError("不可重复添加"); } $insert_uts['user_id'] = $data['user_id']; @@ -455,7 +461,6 @@ class User extends Controller $this->user_to_special_obj->insert($insert_uts); return jsonSuccess([]); } - } @@ -531,8 +536,8 @@ class User extends Controller if ($board_res != null) { $roles[] = 'board'; } - $special_res = $this->user_to_special_obj->where('user_id',$user_info['user_id'])->where("uts_state",0)->find(); - if($special_res != null){ + $special_res = $this->user_to_special_obj->where('user_id', $user_info['user_id'])->where("uts_state", 0)->find(); + if ($special_res != null) { $roles[] = 'special'; } return $roles; @@ -736,7 +741,7 @@ class User extends Controller $url = config('base_web_url') . 'retrieveact?actkey=' . $act_insert['act_key']; $title = 'Your request to reset your password [TMR Publishing Group]'; $content = "$realname, we've received your request to reset your password.Please click the link below to change your password. $url"; - $res = sendEmail($email, $title, 'TMR', $content,Env::get('email.send_email'),Env::get("email.send_email_password")); + $res = sendEmail($email, $title, 'TMR', $content, Env::get('email.send_email'), Env::get("email.send_email_password")); // if ($isUserPushed) {//成功 return json(['code' => 0, 'msg' => 'success']); // } else {//失败 @@ -994,19 +999,23 @@ class User extends Controller return jsonError("has reviewer"); } + $info_check = $this->user_reviewer_info_obj->where('reviewer_id', $user_info['user_id'])->find(); + Db::startTrans(); - $insert_info['reviewer_id'] = $user_info['user_id']; - $insert_info['gender'] = $data['gender']; - $insert_info['technical'] = $data['author_title']; - $insert_info['country'] = $data['country']; - $insert_info['introduction'] = $data['introduction']; - $insert_info['company'] = $data['company']; - $insert_info['major'] = $data['major']; - $insert_info['field'] = $data['field']; - $insert_info['qualifications'] = $data['qualifications']; - $res = $this->user_reviewer_info_obj->insertGetId($insert_info); - + $res = true; + if ($info_check==null) { + $insert_info['reviewer_id'] = $user_info['user_id']; + $insert_info['gender'] = $data['gender']; + $insert_info['technical'] = $data['author_title']; + $insert_info['country'] = $data['country']; + $insert_info['introduction'] = $data['introduction']; + $insert_info['company'] = $data['company']; + $insert_info['major'] = $data['major']; + $insert_info['field'] = $data['field']; + $insert_info['qualifications'] = $data['qualifications']; + $res = $this->user_reviewer_info_obj->insertGetId($insert_info); + } $insert_to['reviewer_id'] = $user_info['user_id']; $insert_to['journal_id'] = $rfa_info['journal_id']; $insert_to['account'] = $user_info['account']; diff --git a/application/api/job/ts.php b/application/api/job/ts.php new file mode 100644 index 0000000..30ead82 --- /dev/null +++ b/application/api/job/ts.php @@ -0,0 +1,35 @@ +delete(); + my_doiToFrag($data); + } + + +// public function doFrag($data){ +// $ts_refer_obj = Db::name('ts_refer'); +// if($data['refer_doi']==''){ +// return 0; +// } +// $doi = str_replace('/','%2F',$data['refer_doi']); +// $url = "https://citation.crosscite.org/format?doi=$doi&style=american-veterinary-medical-association&lang=en-US"; +// $res = myGet($url); +// $frag = trim(substr($res,strpos($res,'.')+1)); +// file_put_contents("D:/1.txt",$frag); +// file_put_contents("D:/2.txt",$ts_refer_obj); + +// // $ts_refer_obj->where('ts_refer_id',$data['ts_refer_id'])->update(['refer_frag'=>$frag]); +// return 1; +// } + + +} diff --git a/application/common.php b/application/common.php index 5055aea..ab6f0ca 100644 --- a/application/common.php +++ b/application/common.php @@ -207,6 +207,44 @@ function search_array_val($arr,$val){ } } +/** + * GET 请求 + * @param string $url + */ +function myGet($url){ + $oCurl = curl_init(); + if(stripos($url,"https://")!==FALSE){ + curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE); + curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, FALSE); + curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1 + } + curl_setopt($oCurl, CURLOPT_URL, $url);//目标URL + curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1 );//设定是否显示头信息,1为显示 + curl_setopt($oCurl, CURLOPT_BINARYTRANSFER, true) ;//在启用CURLOPT_RETURNTRANSFER时候将获取数据返回 + $sContent = curl_exec($oCurl); + $aStatus = curl_getinfo($oCurl);//获取页面各种信息 + curl_close($oCurl); + if(intval($aStatus["http_code"])==200){ + return $sContent; + }else{ + return false; + } +} + +function my_doiToFrag($data){ + $ts_refer_obj = Db::name('ts_refer'); + if($data['refer_doi']==''){ + return 0; + } + $doi = str_replace('/','%2F',$data['refer_doi']); + $url = "https://citation.crosscite.org/format?doi=$doi&style=american-veterinary-medical-association&lang=en-US"; + $res = myGet($url); + $frag = trim(substr($res,strpos($res,'.')+1)); + $frag1 = $frag==""?"none":$frag; + $ts_refer_obj->where('ts_refer_id',$data['ts_refer_id'])->update(['refer_frag'=>$frag1]); +} + + /** * 增加usermsg */ @@ -247,6 +285,10 @@ function choiseJabbr($article_id, $jabbr) { return $jabbr; } + + + + function myPost($url, $param = array()) { if (!is_array($param)) { @@ -276,3 +318,37 @@ function myPost($url, $param = array()) { return $rst; } + +function myPost1($url, $param = array()) { + + if (!is_array($param)) { + + throw new Exception("参数必须为array"); + } + $data = json_encode($param); + + $httph = curl_init($url); + curl_setopt($httph, CURLOPT_HTTPHEADER, array( + 'Content-Type: application/json', + )); + +// curl_setopt($httph, CURLOPT_SSL_VERIFYPEER, 0); +// curl_setopt($httph, CURLOPT_SSL_VERIFYHOST, 1); + + curl_setopt($httph, CURLOPT_RETURNTRANSFER, 1); + + curl_setopt($httph, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"); + + curl_setopt($httph, CURLOPT_POST, 1); //设置为POST方式 + + curl_setopt($httph, CURLOPT_POSTFIELDS, $data); + +// curl_setopt($httph, CURLOPT_RETURNTRANSFER,0); +// curl_setopt($httph, CURLOPT_HEADER,1); + + $rst = curl_exec($httph); + + curl_close($httph); + + return $rst; +}