fm453 314745edf8 优化ctms-api语法、修复已知BUG;
主要修复ctms-api、dacms对PHP新版本的支持问题
2025-04-10 23:19:15 +08:00

116 lines
3.5 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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;
}
}