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