fixed:修复附件无法删除
This commit is contained in:
parent
17491ca7da
commit
c3b36013d7
@ -4,8 +4,6 @@ namespace catchAdmin\system\controller;
|
||||
use catcher\base\CatchController;
|
||||
use catcher\CatchResponse;
|
||||
use catchAdmin\system\model\Attachments as AttachmentsModel;
|
||||
use catcher\Utils;
|
||||
use catcher\facade\FileSystem;
|
||||
|
||||
class Attachments extends CatchController
|
||||
{
|
||||
@ -35,22 +33,6 @@ class Attachments extends CatchController
|
||||
*/
|
||||
public function delete($id, AttachmentsModel $model)
|
||||
{
|
||||
$attachments = $model->whereIn('id', Utils::stringToArrayBy($id))->select();
|
||||
|
||||
if ($model->deleteBy($id)) {
|
||||
foreach ($attachments as $attachment) {
|
||||
if ($attachment->driver == 'local') {
|
||||
$localPath = config('filesystem.disks.local.root') . DIRECTORY_SEPARATOR;
|
||||
$path = $localPath . str_replace('\\','\/', $attachment->path);
|
||||
if (FileSystem::exists($path)) {
|
||||
Filesystem::delete($path);
|
||||
}
|
||||
} else {
|
||||
Filesystem::delete($attachment->path);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return CatchResponse::success();
|
||||
return CatchResponse::success($model->deletes($id));
|
||||
}
|
||||
}
|
||||
|
@ -3,8 +3,10 @@ namespace catchAdmin\system\model;
|
||||
|
||||
use catchAdmin\system\model\search\AttachmentsSearch;
|
||||
use catcher\base\CatchModel;
|
||||
use catcher\Utils;
|
||||
use think\file\UploadedFile;
|
||||
use think\Model;
|
||||
use think\facade\Filesystem;
|
||||
|
||||
class Attachments extends CatchModel
|
||||
{
|
||||
@ -54,4 +56,37 @@ class Attachments extends CatchModel
|
||||
'path' => $data['path']
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @time 2021年03月01日
|
||||
* @param $id
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @return bool
|
||||
*/
|
||||
public function deletes($id): bool
|
||||
{
|
||||
Utils::setFilesystemConfig();
|
||||
|
||||
$this->whereIn('id', Utils::stringToArrayBy($id))
|
||||
->select()
|
||||
->each(function ($attachment){
|
||||
if ($attachment->delete()) {
|
||||
if ($attachment->driver == 'local') {
|
||||
$localPath = config('filesystem.disks.local.root') . DIRECTORY_SEPARATOR;
|
||||
$path = $localPath . str_replace('\\','\/', $attachment->path);
|
||||
if (file_exists($path)) {
|
||||
Filesystem::delete($path);
|
||||
}
|
||||
} else {
|
||||
Filesystem::delete($attachment->path);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -24,6 +24,6 @@ trait DeveloperSearch
|
||||
|
||||
public function searchStatusAttr($query, $value, $data)
|
||||
{
|
||||
return $query->where('driver', $value);
|
||||
return $query->where('status', $value);
|
||||
}
|
||||
}
|
@ -47,11 +47,6 @@ class CatchUpload
|
||||
*/
|
||||
protected $path = '';
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->initDriver();
|
||||
}
|
||||
|
||||
/**
|
||||
* upload files
|
||||
*
|
||||
@ -259,70 +254,9 @@ class CatchUpload
|
||||
* @time 2020年06月01日
|
||||
* @return void
|
||||
*/
|
||||
protected function initUploadConfig()
|
||||
public function initUploadConfig()
|
||||
{
|
||||
$configModel = app(Config::class);
|
||||
|
||||
$upload = $configModel->where('key', 'upload')->find();
|
||||
|
||||
if ($upload) {
|
||||
$disk = app()->config->get('filesystem.disks');
|
||||
|
||||
$uploadConfigs = $configModel->getConfig($upload->component);
|
||||
|
||||
if (!empty($uploadConfigs)) {
|
||||
// 读取上传可配置数据
|
||||
foreach ($uploadConfigs as $key => &$config) {
|
||||
// $disk[$key]['type'] = $key;
|
||||
// 腾讯云配置处理
|
||||
if (strtolower($key) == 'qcloud') {
|
||||
$config['credentials'] = [
|
||||
'appId' => $config['app_id'] ?? '',
|
||||
'secretKey' => $config['secret_key'] ?? '',
|
||||
'secretId' => $config['secret_id'] ?? '',
|
||||
];
|
||||
$readFromCdn = $config['read_from_cdn'] ?? 0;
|
||||
$config['read_from_cdn'] = intval($readFromCdn) == 1;
|
||||
}
|
||||
// OSS 配置
|
||||
if (strtolower($key) == 'oss') {
|
||||
$isCname = $config['is_cname'] ?? 0;
|
||||
$config['is_cname'] = intval($isCname) == 1;
|
||||
}
|
||||
}
|
||||
|
||||
// 合并数组
|
||||
array_walk($disk, function (&$item, $key) use ($uploadConfigs) {
|
||||
if (!in_array($key, ['public', 'local'])) {
|
||||
if ($uploadConfigs[$key] ?? false) {
|
||||
foreach ($uploadConfigs[$key] as $k => $value) {
|
||||
$item[$k] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// 重新分配配置
|
||||
app()->config->set([
|
||||
'disks' => $disk,
|
||||
], 'filesystem');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化
|
||||
*
|
||||
* @time 2020年09月07日
|
||||
* @return $this
|
||||
*/
|
||||
protected function initDriver()
|
||||
{
|
||||
if ($driver = Utils::config('site.upload')) {
|
||||
$this->driver = $driver;
|
||||
}
|
||||
|
||||
return $this;
|
||||
Utils::setFilesystemConfig();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -233,4 +233,64 @@ class Utils
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置 filesystem config
|
||||
*
|
||||
* @time 2021年03月01日
|
||||
* @return void
|
||||
*/
|
||||
public static function setFilesystemConfig()
|
||||
{
|
||||
$configModel = app(Config::class);
|
||||
|
||||
$upload = $configModel->where('key', 'upload')->find();
|
||||
|
||||
if ($upload) {
|
||||
$disk = app()->config->get('filesystem.disks');
|
||||
|
||||
$uploadConfigs = $configModel->getConfig($upload->component);
|
||||
|
||||
if (!empty($uploadConfigs)) {
|
||||
// 读取上传可配置数据
|
||||
foreach ($uploadConfigs as $key => &$config) {
|
||||
// $disk[$key]['type'] = $key;
|
||||
// 腾讯云配置处理
|
||||
if (strtolower($key) == 'qcloud') {
|
||||
$config['credentials'] = [
|
||||
'appId' => $config['app_id'] ?? '',
|
||||
'secretKey' => $config['secret_key'] ?? '',
|
||||
'secretId' => $config['secret_id'] ?? '',
|
||||
];
|
||||
$readFromCdn = $config['read_from_cdn'] ?? 0;
|
||||
$config['read_from_cdn'] = intval($readFromCdn) == 1;
|
||||
}
|
||||
// OSS 配置
|
||||
if (strtolower($key) == 'oss') {
|
||||
$isCname = $config['is_cname'] ?? 0;
|
||||
$config['is_cname'] = intval($isCname) == 1;
|
||||
}
|
||||
}
|
||||
|
||||
// 合并数组
|
||||
array_walk($disk, function (&$item, $key) use ($uploadConfigs) {
|
||||
if (!in_array($key, ['public', 'local'])) {
|
||||
if ($uploadConfigs[$key] ?? false) {
|
||||
foreach ($uploadConfigs[$key] as $k => $value) {
|
||||
$item[$k] = $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$default = Utils::config('site.upload');
|
||||
// 重新分配配置
|
||||
app()->config->set([
|
||||
'default' => $default ? : 'local',
|
||||
'disks' => $disk,
|
||||
], 'filesystem');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user