专刊
This commit is contained in:
@@ -82,18 +82,46 @@ class Special extends Controller {
|
||||
$special_insert['intro'] = $data['intro'];
|
||||
$special_insert['keywords'] = $data['keywords'];
|
||||
$special_insert['deadline'] = $data['deadline'];
|
||||
if(isset($data['specialIcon']))$special_insert['icon'] = $data['specialIcon'];
|
||||
// 记录是否有客座编辑(入库 + 流程控制)
|
||||
$hasEditor = (isset($data['hasEditor']) && intval($data['hasEditor']) === 1) ? 1 : 0;
|
||||
$special_insert['hasEditor'] = $hasEditor;
|
||||
$special_insert['ctime'] = time();
|
||||
$special_id = $this->journal_special_obj->insertGetId($special_insert);
|
||||
//处理客座编辑
|
||||
$editor_insert['journal_id'] = $data['journal_id'];
|
||||
$editor_insert['email'] = $data['email'];
|
||||
$editor_insert['first_name'] = $data['first_name'];
|
||||
$editor_insert['last_name'] = $data['last_name'];
|
||||
$editor_insert['address'] = $data['address'];
|
||||
$editor_insert['interests'] = $data['interests'];
|
||||
$editor_insert['website'] = $data['website'];
|
||||
$editor_insert['orcid'] = $data['orcid'];
|
||||
$editor_id = $this->journal_special_editor_obj->insertGetId($editor_insert);
|
||||
if (!$special_id) {
|
||||
Db::rollback();
|
||||
return jsonError('system error');
|
||||
}
|
||||
|
||||
// hasEditor 非 1:只创建专刊,不保存客座编辑信息
|
||||
if (!$hasEditor) {
|
||||
Db::commit();
|
||||
return jsonSuccess(['journal_special_id' => intval($special_id), 'hasEditor' => 0]);
|
||||
}
|
||||
|
||||
//处理客座编辑:同期刊下相同邮箱已存在则复用,否则新建
|
||||
$email = trim($data['email']);
|
||||
$existEditor = $this->journal_special_editor_obj
|
||||
->where('journal_id', $data['journal_id'])
|
||||
->where('email', $email)
|
||||
->where('state', 0)
|
||||
->find();
|
||||
if ($existEditor) {
|
||||
$editor_id = $existEditor['journal_special_editor_id'];
|
||||
} else {
|
||||
$editor_insert['journal_id'] = $data['journal_id'];
|
||||
$editor_insert['email'] = $email;
|
||||
$editor_insert['first_name'] = $data['first_name'];
|
||||
$editor_insert['last_name'] = $data['last_name'];
|
||||
$editor_insert['address'] = $data['address'];
|
||||
$editor_insert['interests'] = $data['interests'];
|
||||
$editor_insert['website'] = $data['website'];
|
||||
$editor_insert['orcid'] = $data['orcid'];
|
||||
if (isset($data['icon'])) {
|
||||
$editor_insert['icon'] = $data['icon'];
|
||||
}
|
||||
$editor_id = $this->journal_special_editor_obj->insertGetId($editor_insert);
|
||||
}
|
||||
//处理客座编辑关系信息
|
||||
$to_insert['journal_special_editor_id'] = $editor_id;
|
||||
$to_insert['journal_special_id'] = $special_id;
|
||||
@@ -101,13 +129,13 @@ class Special extends Controller {
|
||||
$res = $this->journal_special_to_editor_obj->insert($to_insert);
|
||||
if($special_id&&$editor_id&&$res){
|
||||
Db::commit();
|
||||
return jsonSuccess([]);
|
||||
return jsonSuccess(['journal_special_id' => intval($special_id), 'hasEditor' => 1]);
|
||||
}else{
|
||||
Db::rollback();
|
||||
return jsonError('system error');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @title 客座期刊特邀编辑(添加)
|
||||
* @description 客座期刊特邀编辑(添加)
|
||||
@@ -535,6 +563,59 @@ class Special extends Controller {
|
||||
}
|
||||
return $frag;
|
||||
}
|
||||
|
||||
/**
|
||||
* @title 通过期刊+标题+截止日期查询专刊ID
|
||||
* @description 供外部系统在 addSpecial 成功但未返回ID时反查
|
||||
* @url /api/Special/getSpecialIdByUnique
|
||||
* @method POST
|
||||
*
|
||||
* @param name:journal_id type:int require:1 desc:期刊id
|
||||
* @param name:title type:string require:1 desc:专刊标题
|
||||
* @param name:deadline type:string require:1 desc:截止日期
|
||||
*/
|
||||
public function getSpecialIdByUnique() {
|
||||
$data = $this->request->post();
|
||||
$journalId = intval(isset($data['journal_id']) ? $data['journal_id'] : 0);
|
||||
$title = trim(isset($data['title']) ? $data['title'] : '');
|
||||
$deadline = trim(isset($data['deadline']) ? $data['deadline'] : '');
|
||||
if ($journalId <= 0 || $title === '' || $deadline === '') {
|
||||
return json(['code' => 1, 'msg' => 'journal_id/title/deadline required']);
|
||||
}
|
||||
|
||||
// 优先精确匹配(包含非1状态,避免“刚创建未发布”查不到)
|
||||
$special = $this->journal_special_obj
|
||||
->where('journal_id', $journalId)
|
||||
->where('title', $title)
|
||||
->where('deadline', $deadline)
|
||||
->where('state', '<>', 1)
|
||||
->order('journal_special_id desc')
|
||||
->find();
|
||||
if (!$special) {
|
||||
// 次优:同标题最新一条(仍排除删除态)
|
||||
$special = $this->journal_special_obj
|
||||
->where('journal_id', $journalId)
|
||||
->where('title', $title)
|
||||
->where('state', '<>', 1)
|
||||
->order('journal_special_id desc')
|
||||
->find();
|
||||
}
|
||||
|
||||
if (!$special) {
|
||||
return json(['code' => 1, 'msg' => 'special not found']);
|
||||
}
|
||||
|
||||
return json([
|
||||
'code' => 0,
|
||||
'msg' => 'success',
|
||||
'data' => [
|
||||
'journal_special_id' => intval($special['journal_special_id']),
|
||||
'title' => isset($special['title']) ? $special['title'] : '',
|
||||
'deadline' => isset($special['deadline']) ? $special['deadline'] : '',
|
||||
'state' => intval(isset($special['state']) ? $special['state'] : 0),
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user