123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- <?php
- namespace app\command;
- use app\model\WeworksingleChatFile;
- use app\model\WeworksingleChatRecord;
- use OSS\Core\OssException;
- use OSS\OssClient;
- use think\console\Command;
- use think\console\Input;
- use think\console\Output;
- use think\facade\Log;
- class WeworksingleUploadOss extends Command
- {
- protected function configure()
- {
- $this->setName('wework_upload_oss')
- ->setDescription('企业微信聊天文件上传OSS');
- }
- protected function execute(Input $input, Output $output)
- {
- Log::close(NULL); // 关闭日志
- $output->writeln("企业微信聊天文件上传OSS开始:" . date('Y-m-d H:i:s'));
-
- $list = WeworksingleChatFile::where('is_local', '=', 1)->order('id asc')->select()->toArray();
- if (count($list) > 2) {
- $do_list = array_slice($list, 0, 2);
- } else {
- $do_list = $list;
- }
- foreach ($do_list as $k => $v) {
- $path = public_path() . $v['path'];
- // 文件不存在直接结束
- if (!file_exists($path)) {
- continue;
- }
-
- $chat_record = WeworksingleChatRecord::where('msgid', '=', $v['msgid'])->findOrEmpty();
- if ($chat_record->isEmpty()) {
- continue;
- }
- $company_id = $chat_record['company_id'];
- if ($company_id) {
- $osspath = 'chat_file/' . $company_id . '/' . date('Ymd') . '/' . $v['filename'];
- } else {
- $osspath = 'chat_file/nocompany/' . date('Ymd') . '/' . $v['filename'];
- }
- $res = $this->ossUpload($osspath, $path);
- if ($res) {
- $save = ['is_local'=> 0, 'oss_path'=> $osspath];
- WeworksingleChatFile::where('id', '=', $v['id'])->save($save);
- @unlink($path);//删除本地文件
- $local_path = public_path() . 'weworksingle_file/' . $company_id . '/' . date('Ymd');
-
- @rmdir($local_path);//删除空文件夹
- }
- // amr 格式文件也上传
- if ($chat_record['msgtype'] == 'voice') {
- $path = public_path() . $v['other_path'];
- $osspath = 'chat_file/' . $company_id . '/' . date('Ymd') . '/' . $v['other_file'];
- $res = $this->ossUpload($osspath, $path);
- if ($res) {
- @unlink($path);//删除本地文件
- $local_path = public_path() . 'weworksingle_file/' . $company_id . '/' . date('Ymd');
-
- @rmdir($local_path);//删除空文件夹
- }
- }
- $output->writeln("企业微信聊天文件上传OSS处理完成:" . $v['id']);
- }
- $output->writeln("企业微信聊天文件上传OSS结束: " . date('Y-m-d H:i:s'));
- }
- /*
- * oss文件上传
- */
- private function ossUpload($path, $file)
- {
- $accessKeyId = config('app.wework_ali_oss_access_key_id');
- $accessKeySecret = config('app.wework_ali_oss_access_key_secret');
- $endpoint = config('app.wework_ali_oss_end_point');
- $bucket = config('app.wework_ali_oss_bucket');
- $oss = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
- try {
- $oss->uploadFile($bucket, $path, $file);
- } catch (OssException $e) {
- Log::record($e)->save();
- return false;
- }
- return true;
- }
- /*
- * oss检测文件
- */
- private function ossCheck($file)
- {
- $accessKeyId = config('app.wework_ali_oss_access_key_id');
- $accessKeySecret = config('app.wework_ali_oss_access_key_secret');
- $endpoint = config('app.wework_ali_oss_end_point');
- $bucket = config('app.wework_ali_oss_bucket');
- $oss = new OssClient($accessKeyId, $accessKeySecret, $endpoint);
- try {
- $exist = $oss->doesObjectExist($bucket, $file);
- return $exist;
- } catch (OssException $e) {
- return false;
- }
- }
- }
|