714 lines
25 KiB
PHP
714 lines
25 KiB
PHP
<?php
|
|
|
|
/*
|
|
* To change this license header, choose License Headers in Project Properties.
|
|
* To change this template file, choose Tools | Templates
|
|
* and open the template in the editor.
|
|
*/
|
|
|
|
namespace app\api\controller;
|
|
|
|
use think\Controller;
|
|
use think\Db;
|
|
use think\Queue;
|
|
use think\Validate;
|
|
|
|
/**
|
|
* @title 领域接口
|
|
* @description 领域接口
|
|
*/
|
|
class Major extends Base {
|
|
|
|
protected $article_obj = '';
|
|
protected $user_obj = '';
|
|
protected $user_act_obj = '';
|
|
protected $journal_obj = '';
|
|
protected $user_log_obj = '';
|
|
protected $reviewer_major_obj = '';
|
|
protected $article_reviewer_question_obj = '';
|
|
protected $article_msg_obj = '';
|
|
protected $article_file_obj = '';
|
|
protected $article_reviewer_obj = '';
|
|
protected $article_author_obj = '';
|
|
protected $article_transfer_obj = '';
|
|
protected $chief_to_journal_obj = '';
|
|
protected $login_auto_obj = '';
|
|
protected $major_obj = "";
|
|
protected $major_to_journal_obj = '';
|
|
protected $sync_obj = '';
|
|
|
|
public function __construct(\think\Request $request = null) {
|
|
parent::__construct($request);
|
|
$this->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 "<br/>------------------------------------<br/>";
|
|
$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'] . ")<br/>";
|
|
$this->echoJournalMajorChild($val, trim($v['issn']));
|
|
}
|
|
echo "<br/><br/><br/><br/>";
|
|
|
|
}
|
|
}
|
|
|
|
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'] . ")<br/>";
|
|
$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;
|
|
}
|
|
|
|
}
|