Files
CKB-Interface/application/store/controller/BaseController.php
2026-03-24 10:39:16 +08:00

71 lines
2.2 KiB
PHP
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
namespace app\store\controller;
use think\Controller;
use think\Db;
use think\facade\Cache;
/**
* Store模块基础控制器 - V2版本
*/
class BaseController extends Controller
{
protected $device = [];
protected $userInfo = [];
protected $cacheExpire = 3600; // 缓存过期时间1小时
/**
* 构造方法
*/
public function __construct()
{
parent::__construct();
// 从请求中获取用户信息通过JWT中间件设置
$this->userInfo = $this->request->userInfo ?? [];
// 如果用户信息存在,获取设备信息
if (!empty($this->userInfo['id']) && !empty($this->userInfo['companyId'])) {
// 生成缓存key
$cacheKey = 'device_info_' . $this->userInfo['id'] . '_' . $this->userInfo['companyId'];
// 尝试从缓存获取设备信息
$device = Cache::get($cacheKey);
// 如果缓存不存在,则从数据库获取
if (!$device) {
$device = Db::name('device_user')
->alias('du')
->join('device d', 'd.id = du.deviceId', 'left')
->join('device_wechat_login dwl', 'dwl.deviceId = du.deviceId', 'left')
->join('wechat_account wa', 'dwl.wechatId = wa.wechatId', 'left')
->where([
'du.userId' => $this->userInfo['id'],
'du.companyId' => $this->userInfo['companyId']
])
->field('d.*,wa.wechatId,wa.alias,wa.s2_wechatAccountId as wechatAccountId')
->find();
// 将设备信息存入缓存
if ($device) {
Cache::set($cacheKey, $device, $this->cacheExpire);
}
}
$this->device = $device ?: [];
}
}
/**
* 清除设备信息缓存
*/
protected function clearDeviceCache()
{
if (!empty($this->userInfo['id']) && !empty($this->userInfo['companyId'])) {
$cacheKey = 'device_info_' . $this->userInfo['id'] . '_' . $this->userInfo['companyId'];
Cache::rm($cacheKey);
}
}
}