优化ctms-api语法、修复已知BUG;

主要修复ctms-api、dacms对PHP新版本的支持问题
This commit is contained in:
2025-07-13 19:37:42 +08:00
parent 65bbd06981
commit 037f274ec5
413 changed files with 107271 additions and 72326 deletions
+115
View File
@@ -0,0 +1,115 @@
<?php
# @Author: 嗨噜客(三亚) <fm453>
# @Date: 2022-04-15 20:22:03
# @Email: fm453@lukegzs.com
# @Last modified by: fm453
# @Last modified time: 2024-08-09T09:02:06+08:00
# @Copyright: www.hiluker.cn
//前端用户入口
namespace api\controllers\client\v1;
use Yii;
use yii\web\Controller;
use common\models\Fans;
//‘from’字段为ctms的数据
use addons\models\AcFansExt;
class Common extends Controller
{
protected $pid = 0;
protected $user_id = 0;
protected $site_id = 0;
protected $user_info;
protected $postdata = []; //重新整理一下客户端传输的数据
protected $imgHttp = TRUE; //图片附件地址生成http(s) //false:不生成http网址; true:仅生成http网址; https:生成https网址
protected $page = 1; //当前数据分页
protected $pageSize = 10; //默认数据分页大小
public $enableCsrfValidation = FALSE;
protected $timestamp = TIMESTAMP;
//替代常规的_construct 析构函数;其他方法调用前执行
public function init()
{
parent::init();
//判断请求内容类型 content-type,支持 json请求
$postdata = Yii::$app->request->post();
$headers = Yii::$app->request->headers;
$contentType = $headers->get('content-type');
if ($contentType == "application/json") {
$postdata = json_decode(file_get_contents('php://input'), TRUE);
}
$this->postdata = $postdata;
$session = Yii::$app->session;
if (isset($postdata['pid'])) {
if ((int)$postdata['pid'] > 0) {
$this->pid = (int)$postdata['pid'];
$session->set('pid', $this->pid);
} else {
$session->set('pid', 0);
}
} else if (isset($_GET['pid'])) {
if ((int)$_GET['pid'] > 0) {
$this->pid = $_GET['pid'];
$session->set('pid', $this->pid);
} else {
$session->set('pid', 0);
}
} else {
$session->set('pid', 0);
}
$this->site_id = Yii::$app->params['siteId'];
if (isset($postdata['uid']) && (int)$postdata['uid'] > 0) {
$this->user_id = (int)$postdata['uid'];
}
if ($this->user_id) {
$userModel = new Fans();
$res = $userModel->findOne($this->user_id);
if (!$res) {
$this->user_id = 0;
} else {
$this->user_info = $res;
}
//TBD 后期需加上更多登陆验证逻辑
}
$page = isset($postdata['page']) ? (int)$postdata['page'] : 1;
$this->page = $page <= 0 ? 1 : $page;
$pageSize = isset($postdata['psize']) ? (int)$postdata['psize'] : 10;
$this->pageSize = $pageSize <= 0 ? 10 : $pageSize;
}
public function result($msg, $data = NULL, $code = 0)
{
$return = [];
$return['code'] = $code;
$return['msg'] = $msg;
if ($data) {
$return['data'] = $data;
}
exit(json_encode($return, JSON_UNESCAPED_UNICODE));
}
public function fansToken($user = [], $refresh = FALSE, $expire = NULL)
{
//生成token(用户数据,是否强制更新,过期时间 // TBD 具体方法有待优化
$expire = $expire ? $expire : '+1 day';
$token = Yii::$app->session->get('fansToken');
$tokenExpired = Yii::$app->session->get('fansTokenExpired');
if (!$token || $refresh) {
$tokenExpired = strtotime($expire) * 1000;
$token = md5('username=' . $user['username'] . '&mobile=' . $user['mobile'] . '&time=' . $tokenExpired);
Yii::$app->session->set('fansToken', $token);
Yii::$app->session->set('fansTokenExpired', $tokenExpired);
}
$user['token'] = $token;
$user['tokenExpired'] = $tokenExpired;
return $user;
}
}