user_obj = Db::name('user'); $this->user_act_obj = Db::name('user_act'); $this->article_obj = Db::name('article'); $this->journal_obj = Db::name('journal'); $this->user_log_obj = Db::name('user_log'); $this->reviewer_major_obj = Db::name('reviewer_major'); $this->reviewer_to_journal_obj = Db::name('reviewer_to_journal'); $this->article_reviewer_question_obj = Db::name('article_reviewer_question'); $this->article_msg_obj = Db::name('article_msg'); $this->article_file_obj = Db::name('article_file'); $this->article_reviewer_obj = Db::name('article_reviewer'); $this->article_author_obj = Db::name('article_author'); $this->article_transfer_obj = Db::name('article_transfer'); $this->chief_to_journal_obj = Db::name('chief_to_journal'); $this->login_auto_obj = Db::name('login_auto'); $this->major_obj = Db::name("major"); $this->major_to_journal_obj = Db::name('major_to_journal'); $this->sync_obj = Db::name("sync"); } /** * @title 添加领域 * @description 添加领域 * @author wangjinlei * @url /api/Major/addMajor * @method POST * * @param name:major_title type:string require:1 desc:领域名 * @param name:nickname type:string require:0 desc:别称 * @param name:major_sort type:int require:0 desc:权重 * @param name:pid type:int require:1 desc:父级id(0代表顶级) * */ public function addMajor() { $data = $this->request->post(); $insert['major_title'] = trim($data['major_title']); $insert['pid'] = $data['pid']; if (isset($data['nickname'])) { $insert['nickname'] = trim($data['nickname']); } if (isset($data['major_sort'])) { $insert['major_sort'] = $data['major_sort']; } if ($data['pid'] == 0) { $insert['major_level'] = 1; } else { $p_major = $this->major_obj->where('major_id', $data['pid'])->find(); $insert['major_level'] = $p_major['major_level'] + 1; } $insert['major_ctime'] = time(); $this->major_obj->insert($insert); return jsonSuccess([]); } /** * @title 编辑领域 * @description 编辑领域 * @author wangjinlei * @url /api/Major/editMajor * @method POST * * @param name:major_id type:int require:1 desc:领域id * @param name:major_title type:string require:1 desc:领域名 * @param name:nickname type:string require:0 desc:别称 * @param name:major_sort type:int require:0 desc:权重 * */ public function editMajor() { $data = $this->request->post(); $update['major_title'] = trim($data['major_title']); if (isset($data['nickname'])) { $update['nickname'] = trim($data['nickname']); } if (isset($data['major_sort'])) { $update['major_sort'] = $data['major_sort']; } $this->major_obj->where("major_id", $data['major_id'])->update($update); return jsonSuccess([]); } /** * @title 删除大池子领域 * @description 删除大池子领域 * @author wangjinlei * @url /api/Major/delMajor * @method POST * * @param name:major_id type:int require:1 desc:领域id * */ public function delMajor() { $data = $this->request->post(); //判断是否有子集 $check_child = $this->major_obj->where('pid', $data['major_id'])->where('major_state', 0)->select(); if ($check_child) { return jsonError("Subsets exist and cannot be deleted"); } //判断是否存在引用 $check_journal = $this->major_to_journal_obj->where('major_id', $data['major_id'])->where("mtj_state", 0)->select(); if ($check_journal) { return jsonError("The journal has references and cannot be deleted"); } $this->major_obj->where("major_id", $data['major_id'])->update(['major_state' => 1]); return jsonSuccess([]); } /** * @title 选择期刊领域 * @description 选择期刊领域 * @author wangjinlei * @url /api/Major/getMajorForAddArticle * @method POST * * @param name:journal_id type:int require:1 desc:期刊id * @param name:major_id type:int require:1 desc:领域id * */ public function getMajorForAddArticle(){ $data = $this->request->post(); $journal_info = $this->journal_obj->where('journal_id',$data['journal_id'])->find(); $majors = $this->major_to_journal_obj ->field("t_major.*") ->join("t_major",'t_major.major_id = t_major_to_journal.major_id','left') ->where("t_major_to_journal.journal_issn",$journal_info['issn']) ->where("t_major.pid",$data['major_id']) ->where("t_major.major_type",0) ->where("t_major.major_state",0) ->select(); $re['majors'] = $majors; return jsonSuccess($re); } /** * @title 获取领域树 * @description 获取领域树 * @author wangjinlei * @url /api/Major/getMajorList * @method POST * * @return majors:领域树 */ public function getMajorList() { //查询顶级 $list = $this->major_obj->where('pid', 0)->where("major_type", 0)->where('major_state', 0)->order('major_sort desc')->select(); foreach ($list as $k => $v) { $cache_child = $this->getMajorChild($v); if ($cache_child != null) { $list[$k]['children'] = $cache_child; } } $re['majors'] = $list; return jsonSuccess($re); } /** * @title 添加期刊领域 * @description 添加期刊领域 * @author wangjinlei * @url /api/Major/addJournalMajor * @method POST * * @param name:major_id type:int require:1 desc:领域id * @param name:journal_issn type:string require:1 desc:期刊issn * */ public function addJournalMajor() { $data = $this->request->post(); //判断major父级是否存在 $major_info = $this->major_obj->where('major_id', $data['major_id'])->where("major_state", 0)->find(); $check_major = $this->major_to_journal_obj->where('major_id', $major_info['pid'])->where('journal_issn', trim($data['journal_issn']))->where('mtj_state', 0)->find(); if ($major_info['pid'] != 0 && $check_major == null) { return jsonError("Parent must exist"); } //判断是否重复添加 $check = $this->major_to_journal_obj->where('major_id', $data['major_id'])->where('journal_issn', trim($data['journal_issn']))->where('mtj_state', 0)->find(); if ($check) { return jsonError("Add repeatedly"); } $has = $this->major_to_journal_obj->where('major_id', $data['major_id'])->where('journal_issn', trim($data['journal_issn']))->where('mtj_state', 1)->find(); if ($has) { $this->major_to_journal_obj->where('major_id', $data['major_id'])->where('journal_issn', trim($data['journal_issn']))->where('mtj_state', 1)->update(['mtj_state' => 0]); } else { $insert['major_id'] = $data['major_id']; $insert['journal_issn'] = trim($data['journal_issn']); $insert['mtj_ctime'] = time(); $this->major_to_journal_obj->insert($insert); } return jsonSuccess([]); } /** * @title 增加期刊独有领域 * @description 增加期刊独有领域 * @author wangjinlei * @url /api/Major/addJounalAloneMajor * @method POST * * @param name:journal_issn type:string require:1 desc:期刊issn号 * @param name:major_title type:string require:1 desc:领域名 * @param name:nickname type:string require:0 desc:别称 * @param name:major_sort type:int require:0 desc:权重 * @param name:pid type:int require:1 desc:父级id(0代表顶级) * */ public function addJounalAloneMajor() { $data = $this->request->post(); Db::startTrans(); $insert['major_title'] = trim($data['major_title']); $insert['pid'] = $data['pid']; if (isset($data['nickname'])) { $insert['nickname'] = trim($data['nickname']); } if (isset($data['major_sort'])) { $insert['major_sort'] = $data['major_sort']; } if ($data['pid'] == 0) { $insert['major_level'] = 2; } else { $p_major = $this->major_obj->where('major_id', $data['pid'])->find(); $insert['major_level'] = $p_major['major_level'] + 1; } $insert['major_ctime'] = time(); $insert['major_type'] = 1; $major_id = $this->major_obj->insertGetId($insert); $ins["major_id"] = $major_id; $ins["journal_issn"] = trim($data['journal_issn']); $ins['mtj_ctime'] = time(); $res = $this->major_to_journal_obj->insert($ins); if ($major_id && $res) { Db::commit(); return jsonSuccess([]); } else { Db::rollback(); return jsonError("system error"); } } /** * @title 删除期刊独有领域 * @description 删除期刊独有领域 * @author wangjinlei * @url /api/Major/delJournalAloneMajor * @method POST * * @param name:major_id type:int require:1 desc:领域id * @param name:journal_issn type:string require:1 desc:期刊issn * */ public function delJournalAloneMajor() { $data = $this->request->post(); $this->major_obj->where("major_id", $data['major_id'])->update(['major_state' => 1]); $this->major_to_journal_obj->where("major_id", $data['major_id'])->where("journal_issn", trim($data['journal_issn']))->update(["mtj_state" => 1]); return jsonSuccess([]); } /** * @title 编辑期刊独有领域 * @description 编辑期刊独有领域 * @author wangjinlei * @url /api/Major/editJournalAloneMajor * @method POST * * @param name:major_id type:int require:1 desc:领域id * @param name:major_title type:string require:1 desc:领域名 * @param name:nickname type:string require:0 desc:别称 * @param name:major_sort type:int require:0 desc:权重 */ public function editJournalAloneMajor() { $data = $this->request->post(); $update['major_title'] = trim($data['major_title']); if (isset($data['nickname'])) { $update['nickname'] = trim($data['nickname']); } if (isset($data['major_sort'])) { $update['major_sort'] = $data['major_sort']; } $this->major_obj->where("major_id", $data['major_id'])->update($update); return jsonSuccess([]); } /** * @title 获取期刊独有领域树 * @description 获取期刊独有领域树 * @author wangjinlei * @url /api/Major/getJournalAloneMajors * @method POST * * @param name:journal_issn type:string require:1 desc:期刊issn号 * * @return majors:领域列表# */ public function getJournalAloneMajors() { $data = $this->request->post(); if (!isset($data['journal_issn'])) { return jsonError("参数异常"); } //获取主节点 $list = $this->major_to_journal_obj ->field('t_major.*') ->join("t_major", 't_major.major_id = t_major_to_journal.major_id', 'left') ->where("t_major_to_journal.journal_issn", trim($data['journal_issn'])) ->where("t_major.pid", 0) ->where("t_major.major_type", 1) ->where("t_major_to_journal.mtj_state", 0) ->select(); foreach ($list as $k => $v) { $cache_child = $this->getJournalAloneMajorChild($v, trim($data['journal_issn'])); if ($cache_child != null) { $list[$k]['children'] = $cache_child; } } $re['majors'] = $list; return jsonSuccess($re); } /** * @title 删除期刊领域 * @description 删除期刊领域 * @author wangjinlei * @url /api/Major/delJournalMajor * @method POST * * @param name:major_id type:int require:1 desc:领域id * @param name:journal_issn type:string require:1 desc:期刊issn * */ public function delJournalMajor() { $data = $this->request->post(); //判断是否有子集 $check = $this->major_to_journal_obj ->join("t_major", "t_major.major_id = t_major_to_journal.major_id", "left") ->where("t_major_to_journal.journal_issn", trim($data['journal_issn'])) ->where("t_major_to_journal.mtj_state", 0) ->where("t_major.pid", $data['major_id']) ->select(); if ($check) { return jsonError("Subsets exist and cannot be deleted"); } $this->major_to_journal_obj->where('major_id', $data['major_id'])->where('journal_issn', $data['journal_issn'])->update(['mtj_state' => 1]); return jsonSuccess([]); } public function getMajorByArticleId(){ $data = $this->request->post(); $rule = new Validate([ "article_id"=>"require" ]); if(!$rule->check($data)){ return jsonError($rule->getError()); } $majors = $this->major_to_article_obj->where("article_id",$data['article_id'])->where("state",0)->select(); foreach ($majors as $k => $v){ $majors[$k]["ids"] = getMajorShu($v['major_id']); $majors[$k]['str'] = getMajorStr($v['major_id']); } $re['majors'] = $majors; return jsonSuccess($re); } public function addMajorByArticleIdForEditor(){ $data = $this->request->post(); $rule = new Validate([ "article_id"=>"require", "major_id"=>"require" ]); if(!$rule->check($data)){ return jsonError($rule->getError()); } $check = $this->major_to_article_obj->where("article_id",$data['article_id'])->where("major_id",$data['major_id'])->where("state",0)->find(); if($check){ return jsonError("Repeat addition"); } $insert['article_id'] = $data['article_id']; $insert['major_id'] = $data['major_id']; $insert['ctime'] = time(); $this->major_to_article_obj->insert($insert); return jsonSuccess([]); } public function delMajorByArticleIdForEditor(){ $data = $this->request->post(); $rule = new Validate([ "mta_id"=>"require" ]); if(!$rule->check($data)){ return jsonError($rule->getError()); } $this->major_to_article_obj->where("mta_id",$data['mta_id'])->update(['state'=>1]); return jsonSuccess([]); } /** * @title 获取期刊领域树 * @description 获取期刊领域树 * @author wangjinlei * @url /api/Major/getJournalMajorList * @method POST * * @param name:journal_issn type:string require:1 desc:期刊issn号 * * @return majors:领域信息# */ public function getJournalMajorList() { $data = $this->request->post(); if (!isset($data['journal_issn'])) { return jsonError("Parameter exception"); } // $data['journal_issn'] = '2815-7125'; //获取主节点 $list = $this->major_to_journal_obj ->field('t_major.*') ->join("t_major", 't_major.major_id = t_major_to_journal.major_id', 'left') ->where("t_major_to_journal.journal_issn", trim($data['journal_issn'])) ->where("t_major.pid", 0) ->where("t_major.major_type", 0) ->where("t_major_to_journal.mtj_state", 0) ->select(); foreach ($list as $k => $v) { $cache_child = $this->getJournalMajorChild($v, trim($data['journal_issn'])); if ($cache_child != null) { $list[$k]['children'] = $cache_child; } } $re['majors'] = $list; return jsonSuccess($re); } public function getJournalMajorInAll(){ $data = $this->request->post(); $rule = new Validate([ "journal_issn"=>"require" ]); if(!$rule->check($data)){ return jsonError($rule->getError()); } //查询顶级 $list = $this->major_obj->where('pid', 0)->where("major_type", 0)->where('major_state', 0)->order('major_sort desc')->select(); foreach ($list as $k => $v) { $selected = $this->major_to_journal_obj->where("major_id",$v['major_id'])->where("journal_issn",$data['journal_issn'])->where("mtj_state",0)->find(); $list[$k]['selected'] = $selected?1:0; $cache_child = $this->getMajorChild($v,$data['journal_issn']); if ($cache_child != null) { $list[$k]['children'] = $cache_child; } } $re['majors'] = $list; return jsonSuccess($re); } /** * @title 获取全部期刊 * @description 获取全部期刊 * @author wangjinlei * @url /api/Major/getAllJournals * @method POST * * @return journals:期刊信息# */ public function getAllJournals() { $list = $this->journal_obj->where('state', 0)->select(); $re['journals'] = $list; return jsonSuccess($re); } public function echoJournalMajor() { $list = $this->journal_obj->select(); foreach ($list as $v) { echo $v['title']; echo "
------------------------------------
"; $l = $this->major_to_journal_obj ->field('t_major.*') ->join("t_major", 't_major.major_id = t_major_to_journal.major_id', 'left') ->where("t_major_to_journal.journal_issn", trim($v['issn'])) ->where("t_major.pid", 0) ->where("t_major.major_type", 0) ->where("t_major_to_journal.mtj_state", 0) ->select(); foreach ($l as $val) { while ($val['major_level'] > 0) { echo "* * "; $val['major_level']--; } echo $val['major_title'] . "(" . $val['nickname'] . ")
"; $this->echoJournalMajorChild($val, trim($v['issn'])); } echo "



"; } } private function echoJournalMajorChild($major, $issn) { $list = $this->major_to_journal_obj ->field("t_major.*") ->join("t_major", "t_major_to_journal.major_id=t_major.major_id", 'left') ->where("pid", $major['major_id']) ->where("t_major.major_type", 0) ->where("t_major_to_journal.journal_issn", $issn) ->where("t_major_to_journal.mtj_state", 0) ->select(); foreach ($list as $k => $v) { while ($v['major_level'] > 0) { echo "* * "; $v['major_level']--; } echo $v['major_title'] . "(" . $v['nickname'] . ")
"; $this->echoJournalMajorChild($v, $issn); } } /** * @title 同步总方法 * @description 同步总方法 * @author wangjinlei * @url /api/Major/synchroniz * @method POST * */ public function synchroniz() { $this->synchronization(); $this->synchronizationJournal(); } /** * @title 同步大池子数据 * @description 同步大池子数据 * @author wangjinlei * @url /api/Major/synchronization * @method POST * */ public function synchronization() { $url = "http://journalapi.tmrjournals.com/public/index.php/master/Major/sync_all"; $url1 = "http://api.tmrjournals.cn/public/index.php/master/Major/sync_all"; $list = $this->major_obj->select(); myPost($url, ['majors' => json_encode($list)]); myPost($url1, ['majors' => json_encode($list)]); $this->sync_obj->where('akey', 1)->update(['all_major' => time()]); return jsonSuccess([]); } /** * @title 同步小池子数据 * @description 同步小池子数据 * @author wangjinlei * @url /api/Major/synchronizationJournal * @method POST * */ public function synchronizationJournal() { $url = "http://journalapi.tmrjournals.com/public/index.php/master/Major/sync_journal"; $url1 = "http://api.tmrjournals.cn/public/index.php/master/Major/sync_journal"; $list = $this->major_to_journal_obj->select(); myPost($url, ['majors' => json_encode($list)]); myPost($url1, ['majors' => json_encode($list)]); $this->sync_obj->where('akey', 1)->update(['journal_major' => time()]); return jsonSuccess([]); } /** * @title 获取大池子最后同步时间 * @description 获取大池子最后同步时间 * @author wangjinlei * @url /api/Major/getLastSyncTime * @method POST * * @return sync:同步时间记录# */ public function getLastSyncTime() { $d = $this->sync_obj->where('akey', 1)->find(); $re['sync'] = $d; return jsonSuccess($re); } /** * 获取领域子树 */ private function getMajorChild($major,$issn=null) { $list = $this->major_obj->where('pid', $major['major_id'])->where("major_type", 0)->where('major_state', 0)->order("major_sort desc")->select(); if ($list == null) { return null; } foreach ($list as $k => $v) { if($issn!=null){ $selected = $this->major_to_journal_obj->where("major_id",$v['major_id'])->where("journal_issn",$issn)->where("mtj_state",0)->find(); $list[$k]['selected'] = $selected?1:0; } $cache_child = $this->getMajorChild($v,$issn); if ($cache_child != null) { $list[$k]['children'] = $cache_child; } } return $list; } public function getJournalsForMajor(){ $data = $this->request->post(); $rule = new Validate([ "major_id"=>"require" ]); if(!$rule->check($data)){ return jsonError($rule->getError()); } $issn_list = $this->major_to_journal_obj->where("major_id",$data['major_id'])->where("mtj_state",0)->column("journal_issn"); $list = $this->journal_obj->whereIn("issn",$issn_list)->select(); $re['list'] = $list; return jsonSuccess($re); } /** * 获取期刊领域树子集 * @param type $major * @param type $issn */ private function getJournalMajorChild($major, $issn) { $list = $this->major_to_journal_obj ->field("t_major.*") ->join("t_major", "t_major_to_journal.major_id=t_major.major_id", 'left') ->where("pid", $major['major_id']) ->where("t_major.major_type", 0) ->where("t_major_to_journal.journal_issn", $issn) ->where("t_major_to_journal.mtj_state", 0) ->select(); foreach ($list as $k => $v) { $cache_child = $this->getJournalMajorChild($v, $issn); if ($cache_child != null) { $list[$k]['children'] = $cache_child; } } return $list; } /** * 获取期刊独有领域树子集 * @param type $major * @param type $issn */ private function getJournalAloneMajorChild($major, $issn) { $list = $this->major_to_journal_obj ->field("t_major.*") ->join("t_major", "t_major_to_journal.major_id=t_major.major_id", 'left') ->where("pid", $major['major_id']) ->where("t_major.major_type", 1) ->where("t_major_to_journal.journal_issn", $issn) ->where("t_major_to_journal.mtj_state", 0) ->select(); foreach ($list as $k => $v) { $cache_child = $this->getJournalAloneMajorChild($v, $issn); if ($cache_child != null) { $list[$k]['children'] = $cache_child; } } return $list; } }