diff --git a/application/build.php b/application/build.php index 8d9627f..6a86e07 100644 --- a/application/build.php +++ b/application/build.php @@ -1,33 +1,33 @@ - -// +---------------------------------------------------------------------- - -return [ - // 生成应用公共文件 - '__file__' => ['common.php', 'config.php', 'database.php'], - - // 定义demo模块的自动生成 (按照实际定义的文件名生成) - 'demo' => [ - '__file__' => ['common.php'], - '__dir__' => ['behavior', 'controller', 'model', 'view'], - 'controller' => ['Index', 'Test', 'UserType'], - 'model' => ['User', 'UserType'], - 'view' => ['index/index'], - ], - // 其他更多的模块定义 - - // 定义api模块的自动生成 - 'api'=>[ - '__dir__' => ['behavior','controller','model','widget'], - 'controller'=> ['Index','Test','UserType'], - 'model' => ['User','UserType'], - 'view' => ['index/index','index/test'], - ], -]; + +// +---------------------------------------------------------------------- + +return [ + // 生成应用公共文件 + '__file__' => ['common.php', 'config.php', 'database.php'], + + // 定义demo模块的自动生成 (按照实际定义的文件名生成) + 'demo' => [ + '__file__' => ['common.php'], + '__dir__' => ['behavior', 'controller', 'model', 'view'], + 'controller' => ['Index', 'Test', 'UserType'], + 'model' => ['User', 'UserType'], + 'view' => ['index/index'], + ], + // 其他更多的模块定义 + + // 定义api模块的自动生成 + 'api'=>[ + '__dir__' => ['behavior','controller','model','widget'], + 'controller'=> ['Index','Test','UserType'], + 'model' => ['User','UserType'], + 'view' => ['index/index','index/test'], + ], +]; diff --git a/application/common.php b/application/common.php index 8fe288e..23c1fa1 100644 --- a/application/common.php +++ b/application/common.php @@ -1,142 +1,177 @@ - -// +---------------------------------------------------------------------- -// 应用公共文件 -function authcode($str) { - $key = substr(md5('ThinkPHP.CN'), 5, 8); - $str1 = substr(md5($str), 8, 10); - return md5($key . $str1); -} - -/** - * @function sendEmail - * @intro 发送邮件(带附件) - * @param $email 接收邮箱 - * @param $title 邮件标题 - * @param $from_name 发件人 - * @param $content 邮件内容 - * @param $memail 邮件内容 - * @param $mpassword 邮件内容 - * @param $attachmentFile 附件 (string | array) - * @return array - */ -function sendEmail($email = '', $title = '', $from_name = '', $content = '', $memail = '', $mpassword = '', $attachmentFile = '') { - date_default_timezone_set('PRC'); - //Create a new PHPMailer instance - $mail = new PHPMailer; - //Tell PHPMailer to use SMTP - $mail->isSMTP(); - //Enable SMTP debugging - // 0 = off (for production use) - // 1 = client messages - // 2 = client and server messages - $mail->SMTPDebug = 0; - //Ask for HTML-friendly debug output - $mail->Debugoutput = 'html'; - //charset - $mail->CharSet = 'UTF-8'; - //Set the hostname of the mail server - $mail->Host = "smtp.qiye.aliyun.com"; //请填写你的邮箱服务器 - //Set the SMTP port number - likely to be 25, 465 or 587 - $mail->Port = 25; //端口号 - //Whether to use SMTP authentication - $mail->SMTPAuth = true; - //Username to use for SMTP authentication - $mail->Username = $memail == '' ? "tmrweb@tmrjournals.com" : $memail; //发件邮箱用户名 - //Password to use for SMTP authentication - $mail->Password = $mpassword == '' ? "Wu999999tmrwe" : $mpassword; //发件邮箱密码 - //Set who the message is to be sent from - $mail->setFrom($memail == '' ? "tmrweb@tmrjournals.com" : $memail, $from_name); - //Set an alternative reply-to address(用户直接回复邮件的地址) - $mail->addReplyTo($memail == '' ? "tmrweb@tmrjournals.com" : $memail, $from_name); - //Set who the message is to be sent to - $mail->addAddress($email); - //Set the subject line - $mail->Subject = $title; - //Read an HTML message body from an external file, convert referenced images to embedded, - //convert HTML into a basic plain-text alternative body - $mail->msgHTML($content); - //Replace the plain text body with one created manually - $mail->AltBody = ''; - if (is_array($attachmentFile)) { - for ($i = 0; $i < count($attachmentFile); $i++) { - $mail->addAttachment($attachmentFile[$i], 'thanks.pdf' . $i); //这里可以是多维数组,然后循环附件的文件和名称 - } - } else { - if ($attachmentFile != '') { - //Attach an image file - $mail->addAttachment($attachmentFile, 'thanks.pdf'); - } - } - //send the message, check for errors - if (!$mail->send()) { - $status = 0; - $data = "邮件发送失败" . $mail->ErrorInfo; - ; - } else { - $status = 1; - $data = "邮件发送成功"; - } - return ['status' => $status, 'data' => $data]; //返回值(可选) -} - -/** - * 生成文章sn号 - * @return type - */ -function getArticleSN($abbr,$type) { - $str = $abbr; - $str .= date('Y', time()).$type.date('md', time()); - $where['accept_sn'] = ['like', "$str%"]; - $nowres = Db::name('article')->where($where)->select(); - $last_num = 1; - if ($nowres) { - foreach ($nowres as $v) { - $now_num = intval(substr($v['accept_sn'], -3)); - $last_num = $now_num > $last_num ? $now_num : $last_num; - } - $last_num += 1; - } - $last_str = sprintf("%03d", $last_num); - $str .= $last_str; - return $str; -} - -/** - * 增加usermsg - */ -function add_usermsg($userid, $content, $url) { - $msg_obj = Db::name('user_msg'); - $msg_info = $msg_obj->where('user_id', $userid) - ->where('url', $url) - ->where('state', 0) - ->find(); - if ($msg_info) { - return true; - } - $msgdata['user_id'] = $userid; - $msgdata['content'] = $content; - $msgdata['url'] = $url; - $msgdata['ctime'] = time(); - return $msg_obj->insert($msgdata); -} - -function jsonSuccess($data){ - return json(['code'=>0,'msg'=>'success','data'=>$data]); -} - -function jsonError($msg){ - return json(['code'=>1,'msg'=>$msg]); -} \ No newline at end of file + +// +---------------------------------------------------------------------- +// 应用公共文件 +function authcode($str) { + $key = substr(md5('ThinkPHP.CN'), 5, 8); + $str1 = substr(md5($str), 8, 10); + return md5($key . $str1); +} + +/** + * @function sendEmail + * @intro 发送邮件(带附件) + * @param $email 接收邮箱 + * @param $title 邮件标题 + * @param $from_name 发件人 + * @param $content 邮件内容 + * @param $memail 邮件内容 + * @param $mpassword 邮件内容 + * @param $attachmentFile 附件 (string | array) + * @return array + */ +function sendEmail($email = '', $title = '', $from_name = '', $content = '', $memail = '', $mpassword = '', $attachmentFile = '') { + date_default_timezone_set('PRC'); + //Create a new PHPMailer instance + $mail = new PHPMailer; + //Tell PHPMailer to use SMTP + $mail->isSMTP(); + //Enable SMTP debugging + // 0 = off (for production use) + // 1 = client messages + // 2 = client and server messages + $mail->SMTPDebug = 0; + //Ask for HTML-friendly debug output + $mail->Debugoutput = 'html'; + //charset + $mail->CharSet = 'UTF-8'; + //Set the hostname of the mail server + $mail->Host = "smtp.qiye.aliyun.com"; //请填写你的邮箱服务器 + //Set the SMTP port number - likely to be 25, 465 or 587 + $mail->Port = 25; //端口号 + //Whether to use SMTP authentication + $mail->SMTPAuth = true; + //Username to use for SMTP authentication + $mail->Username = $memail == '' ? "tmrweb@tmrjournals.com" : $memail; //发件邮箱用户名 + //Password to use for SMTP authentication + $mail->Password = $mpassword == '' ? "Wu999999tmrwe" : $mpassword; //发件邮箱密码 + //Set who the message is to be sent from + $mail->setFrom($memail == '' ? "tmrweb@tmrjournals.com" : $memail, $from_name); + //Set an alternative reply-to address(用户直接回复邮件的地址) + $mail->addReplyTo($memail == '' ? "tmrweb@tmrjournals.com" : $memail, $from_name); + //Set who the message is to be sent to + $mail->addAddress($email); + //Set the subject line + $mail->Subject = $title; + //Read an HTML message body from an external file, convert referenced images to embedded, + //convert HTML into a basic plain-text alternative body + $mail->msgHTML($content); + //Replace the plain text body with one created manually + $mail->AltBody = ''; + if (is_array($attachmentFile)) { + for ($i = 0; $i < count($attachmentFile); $i++) { + $mail->addAttachment($attachmentFile[$i], 'thanks.pdf' . $i); //这里可以是多维数组,然后循环附件的文件和名称 + } + } else { + if ($attachmentFile != '') { + //Attach an image file + $mail->addAttachment($attachmentFile, 'thanks.pdf'); + } + } + //send the message, check for errors + if (!$mail->send()) { + $status = 0; + $data = "邮件发送失败" . $mail->ErrorInfo; + ; + } else { + $status = 1; + $data = "邮件发送成功"; + } + return ['status' => $status, 'data' => $data]; //返回值(可选) +} + +/** + * 生成文章sn号 + * @return type + */ +function getArticleSN($abbr,$type) { + $str = $abbr; + $str .= date('Y', time()).$type.date('md', time()); + $where['accept_sn'] = ['like', "$str%"]; + $nowres = Db::name('article')->where($where)->select(); + $last_num = 1; + if ($nowres) { + foreach ($nowres as $v) { + $now_num = intval(substr($v['accept_sn'], -3)); + $last_num = $now_num > $last_num ? $now_num : $last_num; + } + $last_num += 1; + } + $last_str = sprintf("%03d", $last_num); + $str .= $last_str; + return $str; +} + +/** + * 增加usermsg + */ +function add_usermsg($userid, $content, $url) { + $msg_obj = Db::name('user_msg'); + $msg_info = $msg_obj->where('user_id', $userid) + ->where('url', $url) + ->where('state', 0) + ->find(); + if ($msg_info) { + return true; + } + $msgdata['user_id'] = $userid; + $msgdata['content'] = $content; + $msgdata['url'] = $url; + $msgdata['ctime'] = time(); + return $msg_obj->insert($msgdata); +} + +function jsonSuccess($data){ + return json(['code'=>0,'msg'=>'success','data'=>$data]); +} + +function jsonError($msg){ + return json(['code'=>1,'msg'=>$msg]); +} + +function myPost($url, $param=array()){ + + if(!is_array($param)){ + + throw new Exception("参数必须为array"); + + } + + $httph =curl_init($url); + +// curl_setopt($httph, CURLOPT_SSL_VERIFYPEER, 0); + +// curl_setopt($httph, CURLOPT_SSL_VERIFYHOST, 1); + + curl_setopt($httph,CURLOPT_RETURNTRANSFER,1); + + curl_setopt($httph, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"); + + curl_setopt($httph, CURLOPT_POST, 1);//设置为POST方式 + + curl_setopt($httph, CURLOPT_POSTFIELDS, $param); + +// curl_setopt($httph, CURLOPT_RETURNTRANSFER,0); + +// curl_setopt($httph, CURLOPT_HEADER,1); + + $rst=curl_exec($httph); + + curl_close($httph); + + return $rst; + + } + diff --git a/application/database.php b/application/database.php index 62cf8cd..d9ea6ff 100644 --- a/application/database.php +++ b/application/database.php @@ -1,58 +1,58 @@ - -// +---------------------------------------------------------------------- - -return [ - // 数据库类型 - 'type' => 'mysql', - // 服务器地址 -// 'hostname' => 'tmrdatebase.cubychyntk7p.ap-southeast-1.rds.amazonaws.com', - 'hostname' => 'localhost', - // 数据库名 - 'database' => 'journal', - // 用户名 -// 'username' => 'tmradmin', - 'username' => 'root', - // 密码 -// 'password' => 'UhUKzkifVWkTnoJ63Qfs', - 'password' => 'root', - // 端口 - 'hostport' => '3306', - // 连接dsn - 'dsn' => '', - // 数据库连接参数 - 'params' => [], - // 数据库编码默认采用utf8 - 'charset' => 'utf8', - // 数据库表前缀 - 'prefix' => 'j_', - // 数据库调试模式 - 'debug' => true, - // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) - 'deploy' => 0, - // 数据库读写是否分离 主从式有效 - 'rw_separate' => false, - // 读写分离后 主服务器数量 - 'master_num' => 1, - // 指定从服务器序号 - 'slave_no' => '', - // 自动读取主库数据 - 'read_master' => false, - // 是否严格检查字段是否存在 - 'fields_strict' => true, - // 数据集返回类型 - 'resultset_type' => 'array', - // 自动写入时间戳字段 - 'auto_timestamp' => false, - // 时间字段取出后的默认时间格式 - 'datetime_format' => 'Y-m-d H:i:s', - // 是否需要进行SQL性能分析 - 'sql_explain' => false, -]; + +// +---------------------------------------------------------------------- + +return [ + // 数据库类型 + 'type' => 'mysql', + // 服务器地址 +// 'hostname' => 'tmrdatebase.cubychyntk7p.ap-southeast-1.rds.amazonaws.com', + 'hostname' => 'localhost', + // 数据库名 + 'database' => 'journal', + // 用户名 +// 'username' => 'tmradmin', + 'username' => 'root', + // 密码 +// 'password' => 'UhUKzkifVWkTnoJ63Qfs', + 'password' => 'root', + // 端口 + 'hostport' => '3306', + // 连接dsn + 'dsn' => '', + // 数据库连接参数 + 'params' => [], + // 数据库编码默认采用utf8 + 'charset' => 'utf8', + // 数据库表前缀 + 'prefix' => 'j_', + // 数据库调试模式 + 'debug' => true, + // 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器) + 'deploy' => 0, + // 数据库读写是否分离 主从式有效 + 'rw_separate' => false, + // 读写分离后 主服务器数量 + 'master_num' => 1, + // 指定从服务器序号 + 'slave_no' => '', + // 自动读取主库数据 + 'read_master' => false, + // 是否严格检查字段是否存在 + 'fields_strict' => true, + // 数据集返回类型 + 'resultset_type' => 'array', + // 自动写入时间戳字段 + 'auto_timestamp' => false, + // 时间字段取出后的默认时间格式 + 'datetime_format' => 'Y-m-d H:i:s', + // 是否需要进行SQL性能分析 + 'sql_explain' => false, +]; diff --git a/application/extra/doc.php b/application/extra/doc.php index 08c6864..f12afda 100644 --- a/application/extra/doc.php +++ b/application/extra/doc.php @@ -19,7 +19,7 @@ return [ 'app\api\controller\Article', 'app\api\controller\Special', 'app\api\controller\Main', - 'app\super\controller\Main' + 'app\super\controller\Publish' ], 'filter_method' => [ //过滤 不解析的方法名称 diff --git a/application/super/controller/Publish.php b/application/super/controller/Publish.php index 67069ee..69b44f5 100644 --- a/application/super/controller/Publish.php +++ b/application/super/controller/Publish.php @@ -6,12 +6,14 @@ use think\Db; /** * @title 总监Main接口 - * @description 文章web相关操作 - * @group 文章web相关 + * @description 总监Main接口 + * @group 总监Main接口 */ -class Publish extends Controller - -{ +class Publish extends Controller{ + + const JURL = 'http://www.tougao.com/api/Article/getArticleForJournal'; +// const JURL = 'http://journalapi.tmrjournals.com/public/index.php/master/Article/getJournalCites'; + protected $admin_obj = ''; protected $journal_obj = ''; protected $article_obj = ''; @@ -29,7 +31,9 @@ class Publish extends Controller protected $journal_paper_art_obj = ''; protected $subscribe_journal_obj = ''; protected $subscribe_topic_obj = ''; - + protected $super_danger_obj = ''; + + public function __construct(\think\Request $request = null) { parent::__construct($request); $this->admin_obj = Db::name('admin'); @@ -49,19 +53,100 @@ class Publish extends Controller $this->journal_paper_art_obj = Db::name('journal_paper_art'); $this->subscribe_journal_obj = Db::name('subscribe_journal'); $this->subscribe_topic_obj = Db::name('subscribe_topic'); + $this->super_danger_obj = Db::name('super_danger'); } + /** + * @title 获取期刊列表 + * @description 获取期刊列表 + * @author wangjinlei + * @url /super/Publish/getMain + * @method POST + * + * @return journals:期刊信息array# + */ public function getMain(){ + $journals = $this->journal_obj->where('state',0)->select(); + foreach ($journals as $k => $v){ + $journals[$k]['mark'] = $this->calMark($v['journal_id']); + $last_stage = $this->journal_stage_obj + ->where('journal_id',$v['journal_id']) + ->where('is_publish',1) + ->where('state',0) + ->order('journal_stage_id desc') + ->limit(1) + ->select(); + $stage_now = $last_stage?$last_stage[0]:['issue_date'=>'2020-05-15']; + $ctime = strtotime($stage_now['issue_date']); + $cs = []; + $cs['issn'] = $v['issn']; + $cs['ctime'] = $ctime; + $cache_arts = $this->object_to_array(json_decode(myPost(self::JURL,$cs))); + $journals[$k]['arts'] = $cache_arts['data']; + $journals[$k]['artCount'] = count($cache_arts['data']); + } + $re['journals'] = $journals; + return jsonSuccess($re); + } + + /** + * 自动任务存储危险值 + */ + public function autoDanger(){ + $journals = $this->journal_obj->where('state',0)->select(); + foreach ($journals as $k => $v){ + $cah_res = $this->calMark($v['journal_id']); + $insert['journal_id'] = $v['journal_id']; + $insert['date'] = date('Ymd'); + $insert['danger'] = $cah_res['mk']; + $this->super_danger_obj->insert($insert); + } + } + + /** + * @title 获取历史危险值 + * @description 获取历史危险值 + * @author wangjinlei + * @url /super/Publish/getDangerHistory + * @method POST + * + * @return dates:日期数组# + * @return journals:期刊信息array# + */ + public function getDangerHistory(){ + $dates = []; + for ($index = 8; $index > 0; $index--) { + $dates[] = date("Ymd",strtotime("-$index week Sunday")); + } + $re['dates'] = $dates; + $journals = $this->journal_obj->where('state',0)->select(); + foreach ($journals as $k => $v){ + $fr = []; + $cache = $this->super_danger_obj + ->where('journal_id',$v['journal_id']) + ->where('state',0) + ->order('super_danger_id desc') + ->limit(8) + ->column('danger'); + for($in=0;$in<8-count($cache);$in++){ + $fr[] = 0; + } + foreach ($cache as $val){ + $fr[] = $val; + } + $journals[$k]['ma'] = $fr; + } + $re['journals'] = $journals; + return jsonSuccess($re); } public function test(){ - echo $this->calMark(1); + echo strtotime('2021-02-24'); } public function index() { echo THINK_VERSION; -// return '