Files
OA/app/api/controller/Office.php
T
2026-07-23 09:40:36 +08:00

95 lines
3.1 KiB
PHP

<?php
/**
+-----------------------------------------------------------------------------------------------
* GouGuOPEN [ 左手研发,右手开源,未来可期!]
+-----------------------------------------------------------------------------------------------
* @Copyright (c) 2021~2024 http://www.gouguoa.com All rights reserved.
+-----------------------------------------------------------------------------------------------
* @Licensed 勾股OA,开源且可免费使用,但并不是自由软件,未经授权许可不能去除勾股OA的相关版权信息
+-----------------------------------------------------------------------------------------------
* @Author 勾股工作室 <hdm58@qq.com>
+-----------------------------------------------------------------------------------------------
*/
declare (strict_types = 1);
namespace app\api\controller;
use app\api\BaseController;
use think\facade\Db;
use Firebase\JWT\JWT;
class Office extends BaseController
{
public function view($id=0,$mode='edit')
{
$file = Db::name('File')->where('id',$id)->find();
if(empty($file)){
return view('../../base/view/common/filetemplate');
}
$path = $file['filepath'];
$title = $file['name'];
$extension = pathinfo($path, PATHINFO_EXTENSION);
$filename = pathinfo($path, PATHINFO_FILENAME);
$office_config = get_system_config('other');
$office_config['token'] = 'secret_8JFhzy';
//$directory = substr($path, 0, 16);
//$key = set_salt(10).str_replace("/", "T", $directory).$filename.'.'.$extension;
$key = "key".$file['audit_time']."T".$id;
$domain = $_SERVER['HTTP_HOST'];
$url = "http://".$domain.$path;
$callbackUrl = "http://".$domain."/office.php";
$admin = Db::name('Admin')->where('id',$this->uid)->find();
$config = [
"document" => [
"url" => $url,
"key" => $key,
"permissions" => [
"chat"=> true,
"comment"=> true,
"copy"=> true,
"deleteCommentAuthorOnly"=> false,
"download"=> true,
"edit"=> true,
"editCommentAuthorOnly"=> false,
"fillForms"=> true,
"modifyContentControl"=> true,
"modifyFilter"=> true,
"print"=>true,
"protect"=> true,
"review"=> true
]
],
"editorConfig"=>[
"mode" => $mode,//view,edit
"forcesave"=>true,
"lang"=>"zh-CN",
"createUrl" => '',
"customization"=>[
"autosave"=>true,//是否自动保存
"comments"=>false,
"help"=>false
],
"user" => [
"id" => $admin['id'],
"name" => $admin['name']
],
"callbackUrl"=>$callbackUrl
]
];
$token = JWT::encode($config, $office_config['token'], 'HS256'); //输出Token 默认'HS256'
return View('',['token'=>$token,'key'=>$key,'office'=>$office_config,'mode'=>$mode,'domain'=>$domain,'url'=>$url,'title'=>$title,'callbackUrl'=>$callbackUrl,'admin'=>$admin]);
}
public function officeapps($id=0,$mode='edit')
{
$file = Db::name('File')->where('id',$id)->find();
if(empty($file)){
return view('../../base/view/common/filetemplate');
}
$path = $file['filepath'];
$domain = $_SERVER['HTTP_HOST'];
$url = "//".$domain.$path;
return View('',['url'=>$url]);
}
}