mirror of
https://gitee.com/ulthon/ul-file-share.git
synced 2026-07-01 11:02:49 +08:00
完成分享存储
This commit is contained in:
@@ -115,7 +115,7 @@ class UploadFiles
|
|||||||
$model_file->file_sha1 = $file->sha1();
|
$model_file->file_sha1 = $file->sha1();
|
||||||
$model_file->create_time = time();
|
$model_file->create_time = time();
|
||||||
$model_file->type = $type;
|
$model_file->type = $type;
|
||||||
|
$model_file->disk = self::$disk;
|
||||||
$model_file->save_name = Filesystem::disk(self::$disk)->putFile('upload/' . $dir_name, $file, 'uniqid');
|
$model_file->save_name = Filesystem::disk(self::$disk)->putFile('upload/' . $dir_name, $file, 'uniqid');
|
||||||
$model_file->save();
|
$model_file->save();
|
||||||
return $model_file;
|
return $model_file;
|
||||||
|
|||||||
@@ -5,16 +5,84 @@ namespace app\index\controller;
|
|||||||
use app\model\Category;
|
use app\model\Category;
|
||||||
use app\model\Nav;
|
use app\model\Nav;
|
||||||
use app\model\Post;
|
use app\model\Post;
|
||||||
|
use app\model\User;
|
||||||
|
use think\facade\Session;
|
||||||
use think\facade\View;
|
use think\facade\View;
|
||||||
use think\helper\Str;
|
use think\helper\Str;
|
||||||
|
use UserHub\Client;
|
||||||
|
|
||||||
class Common extends BaseController
|
class Common extends BaseController
|
||||||
{
|
{
|
||||||
|
public $modelUser = null;
|
||||||
|
|
||||||
public function initialize()
|
public function initialize()
|
||||||
{
|
{
|
||||||
parent::initialize();
|
parent::initialize();
|
||||||
|
|
||||||
|
$user_id = Session::get('user_id');
|
||||||
|
|
||||||
|
if (!empty($user_id)) {
|
||||||
|
$this->modelUser = User::find($user_id);
|
||||||
|
View::assign('user', $this->modelUser);
|
||||||
|
}else{
|
||||||
|
$this->tempLogin();
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->ulthonLogin();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function tempLogin()
|
||||||
|
{
|
||||||
|
if (empty($this->modelUser)) {
|
||||||
|
$temp_user = [];
|
||||||
|
$temp_user['account'] = uniqid();
|
||||||
|
|
||||||
|
$temp_user['type'] = 'temp';
|
||||||
|
|
||||||
|
$model_user = User::create($temp_user);
|
||||||
|
|
||||||
|
$this->modelUser = $model_user;
|
||||||
|
Session::set('user_id', $model_user->id);
|
||||||
|
View::assign('user', $this->modelUser);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function ulthonLogin()
|
||||||
|
{
|
||||||
|
|
||||||
|
if (empty($this->modelUser) || $this->modelUser->type != 'ulthon') {
|
||||||
|
$code = $this->request->param('code');
|
||||||
|
|
||||||
|
$user_hub_client = new Client([
|
||||||
|
'key' => get_system_config('user_hub_key'),
|
||||||
|
'secret' => get_system_config('user_hub_secret'),
|
||||||
|
'host' => get_system_config('user_hub_host'),
|
||||||
|
]);
|
||||||
|
if (empty($code)) {
|
||||||
|
$url = $user_hub_client->getBowserRedirectUrl($this->request->url(true));
|
||||||
|
View::assign('ulthon_login_url',$url);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$user_info = $user_hub_client->getUserinfoByCode($code);
|
||||||
|
|
||||||
|
$model_user = User::where('uid', $user_info['uid'])->find();
|
||||||
|
|
||||||
|
if (empty($model_user)) {
|
||||||
|
unset($user_info['id']);
|
||||||
|
// TODO:处理数据,或者中转数据
|
||||||
|
// TODO:下载头像
|
||||||
|
|
||||||
|
$user_info['type'] = 'ulthon';
|
||||||
|
|
||||||
|
$model_user = User::create((array)$user_info);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->modelUser = $model_user;
|
||||||
|
}
|
||||||
|
Session::set('user_id', $this->modelUser->id);
|
||||||
|
View::assign('user', $this->modelUser);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,6 +46,8 @@ class File extends Common
|
|||||||
{
|
{
|
||||||
# code...
|
# code...
|
||||||
|
|
||||||
|
UploadFiles::setDisks('safe');
|
||||||
|
|
||||||
return UploadFiles::save($request);
|
return UploadFiles::save($request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,12 +2,21 @@
|
|||||||
|
|
||||||
namespace app\index\controller;
|
namespace app\index\controller;
|
||||||
|
|
||||||
|
use Alchemy\Zippy\Zippy;
|
||||||
use app\model\Category;
|
use app\model\Category;
|
||||||
use app\model\Nav;
|
use app\model\Nav;
|
||||||
use app\model\Post;
|
use app\model\Post;
|
||||||
use app\model\PostCategory;
|
use app\model\PostCategory;
|
||||||
|
use app\model\Share;
|
||||||
|
use app\model\ShareFiles;
|
||||||
|
use app\UploadFiles;
|
||||||
|
use think\facade\App;
|
||||||
|
use think\facade\Session;
|
||||||
|
use think\facade\Validate;
|
||||||
use think\facade\View;
|
use think\facade\View;
|
||||||
|
use think\File;
|
||||||
use think\Request;
|
use think\Request;
|
||||||
|
use think\validate\ValidateRule;
|
||||||
|
|
||||||
class Index extends Common
|
class Index extends Common
|
||||||
{
|
{
|
||||||
@@ -20,6 +29,10 @@ class Index extends Common
|
|||||||
{
|
{
|
||||||
//
|
//
|
||||||
|
|
||||||
|
$list_active_shares = Share::where('user_id',$this->modelUser->id)->where('status',0)->select();
|
||||||
|
|
||||||
|
View::assign('list_active_shares',$list_active_shares);
|
||||||
|
|
||||||
return View::fetch();
|
return View::fetch();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -43,6 +56,143 @@ class Index extends Common
|
|||||||
public function save(Request $request)
|
public function save(Request $request)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
|
|
||||||
|
$post_data = $request->post();
|
||||||
|
|
||||||
|
$post_data['user_id'] = $this->modelUser->id;
|
||||||
|
|
||||||
|
$root_dir = App::getRootPath();
|
||||||
|
|
||||||
|
$safe_dir = '/safe/';
|
||||||
|
|
||||||
|
$file_preifx = $root_dir . $safe_dir;
|
||||||
|
|
||||||
|
|
||||||
|
$validate = Validate::rule('files_list', ValidateRule::isRequire()->isArray()->requireCallback(function ($value) use ($file_preifx) {
|
||||||
|
foreach ($value as $key_v => $value_v) {
|
||||||
|
$file_path = $file_preifx . $value_v['save_name'];
|
||||||
|
|
||||||
|
if (!file_exists($file_path)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}, '文件不存在'))
|
||||||
|
->rule('password', ValidateRule::length('6,18'))
|
||||||
|
->rule('times', ValidateRule::requireCallback(function ($value) {
|
||||||
|
if (empty($value)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (is_numeric($value)) {
|
||||||
|
if ($value > 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}))
|
||||||
|
->rule('expire', ValidateRule::isRequire()->isNumber()->min(1));
|
||||||
|
|
||||||
|
if (!$validate->check($post_data)) {
|
||||||
|
return json_message($validate->getError());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$model_share = Share::create($post_data);
|
||||||
|
|
||||||
|
$total_size = 0;
|
||||||
|
|
||||||
|
$files_list = [];
|
||||||
|
|
||||||
|
foreach ($post_data['files_list'] as $key_file => $value_file) {
|
||||||
|
|
||||||
|
$file_path = $file_preifx . $value_file['save_name'];
|
||||||
|
|
||||||
|
UploadFiles::use($value_file['save_name']);
|
||||||
|
|
||||||
|
$file = new File($file_path);
|
||||||
|
|
||||||
|
$model_share_file = new ShareFiles();
|
||||||
|
|
||||||
|
$model_share_file->save_name = $value_file['save_name'];
|
||||||
|
$model_share_file->file_name = $value_file['file_name'];
|
||||||
|
|
||||||
|
$model_share_file->mime_type = $file->getMime();
|
||||||
|
|
||||||
|
$model_share_file->file_size = $file->getSize();
|
||||||
|
|
||||||
|
$model_share_file->ext_name = $file->extension();
|
||||||
|
|
||||||
|
$model_share_file->file_md5 = $file->md5();
|
||||||
|
$model_share_file->file_sha1 = $file->sha1();
|
||||||
|
|
||||||
|
$model_share_file->share_id = $model_share->id;
|
||||||
|
|
||||||
|
$model_share_file->save();
|
||||||
|
|
||||||
|
$file_name = $value_file['file_name'];
|
||||||
|
|
||||||
|
$file_name = $this->build_files_list_key($files_list, $file_name);
|
||||||
|
|
||||||
|
$files_list[$file_name] = $file_path;
|
||||||
|
|
||||||
|
|
||||||
|
$total_size += $file->getSize();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 合成大文件
|
||||||
|
|
||||||
|
$zippy = Zippy::load();
|
||||||
|
|
||||||
|
$download_zip_save_name = 'build_download_zip/' . uniqid() . '.zip';
|
||||||
|
|
||||||
|
$build_download_path = $file_preifx . $download_zip_save_name;
|
||||||
|
|
||||||
|
$build_download_dir = dirname($build_download_path);
|
||||||
|
|
||||||
|
if (!is_dir($build_download_dir)) {
|
||||||
|
mkdir($build_download_dir, 0777, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
$build_archive = $zippy->create($build_download_path, $files_list, true);
|
||||||
|
|
||||||
|
$model_share->build_download_save_name = $download_zip_save_name;
|
||||||
|
|
||||||
|
$model_share->total_size = $total_size;
|
||||||
|
|
||||||
|
$model_share->save();
|
||||||
|
|
||||||
|
return json_message();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function build_files_list_key($file_list, $file_key)
|
||||||
|
{
|
||||||
|
if (!isset($file_list[$file_key])) {
|
||||||
|
return $file_key;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$file_name = $file_key;
|
||||||
|
$file_name_others = [];
|
||||||
|
if (strpos($file_key, '.') !== false) {
|
||||||
|
$file_key_array = explode('.', $file_key);
|
||||||
|
$file_name = array_shift($file_key_array);
|
||||||
|
|
||||||
|
$file_name_others = $file_key_array;
|
||||||
|
}
|
||||||
|
|
||||||
|
$new_file_name = $file_name . '(1).' . implode('.', $file_name_others);
|
||||||
|
|
||||||
|
return $this->build_files_list_key($file_list, $new_file_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function logout()
|
||||||
|
{
|
||||||
|
Session::clear();
|
||||||
|
|
||||||
|
return $this->success('已成功退出', url('index'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
15
app/model/Share.php
Normal file
15
app/model/Share.php
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace app\model;
|
||||||
|
|
||||||
|
use think\Model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @mixin \think\Model
|
||||||
|
*/
|
||||||
|
class Share extends Model
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
25
app/model/ShareFiles.php
Normal file
25
app/model/ShareFiles.php
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace app\model;
|
||||||
|
|
||||||
|
use think\facade\App;
|
||||||
|
use think\Model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @mixin \think\Model
|
||||||
|
*/
|
||||||
|
class ShareFiles extends Model
|
||||||
|
{
|
||||||
|
|
||||||
|
public static function build_safe_path($save_name)
|
||||||
|
{
|
||||||
|
$root_dir = App::getRootPath();
|
||||||
|
|
||||||
|
$safe_dir = '/safe/';
|
||||||
|
|
||||||
|
return $root_dir . $safe_dir . $save_name;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
}
|
||||||
@@ -26,7 +26,8 @@
|
|||||||
"topthink/think-helper": "^3.1",
|
"topthink/think-helper": "^3.1",
|
||||||
"topthink/think-captcha": "^3.0",
|
"topthink/think-captcha": "^3.0",
|
||||||
"topthink/think-multi-app": "^1.0",
|
"topthink/think-multi-app": "^1.0",
|
||||||
"ulthon/user_hub_client": "^1.0"
|
"ulthon/user_hub_client": "^1.0",
|
||||||
|
"alchemy/zippy": "^1.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"symfony/var-dumper": "^4.2"
|
"symfony/var-dumper": "^4.2"
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
.layui-form-pane .layui-form-label {
|
.layui-form-pane .layui-form-label {
|
||||||
width: 160px
|
width: 160px
|
||||||
}
|
}
|
||||||
|
|
||||||
.layui-form-pane .layui-input-block {
|
.layui-form-pane .layui-input-block {
|
||||||
margin-left: 160px;
|
margin-left: 160px;
|
||||||
}
|
}
|
||||||
@@ -43,107 +44,25 @@
|
|||||||
|
|
||||||
<div class="layui-col-md6">
|
<div class="layui-col-md6">
|
||||||
<fieldset class="layui-elem-field ">
|
<fieldset class="layui-elem-field ">
|
||||||
<legend>阿里OSS存储设置 <a href="https://www.aliyun.com/product/oss?source=5176.11533457&userCode=2fzx2rfo&type=copy" target="_blank"><i class="layui-icon layui-icon-help"></i></a></legend>
|
<legend>UserHub</legend>
|
||||||
<div class="layui-field-box">
|
<div class="layui-field-box">
|
||||||
<form class="layui-form layui-form-pane" action="{:url('admin/System/update')}" method="post">
|
<form class="layui-form layui-form-pane" action="{:url('admin/System/update')}" method="post">
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<div class="layui-form-label">AccessKey</div>
|
<div class="layui-form-label">key</div>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input type="text" name="qiniu_access_key" value="{:get_system_config('qiniu_access_key')}" class="layui-input">
|
<input type="text" name="user_hub_key" value="{:get_system_config('user_hub_key')}" class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<div class="layui-form-label">SecretKey</div>
|
<div class="layui-form-label">secret</div>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input type="text" name="qiniu_secret_key" value="{:get_system_config('qiniu_secret_key')}" class="layui-input">
|
<input type="text" name="user_hub_secret" value="{:get_system_config('user_hub_secret')}" class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<div class="layui-form-label">空间名称</div>
|
<div class="layui-form-label">域名</div>
|
||||||
<div class="layui-input-block">
|
<div class="layui-input-block">
|
||||||
<input type="text" name="qiniu_bucket" value="{:get_system_config('qiniu_bucket')}" class="layui-input">
|
<input type="text" name="user_hub_host" value="{:get_system_config('user_hub_host')}" class="layui-input">
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<div class="layui-form-label">空间域名</div>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="text" name="qiniu_domain" value="{:get_system_config('qiniu_domain')}" class="layui-input">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<button class="layui-btn layui-btn-fluid">保存</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-row">
|
|
||||||
|
|
||||||
<div class="layui-col-md6">
|
|
||||||
<fieldset class="layui-elem-field " >
|
|
||||||
<legend>阿里短信配置 <a href="https://www.aliyun.com/acts/alicomcloud/new-discount?userCode=2fzx2rfo" target="_blank"><i class="layui-icon layui-icon-help"></i></a></legend>
|
|
||||||
<div class="layui-field-box">
|
|
||||||
<form class="layui-form layui-form-pane" action="{:url('admin/System/update')}" method="post">
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<div class="layui-form-label">AccessKey</div>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="text" name="ali_msn_access_key" value="{:get_system_config('ali_msn_access_key')}" class="layui-input">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<div class="layui-form-label">AccessSecret</div>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="text" name="ali_msn_access_secret" value="{:get_system_config('ali_msn_access_secret')}" class="layui-input">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<div class="layui-form-label">模板ID</div>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="text" name="ali_msg_tpl_id" value="{:get_system_config('ali_msg_tpl_id')}" class="layui-input">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<button class="layui-btn layui-btn-fluid">保存</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-row">
|
|
||||||
|
|
||||||
<div class="layui-col-md6">
|
|
||||||
<fieldset class="layui-elem-field " >
|
|
||||||
<legend>微信第三方平台配置</legend>
|
|
||||||
<div class="layui-field-box">
|
|
||||||
<form class="layui-form layui-form-pane" action="{:url('admin/System/update')}" method="post">
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<div class="layui-form-label">AppID</div>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="text" name="wx_open_app_id" value="{:get_system_config('wx_open_app_id')}" class="layui-input">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<div class="layui-form-label">AppSecret</div>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="text" name="wx_open_app_secret" value="{:get_system_config('wx_open_app_secret')}" class="layui-input">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<div class="layui-form-label">消息校验Token</div>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="text" name="wx_open_app_token" value="{:get_system_config('wx_open_app_token')}" class="layui-input">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<div class="layui-form-label">消息加解密Key</div>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="text" name="wx_open_app_aes_key" value="{:get_system_config('wx_open_app_aes_key')}" class="layui-input">
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
@@ -155,89 +74,7 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-row">
|
|
||||||
<div class="layui-col-md6">
|
|
||||||
<fieldset class="layui-elem-field " >
|
|
||||||
<legend>微信公众号配置</legend>
|
|
||||||
<div class="layui-field-box">
|
|
||||||
<form class="layui-form layui-form-pane">
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<div class="layui-form-label">公众号名称</div>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="text" name="wx_app_name" class="layui-input" value="{:get_system_config('wx_app_name')}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<div class="layui-form-label">AppID</div>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="text" name="wx_app_id" class="layui-input" value="{:get_system_config('wx_app_id')}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<div class="layui-form-label">AppSecret</div>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="text" name="wx_app_secret" class="layui-input" value="{:get_system_config('wx_app_secret')}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<div class="layui-form-label">Token</div>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="text" name="wx_app_token" class="layui-input" value="{:get_system_config('wx_app_token')}">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<div class="layui-btn-container">
|
|
||||||
|
|
||||||
<div class="layui-btn layui-btn-fluid" >保存</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-row">
|
|
||||||
<div class="layui-col-md6">
|
|
||||||
<fieldset class="layui-elem-field " >
|
|
||||||
<legend>微信支付配置<i class="layui-icon layui-icon-help" onmouseover="layer.tips('支付的公众号必须是上面授权的公众号',this)"></i></legend>
|
|
||||||
<div class="layui-field-box">
|
|
||||||
<form class="layui-form layui-form-pane" action="{:url('admin/System/update')}" method="post">
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<div class="layui-form-label">商户ID</div>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="text" name="wx_mch_id" value="{:get_system_config('wx_mch_id')}" class="layui-input">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<div class="layui-form-label">商户秘钥</div>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="text" name="wx_mch_secert" value="{:get_system_config('wx_mch_secert')}" class="layui-input" id="">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<div class="layui-form-label">商户key</div>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="text" name="wx_mch_pen_key" readonly value="{:get_system_config('wx_mch_pen_key')}" class="layui-input" id="">
|
|
||||||
<div class="layui-btn">上传</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<div class="layui-form-label">商户cert</div>
|
|
||||||
<div class="layui-input-block">
|
|
||||||
<input type="text" name="wx_mch_pem_cert" readonly value="{:get_system_config('wx_mch_pem_cert')}" class="layui-input" id="">
|
|
||||||
<div class="layui-btn">上传</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="layui-form-item">
|
|
||||||
<button class="layui-btn layui-btn-fluid">授权</button>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -14,6 +14,14 @@
|
|||||||
.webuploader-element-invisible {
|
.webuploader-element-invisible {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.option-item {
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.file-progress {
|
||||||
|
margin-right: 15px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<script src="/static/lib/webuploader/webuploader.min.js"></script>
|
<script src="/static/lib/webuploader/webuploader.min.js"></script>
|
||||||
</head>
|
</head>
|
||||||
@@ -28,20 +36,38 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="ul-header-right">
|
<div class="ul-header-right">
|
||||||
|
{if $user.type == 'temp' }
|
||||||
|
|
||||||
<div class="ul-header-user">
|
<div class="ul-header-user">
|
||||||
<div class="ul-header-user-avatar">
|
<div class="ul-header-user-avatar">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="ul-header-user-info">
|
<div class="ul-header-user-info">
|
||||||
<div class="ul-header-user-name">
|
<div class="ul-header-user-name">
|
||||||
奥古斯宏
|
临时账号
|
||||||
</div>
|
</div>
|
||||||
<div class="ul-header-user-options">
|
<a href="{$ulthon_login_url}" class="ul-header-user-options">
|
||||||
|
<i class="ul-icon-exit"></i>
|
||||||
|
<span>登陆</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{else /}
|
||||||
|
<div class="ul-header-user">
|
||||||
|
<div class="ul-header-user-avatar" style="background-image: url({$user.avatar});">
|
||||||
|
</div>
|
||||||
|
<div class="ul-header-user-info">
|
||||||
|
<div class="ul-header-user-name">
|
||||||
|
{$user.nickname}
|
||||||
|
</div>
|
||||||
|
<a href="{:url('logout')}" class="ul-header-user-options">
|
||||||
<i class="ul-icon-exit"></i>
|
<i class="ul-icon-exit"></i>
|
||||||
<span>退出</span>
|
<span>退出</span>
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -68,7 +94,7 @@
|
|||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
<label class="layui-form-label">密码</label>
|
<label class="layui-form-label">密码</label>
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
<input type="password" name="password" autocomplete="off" placeholder="可以为空" class="layui-input">
|
<input type="text" name="password" value="{:substr(uniqid(),-6)}" autocomplete="off" placeholder="可以为空" class="layui-input">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="layui-inline">
|
<div class="layui-inline">
|
||||||
@@ -102,6 +128,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="display: none;" class="tpl">
|
<div style="display: none;" class="tpl">
|
||||||
@@ -114,10 +141,10 @@
|
|||||||
<div class="file-options" style="display: flex;">
|
<div class="file-options" style="display: flex;">
|
||||||
<span class="file-progress">等待上传</span>
|
<span class="file-progress">等待上传</span>
|
||||||
<div class="layui-btn-container">
|
<div class="layui-btn-container">
|
||||||
<i class="option-item layui-btn layui-btn-xs delete">删除</i>
|
<div class="option-item layui-btn layui-btn-xs delete">删除</div>
|
||||||
<!-- <i class="option-item layui-btn layui-btn-xs pause" style="display: none;">暂停</i> -->
|
<!-- <div class="option-item layui-btn layui-btn-xs pause" style="display: none;">暂停</div> -->
|
||||||
<!-- <i class="option-item layui-btn layui-btn-xs start" style="display: none;">继续</i> -->
|
<!-- <div class="option-item layui-btn layui-btn-xs start" style="display: none;">继续</div> -->
|
||||||
<i class="option-item layui-btn layui-btn-xs retry" style="display: none;">重新上传</i>
|
<div class="option-item layui-btn layui-btn-xs retry" style="display: none;">重新上传</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -223,13 +250,25 @@
|
|||||||
|
|
||||||
$('.file-list .file-item').each(function (index, elem) {
|
$('.file-list .file-item').each(function (index, elem) {
|
||||||
var fileData = $(elem).data('success')
|
var fileData = $(elem).data('success')
|
||||||
console.log(fileData);
|
|
||||||
fileList.push(fileData)
|
fileList.push(fileData)
|
||||||
})
|
})
|
||||||
|
|
||||||
data.field.file_list = fileList
|
data.field.files_list = fileList
|
||||||
|
window.loading = layer.load()
|
||||||
|
$.post('{:url("save")}', data.field, function (result) {
|
||||||
|
if (result.code != 0) {
|
||||||
|
layer.close(window.loading)
|
||||||
|
layer.msg(result.msg)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
console.log(data.field);
|
layer.msg('添加成功')
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
location.reload();
|
||||||
|
}, 1200);
|
||||||
|
})
|
||||||
return false;
|
return false;
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user