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

122 lines
3.8 KiB
PHP
Executable File
Raw Permalink 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-07-08T16:02:30+08:00
# @Copyright: www.hiluker.cn
//平台用户入口
namespace api\controllers\gm\v1;
use Yii;
use yii\web\Controller;
use common\models\Member as User;
use addons\models\AcUserExt;
use addons\models\AcStore;
use addons\models\AcEmployee;
class Common extends Controller
{
protected int $pid = 0;
protected int $user_id = 0;
protected int $site_id = 0;
protected int $store_id = 0;
protected int $employee_id = 0;
protected object $user_info;
protected array $postdata = []; //重新整理一下客户端传输的数据
protected bool $imgHttp = TRUE; //图片附件地址生成http(s) //false:不生成http网址 true:仅生成http网址 https:生成https网址
protected int $page = 1; //当前数据分页
protected int $pageSize = 10; //默认数据分页大小
public $enableCsrfValidation = FALSE;
//替代常规的_construct 析构函数;其他方法调用前执行
protected int $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 User();
$res = $userModel->findOne($this->user_id);
if (!$res) {
$this->user_id = 0;
} else {
$this->user_info = $res;
}
//TBD 后期需加上更多登陆验证逻辑
}
if (isset($postdata['employee_id']) && (int)$postdata['employee_id'] > 0) {
$this->employee_id = (int)$postdata['employee_id'];
}
$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 userToken($user = [], $refresh = FALSE, $expire = NULL)
{
//生成token用户数据是否强制更新过期时间 // TBD 具体方法有待优化
$expire = $expire ? $expire : '+1 day';
$token = Yii::$app->session->get('memberToken');
$tokenExpired = Yii::$app->session->get('memberTokenExpired');
if (!$token || $refresh) {
$tokenExpired = strtotime($expire) * 1000;
$token = md5('username=' . $user['username'] . '&mobile=' . $user['mobile'] . '&time=' . $tokenExpired);
Yii::$app->session->set('memberToken', $token);
Yii::$app->session->set('memberTokenExpired', $tokenExpired);
}
$user['token'] = $token;
$user['tokenExpired'] = $tokenExpired;
return $user;
}
}