作者 邓超

自定义

@@ -68,7 +68,7 @@ zFePUMXy1bFghAfzNKlrc5XgH4ixeeMh3cDtU97K @@ -68,7 +68,7 @@ zFePUMXy1bFghAfzNKlrc5XgH4ixeeMh3cDtU97K
68 public function deleted_profiles($data){ 68 public function deleted_profiles($data){
69 $param = [ 69 $param = [
70 'title'=>$data['title'], 70 'title'=>$data['title'],
71 - 'profileKey'=>$this->profile_key, 71 +// 'profileKey'=>$this->profile_key,
72 ]; 72 ];
73 $url = $this->path.'/api/profiles/profile'; 73 $url = $this->path.'/api/profiles/profile';
74 return $this->http_click('delete',$url,$param); 74 return $this->http_click('delete',$url,$param);
@@ -126,15 +126,13 @@ zFePUMXy1bFghAfzNKlrc5XgH4ixeeMh3cDtU97K @@ -126,15 +126,13 @@ zFePUMXy1bFghAfzNKlrc5XgH4ixeeMh3cDtU97K
126 * @time :2023/5/8 9:47 126 * @time :2023/5/8 9:47
127 * https://app.ayrshare.com/api/media/upload 127 * https://app.ayrshare.com/api/media/upload
128 */ 128 */
129 - public function post_media_upload($data){ 129 + public function post_media_upload($data,$api_key){
130 $param = [ 130 $param = [
131 'file'=>$data['file'],//base64编码 131 'file'=>$data['file'],//base64编码
132 - 'fileName'=>$data['file_name'],//生成图片名称  
133 - 'description'=>$data['description'],//描述  
134 ]; 132 ];
135 - $this->headers['Authorization'] = $this->headers['Authorization'].$data['profile_key']; 133 + $this->headers['Authorization'] = $this->headers['Authorization'].$api_key;
136 $url = $this->path.'/api/media/upload'; 134 $url = $this->path.'/api/media/upload';
137 - return $this->http_click('posts',$url,$param,$this->headers); 135 + return $this->http_click('post',$url,$param,$this->headers);
138 } 136 }
139 137
140 /** 138 /**
@@ -5,21 +5,44 @@ namespace App\Http\Controllers\Bside\AyrShare; @@ -5,21 +5,44 @@ namespace App\Http\Controllers\Bside\AyrShare;
5 use App\Enums\Common\Code; 5 use App\Enums\Common\Code;
6 use App\Helper\AyrShare as AyrShareHelper; 6 use App\Helper\AyrShare as AyrShareHelper;
7 use App\Http\Controllers\Bside\BaseController; 7 use App\Http\Controllers\Bside\BaseController;
  8 +use App\Http\Controllers\Bside\FileController;
  9 +use App\Http\Controllers\file\ImageController;
8 use App\Http\Logic\Bside\AyrShare\AyrReleaseLogic; 10 use App\Http\Logic\Bside\AyrShare\AyrReleaseLogic;
9 use App\Http\Logic\Bside\AyrShare\AyrShareLogic; 11 use App\Http\Logic\Bside\AyrShare\AyrShareLogic;
  12 +use App\Models\File\Image;
  13 +use App\Models\File\Image as ImageModel;
10 14
11 /** 15 /**
12 * @name:社交发布 16 * @name:社交发布
  17 + * Facebook Pages and Groups: 10 images, including a carousel post.
  18 + * Instagram: 10 images.
  19 + * Google : 1 image.
  20 + * LinkedIn: 9 images.
  21 + * Pinterest: 1 image.
  22 + * Reddit: 1 image.
  23 + * Telegram: 1 image.
  24 + * Twitter:4 image
13 */ 25 */
14 class AyrReleaseController extends BaseController 26 class AyrReleaseController extends BaseController
15 { 27 {
16 /** 28 /**
  29 + * @name :(获取发送数据详情)info
  30 + * @author :lyh
  31 + * @method :post
  32 + * @time :2023/5/10 14:57
  33 + */
  34 + public function info(AyrReleaseLogic $ayrReleaseLogic){
  35 + $info = $ayrReleaseLogic->release_info();
  36 + $this->response('success',Code::SUCCESS,$info);
  37 + }
  38 +
  39 + /**
17 * @name :(获取当前用户已绑定的社交链接)info 40 * @name :(获取当前用户已绑定的社交链接)info
18 * @author :lyh 41 * @author :lyh
19 * @method :post 42 * @method :post
20 * @time :2023/5/9 16:00 43 * @time :2023/5/9 16:00
21 */ 44 */
22 - public function info(AyrShareLogic $ayrShareLogic){ 45 + public function share_info(AyrShareLogic $ayrShareLogic){
23 $info = $ayrShareLogic->ayr_share_info(); 46 $info = $ayrShareLogic->ayr_share_info();
24 $this->response('success',Code::SUCCESS,$info); 47 $this->response('success',Code::SUCCESS,$info);
25 } 48 }
@@ -29,80 +52,74 @@ class AyrReleaseController extends BaseController @@ -29,80 +52,74 @@ class AyrReleaseController extends BaseController
29 * @method :post 52 * @method :post
30 * @time :2023/5/9 9:36 53 * @time :2023/5/9 9:36
31 */ 54 */
32 - public function send_post(AyrReleaseLogic $ayrReleaseLogic,AyrShareLogic $ayrShareLogic){  
33 -// DB::beginTransaction();  
34 -// try { 55 + public function send_post(AyrReleaseLogic $ayrReleaseLogic,AyrShareLogic $ayrShareLogic,AyrShareHelper $ayrShare){
  56 + //获取发送账号详情
  57 + $share_info = $ayrShareLogic->ayr_share_info();
  58 + $data = [
  59 + 'images'=>$this->param['images'],
  60 + 'files'=>$this->param['video'],
  61 + ];
  62 + //参数处理
  63 + $this->param['mediaUrls'] = $ayrReleaseLogic->image_file_param($data);;
  64 + //统一生成发布
  65 + $param = [
  66 + 'post'=>$this->param['content'],
  67 + 'platforms'=>$this->param['platforms'],
  68 + 'mediaUrls'=>$this->param['mediaUrls'],//参数处理
  69 + 'idempotencyKey'=>$this->param['idempotency_key'],//时间(如是过去时间,立即发布)
  70 + ];
  71 + //发送请求发布社交文章
  72 + $res = $ayrShare->post_send_msg($param,$share_info['profile_key']);
  73 + //保存数据库
  74 + $ayrReleaseLogic->release_add();
  75 + $this->response('success',Code::SUCCESS,$res);
  76 + }
  77 +
  78 + /**
  79 + * @name :(图片上传到第三方平台)send_media
  80 + * @author :lyh
  81 + * @method :post
  82 + * @time :2023/5/10 14:07
  83 + */
  84 + public function send_media(AyrShareLogic $ayrShareLogic,AyrShareHelper $ayrShare){
  85 + $image_info = $ayrShareLogic->save_img_info($this->param['hash']);
  86 + if(empty($image_info['ayr_id'])){
35 //获取发送账号详情 87 //获取发送账号详情
36 $share_info = $ayrShareLogic->ayr_share_info(); 88 $share_info = $ayrShareLogic->ayr_share_info();
37 - $data = [  
38 - 'images'=>$this->param['image'],  
39 - 'files'=>$this->param['file'],  
40 - ];  
41 - //参数处理  
42 - $image_data = $this->image_file_param($data);  
43 - $this->param['mediaUrls'] = array_merge($image_data['images_link'],$image_data['files_link']);  
44 - var_dump($this->param);  
45 - die();  
46 - //统一生成链接 89 + //获取当前图片数据是否已上传到第三方
  90 + $arr = (new ImageController())->index($this->param['hash']);
  91 + //向第三方存储图片
47 $param = [ 92 $param = [
48 - 'post'=>$this->param['content'],  
49 - 'platforms'=>$this->param['platforms'],  
50 - 'mediaUrls'=>$this->param['mediaUrls'],//参数处理 93 + 'file'=>($arr->original),//base64编码
51 ]; 94 ];
52 - //发送请求注册社交用户  
53 - $ayrShareHelper = new AyrShareHelper();  
54 - $res = $ayrShareHelper->post_send_msg($param,$share_info['profile_key']);  
55 - $this->response('success',Code::SUCCESS,$res);  
56 - //保存数据库  
57 - $ayrReleaseLogic->release_add();  
58 -// DB::commit();  
59 -// }catch (\Exception $e){  
60 -// DB::rollBack();  
61 -// $this->response('error',Code::USER_ERROR);  
62 -// } 95 + $param_data = $ayrShare->post_media_upload($param,$share_info['profile_key']);
  96 + //更新图片库
  97 + $ayrShareLogic->save_img($param_data);
  98 + }
  99 + $this->response('success');
63 } 100 }
64 101
65 /** 102 /**
66 - * @name :(上传第三方参数参数)get_param 103 + * @name :(文件上传到第三方平台)send_media
67 * @author :lyh 104 * @author :lyh
68 * @method :post 105 * @method :post
69 - * @time :2023/5/10 10:27 106 + * @time :2023/5/10 14:07
70 */ 107 */
71 - public function image_file_param($data) {  
72 - if (empty($data) || !is_array($data)) {  
73 - return empty($data) ? is_array($data) ? [] : '' : $data;  
74 - }  
75 - foreach ($data as $k => $v) {  
76 - if (is_array($v)) {  
77 - $data[$k] = $this->_extents($v);  
78 - } else {  
79 - if (is_null($v)) {  
80 - $data[$k] = '';  
81 - continue;  
82 - }  
83 - //获取操作人  
84 - switch ((string) $k) {  
85 - case 'image':  
86 - $data['image_link'] = url('/b/image/' . $v . '/2');  
87 - break;  
88 - case 'images':  
89 - $v = explode(',',$v);  
90 - foreach ($v as $k1=>$v1){  
91 - $data['images_link'][$k1] = url('/b/image/' . $v1 . '/2');  
92 - }  
93 - break;  
94 - case 'file':  
95 - $data['file_link'] = url('/b/file_hash/' . $v .'/mp4');  
96 - break;  
97 - case 'files':  
98 - $v = explode(',',$v);  
99 - foreach ($v as $k1=>$v1){  
100 - $data['files_link'][$k1] = url('/b/file_hash/' . $v1 . '/mp4');  
101 - }  
102 - break;  
103 - }  
104 - } 108 + public function send_media_file(AyrShareLogic $ayrShareLogic,AyrShareHelper $ayrShare){
  109 + $image_info = $ayrShareLogic->save_file_info($this->param['hash']);
  110 + if(empty($image_info['ayr_id'])){
  111 + //获取发送账号详情
  112 + $share_info = $ayrShareLogic->ayr_share_info();
  113 + //获取当前图片数据是否已上传到第三方
  114 + $arr = (new FileController())->index($this->param['hash']);
  115 + //向第三方存储图片
  116 + $param = [
  117 + 'file'=>($arr->original),//base64编码
  118 + ];
  119 + $param_data = $ayrShare->post_media_upload($param,$share_info['profile_key']);
  120 + //更新图片库
  121 + $ayrShareLogic->save_file($param_data);
105 } 122 }
106 - return $data; 123 + $this->response('success');
107 } 124 }
108 } 125 }
@@ -13,6 +13,8 @@ use App\Models\AyrShare\AyrShare as AyrShareModel; @@ -13,6 +13,8 @@ use App\Models\AyrShare\AyrShare as AyrShareModel;
13 */ 13 */
14 class AyrShareController extends BaseController 14 class AyrShareController extends BaseController
15 { 15 {
  16 + //生成名称前缀
  17 + const TITLE = 'global_so_';
16 /** 18 /**
17 * @name :(社交列表)lists 19 * @name :(社交列表)lists
18 * @author :lyh 20 * @author :lyh
@@ -20,7 +22,10 @@ class AyrShareController extends BaseController @@ -20,7 +22,10 @@ class AyrShareController extends BaseController
20 * @time :2023/5/5 16:06 22 * @time :2023/5/5 16:06
21 */ 23 */
22 public function lists(AyrShareModel $ayrShareModel){ 24 public function lists(AyrShareModel $ayrShareModel){
23 - $lists = $ayrShareModel->lists($this->map,$this->page,$this->row,'id',['*']); 25 + //授权配置列表
  26 + $share_list = $ayrShareModel->platforms;
  27 + $lists = $ayrShareModel->lists($this->map,$this->page,$this->row,'id',['id','name','bind_plat_from','operator_id','created_at','updated_at']);
  28 + $lists['share_list'] = $share_list;
24 $this->response('列表',Code::SUCCESS,$lists); 29 $this->response('列表',Code::SUCCESS,$lists);
25 } 30 }
26 31
@@ -36,9 +41,13 @@ class AyrShareController extends BaseController @@ -36,9 +41,13 @@ class AyrShareController extends BaseController
36 $share_info = $ayrShareHelper->get_profiles_users($info['profile_key']); 41 $share_info = $ayrShareHelper->get_profiles_users($info['profile_key']);
37 if(isset($share_info['activeSocialAccounts'])){ 42 if(isset($share_info['activeSocialAccounts'])){
38 $str = json_encode($share_info['activeSocialAccounts']); 43 $str = json_encode($share_info['activeSocialAccounts']);
39 - $ayrShareLogic->ayr_share_edit(['bind_plat_from'=>$str]); 44 + if($str != $info['bind_plat_from']){
  45 + $res = $ayrShareLogic->ayr_share_edit(['bind_plat_from'=>$str]);
  46 + }else{
  47 + $res = false;
  48 + }
40 } 49 }
41 - $this->response('success'); 50 + $this->response('success',Code::SUCCESS,['is_true'=>$res]);
42 } 51 }
43 /** 52 /**
44 * @name :(创建ayr_share账户)create_account 53 * @name :(创建ayr_share账户)create_account
@@ -48,7 +57,7 @@ class AyrShareController extends BaseController @@ -48,7 +57,7 @@ class AyrShareController extends BaseController
48 */ 57 */
49 public function create_account(AyrShareLogic $ayrShareLogic){ 58 public function create_account(AyrShareLogic $ayrShareLogic){
50 $param = [ 59 $param = [
51 - 'title'=>md5(uniqid().time()), 60 + 'title'=>self::TITLE.$this->user['project_id'].':'.$this->param['name'],
52 ]; 61 ];
53 //发送请求注册社交用户 62 //发送请求注册社交用户
54 $ayrShareHelper = new AyrShareHelper(); 63 $ayrShareHelper = new AyrShareHelper();
@@ -33,7 +33,7 @@ class FileController @@ -33,7 +33,7 @@ class FileController
33 { 33 {
34 $this->request = request(); 34 $this->request = request();
35 $this->config = config('filesystems.disks.upload'); 35 $this->config = config('filesystems.disks.upload');
36 - $this->uploads = config('uploads.default_file'); 36 + $this->uploads = config('upload.default_file');
37 $this->path = $this->config['root'].$this->uploads['path'].'/'; 37 $this->path = $this->config['root'].$this->uploads['path'].'/';
38 } 38 }
39 39
@@ -44,13 +44,15 @@ class FileController @@ -44,13 +44,15 @@ class FileController
44 * @method :post 44 * @method :post
45 * @time :2023/5/9 9:15 45 * @time :2023/5/9 9:15
46 */ 46 */
47 - public function index($hash = '',$type = 1){ 47 + public function index($hash = '', $type = 1)
  48 + {
  49 + // 检查是否有修改日期或ETag头部
48 if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) || isset($_SERVER['HTTP_IF_NONE_MATCH'])) { 50 if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) || isset($_SERVER['HTTP_IF_NONE_MATCH'])) {
49 header("HTTP/1.1 304 Not Modified"); 51 header("HTTP/1.1 304 Not Modified");
50 exit; 52 exit;
51 } 53 }
52 $file_model = new File(); 54 $file_model = new File();
53 - $info = $file_model->read(['hash'=>$hash]); 55 + $info = $file_model->read(['hash' => $hash]);
54 if ($info === false) { 56 if ($info === false) {
55 $this->response('指定文件不存在!', Code::USER_ERROR); 57 $this->response('指定文件不存在!', Code::USER_ERROR);
56 } 58 }
@@ -58,10 +60,54 @@ class FileController @@ -58,10 +60,54 @@ class FileController
58 if (!is_file($path)) { 60 if (!is_file($path)) {
59 $this->response('指定文件已被系统删除!', Code::USER_ERROR); 61 $this->response('指定文件已被系统删除!', Code::USER_ERROR);
60 } 62 }
  63 + $size = $info['size'];
  64 + // 设置Content-Type头部
  65 + $header['Content-Type'] = 'video/' . $info['type'];
  66 + // 设置Accept-Ranges头部
  67 + $header['Accept-Ranges'] = 'bytes';
  68 + // 检查是否有范围请求
  69 + if (isset($_SERVER['HTTP_RANGE'])) {
  70 + $range = $_SERVER['HTTP_RANGE'];
  71 + $ranges = explode('-', substr($range, 6));
  72 + $start = intval($ranges[0]);
  73 + $end = $size - 1;
  74 + if (!empty($ranges[1])) {
  75 + $end = intval($ranges[1]);
  76 + }
  77 + $length = $end - $start + 1;
  78 + // 设置部分响应头部
  79 + $header['Content-Length'] = $length;
  80 + $header['Content-Range'] = 'bytes ' . $start . '-' . $end . '/' . $size;
  81 + // 发送206 Partial Content状态码
  82 + header('HTTP/1.1 206 Partial Content');
  83 + header('Status: 206 Partial Content');
  84 + header('Accept-Ranges: bytes');
  85 + header('Content-Range: bytes ' . $start . '-' . $end . '/' . $size);
  86 +
  87 + // 读取部分内容并发送响应
  88 + $file = fopen($path, 'rb');
  89 + fseek($file, $start);
  90 + $buffer = 1024 * 8; // 设置缓冲区大小
  91 + while (!feof($file) && ($p = ftell($file)) <= $end) {
  92 + if ($p + $buffer > $end) {
  93 + // 最后一块缓冲区
  94 + $buffer = $end - $p + 1;
  95 + }
  96 + echo fread($file, $buffer);
  97 + flush(); // 将输出刷新到浏览器
  98 + }
  99 + fclose($file);
  100 + exit;
  101 + }
  102 + // 无范围请求,发送完整文件
  103 + $header['Content-Length'] = $size;
61 $content = file_get_contents($path); 104 $content = file_get_contents($path);
62 - $header['Content-Length'] = $info['size'];  
63 - $header['Content-Type'] = 'video/'.$info['type'];  
64 - return response($content, 200, $header); 105 + // 发送完整响应
  106 + foreach ($header as $name => $value) {
  107 + header("$name: $value");
  108 + }
  109 + echo $content;
  110 + exit;
65 } 111 }
66 /** 112 /**
67 * 图片上传 113 * 图片上传
@@ -73,6 +119,7 @@ class FileController @@ -73,6 +119,7 @@ class FileController
73 'file.required'=>'必须填写', 119 'file.required'=>'必须填写',
74 ]); 120 ]);
75 $files = $this->request->file('file'); 121 $files = $this->request->file('file');
  122 +
76 if (empty($files)) { 123 if (empty($files)) {
77 $this->response('没有上传的文件!', 400); 124 $this->response('没有上传的文件!', 400);
78 } 125 }
@@ -4,6 +4,8 @@ namespace App\Http\Logic\Bside\AyrShare; @@ -4,6 +4,8 @@ namespace App\Http\Logic\Bside\AyrShare;
4 4
5 use App\Http\Logic\Bside\BaseLogic; 5 use App\Http\Logic\Bside\BaseLogic;
6 use App\Models\AyrShare\AyrRelease; 6 use App\Models\AyrShare\AyrRelease;
  7 +use App\Models\File\File;
  8 +use App\Models\File\Image;
7 9
8 class AyrReleaseLogic extends BaseLogic 10 class AyrReleaseLogic extends BaseLogic
9 { 11 {
@@ -17,7 +19,7 @@ class AyrReleaseLogic extends BaseLogic @@ -17,7 +19,7 @@ class AyrReleaseLogic extends BaseLogic
17 } 19 }
18 20
19 /** 21 /**
20 - * @name :()release_info 22 + * @name :(获取详情)release_info
21 * @author :lyh 23 * @author :lyh
22 * @method :post 24 * @method :post
23 * @time :2023/5/9 16:27 25 * @time :2023/5/9 16:27
@@ -36,26 +38,35 @@ class AyrReleaseLogic extends BaseLogic @@ -36,26 +38,35 @@ class AyrReleaseLogic extends BaseLogic
36 * @time :2023/5/9 9:38 38 * @time :2023/5/9 9:38
37 */ 39 */
38 public function release_add(){ 40 public function release_add(){
  41 + $this->param['project_id'] = $this->user['project_id'];
  42 + $this->param['operator_id'] = $this->user['id'];
39 $rs = $this->model->add($this->param); 43 $rs = $this->model->add($this->param);
40 if($rs === false){ 44 if($rs === false){
41 $this->fail('error'); 45 $this->fail('error');
42 } 46 }
43 return $this->success(); 47 return $this->success();
44 } 48 }
45 -  
46 /** 49 /**
47 - * @name :(上传第三方平台)0ayr_release_add 50 + * @name :(上传第三方图片参数处理)get_param
48 * @author :lyh 51 * @author :lyh
49 * @method :post 52 * @method :post
50 - * @time :2023/5/9 10:02 53 + * @time :2023/5/10 10:27
51 */ 54 */
52 - public function ayr_release_add($param){  
53 - $param = [  
54 - 'post'=>$this->param['content'],  
55 - 'platforms'=>$this->param['platforms'],  
56 - 'mediaUrls'=>$this->param['mediaUrls'],  
57 - ];  
58 - return $this->success($param); 55 + public function image_file_param($data) {
  56 + $arr = [];
  57 + foreach ($data as $k => $v){
  58 + if($k == 'images'){
  59 + $images = explode(',',$v);
  60 + $imageModel = new Image();
  61 + $list = $imageModel->list(['hash'=>['in',$images]],'id');
  62 + foreach ($list as $v1){
  63 + $arr[] = $v1['ayr_url'];
  64 + }
  65 + }else{
  66 + $arr[] = url('/b/file_hash/' . $v.rand(10000,99999).'mp4');;
  67 + }
  68 + }
  69 + return $this->success($arr);
59 } 70 }
60 71
61 /** 72 /**
@@ -2,10 +2,10 @@ @@ -2,10 +2,10 @@
2 2
3 namespace App\Http\Logic\Bside\AyrShare; 3 namespace App\Http\Logic\Bside\AyrShare;
4 4
5 -use App\Helper\AyrShare as AyrShareHelper;  
6 -use App\Http\Controllers\file\ImageController;  
7 use App\Http\Logic\Bside\BaseLogic; 5 use App\Http\Logic\Bside\BaseLogic;
8 use App\Models\AyrShare\AyrShare; 6 use App\Models\AyrShare\AyrShare;
  7 +use App\Models\File\File as FileModel;
  8 +use App\Models\File\Image as ImageModel;
9 9
10 class AyrShareLogic extends BaseLogic 10 class AyrShareLogic extends BaseLogic
11 { 11 {
@@ -48,7 +48,7 @@ class AyrShareLogic extends BaseLogic @@ -48,7 +48,7 @@ class AyrShareLogic extends BaseLogic
48 * @time :2023/5/6 10:16 48 * @time :2023/5/6 10:16
49 */ 49 */
50 public function ayr_share_info(){ 50 public function ayr_share_info(){
51 - $info = $this->model->read(['id'=>$this->param['id']]); 51 + $info = $this->model->read(['id'=>$this->param['share_id']]);
52 if($info === false){ 52 if($info === false){
53 $this->fail('当前数据不存在或已被删除'); 53 $this->fail('当前数据不存在或已被删除');
54 } 54 }
@@ -82,26 +82,76 @@ class AyrShareLogic extends BaseLogic @@ -82,26 +82,76 @@ class AyrShareLogic extends BaseLogic
82 } 82 }
83 return $this->success(); 83 return $this->success();
84 } 84 }
  85 + /**
  86 + * @name :(更新图片库)save_info_info
  87 + * @author :lyh
  88 + * @method :post
  89 + * @time :2023/5/10 15:01
  90 + */
  91 + public function save_img_info($hash){
  92 + $imageModel = new ImageModel();
  93 + $info = $imageModel->read(['hash'=>$hash]);
  94 + if($info === false){
  95 + $this->fail('error');
  96 + }
  97 + return $this->success();
  98 + }
85 99
86 /** 100 /**
87 - * @name :(向第三方平台发布帖子)api_public_msg 101 + * @name :(更新图片库)save_info_info
88 * @author :lyh 102 * @author :lyh
89 * @method :post 103 * @method :post
90 - * @time :2023/5/8 9:11 104 + * @time :2023/5/10 15:01
91 */ 105 */
92 - public function send_public_post($param){  
93 - //获取图片  
94 - $image_c = new ImageController();  
95 - $image_info = $image_c->index($param['hash']);  
96 - $param = [  
97 - 'post'=>$param['text'],  
98 - 'mediaUrls'=>$image_info,  
99 - 'platforms'=>$this->param['platforms'], 106 + public function save_file_info($hash){
  107 + $fileModel = new FileModel();
  108 + $info = $fileModel->read(['hash'=>$hash]);
  109 + if($info === false){
  110 + $this->fail('error');
  111 + }
  112 + return $this->success();
  113 + }
  114 +
  115 + /**
  116 + * @name :(更新图片库)save_img
  117 + * @author :lyh
  118 + * @method :post
  119 + * @time :2023/5/10 15:01
  120 + */
  121 + public function save_img($param_data){
  122 + //根据文件hash存入数据库
  123 + $ayr_data = [
  124 + 'ayr_id'=>$param_data['id'],
  125 + 'ayr_url'=>$param_data['url'],
  126 + 'ayr_url_link'=>$param_data['url_1080']
  127 + ];
  128 + $imageModel = new ImageModel();
  129 + $rs = $imageModel->edit($ayr_data,['hash'=>$this->param['hash']]);
  130 + if($rs === false){
  131 + $this->fail('更新失败');
  132 + }
  133 + return $this->success();
  134 + }
  135 +
  136 + /**
  137 + * @name :(更新文件库)save_img
  138 + * @author :lyh
  139 + * @method :post
  140 + * @time :2023/5/10 15:01
  141 + */
  142 + public function save_file($param_data){
  143 + //根据文件hash存入数据库
  144 + $ayr_data = [
  145 + 'ayr_id'=>$param_data['id'],
  146 + 'ayr_url'=>$param_data['url'],
  147 + 'ayr_url_link'=>$param_data['url_1080']
100 ]; 148 ];
101 - //发布帖子  
102 - $ayrShareHelper = new AyrShareHelper();  
103 - $res = $ayrShareHelper->post_send_msg($param);  
104 - $this->success($res); 149 + $imageModel = new FileModel();
  150 + $rs = $imageModel->edit($ayr_data,['hash'=>$this->param['hash']]);
  151 + if($rs === false){
  152 + $this->fail('更新失败');
  153 + }
  154 + return $this->success();
105 } 155 }
106 } 156 }
107 157
@@ -29,9 +29,9 @@ class LoginAuthMiddleware @@ -29,9 +29,9 @@ class LoginAuthMiddleware
29 if(empty($info)){ 29 if(empty($info)){
30 return response(['code'=>Code::USER_ERROR,'msg'=>'当前用户未登录']); 30 return response(['code'=>Code::USER_ERROR,'msg'=>'当前用户未登录']);
31 } 31 }
32 -// // 设置数据信息 32 + // 设置数据信息
33 $project = ProjectServer::useProject($info['project_id']); 33 $project = ProjectServer::useProject($info['project_id']);
34 - if(empty($project)){ 34 + if($project){
35 return response(['code'=>Code::USER_ERROR,'msg'=>'数据库未配置']); 35 return response(['code'=>Code::USER_ERROR,'msg'=>'数据库未配置']);
36 } 36 }
37 //操作权限设置 37 //操作权限设置
  1 +<?php
  2 +
  3 +namespace App\Http\Requests\Bside\AyrRelease;
  4 +
  5 +use Illuminate\Foundation\Http\FormRequest;
  6 +
  7 +class AyrReleaseRequest extends FormRequest
  8 +{
  9 + /**
  10 + * Determine if the user is authorized to make this request.
  11 + *
  12 + * @return bool
  13 + */
  14 + public function authorize()
  15 + {
  16 + return true;
  17 + }
  18 + /**
  19 + * Get the validation rules that apply to the request.
  20 + *
  21 + * @return array
  22 + */
  23 + public function rules()
  24 + {
  25 + return [
  26 + 'title'=>'required',
  27 + 'images'=>'required',
  28 + 'video'=>'required',
  29 + 'content'=>'required',
  30 + 'share_id'=>'required',
  31 + 'platforms'=>'required',
  32 + 'idempotency_key'=>'required',
  33 + ];
  34 + }
  35 +
  36 + public function messages()
  37 + {
  38 + return [
  39 + 'name.required'=>'参数错误',
  40 + ];
  41 + }
  42 +}
@@ -7,4 +7,30 @@ use App\Models\Base; @@ -7,4 +7,30 @@ use App\Models\Base;
7 class AyrShare extends Base 7 class AyrShare extends Base
8 { 8 {
9 protected $table = 'gl_ayr_share'; 9 protected $table = 'gl_ayr_share';
  10 +
  11 + const TYPE_FACEBOOK = 1;
  12 + const TYPE_TWITTER = 2;
  13 + const TYPE_LINKEDIN = 3;
  14 + const TYPE_INSTAGRAM = 4;
  15 + const TYPE_YOUTUBE = 5;
  16 + const TYPE_REDDIT = 6;
  17 + const TYPE_TELEGRAM = 7;
  18 + const TYPE_GMB = 8;
  19 + const TYPE_PINTEREST = 9;
  20 + const TYPE_TIKTOK = 10;
  21 + /**
  22 + * @var :授权列表
  23 + */
  24 + public $platforms = [
  25 + self::TYPE_FACEBOOK => 'Facebook',
  26 + self::TYPE_TWITTER => 'Twitter',
  27 + self::TYPE_LINKEDIN => 'LinkedIn',
  28 + self::TYPE_INSTAGRAM => 'Instagram',
  29 + self::TYPE_YOUTUBE => 'YouTube',
  30 + self::TYPE_REDDIT => 'Reddit',
  31 + self::TYPE_TELEGRAM => 'Telegram',
  32 + self::TYPE_GMB => 'Google',
  33 + self::TYPE_PINTEREST => 'Pinterest',
  34 + self::TYPE_TIKTOK => 'TikTok',
  35 + ];
10 } 36 }
@@ -8,7 +8,8 @@ use App\Models\User\User; @@ -8,7 +8,8 @@ use App\Models\User\User;
8 class Blog extends Base 8 class Blog extends Base
9 { 9 {
10 protected $table = 'gl_blog'; 10 protected $table = 'gl_blog';
11 - 11 + //连接数据库
  12 + protected $connection = 'custom_mysql';
12 public function user(){ 13 public function user(){
13 return $this->hasMany(User::class,'operator_id','id'); 14 return $this->hasMany(User::class,'operator_id','id');
14 } 15 }
@@ -7,4 +7,7 @@ use App\Models\Base; @@ -7,4 +7,7 @@ use App\Models\Base;
7 class BlogCategory extends Base 7 class BlogCategory extends Base
8 { 8 {
9 protected $table = 'gl_blog_category'; 9 protected $table = 'gl_blog_category';
  10 + //连接数据库
  11 + protected $connection = 'custom_mysql';
  12 +
10 } 13 }
@@ -7,4 +7,6 @@ use App\Models\Base; @@ -7,4 +7,6 @@ use App\Models\Base;
7 class BlogLabel extends Base 7 class BlogLabel extends Base
8 { 8 {
9 protected $table = 'gl_blog_label'; 9 protected $table = 'gl_blog_label';
  10 + //连接数据库
  11 + protected $connection = 'custom_mysql';
10 } 12 }
@@ -7,4 +7,6 @@ use App\Models\Base; @@ -7,4 +7,6 @@ use App\Models\Base;
7 class File extends Base 7 class File extends Base
8 { 8 {
9 protected $table = 'gl_file'; 9 protected $table = 'gl_file';
  10 + //连接数据库
  11 + protected $connection = 'custom_mysql';
10 } 12 }
@@ -8,20 +8,6 @@ class Image extends Base @@ -8,20 +8,6 @@ class Image extends Base
8 { 8 {
9 protected $table = 'gl_image'; 9 protected $table = 'gl_image';
10 10
11 - public $timestamps = true;  
12 -  
13 - /**  
14 - * @param $hash  
15 - * @name :(获取图片详情)image_read  
16 - * @author :lyh  
17 - * @method :post  
18 - * @time :2023/5/4 11:50  
19 - */  
20 - public function image_read($hash){  
21 - $info = $this->read(['hash'=>$hash]);  
22 - if(empty($info)){  
23 - return false;  
24 - }  
25 - return $info;  
26 - } 11 + //连接数据库
  12 + protected $connection = 'custom_mysql';
27 } 13 }
@@ -9,4 +9,6 @@ class Mail extends Base @@ -9,4 +9,6 @@ class Mail extends Base
9 protected $table = 'gl_mail'; 9 protected $table = 'gl_mail';
10 //自动维护create_at创建时间 updated_at修改时间 10 //自动维护create_at创建时间 updated_at修改时间
11 public $timestamps = true; 11 public $timestamps = true;
  12 + //连接数据库
  13 + protected $connection = 'custom_mysql';
12 } 14 }
@@ -9,4 +9,6 @@ class MailUser extends Base @@ -9,4 +9,6 @@ class MailUser extends Base
9 protected $table = 'gl_mail_user'; 9 protected $table = 'gl_mail_user';
10 //自动维护create_at创建时间 updated_at修改时间 10 //自动维护create_at创建时间 updated_at修改时间
11 public $timestamps = true; 11 public $timestamps = true;
  12 + //连接数据库
  13 + protected $connection = 'custom_mysql';
12 } 14 }
@@ -7,4 +7,6 @@ use App\Models\Base; @@ -7,4 +7,6 @@ use App\Models\Base;
7 class News extends Base 7 class News extends Base
8 { 8 {
9 protected $table = 'gl_news'; 9 protected $table = 'gl_news';
  10 + //连接数据库
  11 + protected $connection = 'custom_mysql';
10 } 12 }
@@ -7,4 +7,6 @@ use App\Models\Base; @@ -7,4 +7,6 @@ use App\Models\Base;
7 class NewsCategory extends Base 7 class NewsCategory extends Base
8 { 8 {
9 protected $table = 'gl_news_category'; 9 protected $table = 'gl_news_category';
  10 + //连接数据库
  11 + protected $connection = 'custom_mysql';
10 } 12 }
@@ -7,4 +7,6 @@ use App\Models\Base; @@ -7,4 +7,6 @@ use App\Models\Base;
7 class NewsLabel extends Base 7 class NewsLabel extends Base
8 { 8 {
9 protected $table = 'gl_news_label'; 9 protected $table = 'gl_news_label';
  10 + //连接数据库
  11 + protected $connection = 'custom_mysql';
10 } 12 }
@@ -24,7 +24,7 @@ return [ @@ -24,7 +24,7 @@ return [
24 //默认视频 24 //默认视频
25 'default_file' =>[ 25 'default_file' =>[
26 'size' => [ 26 'size' => [
27 - 'max' => 1024*1024*200, // 2M 27 + 'max' => 1024*1024*20, // 2M
28 ], 28 ],
29 'path' => '/file' 29 'path' => '/file'
30 ], 30 ],
@@ -216,6 +216,13 @@ Route::middleware(['bloginauth'])->group(function () { @@ -216,6 +216,13 @@ Route::middleware(['bloginauth'])->group(function () {
216 Route::any('/create', [\App\Http\Controllers\Bside\AyrShare\AyrShareController::class, 'create_account'])->name('ayr_create_account'); 216 Route::any('/create', [\App\Http\Controllers\Bside\AyrShare\AyrShareController::class, 'create_account'])->name('ayr_create_account');
217 Route::any('/del', [\App\Http\Controllers\Bside\AyrShare\AyrShareController::class, 'del_account'])->name('ayr_del_account'); 217 Route::any('/del', [\App\Http\Controllers\Bside\AyrShare\AyrShareController::class, 'del_account'])->name('ayr_del_account');
218 Route::any('/bind', [\App\Http\Controllers\Bside\AyrShare\AyrShareController::class, 'bind_account'])->name('ayr_bind_account'); 218 Route::any('/bind', [\App\Http\Controllers\Bside\AyrShare\AyrShareController::class, 'bind_account'])->name('ayr_bind_account');
  219 + //社交绑定
  220 + Route::prefix('release')->group(function () {
  221 + Route::any('/info', [\App\Http\Controllers\Bside\AyrShare\AyrReleaseController::class, 'info'])->name('ayr_release_info');
  222 + Route::any('/share_info', [\App\Http\Controllers\Bside\AyrShare\AyrReleaseController::class, 'share_info'])->name('ayr_release_share_info');
  223 + Route::any('/send', [\App\Http\Controllers\Bside\AyrShare\AyrReleaseController::class, 'send_post'])->name('ayr_release_send');
  224 + Route::any('/send_media', [\App\Http\Controllers\Bside\AyrShare\AyrReleaseController::class, 'send_media'])->name('ayr_release_send_media');
  225 + });
219 }); 226 });
220 227
221 228
@@ -228,7 +235,6 @@ Route::middleware(['bloginauth'])->group(function () { @@ -228,7 +235,6 @@ Route::middleware(['bloginauth'])->group(function () {
228 Route::get('/custom-chunk', [\App\Http\Controllers\Bside\TemplateController::class, 'customChunk'])->name('bside_template_custom_chunk'); 235 Route::get('/custom-chunk', [\App\Http\Controllers\Bside\TemplateController::class, 'customChunk'])->name('bside_template_custom_chunk');
229 Route::get('/system', [\App\Http\Controllers\Bside\TemplateController::class, 'system_all_html'])->name('template_header_footer_system'); 236 Route::get('/system', [\App\Http\Controllers\Bside\TemplateController::class, 'system_all_html'])->name('template_header_footer_system');
230 }); 237 });
231 -  
232 // 自定义页面,专题页 238 // 自定义页面,专题页
233 Route::prefix('custom')->group(function () { 239 Route::prefix('custom')->group(function () {
234 Route::get('/', [\App\Http\Controllers\Bside\CustomController::class, 'index'])->name('bside_custom'); 240 Route::get('/', [\App\Http\Controllers\Bside\CustomController::class, 'index'])->name('bside_custom');
@@ -237,20 +243,14 @@ Route::middleware(['bloginauth'])->group(function () { @@ -237,20 +243,14 @@ Route::middleware(['bloginauth'])->group(function () {
237 Route::delete('/delete', [\App\Http\Controllers\Bside\CustomController::class, 'delete'])->name('bside_custom_delete'); 243 Route::delete('/delete', [\App\Http\Controllers\Bside\CustomController::class, 'delete'])->name('bside_custom_delete');
238 Route::any('/html/{id}', [\App\Http\Controllers\Bside\CustomController::class, 'html'])->where('id','\d+')->name('bside_custom_delete'); 244 Route::any('/html/{id}', [\App\Http\Controllers\Bside\CustomController::class, 'html'])->where('id','\d+')->name('bside_custom_delete');
239 }); 245 });
240 -  
241 -  
242 // 导航栏编辑 246 // 导航栏编辑
243 Route::prefix('nav')->group(function () { 247 Route::prefix('nav')->group(function () {
244 Route::get('/', [\App\Http\Controllers\Bside\NavController::class, 'index'])->name('bside_nav'); 248 Route::get('/', [\App\Http\Controllers\Bside\NavController::class, 'index'])->name('bside_nav');
245 Route::post('/create', [\App\Http\Controllers\Bside\NavController::class, 'create'])->name('bside_nav_create'); 249 Route::post('/create', [\App\Http\Controllers\Bside\NavController::class, 'create'])->name('bside_nav_create');
246 Route::post('/update', [\App\Http\Controllers\Bside\NavController::class, 'update'])->name('bside_nav_update'); 250 Route::post('/update', [\App\Http\Controllers\Bside\NavController::class, 'update'])->name('bside_nav_update');
247 Route::delete('/delete', [\App\Http\Controllers\Bside\NavController::class, 'delete'])->name('bside_nav_delete'); 251 Route::delete('/delete', [\App\Http\Controllers\Bside\NavController::class, 'delete'])->name('bside_nav_delete');
248 - Route::get('/default-urls', [\App\Http\Controllers\Bside\NavController::class, 'urls'])->name('bside_nav_default_urls');  
249 }); 252 });
250 253
251 -  
252 -  
253 -  
254 }); 254 });
255 255
256 //无需登录验证的路由组 256 //无需登录验证的路由组
@@ -258,6 +258,6 @@ Route::group([], function () { @@ -258,6 +258,6 @@ Route::group([], function () {
258 Route::any('/login', [\App\Http\Controllers\Bside\ComController::class, 'login'])->name('login'); 258 Route::any('/login', [\App\Http\Controllers\Bside\ComController::class, 'login'])->name('login');
259 // Route::any('/', [\App\Http\Controllers\Bside\ComController::class, 'get_country'])->name('get_country'); 259 // Route::any('/', [\App\Http\Controllers\Bside\ComController::class, 'get_country'])->name('get_country');
260 Route::get('/file/download', [\App\Http\Controllers\Bside\FileController::class, 'download'])->name('file_download'); 260 Route::get('/file/download', [\App\Http\Controllers\Bside\FileController::class, 'download'])->name('file_download');
261 - Route::any('/image/{hash}/{w?}/{h?}', [\App\Http\Controllers\file\ImageController::class,'index'])->name('image_show');  
262 - Route::any('/file_hash/{hash}', [\App\Http\Controllers\file\FileController::class,'index'])->name('file_show'); 261 + Route::any('/image/{hash}/{type?}/{w?}/{h?}', [\App\Http\Controllers\file\ImageController::class,'index'])->name('image_show');
  262 + Route::any('/file_hash/{hash}/', [\App\Http\Controllers\file\FileController::class,'index'])->name('file_show');
263 }); 263 });