one(array('option_type' => $type, 'option_appid' => $appid)); } if (!$project) { $project = Dever::input('project', 1); } } if (is_numeric($project)) { $project = Dever::db('token/project')->one(array('option_type' => 8, 'option_id' => $project)); } if (!$project) { Dever::alert('project is not exits!'); } $this->project = $project; } /** * 获取当前站点的配置 * * @return mixed */ public function project() { return $this->project; } /** * 获取当前基本的配置 * * @return mixed */ public function config() { return $this->config; } /** * 更新数据库 * state true为强制更新数据库中的token数据 * * @return mixed */ private function save($type = 'token', $state = false, $interval = 4000) { $db = Dever::db('token/token'); $where['project_id'] = $this->project['id']; $info = $db->one($where); $update = false; if ($state == true) { $update = true; } elseif ($info && time() - $info['mdate'] >= $info['expires']) { $update = true; } elseif($info) { return $info; } if (!$info) { $update = false; } Dever::load('aliyun/'); \AlibabaCloud\Client\AlibabaCloud::accessKeyClient($this->project['appid'],$this->project['secret'])->regionId("cn-shanghai")->asDefaultClient(); $response = \AlibabaCloud\Client\AlibabaCloud::nlsCloudMeta()->v20180518()->createToken()->request(); if ($response && isset($response['Token']) && $response['Token']) { $data['value'] = $response['Token']['Id']; $data['expires'] = $response['Token']['ExpireTime']; $data['project_id'] = $this->project['id']; $expires = $data['expires'] - time() - $interval; if ($expires <= 0) { $data['expires'] = $data['expires'] - 300; } else { $data['expires'] = $expires; } if ($update == true) { $data['where_id'] = $info['id']; $id = $info['id']; $db->update($data); } else { $id = $db->insert($data); } $data['id'] = $id; } elseif($info && $info['value']) { $data = $info; $data['value'] = $info['value']; } return $data; } /** * 获取最新的token * * @return mixed */ public function token($state = false) { $result = $this->save('token', $state); return $result['value']; } }