170 lines
6.5 KiB
PHP
170 lines
6.5 KiB
PHP
|
|
<?php
|
|||
|
|
|
|||
|
|
namespace app\KitchenScale\controller\admin;
|
|||
|
|
|
|||
|
|
use think\Controller;
|
|||
|
|
use think\Db;
|
|||
|
|
use think\Cache;
|
|||
|
|
use think\Log;
|
|||
|
|
use PHPMailer\PHPMailer\PHPMailer;
|
|||
|
|
|
|||
|
|
class Base extends Controller{
|
|||
|
|
|
|||
|
|
protected $base_use_db_name = [
|
|||
|
|
'1'=>'test_app_data_log',
|
|||
|
|
];
|
|||
|
|
protected $return_data_all = [
|
|||
|
|
'10001'=>'关键参数缺失',
|
|||
|
|
'10002'=>'操作失败',
|
|||
|
|
'10003'=>'信息核实错误',
|
|||
|
|
'10004'=>'未找到有效数据',
|
|||
|
|
'10005'=>'参数格式错误',
|
|||
|
|
'10006'=>'参数不能为空',
|
|||
|
|
'10007'=>'参数错误',
|
|||
|
|
'10008'=>'',
|
|||
|
|
'10009'=>'',
|
|||
|
|
'10010'=>'自定义信息',
|
|||
|
|
'20001'=>'登录失效',
|
|||
|
|
'99999'=>'网络异常,请稍后重试',
|
|||
|
|
];
|
|||
|
|
// 加 bcadd(,,20)
|
|||
|
|
// 减 bcsub(,,20)
|
|||
|
|
// 乘 bcmul(,,20)
|
|||
|
|
// 除 bcdiv(,,20)
|
|||
|
|
################################################################接口################################################################
|
|||
|
|
################################################################接口################################################################
|
|||
|
|
################################################################接口################################################################
|
|||
|
|
// 接口记录
|
|||
|
|
public function record_api_log($params, $error = null, $response = null){
|
|||
|
|
$logContent = "接口请求参数:" . json_encode($params, JSON_UNESCAPED_UNICODE) . PHP_EOL;
|
|||
|
|
if ($error) {
|
|||
|
|
$logContent .= "错误信息:" . $error['all_content'] . PHP_EOL;
|
|||
|
|
if(!cache($error['flie']."_".$error['line'])){
|
|||
|
|
cache($error['flie']."_".$error['line'],"API错误",3600);
|
|||
|
|
$this->send_email_api_error(["tsf3920322@126.com"],['title'=>'接口报错','from_user_name'=>'厨房秤(后台)','content'=>$logContent]);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if ($response) {
|
|||
|
|
$logContent .= "返回信息:" . json_encode($response, JSON_UNESCAPED_UNICODE) . PHP_EOL;
|
|||
|
|
}
|
|||
|
|
// 使用ThinkPHP的日志记录方法
|
|||
|
|
Log::record($logContent, 'api_log');
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
/* 接口说明(发邮件)
|
|||
|
|
* $address(收件人的邮箱地址) 数组 格式: ['460834639@qq.com','460834639@qq.com'.......]
|
|||
|
|
* $content(邮件的主题数据信息) 数组 格式:['title'=>'123','from_user_name'=>'123','content'=>'123']
|
|||
|
|
* $annex(附件路径信息) 字符串
|
|||
|
|
*/
|
|||
|
|
public function send_email_api_error($address,$content,$annex=''){
|
|||
|
|
// $ad = '460834639@qq.com';
|
|||
|
|
$ad1 = '295155911@qq.com';
|
|||
|
|
$mail = new PHPMailer(); //实例化
|
|||
|
|
$mail->IsSMTP(); // 启用SMTP
|
|||
|
|
$mail->Host = "smtp.126.com"; //SMTP服务器 163邮箱例子
|
|||
|
|
$mail->Port = 465; //邮件发送端口
|
|||
|
|
$mail->SMTPAuth = true; //启用SMTP认证
|
|||
|
|
$mail->SMTPSecure = 'ssl';
|
|||
|
|
$mail->CharSet = "UTF-8"; //字符集
|
|||
|
|
$mail->Encoding = "base64"; //编码方式
|
|||
|
|
$mail->Username = "tsf3920322@126.com"; //你的邮箱
|
|||
|
|
$mail->Password = "HLWXNRPUCTHJFIIX"; //你的密码(邮箱后台的授权密码)
|
|||
|
|
$mail->From = "tsf3920322@126.com"; //发件人地址(也就是你的邮箱)
|
|||
|
|
|
|||
|
|
// $mail->Subject = "微盟测试邮件"; //邮件标题
|
|||
|
|
$mail->Subject = $content['title']; //邮件标题
|
|||
|
|
|
|||
|
|
// $mail->FromName = "微盟体测中心"; //发件人姓名
|
|||
|
|
$mail->FromName = $content['from_user_name']; //发件人姓名
|
|||
|
|
|
|||
|
|
|
|||
|
|
for ($i=0; $i < count($address); $i++) {
|
|||
|
|
$mail->AddAddress($address[$i], ""); //添加收件人(地址,昵称)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if($annex != ''){
|
|||
|
|
// $url = ROOT_PATH. 'public' . DS . 'tsf' . DS .'demoooo.jpg';
|
|||
|
|
$mail->AddAttachment($annex,''); // 添加附件,并指定名称
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
$mail->IsHTML(true); //支持html格式内容
|
|||
|
|
|
|||
|
|
$neirong = $content['content'];
|
|||
|
|
|
|||
|
|
$mail->Body = $neirong; //邮件主体内容
|
|||
|
|
//发送
|
|||
|
|
if (!$mail->Send()) {
|
|||
|
|
|
|||
|
|
return ['code' => 10003,'msg'=>$mail->ErrorInfo];
|
|||
|
|
// return $mail->ErrorInfo;
|
|||
|
|
} else {
|
|||
|
|
return ['code' => 0];
|
|||
|
|
// return 'success';
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
// 验证
|
|||
|
|
public function verify_data_is_ok($data = 2,$type){
|
|||
|
|
if($type == 'str'){
|
|||
|
|
if (is_string($data)) {
|
|||
|
|
return true;
|
|||
|
|
} else {
|
|||
|
|
$this->record_api_log($data, null, ['code'=>10005,'msg'=>'校验参数不为字符串',[]]);
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
}else if($type == 'num'){
|
|||
|
|
if (is_numeric($data)) {
|
|||
|
|
return true;
|
|||
|
|
} else {
|
|||
|
|
$this->record_api_log($data, null, ['code'=>10005,'msg'=>'校验参数不为数字',[]]);
|
|||
|
|
return false;
|
|||
|
|
}
|
|||
|
|
}else if($type == 'intnum'){
|
|||
|
|
$pattern = '/^\d+$/';
|
|||
|
|
if (preg_match($pattern, $data)) {
|
|||
|
|
return true; // 匹配成功,返回 true
|
|||
|
|
} else {
|
|||
|
|
$this->record_api_log($data, null, ['code'=>10005,'msg'=>'校验参数不为整数数字',[]]);
|
|||
|
|
return false; // 匹配失败,返回 false
|
|||
|
|
}
|
|||
|
|
}else if($type == 'datetime'){
|
|||
|
|
$formats = ['Y-m-d','Y-m-d H:i:s'];
|
|||
|
|
foreach ($formats as $format) {
|
|||
|
|
$dateTime = \DateTime::createFromFormat($format, $data);
|
|||
|
|
// 检查时间字符串是否成功解析,并且解析后的日期时间与原始字符串表示的时间一致
|
|||
|
|
if ($dateTime && $dateTime->format($format) === $data) {
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
// 如果所有格式都解析失败,则返回 false
|
|||
|
|
$this->record_api_log($data, null, ['code'=>10005,'msg'=>'校验参数不为日期格式',[]]);
|
|||
|
|
return false;
|
|||
|
|
}else if($type == 'other'){
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
public function msg($data,$str='',$result = []){
|
|||
|
|
if(is_array($data)){
|
|||
|
|
if($str != ''){
|
|||
|
|
return json(['code'=>0,'msg'=>$str,'data'=>$data]);
|
|||
|
|
}else{
|
|||
|
|
return json(['code'=>0,'msg'=>'操作成功','data'=>$data]);
|
|||
|
|
}
|
|||
|
|
}else{
|
|||
|
|
if($str != ''){
|
|||
|
|
return json(['code'=>$data,'msg'=>$str,'data'=>$result]);
|
|||
|
|
}
|
|||
|
|
return json(['code'=>$data,'msg'=>$this->return_data_all[$data],'data'=>$result]);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public function ceshi(){
|
|||
|
|
echo 'hello';
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|