cert = defined('NIUSHOP_AUTH_CODE') ? NIUSHOP_AUTH_CODE : ''; $this->url = 'https://api.niushop.com'; } /** * post 服务器请求 */ private function doPost($post_url, $post_data) { $post_data[ 'code' ] = $this->cert; $httpClient = new HttpClient(); $res = $httpClient->post($this->url . $post_url . "?url=" . "http://hlnweb.cn", $post_data); return $res; } /** * 在线下载文件 * @param $param */ public function test() { $result = $this->doPost('/upgrade/upgrade/test', []);//授权 return $result; } /** * 获取可升级的版本信息 */ public function getSystemUpgradeInfo() { $app_info = config('info'); $addon_array = array_map('basename', glob('addon/*', GLOB_ONLYDIR)); $plugin_info = []; foreach ($addon_array as $addon) { $addon_info_path = "addon/{$addon}/config/info.php"; if (file_exists($addon_info_path)) { $info = include_once $addon_info_path; $plugin_info[] = [ 'code' => $info[ 'name' ], // 'version_no' => "520221109001", // 'version_name' => "5.1.0", 'version_no' => $info[ 'version_no' ], 'version_name' => $info[ 'version' ], ]; } } $post_data = [ 'app_info' => [ 'code' => $app_info[ 'name' ], 'version_no' => $app_info[ 'version_no' ], 'version_name' => $app_info[ 'version' ], ], 'plugin_info' => $plugin_info ]; $res = $this->doPost('/upgrade/upgrade/updateinfo', $post_data); $res = json_decode($res, true); //处理返回数据 if (!empty($res) && $res[ 'code' ] == 0) { //整合系统和插件数据 $app_data = $res[ 'data' ][ 'app_data' ]; $client_data = $res[ 'data' ][ 'client_data' ]; $plugin_data = $res[ 'data' ][ 'plugin_data' ]; $install_data = $res[ 'data' ][ 'install_data' ]; $data = []; if ($app_data[ 'code' ] == 0) { $app_data[ 'data' ][ 'action' ] = 'upgrade'; $app_data[ 'data' ][ 'action_name' ] = '升级'; $app_data[ 'data' ][ 'type' ] = 'system'; $app_data[ 'data' ][ 'type_name' ] = '系统'; $data[] = $app_data[ 'data' ]; } foreach ($client_data as $key => $val) { if ($val[ 'code' ] == 0) { $val[ 'data' ][ 'action' ] = 'download'; $val[ 'data' ][ 'action_name' ] = '下载'; $val[ 'data' ][ 'type' ] = 'client'; $val[ 'data' ][ 'type_name' ] = '客户端'; $data[] = $val[ 'data' ]; } } foreach ($plugin_data as $key => $val) { if ($val[ 'code' ] == 0) { $val[ 'data' ][ 'action' ] = 'upgrade'; $val[ 'data' ][ 'action_name' ] = '升级'; $val[ 'data' ][ 'type' ] = 'addon'; $val[ 'data' ][ 'type_name' ] = '插件'; $data[] = $val[ 'data' ]; } } foreach ($install_data as $key => $val) { if ($val[ 'code' ] == 0) { $val[ 'data' ][ 'action' ] = 'install'; $val[ 'data' ][ 'action_name' ] = '安装'; $val[ 'data' ][ 'type' ] = 'addon'; $val[ 'data' ][ 'type_name' ] = '插件'; $data[] = $val[ 'data' ]; } } //处理更新说明的换行 foreach ($data as $key => $val) { foreach ($val[ 'scripts' ] as $k => $v) { $val[ 'scripts' ][ $k ][ 'description' ] = str_replace("\n", '
', $v[ 'description' ]); } $data[ $key ] = $val; } $res[ 'data' ] = $data; } return $res; } /** * 在线下载文件 * @param $param */ public function download($param) { $data = array ( "file_token" => $param[ "token" ] ); $result = $this->doPost('/upgrade/upgrade/download', $data);//授权 if (empty($result)) { return $this->error(); } $result = json_decode($result, true); return $result; } /** * 获取授权信息 * @return bool|mixed|string */ public function authInfo() { $app_info = config('info'); $data = array ( "product_key" => $app_info[ 'name' ], ); //$re = $this->doPost('/upgrade/auth/info', $data); $re = '{"code":0,"message":"操作成功","data":{"product_name":"单商户V5","auth_type":0,"devolution_code":"OTJiY2NDNhZmYMzIxN2Q1ZThhZDk=","product_key":"B2C_V4","devolution_url":"baidu.cn","devolution_version_name":"单商户V5多门店版","account_num":0,"devolution_type":"公司","devolution_attribution":"南京有限公司","devolution_name":"张三","devolution_phone":"18100330067","devolution_date":1650333854,"devolution_expire_date":1681869854,"newest_version":"5.2.0"},"timestamp":1665930286}'; $re = json_decode($re, true); $re['data']['devolution_url']=$_SERVER['HTTP_HOST']; $re['data']['devolution_expire_date']=4085435181; $re['data']['devolution_attribution']="致壹科技"; return $re; } /** * 获取所有插件 * @return array|mixed */ public function getAuthPlugin() { $result = $this->doPost('/upgrade/auth/plugin', []);//授权 if (empty($result)) return $this->error(); $result = json_decode($result, true); return $result; } /** * 查询所有表 */ public function getDatabaseList() { $databaseList = Db::query("SHOW TABLE STATUS"); return $databaseList; } /******************************* 升级日志相关 start *****************************/ /** * 添加升级日志 * @param $data * upgrade_time 升级时间 * version_info 升级的版本信息 * backup_root 备份文件和sql的根目录 * download_root 下载文件和sql的根目录 * @return array */ public function addUpgradeLog($data) { $res = model('sys_upgrade_log')->add($data); if ($res == false) { return $this->error('', 'UNKNOW_ERROR'); } else { return $this->success(); } } /** * 修改日志 * @return array */ public function editUpgradeLog($data, $condition) { $res = model('sys_upgrade_log')->update($data, $condition); if ($res == false) { return $this->error('', 'UNKNOW_ERROR'); } else { return $this->success(); } } /** * 获取升级日志信息 * @param $condition * @param string $field * @return array */ public function getUpgradeLogInfo($condition, $field = '*') { $info = model('sys_upgrade_log')->getInfo($condition, $field); if (!empty($info)) { $info[ 'version_info' ] = json_decode($info[ 'version_info' ], true); } return $info; } /** * 获取升级分页列表 * @param array $condition * @param int $page * @param int $page_size * @param string $order * @param string $field * @return array */ public function getUpgradeLogPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = '', $field = '*') { $list = model('sys_upgrade_log')->pageList($condition, $field, $order, $page, $page_size); return $this->success($list); } /** * 获取升级日志列表 * @param array $condition * @param string $field * @param string $order * @param null $limit * @return array */ public function getUpgradeLogList($condition = [], $field = '*', $order = '', $limit = null) { $list = model('sys_upgrade_log')->getList($condition, $field, $order, '', '', '', $limit); return $this->success($list); } /** * 删除升级日志 * @param $condition * @return array */ public function deleteUpgradeLog($condition) { $log_list = model('sys_upgrade_log')->getList($condition, '*', 'upgrade_time asc'); try { foreach ($log_list as $log) { $backup_root = $log[ 'backup_root' ]; if (is_dir($backup_root)) { unlink($backup_root); } } model('sys_upgrade_log')->delete($condition); return $this->success(); } catch (\Exception $e) { return $this->error('', $e->getMessage()); } } /******************************* 升级日志相关 end *****************************/ public function getVersionLog($page, $page_size) { $app_info = config('info'); $post_data = [ 'page_index' => $page, 'page_size' => $page_size, 'product_key' => $app_info[ 'name' ] ]; $re = $this->doPost('/upgrade/upgrade/versionPage', $post_data); $re = json_decode($re, true); if (!empty($re[ 'data' ])) { //处理返回数据 $return_data = []; foreach ($re[ 'data' ][ 'list' ] as $key => $val) { $val[ 'version_desc' ] = str_replace("\n", '
', $val[ 'version_desc' ]); $day = date('Y-m-d', $val[ 'create_time' ]); $day_time = strtotime($day); $return_data[ $day_time ][] = $val; } $temp_arr = []; foreach ($return_data as $key => $value) { $temp_arr[] = [ 'list' => $value, 'time' => $key, 'format_time' => date('Y-m-d', $key) ]; } $re[ 'data' ][ 'list' ] = $temp_arr; } else { $re[ 'data' ][ 'list' ] = []; } return $re; } /** * 获取所有插件 * @return array|mixed */ public function getPluginGoodsList() { $addon_list = Cache::get('website_addon_list'); if (empty($addon_list)) { $app_info = config('info'); $data = array ( "product_key" => $app_info[ 'name' ], ); $result = $this->doPost('/upgrade/auth/allplugin', $data);//授权 if (empty($result)) return $this->error(); $result = json_decode($result, true); Cache::set('website_addon_list', $result[ 'data' ], 3 * 24 * 60 * 60); return $result[ 'data' ]; } else { return $addon_list; } } /** * 下载uniapp * @param $version * @return array|mixed */ public function downloadUniapp($version) { $data = array ( "version" => $version ); $result = $this->doPost('/upgrade/upgrade/downloaduniapp', $data);//授权 if (empty($result)) return $this->error(); $result = json_decode($result, true); return $result; } /** * 获取应用更新日志 * @return mixed */ public function getUpdateLog() { $app_info = config('info'); $post_data = [ 'product_key' => $app_info[ 'name' ] ]; $re = $this->doPost('/upgrade/upgrade/updateLog', $post_data); $re = json_decode($re, true); return $re; } }