This commit is contained in:
wangjinlei
2024-12-22 17:10:15 +08:00
parent 3f03d9357a
commit 145b0ab8a5
4 changed files with 429 additions and 26 deletions

View File

@@ -1961,12 +1961,12 @@ class Article extends Base
foreach ($data['list'] as $v){
$insert['article_id'] = $data['article_id'];
if($v['type']==0){
$insert['table'] = $data['table'];
$insert['html_data'] = $data['html_data'];
$insert['table'] = $v['table'];
$insert['html_data'] = $v['html_data'];
$insert['type'] = 0;
}else{
$insert['type'] = 1;
$insert['url'] = $data['url'];
$insert['url'] = $v['url'];
}
$insert['ctime'] = time();
$this->article_table_obj->insert($insert);
@@ -2250,24 +2250,6 @@ class Article extends Base
foreach ($file_runs as $v){
$insert['article_id'] = $article_id;
$insert['image'] = $article_id."/".$v;
// if(strtolower(pathinfo($v,PATHINFO_EXTENSION))=="emf"){
// $imagick = new \Imagick();
// $formats = $imagick->queryFormats();
//// var_dump($formats);die;
// $inputPath = ROOT_PATH."public/articleImage/".$article_id."/".$v;
// // 确保文件读取成功
// $imagick->readImage($inputPath);
// $outputPath = ROOT_PATH."public/articleImage/".$article_id."/".substr($v,0,-3)."jpg";;
// // 确保转换成功并写入文件
// if ($imagick->setImageFormat('jpg') && $imagick->writeImage($outputPath)) {
// echo "Image successfully written to: " . $outputPath; // Debugging output
// $imagick->clear();
// $imagick->destroy();
// $insert['jpg_url'] = $article_id."/".substr($v,0,-3)."jpg";
// } else {
// echo "Image writing failed!"; // Debugging output
// }
// }
$insert['ctime'] = time();
$this->article_image_obj->insert($insert);
}

View File

@@ -428,7 +428,7 @@ class Base extends Controller
$insert1['article_id'] = $article_id;
$insert1['type'] = 1;
$insert1['ami_id'] = $c_id;
$insert1['content'] = $v;
$insert1['content'] = substr($v,0,-2)."imageId='".$c_id."' />";
$insert1['sort'] = $k+1;
$insert1['ctime'] = time();
$this->article_main_obj->insert($insert1);
@@ -509,7 +509,7 @@ class Base extends Controller
// 处理 TIFF 和 EMF 文件并转换为 JPG
file_put_contents($base_url . $newFileName, $fileContent);
$insert['article_id'] = $article_id;
$insert['url'] = $article_id . "/" . $newFileName;
$insert['url'] = $this->crossTifToPng($article_id . "/" . $newFileName);
$insert['ctime'] = time();
$this->article_main_image_obj->insert($insert);
} elseif ($extension == "docx") {
@@ -528,8 +528,9 @@ class Base extends Controller
}
$file_runs = $res['data']['list'];
foreach ($file_runs as $val) {
$ex = pathinfo($val,PATHINFO_EXTENSION);
$insert['article_id'] = $article_id;
$insert['url'] = $val;
$insert['url'] = ($ex=="tif"||$ex=="tiff")?crossTifToPng($val):$val;
$insert['ctime'] = time();
$this->article_main_image_obj->insert($insert);
}
@@ -543,6 +544,17 @@ class Base extends Controller
}
}
private function crossTifToPng($tif_url){
$url = $this->ts_base_url . "api/typeset/crossImage";
$program['url'] = $tif_url;
$res = object_to_array(json_decode(myPost($url, $program)));
if (!isset($res['data']['file'])) {
return;
}
return $res['data']['file'];
}
public function isImageTag($str) {
// 正则表达式匹配 <img> 标签,忽略大小写
$pattern = '/^\s*<img\s+[^>]*\s*src=["\'][^"\']+["\'][^>]*>\s*$/i';

View File

@@ -282,6 +282,102 @@ class Preaccept extends Base
}
public function positioningImage(){
$data = $this->request->post();
$rule = new Validate([
"am_id"=>"require",
"ami_id"=>"require"
]);
if(!$rule->check($data)){
return jsonError($rule->getError());
}
$am_info = $this->article_main_obj->where("am_id",$data['am_id'])->find();
$ami_info = $this->article_main_image_obj->where("ami_id",$data['ami_id'])->find();
$check = $this->article_main_obj->where("article_id",$am_info['article_id'])->where("ami_id",$data['ami_id'])->whereIn("state",[0,2])->find();
if($check){
return jsonError("Repeat operation");
}
$sort_check = $this->article_main_obj->where("article_id",$am_info['article_id'])->whereIn("state",[0,2])->where("sort",$am_info['sort']+1)->find();
if($sort_check){
$this->article_main_obj->where("article_id",$am_info['article_id'])->whereIn("state",[0,2])->where("sort",">",$am_info['sort'])->inc("sort",1)->update();
}
$insert['article_id'] = $am_info['article_id'];
$insert['type'] = 1;
$insert['content'] = "<img src='https://submission.tmrjournals.com/public/articleImage/".$ami_info['url']."' imageId='".$ami_info['ami_id']."'/>";
$insert['ami_id'] = $data['ami_id'];
$insert['sort'] = $am_info['sort']+1;
$insert['ctime'] = time();
$this->article_main_obj->insert($insert);
return jsonSuccess([]);
}
public function removeImage(){
$data = $this->request->post();
$rule = new Validate([
"am_id"=>"require"
]);
if(!$rule->check($data)){
return jsonError($rule->getError());
}
$am_info = $this->article_main_obj->where("am_id",$data['am_id'])->find();
if($am_info['type']!=1){
return jsonError("error");
}
$this->article_main_obj->where("am_id",$data['am_id'])->update(['state'=>1]);
return jsonSuccess([]);
}
public function removeTable(){
$data = $this->request->post();
$rule = new Validate([
"am_id"=>"require"
]);
if(!$rule->check($data)){
return jsonError($rule->getError());
}
$am_info = $this->article_main_obj->where("am_id",$data['am_id'])->find();
if($am_info['type']!=2){
return jsonError("error");
}
$this->article_main_obj->where("am_id",$data['am_id'])->update(['state'=>1]);
return jsonSuccess([]);
}
public function positioningTable(){
$data = $this->request->post();
$rule = new Validate([
"am_id" => "require",
"amt_id" => "require"
]);
if(!$rule->check($data)){
return jsonError($rule->getError());
}
$am_info = $this->article_main_obj->where("am_id",$data['am_id'])->find();
$amt_info = $this->article_main_table_obj->where("amt_id",$data['amt_id'])->find();
$check = $this->article_main_obj->where("article_id",$am_info['article_id'])->where("amt_id",$data['amt_id'])->whereIn('state',[0,2])->find();
if($check){
return jsonError("Repeat operation");
}
$sort_check = $this->article_main_obj->where("article_id",$amt_info['article_id'])->whereIn("state",[0,2])->where("sort",$am_info['sort']+1)->find();
if ($sort_check){
$this->article_main_obj->where("article_id",$am_info['article_id'])->whereIn("state",[0,2])->where('sort',">",$am_info['sort'])->inc("sort",1)->update();
}
$insert['article_id'] = $am_info['article_id'];
$insert['type'] = 2;
$insert['amt_id'] = $data['amt_id'];
$insert["content"] = "<table tableId='".$amt_info['amt_id']."' />";
$insert['sort'] = $am_info['sort']+1;
$insert['ctime'] = time();
$this->article_main_obj->insert($insert);
return jsonSuccess([]);
}
/**编辑refer
* @return \think\response\Json
* @throws \think\Exception
@@ -337,6 +433,23 @@ class Preaccept extends Base
}
public function addMainsRemark(){
$data = $this->request->post();
$rule = new Validate([
"am_id"=>"require",
"remark"=>"require"
]);
if(!$rule->check($data)){
return jsonError($rule->getError());
}
$update['remark'] = trim($data['remark']);
$update['state'] = 2;
$this->article_main_obj->where("am_id",$data['am_id'])->update($update);
return jsonSuccess([]);
}
public function searchDoi()
{
$data = $this->request->post();
@@ -369,6 +482,23 @@ class Preaccept extends Base
}
public function mytt(){
$ss[] = "this id test <b>this id <sub>3</sub>test <sup>55</sup>this <i>id test</i></b> this id test this id test this id test";
$ss[] = "this id test <b>this id <sub>3</sub>test <sup>55</sup>this <i>id test</i></b> this id test this id test this id test";
$ss[] = "<img src='https://submission.tmrjournals.com/public/articleImage/4477/image-44089.tif'/>";
$ss[] = "this id test <b>this id <sub>3</sub>test <sup>55</sup>this <i>id test</i></b> this id <blue>test this</blue> id test this id test";
$ss[] = "this id test <b>this id <sub>3</sub>test <sup>55</sup>this <i>id test</i></b> this id test this id test this id test";
$re['detail'] = json_encode($ss);
return jsonSuccess($re);
}
public function getArticleMains(){
$data = $this->request->post();
$rule = new Validate([
@@ -401,6 +531,59 @@ class Preaccept extends Base
return jsonSuccess($re);
}
public function getMainImages(){
$data = $this->request->post();
$rule = new Validate([
"article_id"=>"require"
]);
if(!$rule->check($data)){
return jsonError($rule->getError());
}
$list = $this->article_main_image_obj
->field("*,if((select am_id from t_article_main where ami_id = t_article_main_image.ami_id and state <>1)>0 ,1,0) as has_selected")
->where("t_article_main_image.article_id",$data['article_id'])
->where("t_article_main_image.state",0)
->select();
$re['list'] = $list;
return jsonSuccess($re);
}
public function getNotes(){
$data = $this->request->post();
$rule = new Validate([
"article_id"=>"require"
]);
if(!$rule->check($data)){
return jsonError($rule->getError());
}
$list = $this->article_main_obj->where("article_id",$data['article_id'])->where("state",2)->select();
$re['list'] = $list;
return jsonSuccess($re);
}
public function getMainTables(){
$data = $this->request->post();
$rule = new Validate([
"article_id"=>"require"
]);
if(!$rule->check($data)){
return jsonError($rule->getError());
}
$list = $this->article_main_table_obj
->field("*,if((select am_id from t_article_main where amt_id = t_article_main_table.amt_id and state <>1)>0 ,1,0) as has_selected")
->where("t_article_main_table.article_id",$data['article_id'])
->where("t_article_main_table.state",0)
->select();
$re['list'] = $list;
return jsonSuccess($re);
}
public function delArticleMains(){
$data = $this->request->post();
$rule = new Validate([
@@ -437,13 +620,123 @@ class Preaccept extends Base
if(!$rule->check($data)){
return jsonError($rule->getError());
}
$list = $this->article_main_obj->where("article_id",$data['article_id'])->where("state",1)->select();
$list = $this->article_main_obj->where("article_id",$data['article_id'])->where("type",0)->where("state",1)->select();
$re['list'] = $list;
return jsonSuccess($re);
}
public function addMainImage(){
$data = $this->request->post();
$rule = new Validate([
"article_id"=>"require",
"url"=>"require"
]);
if(!$rule->check($data)){
return jsonError($rule->getError());
}
$insert['article_id'] = $data['article_id'];
$insert['url'] = $data['url'];
if(isset($data['note'])){
$insert['note'] = $data['note'];
}
$insert['ctime'] = time();
$this->article_main_image_obj->insert($insert);
return jsonSuccess([]);
}
public function editMainImage(){
$data = $this->request->post();
$rule = new Validate([
"ami_id"=>"require",
"url"=>"require",
"note"=>"require"
]);
if(!$rule->check($data)){
return jsonError($rule->getError());
}
$update['url'] = $data['url'];
$update['note'] = $data['note'];
$this->article_main_image_obj->where("ami_id",$data['ami_id'])->update($update);
return jsonSuccess([]);
}
public function addMainTable(){
$data = $this->request->post();
$rule = new Validate([
"article_id"=>"require",
"table_data"=>"require",
"title"=>"require",
"note"=>"require"
]);
if(!$rule->check($data)){
return jsonError($rule->getError());
}
$insert['article_id'] = $data['article_id'];
$insert['type'] = 0;
$insert['table_data'] = $data['table_data'];
if(isset($data['html_data'])){
$insert['html_data'] = $data['html_data'];
}
$insert['title']=$data['title'];
$insert['note'] = $data['note'];
$insert['ctime'] = time();
$this->article_main_table_obj->insert($insert);
return jsonSuccess([]);
}
public function editMainTable(){
$data = $this->request->post();
$rule = new Validate([
"amt_id"=>"require",
"table_data"=>"require",
"html_data"=>"require",
"title"=>"require",
"note"=>"require"
]);
if(!$rule->check($data)){
return jsonError($rule->getError());
}
$update['table_data'] = $data['table_data'];
$update['html_data'] = $data['html_data'];
$update['title'] = $data['title'];
$update['note'] = $data['note'];
$this->article_main_table_obj->where("amt_id",$data['amt_id'])->update($update);
return jsonSuccess([]);
}
public function up_img_mainImage(){
$article_id = input('post.article_id');
$file = request()->file('mainImage');
// 检查文件是否有效
if (!$file) {
return jsonError("error");
}
// 定义上传目录
$uploadDir = ROOT_PATH . 'public' . DS . "articleImage".DS.$article_id;
// 生成自定义文件名,使用 uniqid 生成唯一的文件名
$fileName = uniqid('file_') . '.' . pathinfo($file->getInfo("name"),PATHINFO_EXTENSION);
// 移动文件到指定目录,并重命名
$info = $file->move($uploadDir, $fileName);
// 检查文件是否上传成功
if ($info) {
$re['upurl'] = $article_id."/".$fileName;
return jsonSuccess($re);
} else {
return jsonError("error");
}
}
public function replyArticleRecycle(){
$data = $this->request->post();
$rule = new Validate([
@@ -455,7 +748,7 @@ class Preaccept extends Base
$info = $this->article_main_obj->where("am_id",$data['am_id'])->find();
$check = $this->article_main_obj->where("article_id",$info['article_id'])->where("sort",$info['sort'])->whereIn("state",[0,2])->find();
if($check){
$this->article_main_obj->where("article_id",$data['article_id'])->where("sort",">=",$info['sort'])->inc('sort',1)->update();
$this->article_main_obj->where("article_id",$info['article_id'])->where("sort",">=",$info['sort'])->inc('sort',1)->update();
}
$this->article_main_obj->where("am_id",$data['am_id'])->update(['state'=>0]);
return jsonSuccess([]);

View File

@@ -1113,6 +1113,122 @@ class Production extends Base
return jsonSuccess([]);
}
public function doTypeSettingNew(){
$data = $this->request->post();
$rule = new Validate([
"article_id"=>"require"
]);
if(!$rule->check($data)){
return jsonError($rule->getError());
}
$p_info = $this->production_article_obj->where("article_id",$data['article_id'])->whereIn("state",[0,2])->find();
if(!$p_info){
return jsonError("error");
}
$article_info = $this->article_obj->where('article_id', $p_info['article_id'])->find();
$journal_info = $this->journal_obj->where('journal_id', $p_info['journal_id'])->find();
$editor_info = $this->user_obj->where('user_id', $journal_info['editor_id'])->find();
$typesetInfo = [];
$typesetInfo['info_title'] = $p_info['title'];
$typesetInfo['info_type'] = $p_info['type'];
$typesetInfo['doi'] = $p_info['doi'];
$typesetInfo['topic'] = '';
// $typesetInfo['mainText'] = $p_info['main'];
$au_res = $this->authorFormate($p_info['p_article_id']);
$typesetInfo['author'] = $au_res['author'];
$typesetInfo['authorAddress'] = $au_res['address'];
$typesetInfo['authorContribution'] = $p_info['author_contribution'];
//查询通讯作者
$corr_authors = $this->production_article_author_obj->where('p_article_id', $p_info['p_article_id'])->where('is_report', 1)->where('state', 0)->select();
$corrauthor = '';
$corremail = '';
foreach ($corr_authors as $v) {
$corrauthor .= trim($v['first_name']) . ' ' . trim($v['last_name']) . '. ';
$corremail .= $v['email'] . '. ';
}
$typesetInfo['authorCorresponding'] = substr(trim($corrauthor), 0, -1);
$typesetInfo['authorCorrespondingEmail'] = substr(trim($corremail), 0, -1);
$typesetInfo['traditon'] = $p_info['tradition'];
$typesetInfo['journal'] = $journal_info['title'];
$typesetInfo['jabbr'] = $journal_info['jabbr'];
//查询分期
$url = 'http://journalapi.tmrjournals.com/public/index.php/master/Journal/getStageDetail';
$cs['journal_stage_id'] = $p_info['journal_stage_id'];
$list = object_to_array(json_decode(myPost($url, $cs)));
$stage_re = $list['data']['stage'];
$typesetInfo['stage'] = $stage_re['stage_year'] . ';' . $stage_re['stage_vol'] . '(' . $stage_re['stage_no'] . '):' . $p_info['npp']; //2022;6(1):17
$typesetInfo['little_author'] = $p_info['abbr'];
$typesetInfo['website'] = $journal_info['website'];
$typesetInfo['acknowledgment'] = $p_info['acknowledgment'];
$typesetInfo['received_date'] = date("d F Y", $article_info['ctime']);;
$typesetInfo['accepted_date'] = date("d F Y", $article_info['rtime']);
$typesetInfo['online_date'] = $p_info['pub_date']; //这里可能会有问题
$typesetInfo['abbreviation'] = $p_info['abbreviation'];
$typesetInfo['abstractText'] = $p_info['abstract'];
$typesetInfo['keywords'] = $p_info['keywords'];
$typesetInfo['userAccount'] = $editor_info['nickname'];
$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');
}
$typesetInfo['filename'] = "http://api.tmrjournals.com/public/" . $files[0]['file_url'];
$rs = $this->production_article_refer_obj->where('p_article_id', $p_info['p_article_id'])->where('state', 0)->order("index")->select();
$typesetInfo['refers'] = json_encode($rs);
$main_list = $this->article_main_obj->where("article_id",$data['article_id'])->whereIn("state",[0,2])->order("sort")->select();
$mainList = [];
$images = [];
$tables = [];
foreach ($main_list as $k =>$item){
$main_string = "";
if($item['type']==1){
$info = $this->article_main_image_obj->where("ami_id",$item['ami_id'])->find();
$arr['image'] = $info['url'];
$arr['note'] = $info['note'];
$images[$info['ami_id']] = $arr;
$main_string = "<img src='https://submission.tmrjournals.com/public/articleImage/".$info['url']."' imageId='".$info['ami_id']."'/>";
}else if($item['type']==2){
$info = $this->article_main_table_obj->where("amt_id",$item['amt_id'])->find();
$arr_table['title'] = $info['title'];
$arr_table['table_data'] = $info['table_data'];
$arr_table['note'] = $info['note'];
$tables[$info['amt_id']] = $arr_table;
$main_string = "<table tableId='".$info['amt_id']."'/>";
}else{
$main_string = $item['content'];
}
$mainList[] = $main_string;
}
$typesetInfo['mainText'] = json_encode($mainList);
$typesetInfo['images'] = $images;
$typesetInfo['tables'] = $tables;
$url = $this->ts_base_url."api/typeset/webGetDocx";
// $url = "http://192.168.110.110:8081/typeset/createDocx";
$res = object_to_array(json_decode(myPost1($url, $typesetInfo)));
if (!isset($res['data']['file']) || $res['data']['file'] == '') {
return jsonError('create error');
}
return jsonSuccess($res);
}
/**
* 获取生产实例详情
*/