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; } }