diff --git a/application/api/controller/Article.php b/application/api/controller/Article.php index 2199a4d..ef6b857 100644 --- a/application/api/controller/Article.php +++ b/application/api/controller/Article.php @@ -800,9 +800,9 @@ class Article extends Controller { $inset_data['user_id'] = $user_res['user_id']; $inset_data['journal_id'] = $data['journal']; $inset_data['editor_id'] = $journal_info['editor_id']; - $inset_data['title'] = $data['title']; + $inset_data['title'] = trim($data['title']); $inset_data['keywords'] = $data['keyWords']; - $inset_data['fund'] = $data['fund']; + $inset_data['fund'] = trim($data['fund']); $inset_data['accept_sn'] = getArticleSN($journal_info['abbr'],$data['type']); $inset_data['type'] = $data['type']; $inset_data['major_id'] = $data['major']; @@ -820,14 +820,15 @@ class Article extends Controller { continue; } $i['article_id'] = $res; - $i['firstname'] = $v['firstname']; - $i['lastname'] = $v['lastname']; - $i['company'] = $v['company']; - $i['department'] = $v['department']; + $i['firstname'] = trim($v['firstname']); + $i['lastname'] = trim($v['lastname']); + $i['orcid'] = trim($v['orcid']); + $i['company'] = trim($v['company']); + $i['department'] = trim($v['department']); $i['author_title'] = $v['title']; $i['country'] = $v['country']; - $i['email'] = $v['email']; - $i['address'] = $v['address']; + $i['email'] = trim($v['email']); + $i['address'] = trim($v['address']); $i['is_super'] = $v['isSuper'] == 'true' ? 1 : 0; $i['is_report'] = $v['isReport'] == 'true'?1:0; $authors[] = $i; diff --git a/application/api/controller/User.php b/application/api/controller/User.php index 81e4838..033d822 100644 --- a/application/api/controller/User.php +++ b/application/api/controller/User.php @@ -41,25 +41,24 @@ class User extends Controller { public function checkLogin() { $data = $this->request->post(); //判断是否管理员登录 - if ($data['username'] == 'superadmin'||$data['username'] == 'wuxiongzhi2') { + if ($data['username'] == 'superadmin' || $data['username'] == 'wuxiongzhi2') { $where_admin['account'] = $data['username']; $where_admin['password'] = md5($data['password']); $admin_info = $this->admin_obj->where($where_admin)->find(); - if($admin_info==null){ - return json(['code'=>1]); - }else{ + if ($admin_info == null) { + return json(['code' => 1]); + } else { $up_admin['last_login_time'] = time(); $up_admin['last_login_ip'] = $this->request->ip(); - $this->admin_obj->where('admin_id = '.$admin_info['admin_id'])->update($up_admin); - return json(['code'=>0,'userinfo'=>$admin_info]); + $this->admin_obj->where('admin_id = ' . $admin_info['admin_id'])->update($up_admin); + return json(['code' => 0, 'userinfo' => $admin_info]); } } else {//用户登录 // $where['account'] = $data['username']; // $where['password'] = md5($data['password']); // $user_info = $this->user_obj->where($where)->find(); - $user_info = $this->user_obj - ->where('account|email',$data['username']) + ->where('account|email', $data['username']) ->where('password', md5($data['password'])) ->find(); if ($user_info == null) {//登陆失败 @@ -73,15 +72,25 @@ class User extends Controller { } } + /** + * 获取orcid + */ + public function checkOrcid() { + $data = $this->request->post(); + $account = $data['account']; + $user = $this->user_obj->where('account', $account)->find(); + return json(['code' => 0, 'userinfo' => $user]); + } + /** * 根据account获取用户信息 */ public function getUserdata() { $account = $this->request->post('account'); $where['account'] = $account; - if($account=='superadmin'){ + if ($account == 'superadmin') { $res = $this->admin_obj->where($where)->find(); - }else{ + } else { $res = $this->user_obj->where($where)->find(); } if ($res == null) { @@ -96,7 +105,7 @@ class User extends Controller { */ public function register() { $data = $this->request->post(); - //检测是否用户名和密码已经占用 + //检测是否用户名和邮箱已经占用 $account = $data['username']; $email = $data['email']; $res_once = $this->user_obj->where("account='$account' or email = '$email'")->find(); @@ -120,13 +129,13 @@ class User extends Controller { $tt = 'Hello,

'; $tt .= 'Your account has been created. You may check on the status of your manuscript using this submission and tracking system: https://submission.tmrjournals.com
'; $tt .= "Username:$account
"; - $tt .= "Password:".$data['password'].'

'; + $tt .= "Password:" . $data['password'] . '

'; $tt .= "Many thanks
TMR Publishing Group"; // $content = $tt . '

Username:' . $account . '
Password:' . $data['password'] . '

'; sendEmail($email, 'Dear ' . $data['name'], 'TMR', $tt,); return json($inser_data); } - + // public function tttt(){ // echo 'dsss'; // } @@ -191,7 +200,7 @@ class User extends Controller { return json(['code' => 1, 'msg' => '验证码错误']); } $res = $this->user_obj - ->where('account|email',$data['username']) + ->where('account|email', $data['username']) ->find(); if ($res == null) { return json(['code' => 1, 'msg' => '查无此人']); @@ -248,73 +257,76 @@ class User extends Controller { $mbcode = authcode($code); return $nowcode == $mbcode ? true : false; } + /** * 获取审稿人列表 */ - public function getreviewerList(){ + public function getreviewerList() { $data = $this->request->post(); - $limit_start = ($data['pageIndex']-1)*$data['pageSize']; + $limit_start = ($data['pageIndex'] - 1) * $data['pageSize']; $where['t_user.is_reviewer'] = 1; - if($data['journalId']==0){ - $subQuery = $this->user_obj->field('user_id')->where('account',$data['username'])->buildSql(); + if ($data['journalId'] == 0) { + $subQuery = $this->user_obj->field('user_id')->where('account', $data['username'])->buildSql(); $journals = $this->journal_obj->where("editor_id in $subQuery")->column('journal_id'); - $uids = $this->reviewer_to_journal_obj->where('journal_id','in',$journals)->column('reviewer_id'); - $where['t_user.user_id'] = ['in',$uids]; - }else{ - $uids = $this->reviewer_to_journal_obj->where('journal_id',$data['journalId'])->column('reviewer_id'); - $where['t_user.user_id'] = ['in',$uids]; + $uids = $this->reviewer_to_journal_obj->where('journal_id', 'in', $journals)->column('reviewer_id'); + $where['t_user.user_id'] = ['in', $uids]; + } else { + $uids = $this->reviewer_to_journal_obj->where('journal_id', $data['journalId'])->column('reviewer_id'); + $where['t_user.user_id'] = ['in', $uids]; } - $res = $this->user_obj->field('t_user.*,t_user_reviewer_info.*')->join('t_user_reviewer_info','t_user_reviewer_info.reviewer_id = t_user.user_id','LEFT')->where($where)->limit($limit_start,$data['pageSize'])->select(); + $res = $this->user_obj->field('t_user.*,t_user_reviewer_info.*')->join('t_user_reviewer_info', 't_user_reviewer_info.reviewer_id = t_user.user_id', 'LEFT')->where($where)->limit($limit_start, $data['pageSize'])->select(); $total = $this->user_obj->where($where)->count(); - if($res){ - return json(['code'=>0,'data'=>$res,'total'=>$total]); - }else{ - return json(['code'=>1]); + if ($res) { + return json(['code' => 0, 'data' => $res, 'total' => $total]); + } else { + return json(['code' => 1]); } } + /** * 获取审核员申请列表 */ - public function getReviewerApplyList(){ + public function getReviewerApplyList() { $data = $this->request->post(); - $limit_start = ($data['pageIndex']-1)*$data['pageSize']; + $limit_start = ($data['pageIndex'] - 1) * $data['pageSize']; $where['state'] = 0; - if($data['journalId']==0){ - $subQuery = $this->user_obj->field('user_id')->where('account',$data['username'])->buildSql(); + if ($data['journalId'] == 0) { + $subQuery = $this->user_obj->field('user_id')->where('account', $data['username'])->buildSql(); $journals = $this->journal_obj->where("editor_id in $subQuery")->column('journal_id'); - $where['journal_id'] = ['in',$journals]; - }else{ + $where['journal_id'] = ['in', $journals]; + } else { $where['journal_id'] = $data['journalId']; } - $res = $this->user_reviewer_obj->where($where)->limit($limit_start,$data['pageSize'])->select(); + $res = $this->user_reviewer_obj->where($where)->limit($limit_start, $data['pageSize'])->select(); $count = $this->user_reviewer_obj->where($where)->count(); - return json(['total'=>$count,'data'=>$res]); + return json(['total' => $count, 'data' => $res]); } + /** * 获取申请详情 */ - public function getApplyDetail(){ + public function getApplyDetail() { $reviewerId = $this->request->post('reviewerId'); $where['t_user_reviewer_apply.reviewer_id'] = $reviewerId; - $res = $this->user_reviewer_obj->field('t_user_reviewer_apply.*,t_journal.title journal,t_reviewer_major.title major_title')->join('t_journal','t_journal.journal_id = t_user_reviewer_apply.journal_id','left')->join('t_reviewer_major','t_user_reviewer_apply.major = t_reviewer_major.major_id','LEFT')->where($where)->find(); - if($res){ - return json(['code'=>0,'data'=>$res]); - }else{ - return json(['code'=>1]); + $res = $this->user_reviewer_obj->field('t_user_reviewer_apply.*,t_journal.title journal,t_reviewer_major.title major_title')->join('t_journal', 't_journal.journal_id = t_user_reviewer_apply.journal_id', 'left')->join('t_reviewer_major', 't_user_reviewer_apply.major = t_reviewer_major.major_id', 'LEFT')->where($where)->find(); + if ($res) { + return json(['code' => 0, 'data' => $res]); + } else { + return json(['code' => 1]); } } - + /** * 通过审核人 */ - public function reviewerAdopt(){ + public function reviewerAdopt() { $reviewerId = $this->request->post('reviewerId'); $where['reviewer_id'] = $reviewerId; $apply_info = $this->user_reviewer_obj->where($where)->find(); - $journal_info = $this->journal_obj->where('journal_id',$apply_info['journal_id'])->find(); - $has_res = $this->user_obj->where('account',$apply_info['name'])->find(); + $journal_info = $this->journal_obj->where('journal_id', $apply_info['journal_id'])->find(); + $has_res = $this->user_obj->where('account', $apply_info['name'])->find(); Db::startTrans(); - if($has_res==null){ + if ($has_res == null) { $insert_data['account'] = $apply_info['name']; $insert_data['password'] = md5('123456qwe'); $insert_data['email'] = $apply_info['email']; @@ -333,11 +345,11 @@ class User extends Controller { $insert_info['field'] = $apply_info['field']; $insert_info['qualifications'] = $apply_info['qualifications']; $addinfo_res = $this->user_reviewer_info_obj->insertGetId($insert_info); - $has_res = $this->user_obj->where('account',$apply_info['name'])->find(); - }else{ - $this->user_obj->where('user_id',$has_res['user_id'])->update(['is_reviewer'=>1]); - $cache_rev = $this->user_reviewer_info_obj->where('reviewer_id',$has_res['user_id'])->find(); - if($cache_rev==null){ + $has_res = $this->user_obj->where('account', $apply_info['name'])->find(); + } else { + $this->user_obj->where('user_id', $has_res['user_id'])->update(['is_reviewer' => 1]); + $cache_rev = $this->user_reviewer_info_obj->where('reviewer_id', $has_res['user_id'])->find(); + if ($cache_rev == null) { $insert_info['reviewer_id'] = $has_res['user_id']; $insert_info['gender'] = $apply_info['gender']; $insert_info['technical'] = $apply_info['technical']; @@ -359,97 +371,290 @@ class User extends Controller { $insert_rtj['ctime'] = time(); $res = $this->reviewer_to_journal_obj->insert($insert_rtj); //发送email - $content = "Thank you for registering as a ".$journal_info['title']." reviewer
" + $content = "Thank you for registering as a " . $journal_info['title'] . " reviewer
" . "At present, you have passed our examination"; - $content .= '

username:'.$apply_info['name'].'

'; - $content .= $has_res?'':'

password:123456qwe

'; - sendEmail($apply_info['email'],$journal_info['title'],$journal_info['title'], $content,$journal_info['email'],$journal_info['epassword']); - $update_res = $this->user_reviewer_obj->where($where)->update(['state'=>1]); - if($res && $add_res && $addinfo_res && $update_res){ + $content .= '

username:' . $apply_info['name'] . '

'; + $content .= $has_res ? '' : '

password:123456qwe

'; + sendEmail($apply_info['email'], $journal_info['title'], $journal_info['title'], $content, $journal_info['email'], $journal_info['epassword']); + $update_res = $this->user_reviewer_obj->where($where)->update(['state' => 1]); + if ($res && $add_res && $addinfo_res && $update_res) { Db::commit(); - return json(['code'=>0]); - }else{ + return json(['code' => 0]); + } else { Db::rollback(); - return json(['code'=>1]); + return json(['code' => 1]); } } + /** * 获取用户消息 */ - public function getUserMsg(){ + public function getUserMsg() { //接收参数 $data = $this->request->post(); - $user_info = $this->user_obj->where('account',$data['account'])->find(); - + $user_info = $this->user_obj->where('account', $data['account'])->find(); + //查询msglist $list = $this->user_msg_obj - ->where('user_id',$user_info['user_id']) - ->where('state',0) + ->where('user_id', $user_info['user_id']) + ->where('state', 0) ->order('user_msg_id desc') ->select(); - + return json($list); } - + /** * 更改用户消息状态 */ - public function changeMsgState(){ + public function changeMsgState() { //接收参数 $id = $this->request->post('id'); $this->user_msg_obj - ->where('user_msg_id',$id) - ->update(['state'=>1]); - return json(['code'=>0]); + ->where('user_msg_id', $id) + ->update(['state' => 1]); + return json(['code' => 0]); } - + /** * 审核人审查去重 */ - public function checkReviewer(){ + public function checkReviewer() { $username = $this->request->post('username'); - $userres = $this->user_obj->where('account',$username)->find(); - $applyres= $this->user_reviewer_obj->where("name = '$username' and state <> 2")->find(); - if($applyres||$userres){ - return json(['code'=>1]); - }else{ - return json(['code'=>0]); + $userres = $this->user_obj->where('account', $username)->find(); + $applyres = $this->user_reviewer_obj->where("name = '$username' and state <> 2")->find(); + if ($applyres || $userres) { + return json(['code' => 1]); + } else { + return json(['code' => 0]); } } - + /** * 拒绝审核人 */ - public function reviewerRejec(){ + public function reviewerRejec() { $reviewerId = $this->request->post('reviewerId'); $where['reviewer_id'] = $reviewerId; - $this->user_reviewer_obj->where($where)->update(['state'=>2]); - + $this->user_reviewer_obj->where($where)->update(['state' => 2]); + //拒绝审稿人email-》审稿人 - - return json(['code'=>0]); + + return json(['code' => 0]); } + /** * 获取专业列表 */ - public function getMajorList(){ + public function getMajorList() { $res = $this->reviewer_major_obj->select(); - return json(['code'=>0,'data'=>$res]); + return json(['code' => 0, 'data' => $res]); } /** - * 测试发邮件 + * orcid登陆 */ - public function test_email() { - $email = '751475802@qq.com'; - $title = 'Dear ' . '王金磊'; - $tt = config('email_hello'); - $content = $tt . '

Username:wangjinlei
Password:29698073

'; - $res = sendEmail($email, $title, 'TMR', $content,); + public function OrcidLogin() { + $data = $this->request->post(); + $url = 'https://orcid.org/oauth/token'; + $param['client_id'] = "APP-PKF0BGRP6DWM6FUB"; + $param['client_secret'] = "755a0e59-9282-44d0-afb4-ef9771942bab"; + $param['grant_type'] = "authorization_code"; + $param['code'] = $data['code']; + $param['redirect_uri'] = "https://submission.tmrjournals.com/orcidLink"; + $res = $this->myUrl($url, $param); + $r = json_decode($res); + //确定用户是否存在 + $user = $this->user_obj->where('orcid', $r->orcid)->find(); + if ($user == null) { + Cache::set($r->orcid, $res, 3600); + } + $re['user'] = $user; + $re['orcid'] = $r->orcid; + return jsonSuccess($re); + } + + /** + * 登陆后绑定orcid账号 + */ + public function OrcidBinding(){ + $data = $this->request->post(); + $url = 'https://orcid.org/oauth/token'; + $param['client_id'] = "APP-PKF0BGRP6DWM6FUB"; + $param['client_secret'] = "755a0e59-9282-44d0-afb4-ef9771942bab"; + $param['grant_type'] = "authorization_code"; + $param['code'] = $data['code']; + $param['redirect_uri'] = "https://submission.tmrjournals.com/orcidBind"; + $res = $this->myUrl($url, $param); + $r = json_decode($res); + + + $update['orcid'] = $r->orcid; + $update['orcid_code'] = $res; + + $this->user_obj->where('account',$data['account'])->update($update); + return jsonSuccess([]); + + } + + /** + * 绑定orcid到系统内的用户 + */ + public function orcidBind() { + $data = $this->request->post(); + //确定系统内部有此账户 + $serch['account'] = trim($data['username']); + $serch['password'] = md5($data['password']); + $user_info = $this->user_obj->where($serch)->find(); + if ($user_info == null) { + return jsonError('The account does not exist or the password is wrong!'); + } + $cache = Cache::get($data['orcid']); + if (!$cache) { + return jsonError('To complete the operation within one hour after verification, you have timed out'); + } + $orcid_obj = $this->object2array(json_decode($cache)); + $update['orcid'] = $orcid_obj['orcid']; + $update['orcid_code'] = $cache; + $this->user_obj->where('user_id', $user_info['user_id'])->update($update); + $new_info = $this->user_obj->where('user_id', $user_info['user_id'])->find(); + + $re['user'] = $new_info; + return jsonSuccess($re); + } + + /** + * 注册绑定orcid至我们的账户 + */ + public function orcidRegister() { + $data = $this->request->post(); + $cache = Cache::get($data['orcid']); + $res = $this->object2array(json_decode($cache)); + $insert['account'] = trim($data['username']); + $insert['password'] = md5($data['password']); + $insert['realname'] = trim($data['name']); + $insert['phone'] = trim($data['phone']); + $insert['email'] = trim($data['email']); + $insert['orcid'] = $res['orcid']; + $insert['orcid_code'] = $cache; + $insert['ctime'] = time(); + $id = $this->user_obj->insertGetId($insert); + $user_info = $this->user_obj->where('user_id', $id)->find(); + + $re['user'] = $user_info; + return jsonSuccess($re); + } + + /** + * 获取用户为了绑定orcid + */ +// public function getUserForOrcid(){ +// $data = $this->request->post(); +// $url = 'https://orcid.org/oauth/token'; +// $param['client_id'] = "APP-PKF0BGRP6DWM6FUB"; +// $param['client_secret'] = "755a0e59-9282-44d0-afb4-ef9771942bab"; +// $param['grant_type'] = "authorization_code"; +// $param['code'] = $data['code']; +// $param['redirect_uri'] = "https://www.tmrjournals.com"; +// $res = $this->myUrl($url, $param); +// $res1 = json_decode($res); +// $orcidID = $res1->orcid; +// $update['orcid'] = $orcidID; +// $update['orcid_code'] = $res; +// $this->user_obj->where('account',$data['account'])->update($update); +// return json(['code' => 0]); +// } + + /** + * 授权码转化成令牌,并存贮 + * object(stdClass)#31 (7) { + ["access_token"]=> + string(36) "28924261-b2a9-4ed0-952c-e2647843d1ba" + ["token_type"]=> + string(6) "bearer" + ["refresh_token"]=> + string(36) "ef66ffc7-1004-4d10-abe4-bdede248af47" + ["expires_in"]=> + int(631138518) + ["scope"]=> + string(13) "/authenticate" + ["name"]=> + string(8) "Nuoxi Pi" + ["orcid"]=> + string(19) "0000-0003-3278-0964" + } + */ + public function sq_to_lp(){ + $url = 'https://orcid.org/oauth/token'; + $param['client_id'] = "APP-PKF0BGRP6DWM6FUB"; + $param['client_secret'] = "755a0e59-9282-44d0-afb4-ef9771942bab"; + $param['grant_type'] = "authorization_code"; + $param['code'] = "7wv2wR"; + $param['redirect_uri'] = "https://www.tmrjournals.com"; + $res = $this->myUrl($url, $param); + $r = json_decode($res); + echo $r->orcid; + } + + + private function myUrl($url, $param) { + $header = array('Accept: application/json', 'Content-type:application/x-www-form-urlencoded'); + $pp = http_build_query($param); + $httph = curl_init($url); + curl_setopt($httph, CURLOPT_AUTOREFERER, true); + curl_setopt($httph, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($httph, CURLOPT_SSL_VERIFYHOST, false); + curl_setopt($httph, CURLOPT_RETURNTRANSFER, true); + curl_setopt($httph, CURLOPT_POST, true); //设置为POST方式 + curl_setopt($httph, CURLOPT_POSTFIELDS, $pp); + curl_setopt($httph, CURLOPT_HTTPHEADER, $header); + + $rst = curl_exec($httph); + curl_close($httph); + + return $rst; + } + + /** + * 项目转数组 + */ + private function object2array($object) { + if (is_object($object)) { + foreach ($object as $key => $value) { + $array[$key] = $value; + } + } else { + $array = $object; + } + return $array; + } + + /** + * curl -i -H "Accept: application/vnd.orcid+xml" -H 'Authorization: Bearer dd91868d-d29a-475e-9acb-bd3fdf2f43f4' 'https://api.sandbox.orcid.org/v2.1/0000-0002-9227-8514/education/22423' + */ + public function geturl() { +// $url = "https://api.orcid.org/v3.0/0000-0003-3278-0964/record"; + $url = "https://pub.orcid.org/v3.0/expanded-search/?q=0000-0003-3440-7901"; + $headerArray = array("Content-type: application/vnd.orcid+json", "Authorization: Bearer 28924261-b2a9-4ed0-952c-e2647843d1ba"); + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); + curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_HTTPHEADER, $headerArray); + $output = curl_exec($ch); + $err = curl_error($ch); + curl_close($ch); + $output = json_decode($output, true); echo '
';
-        var_dump($res);
+        var_dump($output);
+        echo '
'; + echo '
';
+        var_dump($err);
         echo '
'; die; + die; +// return $output; } }