1, 'name' => '合伙人'), array('id' => 2, 'name' => '代理商'), array('id' => 3, 'name' => '商户'), array('id' => 4, 'name' => '门店'), array('id' => 5, 'name' => '导购员'), array('id' => 0, 'name' => '其他'), ); array_unshift($from_class1, array('id' => -1, 'name' => '所有')); $this->assign('from_class1', json_encode($from_class1)); $arr = array( 'uploadImage' => '/index.php/Admin/ImageGallery/uploadFile', 'delImage' => '/index.php/Admin/ImageGallery/deleteMoreFile', ); $authArr = checkFunction($arr); $this->assign('authArr', $authArr); $storage_type = D('RetailAdmin')->getFindField(array('id' => session('admin_userinfo')['id']), 'storage_type'); $this->assign('storage_type', intval($storage_type)); $this->display(); } public function getAllImages() { $page = I('post.page'); $limit = I('post.limit'); $where['storage_type'] = I('post.type'); $from_type_id1 = I('post.selectTypeP'); $from_type_id2 = I('post.selectTypeC'); if ($from_type_id2 > 0) { $where['from_type_id'] = $from_type_id2; } else if ($from_type_id1 > 0) { $data = M('upload_image_class')->where(array('user_type' => $from_type_id1))->getField('id', true); $where['from_type_id'] = array('in', $data); } $ImageGalleryModel = new ImageGalleryModel(); $images = $ImageGalleryModel->getSelect($where, '', 'id desc', $page, $limit); if ($images) { foreach ($images as &$val) { if ($val['add_time']) { $val['add_time'] = date('Y-m-d H:i:s', $val['add_time']); } if ($val['size']) { $val['size'] = getFileSize($val['size']); } $val['checked'] = false; } $res['list'] = $images; $res['status'] = 1; $res['msg'] = '获取成功'; } else { $res['list'] = array(); $res['status'] = 1; $res['msg'] = '暂无数据'; } if (empty($where['from_type_id'])) { $res['count'] = $ImageGalleryModel->getCount($where); } $this->ajaxReturn($res); } public function deleteMoreFile() { $id = I('post.id'); $id = explode(',', $id); $images = M('image_gallery')->where(array('id' => array('in', $id)))->select(); $re = deleteUploadFile($images, $id); $res['data'] = $re; if ($re['status'] == 1) { $res['status'] = 1; $res['msg'] = '删除成功'; } else { $res['status'] = 0; $res['msg'] = '删除失败'; } $this->ajaxReturn($res); } /** * 下载文件并返回存储地址 * @param $url * @param $host * @return mixed|string */ protected function getDownFilePath($url, $host) { $host = explode(',', $host); $path = str_replace($host, '', $url); if ($path == $url) { return false; } $path = strtolower(substr($path, 0, 6)) === 'upload' ? ucfirst($path) : 'Upload/' . $path; $arr = explode('/', $path); $name = $arr[count($arr) - 1];//文件名称 unset($arr[count($arr) - 1]); $catalog = implode('/', $arr);//存储目录 //判断文件目录是否存在 if (!is_dir($catalog)) { $catalog_t = '.'; foreach ($arr as $value) { $catalog_t .= '/' . $value; !is_dir($catalog_t); mkdir($catalog_t, 0777); } } $path = './' . $path;//文件最终地址 $data = array( 'catalog' => $catalog, 'name' => $name, 'path' => $path, ); $file = file_get_contents($url); $res = file_put_contents($path, $file); if ($res) { return $data; } else { return false; } } public function transferToOut() { $transfer_from = I('post.transfer_from');//迁移类型 $transfer_to = I('post.transfer_to');//迁移至??? $del_file_state = I('post.del_file_state');//迁移后是否删除源文件 $url_list = I('post.url_list');//迁移后是否删除源文件 if (!in_array($transfer_from, array('1', '2', '3', '4')) || !in_array($transfer_to, array('1', '2', '3', '4')) || !in_array($del_file_state, array('1', '2')) || $transfer_from == $transfer_to) { $res['status'] = 0; $res['msg'] = '请完善请求参数'; $this->ajaxReturn($res); } $config = M('upload_config')->where(array('id' => 1))->find(); $qiniu_access_key = $config['qiniu_access_key']; $qiniu_secret_key = $config['qiniu_secret_key']; $qiniu_outer_chain_url = $config['qiniu_outer_chain_url']; $qiniu_storage_space = $config['qiniu_storage_space']; $tencent_secret_id = $config['tencent_secret_id']; $tencent_secret_key = $config['tencent_secret_key']; $tencent_outer_chain_url = $config['tencent_outer_chain_url']; $tencent_storage_space = $config['tencent_storage_space']; $tencent_region = $config['tencent_region']; $oss_access_key_id = $config['oss_access_key_id']; $oss_access_key_secret = $config['oss_access_key_secret']; $oss_outer_chain_url = $config['oss_outer_chain_url']; $oss_storage_space = $config['oss_storage_space']; $oss_region = $config['oss_region']; if ($transfer_to == 2 && (empty($qiniu_access_key) || empty($qiniu_secret_key) || empty($qiniu_outer_chain_url) || empty($qiniu_storage_space))) { $res['status'] = 0; $res['msg'] = '您未完善七牛云对象储存配置信息,请先前往“系统设置->系统设置->图片存储设置”处配置'; $this->ajaxReturn($res); } else if ($transfer_to == 3 && (empty($tencent_secret_id) || empty($tencent_secret_key) || empty($tencent_outer_chain_url) || empty($tencent_storage_space) || empty($tencent_region))) { $res['status'] = 0; $res['msg'] = '您未完善腾讯云对象储存配置信息,请先前往“系统设置->系统设置->图片存储设置”处配置'; $this->ajaxReturn($res); } else if ($transfer_to == 4 && (empty($oss_access_key_id) || empty($oss_access_key_secret) || empty($oss_outer_chain_url) || empty($oss_storage_space) || empty($oss_region))) { $res['status'] = 0; $res['msg'] = '您未完善阿里云对象储存配置信息,请先前往“系统设置->系统设置->图片存储设置”处配置'; $this->ajaxReturn($res); } $ImageGalleryModel = new ImageGalleryModel(); $map = array( 'storage_type' => $transfer_from, array( array( 'source_type' => 1, ), array( 'source_type' => 2, 'from_type_id' => array('in', '17,27'), ), '_logic' => 'OR' ), ); $fields = array( 'id', // bigint(19) NOT NULL AUTO_INCREMENT, 'path', // varchar(255) DEFAULT NULL COMMENT '图片预览路径', 'catalog', // varchar(255) DEFAULT NULL COMMENT '目录', 'name', // varchar(100) DEFAULT NULL COMMENT '图片名称', 'size', // varchar(20) DEFAULT '0' COMMENT '文件大小', ); $limit = 20; $list = $ImageGalleryModel->getSelect($map, $fields, 'id desc', 1, $limit); $GoodsModel = new RetailGoodsModel(); $MGoodsModel = new RetailMgoodsModel(); foreach ($list as $value) { $m_goods = array(); $s_goods = array(); if ($value['source_type'] == 2) { $map = array( 'details' => array('like', "%{$value['path']}%"), ); $m_goods = $MGoodsModel->getSelect($map, 'id,details'); $s_goods = $GoodsModel->getSelect($map, 'id,details'); } $arr = explode('.', $value['name']); $extension = $arr[count($arr) - 1]; $catalog = $value['catalog']; $name = $value['name']; $path = $value['path']; //根据图片原来的存储获取迁移参数 switch ($transfer_from) { case '1': $path = '.' . $path; if (!file_exists($path)) { $ImageGalleryModel->doDelete(array('id' => $value['id'])); $res['status'] = 2; $res['msg'] = '请继续迁移'; $this->ajaxReturn($res); } break; case '2': case '3': case '4': $old_url = $url_list ? $url_list : ($transfer_from == 2 ? $qiniu_outer_chain_url : ($transfer_from == 3 ? $tencent_outer_chain_url : $oss_outer_chain_url)); $down = $this->getDownFilePath($value['path'], $old_url); if ($down) { $path = $down['path']; $name = $down['name']; $catalog = $down['catalog']; } else { $res['status'] = 0; $res['msg'] = '图片迁移失败'; $this->ajaxReturn($res); } break; } //开始迁移 switch ($transfer_to) { case '1': //本地 $upload = true; break; case '2': //七牛云 $url = $qiniu_outer_chain_url; $name = ($catalog ? ($catalog . '/') : '') . $name; $catalog = ''; $upload = toUploadQiNiuYun($path, $extension, $config, $catalog, $name); break; case '3': //腾讯云 $url = $tencent_outer_chain_url; $upload = uploadFilesToTencent($path, $extension, $config, $catalog, $name); break; case '4': //阿里云 $url = $oss_outer_chain_url; $upload = uploadFilesToOSS($path, $extension, $config, $catalog, $name); break; } $save_path = ($url ? $url : '/') . (($catalog ? ($catalog . '/') : '') . $name); if ($upload) { if (!empty($m_goods) || !empty($s_goods)) { foreach ($m_goods as &$g) { $details = str_replace($value['path'], $save_path, $g['details']); $map = array('id' => $g['id']); $data = array('details' => $details); $MGoodsModel->updateOrder($map, $data); } foreach ($m_goods as &$g) { $details = str_replace($value['path'], $save_path, $g['details']); $map = array('id' => $g['id']); $data = array('details' => $details); $GoodsModel->updateOrder($map, $data); } } $map = array( 'id' => $value['id'], ); $save = array( 'storage_type' => $transfer_to, 'catalog' => $catalog, 'path' => $save_path, 'name' => $name, ); $ImageGalleryModel->updateData($map, $save); //删除文件 if ($del_file_state == 1 && $transfer_to != 1) { if (is_readable('.' . $value['path'])) { delLocalFile('.' . $value['path']); } } else if ($transfer_to != 1) { if (is_readable($path)) { delLocalFile($path); } } } } if ($del_file_state == 1) { switch ($transfer_from) { case '2': //七牛云 if ($del_file_state == 1) { delQiNiuFile($list, $config); } break; case '3': //腾讯云 if ($del_file_state == 1) { delTencentFile($list, $config); } break; case '4': //阿里云 if ($del_file_state == 1) { delOSSFile($list, $config); } } } $res['count'] = $limit; if (empty($list) || count($list) < 20) { $res['status'] = 1; $res['msg'] = '图片迁移完毕'; } else { $res['status'] = 2; $res['msg'] = '请继续迁移'; } $this->ajaxReturn($res); } public function uploadFile() { if (!$_FILES) { $res['status'] = 0; $res['msg'] = '未上传文件'; } else { $user = session('jurisdiction_user'); $item = array( 'add_time' => time(), 'from_type_id' => 5, 'storage_type' => I('post.storage_type'), 'localUrl' => 'Admin/ImageGallery', 'user_id' => $user['id'], 'user_type' => 1, ); $uploads = uploadFiles($item); if (!empty($uploads['file'])) { $res['status'] = 1; $res['msg'] = '上传成功'; } else { $res['status'] = 0; $res['msg'] = $uploads['msg']; } } $this->ajaxReturn($res); } public function getSelectTypeC() { $id = I('post.id'); if (!empty($id)) { $list = M('upload_image_class')->where(array('user_type' => $id))->select(); array_unshift($list, array('id' => 0, 'name' => '所有', 'user_type' => $id)); $res['status'] = 1; $res['msg'] = '查询成功'; $res['data'] = $list; } else { $res['status'] = 0; $res['msg'] = '缺少参数'; } $this->ajaxReturn($res); } }