| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- <?php
- namespace app\extra\service\system;
- use app\extra\basic\Service;
- use app\extra\dao\system\SystemAttachmentDao;
- use app\extra\tools\UploadExtend;
- use think\exception\ValidateException;
- class SystemAttachmentService extends Service
- {
- /**
- * 设置模型
- * @return string
- */
- public function __construct()
- {
- $this->dao = new SystemAttachmentDao();
- }
- /**
- * 列表
- * @param array $param
- */
- public function getList(array $param = [])
- {
- [$page,$limit] = $this->getPageValue();
- $list = $this->dao->getList($this->searchFilter($param),'*',$page,$limit,'id desc');
- $count = $this->dao->count($this->searchFilter($param));
- return compact('list','count');
- }
- protected function searchFilter(array $param = []): array
- {
- $filter = [];
- !empty($param['status']) && $filter[] = ["status", '=', $param['status']];
- !empty($param['is_del']) && $filter[] = ["is_del", '=', $param['is_del']];
- !empty($param['file_type']) && $filter[] = ["file_type", '=', $param['file_type']];
- !empty($param['real_name']) && $filter[] = ["real_name", 'like', '%'.$param['real_name'].'%'];
- !empty($param['pid']) && $filter[] = ["pid", '=', $param['pid']];
- return $filter;
- }
- /**
- * 获取图片列表
- * @param array $where
- * @return array
- */
- public function getImageList(array $where)
- {
- [$page, $limit] = $this->getPageValue();
- $list = $this->dao->getList($this->searchFilter($where), '*',$page, $limit);
- if ($list) {
- $site_url = sConf('service.site_url');
- foreach ($list as &$item) {
- if ($item['file_type'] == 1) {
- if ($site_url) {
- $item['satt_dir'] = (strpos($item['satt_dir'], $site_url) !== false || strstr($item['satt_dir'], 'http') !== false) ? $item['satt_dir'] : $site_url . $item['satt_dir'];
- $item['att_dir'] = (strpos($item['att_dir'], $site_url) !== false || strstr($item['att_dir'], 'http') !== false) ? $item['satt_dir'] : $site_url . $item['att_dir'];
- }
- }
- $item['att_size'] = formatFileSize($item['att_size']);
- $item['time'] = date('Y-m-d H:i:s', $item['time']);
- }
- // $list = get_thumb_water($list, 'mid', ['satt_dir']);
- }
- $where['module_type'] = 1;
- $count = $this->dao->count($this->searchFilter($where));
- return compact('list', 'count');
- }
- /**
- * 删除图片
- * @param string $ids
- */
- public function del(string $ids)
- {
- $ids = explode(',', $ids);
- if (empty($ids)) throw new ValidateException('请选择要删除的图片');
- foreach ($ids as $v) {
- $attinfo = $this->dao->getOne(['att_id'=>(int)$v]);
- if ($attinfo) {
- try {
- $upload = UploadExtend::disk($attinfo['image_type']);
- if ($attinfo['image_type'] == 'local') {
- $fileArr = parse_url($attinfo['att_dir']);
- $filePath = $fileArr['path'] ?? $attinfo['att_dir'];
- if (strpos($filePath, '/') == 0) {
- $filePath = substr($filePath, 1);
- }
- if ($filePath) $upload->delete($filePath);
- } else {
- if ($attinfo['name']) $upload->delete($attinfo['name']);
- }
- } catch (\Throwable $e) {
- }
- $this->dao->delete((int)$v);
- }
- }
- }
- /**
- * @param array $data
- * @return \crmeb\basic\BaseModel
- */
- public function move(array $data)
- {
- $res = $this->dao->move($data);
- if (!$res) throw new ValidateException('移动失败或不能重复移动到同一分类下');
- }
- /**
- * 保存附件信息
- * @param $fileInfo
- * @param int $pid
- * @param int $type
- * @param int $relation_id
- * @param int $file_type
- * @param int $upload_type
- * @return bool
- */
- public function saveAttachment($fileInfo,int $pid = 0,int $file_type = 1, int $upload_type = 1)
- {
- $fileType = pathinfo($fileInfo['name'], PATHINFO_EXTENSION);
- if ($fileInfo && !in_array($fileType, ['xlsx', 'xls'])) {
- $data['file_type'] = $file_type;
- $data['name'] = $fileInfo['name'];
- $data['real_name'] = $fileInfo['real_name'] ?? $fileInfo['name'] ?? '';
- $data['att_dir'] = $fileInfo['dir'] ?? $fileInfo['name'] ?? '';
- if ($data['att_dir'] && strpos($data['att_dir'], 'http') === false) {
- $data['att_dir'] = sConf('service.site_url') . $data['att_dir'];
- }
- $data['satt_dir'] = $fileInfo['thumb_path'] ?? $fileInfo['cover_image'] ?? '';
- if ($file_type == 2) {
- // if (!$data['satt_dir']) {//视频 默认封面
- // $data['satt_dir'] = sys_config('site_url') . '/statics/images/video_default_cover.png';
- // }
- if ($data['real_name'] && strpos($data['real_name'], '/') !== false) {
- $nameArr = explode('/', $data['real_name']);
- $data['real_name'] = end($nameArr) ?? $data['real_name'];
- }
- }
- $data['att_size'] = $fileInfo['size'] ?? '';
- $data['att_type'] = $fileInfo['type'] ?? '';
- $data['image_type'] = $fileInfo['image_type'];
- $data['module_type'] = 1;
- $data['time'] = $fileInfo['time'] ?? time();
- $data['pid'] = $pid;
- $this->dao->save($data);
- }
- return true;
- }
- }
|