Commit 2e996b01 2e996b01b85bfbde41a09a251b212c97b7d0cdd2 by 杨俊

fix(develop): Init

1 parent bd6a9388
...@@ -35,21 +35,8 @@ MAIL_ENCRYPTION=null ...@@ -35,21 +35,8 @@ MAIL_ENCRYPTION=null
35 MAIL_FROM_ADDRESS="hello@example.com" 35 MAIL_FROM_ADDRESS="hello@example.com"
36 MAIL_FROM_NAME="${APP_NAME}" 36 MAIL_FROM_NAME="${APP_NAME}"
37 37
38 JPUSH_KEY=860a3d4ecfaf3c38eb539c4e
39 JPUSH_SECRET=df208c0eb485ed3ab3b18ff2
40
41 IM_KEY= 38 IM_KEY=
42 IM_SECRET= 39 IM_SECRET=
43 40
44 WECHAT_OFFICIAL_ACCOUNT_APPID=
45 WECHAT_OFFICIAL_ACCOUNT_SECRET=
46 WECHAT_OFFICIAL_ACCOUNT_TOKEN=
47 WECHAT_OFFICIAL_ACCOUNT_AES_KEY=
48
49 WECHAT_MINI_APP_APPID=
50 WECHAT_MINI_APP_SECRET=
51 WECHAT_MINI_APP_TOKEN=
52 WECHAT_MINI_APP_AES_KEY=
53
54 OCTANE_SERVER=swoole 41 OCTANE_SERVER=swoole
55 OCTANE_HTTPS=true 42 OCTANE_HTTPS=true
......
1 <?php
2
3 namespace App\Channels;
4
5 use App\Models\User;
6 use Illuminate\Notifications\Notification;
7
8 class JPushNotificationChannel
9 {
10 public function send(User $notifiable, Notification $notification): void
11 {
12 // @phpstan-ignore-next-line
13 $notification->toJPush($notifiable);
14 }
15 }
1 <?php
2
3 namespace App\Channels;
4
5 use App\Models\User;
6 use Illuminate\Notifications\Notification;
7
8 class WechatNotificationChannel
9 {
10 public function send(User $notifiable, Notification $notification): void
11 {
12 // @phpstan-ignore-next-line
13 $notification->toWechat($notifiable);
14 }
15 }
...@@ -6,8 +6,6 @@ ...@@ -6,8 +6,6 @@
6 use App\Helpers\OperationLog; 6 use App\Helpers\OperationLog;
7 use App\Http\Container\AdminSection\Requests\User\CertifyUpdateRequest; 7 use App\Http\Container\AdminSection\Requests\User\CertifyUpdateRequest;
8 use App\Http\Service\UserService; 8 use App\Http\Service\UserService;
9 use App\Jobs\UserSingerLimitJob;
10 use App\Models\User;
11 use App\Models\UserCertify; 9 use App\Models\UserCertify;
12 use App\Models\Views\UserLastCertify; 10 use App\Models\Views\UserLastCertify;
13 use App\Notifications\UserCertifyFailNotification; 11 use App\Notifications\UserCertifyFailNotification;
...@@ -79,15 +77,6 @@ public function update(CertifyUpdateRequest $request, UserCertify $certify): Res ...@@ -79,15 +77,6 @@ public function update(CertifyUpdateRequest $request, UserCertify $certify): Res
79 }; 77 };
80 } catch (SingerLimitException $exception) { 78 } catch (SingerLimitException $exception) {
81 DB::rollBack(); 79 DB::rollBack();
82 $master = User::query()->find($exception->masterId, ['id', 'nick_name']);
83 UserSingerLimitJob::dispatch([
84 'title' => sprintf('%s:歌手额度已满', $master?->getAttribute('nick_name')),
85 'content' => sprintf('审核歌手认证:%s', $user->getAttribute('nick_name'))
86 ], [
87 'title' => sprintf('%s:同意歌手加入', $master->getAttribute('nick_name')),
88 'content' => sprintf('歌手:%s', $user->getAttribute('nick_name')),
89 'limit' => $exception->maxSingerNum
90 ]);
91 return $this->fail(ApiCode::VALIDATION_ERROR, '团队内歌手名额已满'); 80 return $this->fail(ApiCode::VALIDATION_ERROR, '团队内歌手名额已满');
92 81
93 } catch (RuntimeException $exception) { 82 } catch (RuntimeException $exception) {
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
12 use App\Http\Request\BooleanStatusRequest; 12 use App\Http\Request\BooleanStatusRequest;
13 use App\Http\Request\UserChangePwdRequest; 13 use App\Http\Request\UserChangePwdRequest;
14 use App\Http\Service\UserService; 14 use App\Http\Service\UserService;
15 use App\Jobs\UserSingerLimitJob;
16 use App\Jobs\UserSyncIMJob; 15 use App\Jobs\UserSyncIMJob;
17 use App\Models\Activity; 16 use App\Models\Activity;
18 use App\Models\GroupHasMember; 17 use App\Models\GroupHasMember;
...@@ -127,15 +126,6 @@ public function update(UserUpdateRequest $request, User $user): Response ...@@ -127,15 +126,6 @@ public function update(UserUpdateRequest $request, User $user): Response
127 return $this->successWithData($user->load(['authTags:id,name', 'roles:id,name', 'projects:id,name']), ApiCode::UPDATE_SUCCESS); 126 return $this->successWithData($user->load(['authTags:id,name', 'roles:id,name', 'projects:id,name']), ApiCode::UPDATE_SUCCESS);
128 } catch (SingerLimitException $exception) { 127 } catch (SingerLimitException $exception) {
129 DB::rollBack(); 128 DB::rollBack();
130 $master = User::query()->find($exception->masterId, ['id', 'nick_name']);
131 UserSingerLimitJob::dispatch([
132 'title' => sprintf('%s:歌手额度已满', $master?->getAttribute('nick_name')),
133 'content' => sprintf('编辑歌手信息:%s', $user->getAttribute('nick_name'))
134 ], [
135 'title' => sprintf('%s:编辑成员信息', $user->getAttribute('nick_name')),
136 'content' => sprintf('经纪人:%s', $master->getAttribute('nick_name')),
137 'limit' => $exception->maxSingerNum
138 ]);
139 return $this->fail(ApiCode::VALIDATION_ERROR, '团队内歌手名额已满'); 129 return $this->fail(ApiCode::VALIDATION_ERROR, '团队内歌手名额已满');
140 } catch (RuntimeException $exception) { 130 } catch (RuntimeException $exception) {
141 DB::rollBack(); 131 DB::rollBack();
......
...@@ -14,7 +14,6 @@ ...@@ -14,7 +14,6 @@
14 use Illuminate\Http\Request; 14 use Illuminate\Http\Request;
15 use Illuminate\Support\Facades\Auth; 15 use Illuminate\Support\Facades\Auth;
16 use Illuminate\Support\Facades\DB; 16 use Illuminate\Support\Facades\DB;
17 use Illuminate\Support\Facades\Http;
18 17
19 18
20 class AuditionController extends ApiController 19 class AuditionController extends ApiController
...@@ -22,63 +21,63 @@ class AuditionController extends ApiController ...@@ -22,63 +21,63 @@ class AuditionController extends ApiController
22 21
23 public function collection(Request $request) 22 public function collection(Request $request)
24 { 23 {
25 $status = $request->get('status', 'all'); 24 $status = $request->get('status', 'all');
26 $text = $request->get('text', ''); 25 $text = $request->get('text', '');
27 $pageSize = $request->integer('size', 10); 26 $pageSize = $request->integer('size', 10);
28 $song_type = $request->get('song_type', 1); 27 $song_type = $request->get('song_type', 1);
29 $user_id = Auth::id(); 28 $user_id = Auth::id();
30 $activity_ids = DB::table('user_activity_collections') 29 $activity_ids = DB::table('user_activity_collections')
31 ->where('user_id', $user_id) 30 ->where('user_id', $user_id)
32 ->whereNull('deleted_at') 31 ->whereNull('deleted_at')
33 ->orderByDesc('created_at') 32 ->orderByDesc('created_at')
34 ->pluck('activity_id')->toArray(); 33 ->pluck('activity_id')->toArray();
35 $query = Activity::query(); 34 $query = Activity::query();
36 if (!empty($text)){ 35 if (!empty($text)) {
37 $query->where('song_name', 'like', '%'.$text.'%'); 36 $query->where('song_name', 'like', '%' . $text . '%');
38 } 37 }
39 if ($status == 'active'){ 38 if ($status === 'active') {
40 $query->where('status', 1); 39 $query->where('status', 1);
41 } 40 }
42 $data =$query 41 $data = $query
43 ->with('user:id,nick_name,avatar') 42 ->with('user:id,nick_name,avatar')
44 ->whereIn('id', $activity_ids) 43 ->whereIn('id', $activity_ids)
45 ->where('song_type', $song_type) 44 ->where('song_type', $song_type)
46 ->with(['tags:id,name', 'submitUsers:id,nick_name,intro,real_name,avatar,province,city,company,rate']) 45 ->with(['tags:id,name', 'submitUsers:id,nick_name,intro,real_name,avatar,province,city,company,rate'])
47 ->select(['id','cover','song_name','status','is_official','created_at','sub_title','guide','guide_clip','project_id', 'user_id','lyric','clip_lyric','sex','mark','speed','lang']) 46 ->select(['id', 'cover', 'song_name', 'status', 'is_official', 'created_at', 'sub_title', 'guide', 'guide_clip', 'project_id', 'user_id', 'lyric', 'clip_lyric', 'sex', 'mark', 'speed', 'lang'])
48 ->withCount(['attend_user as attend_count', 'viewUsersCount as view_count']) 47 ->withCount(['attend_user as attend_count', 'viewUsersCount as view_count'])
49 ->orderByRaw(DB::raw("FIELD(id, " . implode(',', $activity_ids) . ")")) 48 ->orderByRaw(DB::raw("FIELD(id, " . implode(',', $activity_ids) . ")"))
50 ->paginate($pageSize); 49 ->paginate($pageSize);
51 $config_ids = DB::table('system_config') 50 $config_ids = DB::table('system_config')
52 ->whereIn('identifier', ['activity_lang', 'activity_speed', 'activity_sex', 'activity_mark']) 51 ->whereIn('identifier', ['activity_lang', 'activity_speed', 'activity_sex', 'activity_mark'])
53 ->whereNull('deleted_at') 52 ->whereNull('deleted_at')
54 ->pluck('id') 53 ->pluck('id')
55 ->toArray(); 54 ->toArray();
56 $configs = DB::table('system_config') 55 $configs = DB::table('system_config')
57 ->whereIn('parent_id', $config_ids) 56 ->whereIn('parent_id', $config_ids)
58 ->whereNull('deleted_at')->get(['identifier', 'name', 'content']); 57 ->whereNull('deleted_at')->get(['identifier', 'name', 'content']);
59 $view_activity_ids = array_column($data->items(), 'id'); 58 $view_activity_ids = array_column($data->items(), 'id');
60 $collection_at_list = DB::table('user_activity_collections') 59 $collection_at_list = DB::table('user_activity_collections')
61 ->whereIn('activity_id', $view_activity_ids) 60 ->whereIn('activity_id', $view_activity_ids)
62 ->where('user_id', $user_id) 61 ->where('user_id', $user_id)
63 ->whereNull('deleted_at') 62 ->whereNull('deleted_at')
64 ->pluck('created_at', 'activity_id') 63 ->pluck('created_at', 'activity_id')
65 ->toArray(); 64 ->toArray();
66 $projectIds = array_column($data->items(), 'project_id'); 65 $projectIds = array_column($data->items(), 'project_id');
67 $projectList = Project::query()->leftJoin('users','users.id','=','projects.master_id')->whereIn('projects.id',$projectIds) 66 $projectList = Project::query()->leftJoin('users', 'users.id', '=', 'projects.master_id')->whereIn('projects.id', $projectIds)
68 ->where('projects.status','=',1) 67 ->where('projects.status', '=', 1)
69 ->where('projects.deleted_at','=',null)->select(['projects.*','users.nick_name','users.real_name','users.avatar'])->get()->toArray(); 68 ->where('projects.deleted_at', '=', NULL)->select(['projects.*', 'users.nick_name', 'users.real_name', 'users.avatar'])->get()->toArray();
70 foreach ($projectList as $k=>$v){ 69 foreach ($projectList as $k => $v) {
71 $projectList[$k]['master'] = [ 70 $projectList[$k]['master'] = [
72 'id'=>$v['master_id'], 71 'id' => $v['master_id'],
73 'nick_name'=>$v['nick_name'], 72 'nick_name' => $v['nick_name'],
74 'real_name'=>$v['real_name'], 73 'real_name' => $v['real_name'],
75 'avatar'=>$v['avatar'] 74 'avatar' => $v['avatar']
76 ]; 75 ];
77 unset($projectList[$k]['nick_name']); 76 unset($projectList[$k]['nick_name']);
78 unset($projectList[$k]['real_name']); 77 unset($projectList[$k]['real_name']);
79 unset($projectList[$k]['avatar']); 78 unset($projectList[$k]['avatar']);
80 } 79 }
81 $data->each(static function (Activity $activity) use ($configs){ 80 $data->each(static function (Activity $activity) use ($configs) {
82 $langs = []; 81 $langs = [];
83 $lang = $activity->lang ?? []; 82 $lang = $activity->lang ?? [];
84 foreach ($configs as $c) { 83 foreach ($configs as $c) {
...@@ -101,14 +100,10 @@ public function collection(Request $request) ...@@ -101,14 +100,10 @@ public function collection(Request $request)
101 }); 100 });
102 $result = json_decode(json_encode($data->items()), true); 101 $result = json_decode(json_encode($data->items()), true);
103 foreach ($result as &$v) { 102 foreach ($result as &$v) {
104 $project = array_filter(array_map(function ($item) use($v){ 103 $project = array_filter(array_map(static fn($item) => $item['id'] === $v['project_id'] ? $item : NULL, $projectList));
105 if($item['id']==$v['project_id']){
106 return $item;
107 }
108 },$projectList));
109 104
110 $v['project'] = array_values($project); 105 $v['project'] = array_values($project);
111 $v['collection_at'] = !empty($collection_at_list[$v['id']]) ? $collection_at_list[$v['id']]: ''; 106 $v['collection_at'] = !empty($collection_at_list[$v['id']]) ? $collection_at_list[$v['id']] : '';
112 unset($v['user_id'], $v['project_id']); 107 unset($v['user_id'], $v['project_id']);
113 } 108 }
114 109
...@@ -121,7 +116,7 @@ public function sub(Request $request) ...@@ -121,7 +116,7 @@ public function sub(Request $request)
121 if (empty($activity_id)) { 116 if (empty($activity_id)) {
122 return JsonResource::success('收藏失败-参数错误。请联系管理员', code: 201); 117 return JsonResource::success('收藏失败-参数错误。请联系管理员', code: 201);
123 } 118 }
124 $user_id = Auth::id(); 119 $user_id = Auth::id();
125 $is_activity = DB::table('user_activity_collections') 120 $is_activity = DB::table('user_activity_collections')
126 ->where('user_id', $user_id) 121 ->where('user_id', $user_id)
127 ->where('activity_id', $activity_id) 122 ->where('activity_id', $activity_id)
...@@ -129,60 +124,32 @@ public function sub(Request $request) ...@@ -129,60 +124,32 @@ public function sub(Request $request)
129 ->orderByDesc('created_at') 124 ->orderByDesc('created_at')
130 ->pluck('id')->first(); 125 ->pluck('id')->first();
131 if (!empty($is_activity)) { 126 if (!empty($is_activity)) {
132 return JsonResource::success('请勿重复收藏', code: 400 ); 127 return JsonResource::success('请勿重复收藏', code: 400);
133 } 128 }
134 DB::table('user_activity_collections')->insert([ 129 DB::table('user_activity_collections')->insert([
135 'user_id'=> $user_id, 130 'user_id' => $user_id,
136 'activity_id'=> $activity_id, 131 'activity_id' => $activity_id,
137 'created_at'=> date('Y-m-d H:i:s', time()), 132 'created_at' => date('Y-m-d H:i:s', time()),
138 'updated_at'=> date('Y-m-d H:i:s', time()) 133 'updated_at' => date('Y-m-d H:i:s', time())
139 ]); 134 ]);
140 $user = DB::table('users')->where('id', $user_id)->first(); 135 $user = DB::table('users')->where('id', $user_id)->first();
141 $business_id = $user->business_id; 136 $business_id = $user->business_id;
142 $role = $user->role; 137 $role = $user->role;
143 # 有商务且为歌手 138 # 有商务且为歌手
144 if ($business_id && $role=='Singer') { 139 if ($business_id && $role === 'Singer') {
145 $msg_data = [ 140 $msg_data = [
146 'title' => '', 141 'title' => '',
147 'content' => '', 142 'content' => '',
148 'sender_id' => $user_id, 143 'sender_id' => $user_id,
149 'receiver_id' => $user_id, 144 'receiver_id' => $user_id,
150 'activity_id' => $activity_id, 145 'activity_id' => $activity_id,
151 'type' => 2, 146 'type' => 2,
152 'is_read' => 0, 147 'is_read' => 0,
153 'is_bind' => 1, 148 'is_bind' => 1,
154 'created_at'=> date('Y-m-d H:i:s', time()), 149 'created_at' => date('Y-m-d H:i:s', time()),
155 'updated_at'=> date('Y-m-d H:i:s', time()) 150 'updated_at' => date('Y-m-d H:i:s', time())
156 ]; 151 ];
157 DB::table('user_messages')->insert($msg_data); 152 DB::table('user_messages')->insert($msg_data);
158 $activity = DB::table('activitys')->where('id', $activity_id)->first();
159 $song_name = !empty($activity->id) ? $activity->song_name : '';
160 # 推送消息给推荐人
161 $business = DB::table('users')->where('id', $business_id)->first();
162 $business_unionid = !empty($business->id) ? $business->unionid : '';
163 if (!empty($business_unionid)) {
164 $business_wechat_official = DB::table('wechat_official_users')->where('union_id', $business_unionid)->where('is_subscribe', 1)->first();
165 if (!empty($business_wechat_official->id)) {
166 $business_open_id = $business_wechat_official->open_id;
167 $name = $user->nick_name . '(' . $user->real_name . ')';
168 $channel = 'singer_related';
169 if (env('TEST_URL', false)) {
170 $url = 'https://hi-sing-admin-dev.hikoon.com/api/provider/wechat/pushSubscribeMessage';
171 } else {
172 $url = 'https://hi-sing-admin.hikoon.com/api/provider/wechat/pushSubscribeMessage';
173 }
174 $md5_str = $channel . $business_open_id . 'tb0iwb7TE9TIbkG8iFsxldrHJRFdeP1g';
175 $req_data = [
176 'secret' => md5($md5_str),
177 'channel' => 'singer_related',
178 'open_ids' => [$business_open_id],
179 'data' => ["title" => "您的歌手收藏了试唱活动", "name" => $name, "intro" => "收藏了试唱活动《" . $song_name . "》",
180 "remark" => "点击前往 >",
181 "page" => "packageMy/pages/like?tab=1"]
182 ];
183 $resp = Http::asJson()->post($url, $req_data)->json();
184 }
185 }
186 } 153 }
187 154
188 return JsonResource::success('收藏成功'); 155 return JsonResource::success('收藏成功');
...@@ -191,42 +158,42 @@ public function sub(Request $request) ...@@ -191,42 +158,42 @@ public function sub(Request $request)
191 public function unsub(Request $request) 158 public function unsub(Request $request)
192 { 159 {
193 $activity_id = $request->get('activity_id'); 160 $activity_id = $request->get('activity_id');
194 $user_id = Auth::id(); 161 $user_id = Auth::id();
195 $is_activity = DB::table('user_activity_collections') 162 $is_activity = DB::table('user_activity_collections')
196 ->where('user_id', $user_id) 163 ->where('user_id', $user_id)
197 ->where('activity_id', $activity_id) 164 ->where('activity_id', $activity_id)
198 ->whereNull('deleted_at') 165 ->whereNull('deleted_at')
199 ->orderByDesc('created_at') 166 ->orderByDesc('created_at')
200 ->first(); 167 ->first();
201 if (empty($is_activity->id)) { 168 if (empty($is_activity)) {
202 return JsonResource::success('未收藏不能取消', code: 400); 169 return JsonResource::success('未收藏不能取消', code: 400);
203 } 170 }
204 DB::table('user_activity_collections')->where('id', $is_activity->id)->update([ 171 DB::table('user_activity_collections')->where('id', $is_activity->id)->update([
205 'updated_at'=> date('Y-m-d H:i:s', time()), 172 'updated_at' => date('Y-m-d H:i:s', time()),
206 'deleted_at'=> date('Y-m-d H:i:s', time()) 173 'deleted_at' => date('Y-m-d H:i:s', time())
207 ]); 174 ]);
208 $m_data = ['sender_id'=>$user_id,'activity_id'=>$activity_id,'type'=>2, 'is_read' => 0]; 175 $m_data = ['sender_id' => $user_id, 'activity_id' => $activity_id, 'type' => 2, 'is_read' => 0];
209 DB::table('user_messages')->where($m_data)->update([ 176 DB::table('user_messages')->where($m_data)->update([
210 'deleted_at'=> date('Y-m-d H:i:s', time()) 177 'deleted_at' => date('Y-m-d H:i:s', time())
211 ]); 178 ]);
212 return JsonResource::success('已取消收藏'); 179 return JsonResource::success('已取消收藏');
213 } 180 }
214 181
215 public function bandLinkActivity(Request $request) 182 public function bandLinkActivity(Request $request)
216 { 183 {
217 $id = $request->get('id'); 184 $id = $request->get('id');
218 $pageSize = $request->integer('size', 10); 185 $pageSize = $request->integer('size', 10);
219 $page = $request->integer('page', 1); 186 $page = $request->integer('page', 1);
220 $song_type = $request->get('song_type', 1); 187 $song_type = $request->get('song_type', 1);
221 $song_name = $request->get('song_name', ''); 188 $song_name = $request->get('song_name', '');
222 $user_id = Auth::id(); 189 $user_id = Auth::id();
223 $query = DB::table('activitys') 190 $query = DB::table('activitys')
224 ->where('project_id', $id) 191 ->where('project_id', $id)
225 ->where('audit_status', 1) 192 ->where('audit_status', 1)
226 ->where('status', 1) 193 ->where('status', 1)
227 ->where('song_type', $song_type); 194 ->where('song_type', $song_type);
228 if (!empty($song_name)) { 195 if (!empty($song_name)) {
229 $query->where('song_name', 'like', '%'.$song_name.'%'); 196 $query->where('song_name', 'like', '%' . $song_name . '%');
230 } 197 }
231 $activity_ids = $query 198 $activity_ids = $query
232 ->whereNull('deleted_at') 199 ->whereNull('deleted_at')
...@@ -238,9 +205,9 @@ public function bandLinkActivity(Request $request) ...@@ -238,9 +205,9 @@ public function bandLinkActivity(Request $request)
238 ->where('user_id', $user_id) 205 ->where('user_id', $user_id)
239 ->whereNull('deleted_at') 206 ->whereNull('deleted_at')
240 ->pluck('activity_id')->toArray(); 207 ->pluck('activity_id')->toArray();
241 $activity_id_list = []; 208 $activity_id_list = [];
242 foreach ($activity_ids as $v) { 209 foreach ($activity_ids as $v) {
243 if (!in_array($v, $unlike_activity_ids)){ 210 if (!in_array($v, $unlike_activity_ids)) {
244 $activity_id_list[] = $v; 211 $activity_id_list[] = $v;
245 } 212 }
246 } 213 }
...@@ -255,57 +222,57 @@ public function bandLinkActivity(Request $request) ...@@ -255,57 +222,57 @@ public function bandLinkActivity(Request $request)
255 (select count(*) from user_view_activitys where user_view_activitys.activity_id = activitys.id ) as view_count, 222 (select count(*) from user_view_activitys where user_view_activitys.activity_id = activitys.id ) as view_count,
256 (select count(*) from activity_has_users where activity_has_users.activity_id = activitys.id and activity_has_users.type='Submit' AND activity_has_users.deleted_at is NULL ) as attend_count 223 (select count(*) from activity_has_users where activity_has_users.activity_id = activitys.id and activity_has_users.type='Submit' AND activity_has_users.deleted_at is NULL ) as attend_count
257 from `activitys` 224 from `activitys`
258 left join `user_activity_collections` as uac on `uac`.`activity_id` = `activitys`.`id` and `uac`.user_id=".$user_id." and `uac`.deleted_at is NULL 225 left join `user_activity_collections` as uac on `uac`.`activity_id` = `activitys`.`id` and `uac`.user_id=" . $user_id . " and `uac`.deleted_at is NULL
259 left join `user_view_activitys` as uva on `uva`.`activity_id` = `activitys`.`id` and `uva`.user_id=".$user_id." 226 left join `user_view_activitys` as uva on `uva`.`activity_id` = `activitys`.`id` and `uva`.user_id=" . $user_id . "
260 left join `activity_has_users` as ahu on `ahu`.`activity_id` = `activitys`.`id` and `ahu`.user_id=".$user_id." and `ahu`.`type`='Submit' and `ahu`.deleted_at is NULL 227 left join `activity_has_users` as ahu on `ahu`.`activity_id` = `activitys`.`id` and `ahu`.user_id=" . $user_id . " and `ahu`.`type`='Submit' and `ahu`.deleted_at is NULL
261 where activitys.id IN (".implode(',', $activity_ids).") AND activitys.`status`=1 AND audit_status=1 AND activitys.deleted_at is NULL GROUP BY activitys.id,uac.id,uva.id,ahu.id "; 228 where activitys.id IN (" . implode(',', $activity_ids) . ") AND activitys.`status`=1 AND audit_status=1 AND activitys.deleted_at is NULL GROUP BY activitys.id,uac.id,uva.id,ahu.id ";
262 if ($song_type == 2) { 229 if ($song_type == 2) {
263 $sort_sql = "order by p_is_top desc,publish_at desc"; 230 $sort_sql = "order by p_is_top desc,publish_at desc";
264 } else { 231 } else {
265 $sort_sql = "order by p_is_top desc,is_listen asc,activitys.weight desc,activitys.created_at desc"; 232 $sort_sql = "order by p_is_top desc,is_listen asc,activitys.weight desc,activitys.created_at desc";
266 } 233 }
267 $def_sql = $def_sql.$sort_sql; 234 $def_sql = $def_sql . $sort_sql;
268 235
269 $sql = $def_sql." limit ".$pageSize." offset ".($page - 1) * $pageSize; 236 $sql = $def_sql . " limit " . $pageSize . " offset " . ($page - 1) * $pageSize;
270 $total_sql = "SELECT COUNT(*) AS total_count FROM (".$def_sql.") AS subquery"; 237 $total_sql = "SELECT COUNT(*) AS total_count FROM (" . $def_sql . ") AS subquery";
271 $total = DB::select($total_sql)[0]->total_count; 238 $total = DB::select($total_sql)[0]->total_count;
272 $result = DB::select($sql); 239 $result = DB::select($sql);
273 $list = json_decode(json_encode($result), true); 240 $list = json_decode(json_encode($result), true);
274 $search_activity_id = array_column($list, 'id'); 241 $search_activity_id = array_column($list, 'id');
275 $data =Activity::query() 242 $data = Activity::query()
276 ->whereIn('id', $search_activity_id) 243 ->whereIn('id', $search_activity_id)
277 ->with(['linkArranger:id,nick_name', 'tags:id,name', 'project:id,name,cover,is_promote', 'comfirmTime:project_id,average_day,updated_at']) 244 ->with(['linkArranger:id,nick_name', 'tags:id,name', 'project:id,name,cover,is_promote', 'comfirmTime:project_id,average_day,updated_at'])
278 ->select(['id','cover','song_name','status','sub_title','guide','guide_clip','project_id', 'user_id','lyric','clip_lyric','sex','mark','speed','lang','p_is_top', 'publish_at','estimate_release_at','guide_duration','guide_clip_duration','karaoke','karaoke_clip', 'expand']) 245 ->select(['id', 'cover', 'song_name', 'status', 'sub_title', 'guide', 'guide_clip', 'project_id', 'user_id', 'lyric', 'clip_lyric', 'sex', 'mark', 'speed', 'lang', 'p_is_top', 'publish_at', 'estimate_release_at', 'guide_duration', 'guide_clip_duration', 'karaoke', 'karaoke_clip', 'expand'])
279 ->withCount(['publicAudio as public_audio_count', 'totalSong as total_song_count', 'onlineSong as online_song_count']) 246 ->withCount(['publicAudio as public_audio_count', 'totalSong as total_song_count', 'onlineSong as online_song_count'])
280 ->paginate($pageSize, pageName:'limit'); 247 ->paginate($pageSize, pageName: 'limit');
281 // 获取用户收藏 248 // 获取用户收藏
282 $userCollection = UserActivityCollectionPivot::query() 249 $userCollection = UserActivityCollectionPivot::query()
283 ->selectRaw('activity_id,1 as num') 250 ->selectRaw('activity_id,1 as num')
284 ->where('user_id', $user_id) 251 ->where('user_id', $user_id)
285 ->pluck('num', 'activity_id')->toArray(); 252 ->pluck('num', 'activity_id')->toArray();
286 $config = SystemConfig::query()->where('status', 1) 253 $config = SystemConfig::query()->where('status', 1)
287 ->whereHas('parent', fn(Builder $builder) => $builder->where('status', 1)->whereIn('identifier', ['activity_mark', 'activity_lang', 'activity_speed', 'activity_sex'])) 254 ->whereHas('parent', fn(Builder $builder) => $builder->where('status', 1)->whereIn('identifier', ['activity_mark', 'activity_lang', 'activity_speed', 'activity_sex']))
288 ->get(['name', 'identifier', 'content']); 255 ->get(['name', 'identifier', 'content']);
289 $now_activity_ids = array_column($data->items(), 'id'); 256 $now_activity_ids = array_column($data->items(), 'id');
290 $now_project_ids = array_column($data->items(), 'project_id'); 257 $now_project_ids = array_column($data->items(), 'project_id');
291 $view_id_list = DB::table('user_view_activitys') 258 $view_id_list = DB::table('user_view_activitys')
292 ->whereIn('activity_id', $now_activity_ids) 259 ->whereIn('activity_id', $now_activity_ids)
293 ->where('user_id', $user_id) 260 ->where('user_id', $user_id)
294 ->whereNull('deleted_at') 261 ->whereNull('deleted_at')
295 ->pluck('activity_id') 262 ->pluck('activity_id')
296 ->toArray(); 263 ->toArray();
297 $last_ids_list = DB::table('activitys') 264 $last_ids_list = DB::table('activitys')
298 ->whereIn('id', $now_activity_ids) 265 ->whereIn('id', $now_activity_ids)
299 ->where('created_at', '>=', now()->subDays(7)) 266 ->where('created_at', '>=', now()->subDays(7))
300 ->whereNull('deleted_at') 267 ->whereNull('deleted_at')
301 ->pluck('id') 268 ->pluck('id')
302 ->toArray(); 269 ->toArray();
303 $master_list = UserProjectPivot::query() 270 $master_list = UserProjectPivot::query()
304 ->whereIn('project_id', $now_project_ids) 271 ->whereIn('project_id', $now_project_ids)
305 ->where('user_id', $user_id) 272 ->where('user_id', $user_id)
306 ->pluck('project_id') 273 ->pluck('project_id')
307 ->toArray(); 274 ->toArray();
308 $share_user = ActivityShareUser::query() 275 $share_user = ActivityShareUser::query()
309 ->whereIn('activity_id', $now_activity_ids) 276 ->whereIn('activity_id', $now_activity_ids)
310 ->where('user_id', $user_id) 277 ->where('user_id', $user_id)
311 ->pluck('activity_id') 278 ->pluck('activity_id')
...@@ -354,7 +321,7 @@ public function bandLinkActivity(Request $request) ...@@ -354,7 +321,7 @@ public function bandLinkActivity(Request $request)
354 $is_promote = 0; 321 $is_promote = 0;
355 if ($activity->getRelation('project')) { 322 if ($activity->getRelation('project')) {
356 $is_promote = $activity->getRelation('project')->is_promote; 323 $is_promote = $activity->getRelation('project')->is_promote;
357 $project = $activity->getRelation('project')->toArray(); 324 $project = $activity->getRelation('project')->toArray();
358 unset($project['is_promote']); 325 unset($project['is_promote']);
359 $activity->setAttribute('project', [$project]); 326 $activity->setAttribute('project', [$project]);
360 } 327 }
...@@ -362,7 +329,7 @@ public function bandLinkActivity(Request $request) ...@@ -362,7 +329,7 @@ public function bandLinkActivity(Request $request)
362 $activity->unsetRelation('project'); 329 $activity->unsetRelation('project');
363 330
364 }); 331 });
365 $result = json_decode(json_encode($data->items()), true); 332 $result = json_decode(json_encode($data->items()), true);
366 $result_map = []; 333 $result_map = [];
367 foreach ($result as &$v) { 334 foreach ($result as &$v) {
368 unset($v['user_id'], $v['project_id']); 335 unset($v['user_id'], $v['project_id']);
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
12 use App\Http\Service\GroupDataService; 12 use App\Http\Service\GroupDataService;
13 use App\Http\Service\GroupInviteService; 13 use App\Http\Service\GroupInviteService;
14 use App\Http\Service\UserService; 14 use App\Http\Service\UserService;
15 use App\Jobs\UserSingerLimitJob;
16 use App\Models\Activity; 15 use App\Models\Activity;
17 use App\Models\ActivityUser; 16 use App\Models\ActivityUser;
18 use App\Models\GroupHasMember; 17 use App\Models\GroupHasMember;
...@@ -190,15 +189,7 @@ public function gropuInvite(GroupInviteRequest $request) ...@@ -190,15 +189,7 @@ public function gropuInvite(GroupInviteRequest $request)
190 } 189 }
191 //判断歌手额度 190 //判断歌手额度
192 $maxSingerNum = User::query()->whereKey($invite_id)->value('business_singer_limit'); 191 $maxSingerNum = User::query()->whereKey($invite_id)->value('business_singer_limit');
193 if ($is_singer_tag and $singer_tag_count >= $maxSingerNum) { 192 if ($is_singer_tag && $singer_tag_count >= $maxSingerNum) {
194 UserSingerLimitJob::dispatch([
195 'title' => $title1,
196 'content' => $content1
197 ], [
198 'title' => $title2,
199 'content' => $content2,
200 'limit' => $maxSingerNum
201 ]);
202 return JsonResource::fail(JsonResource::TEAM_INVITE_SINGER_LIMIT, code: 403); 193 return JsonResource::fail(JsonResource::TEAM_INVITE_SINGER_LIMIT, code: 403);
203 } 194 }
204 195
...@@ -295,14 +286,6 @@ public function handleInvite(HandleInviteRequest $request, GroupInviteService $g ...@@ -295,14 +286,6 @@ public function handleInvite(HandleInviteRequest $request, GroupInviteService $g
295 $maxSingerNum = User::query()->whereKey($invite_id)->value('business_singer_limit'); 286 $maxSingerNum = User::query()->whereKey($invite_id)->value('business_singer_limit');
296 if ($is_singer_tag and $singer_tag_count >= $maxSingerNum) { 287 if ($is_singer_tag and $singer_tag_count >= $maxSingerNum) {
297 GroupInvite::query()->where(['invite_id' => $invite_id, 'user_id' => $member_id, 'type' => $type, 'status' => 1])->update(['status' => 4]); 288 GroupInvite::query()->where(['invite_id' => $invite_id, 'user_id' => $member_id, 'type' => $type, 'status' => 1])->update(['status' => 4]);
298 UserSingerLimitJob::dispatch([
299 'title' => $title1,
300 'content' => $content1
301 ], [
302 'title' => $title2,
303 'content' => $content2,
304 'limit' => $maxSingerNum
305 ]);
306 return JsonResource::fail(JsonResource::TEAM_JOIN_SINGER_LIMIT, code: 403); 289 return JsonResource::fail(JsonResource::TEAM_JOIN_SINGER_LIMIT, code: 403);
307 } 290 }
308 } 291 }
......
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
11 use App\Http\Container\AppSection\Requests\UserAuthExamineRequests; 11 use App\Http\Container\AppSection\Requests\UserAuthExamineRequests;
12 use App\Http\Service\UserService; 12 use App\Http\Service\UserService;
13 use App\Jobs\UserApplyCertifyJob; 13 use App\Jobs\UserApplyCertifyJob;
14 use App\Jobs\UserSingerLimitJob;
15 use App\Models\GroupHasMember; 14 use App\Models\GroupHasMember;
16 use App\Models\SystemTag; 15 use App\Models\SystemTag;
17 use App\Models\User; 16 use App\Models\User;
...@@ -53,15 +52,6 @@ public function story(UserAuthCreateRequest $request) ...@@ -53,15 +52,6 @@ public function story(UserAuthCreateRequest $request)
53 if ($masterId) { 52 if ($masterId) {
54 $maxSingerNum = User::query()->whereKey($masterId)->value('business_singer_limit'); 53 $maxSingerNum = User::query()->whereKey($masterId)->value('business_singer_limit');
55 if ($is_singer_tag && $singer_tag_count >= $maxSingerNum) { 54 if ($is_singer_tag && $singer_tag_count >= $maxSingerNum) {
56 $master = User::query()->find($masterId, ['id', 'nick_name']);
57 UserSingerLimitJob::dispatch([
58 'title' => sprintf('%s:歌手额度已满', $master?->getAttribute('nick_name')),
59 'content' => sprintf('%s:提交歌手认证', $user?->getAttribute('nick_name'))
60 ], [
61 'title' => sprintf('%s:提交歌手认证', $user?->getAttribute('nick_name')),
62 'content' => sprintf('经纪人:%s', $master->getAttribute('nick_name')),
63 'limit' => $maxSingerNum
64 ]);
65 return JsonResource::fail(JsonResource::TEAM_INVITE_SINGER_LIMIT, code: 403); 55 return JsonResource::fail(JsonResource::TEAM_INVITE_SINGER_LIMIT, code: 403);
66 } 56 }
67 } 57 }
...@@ -144,15 +134,6 @@ public function examine(UserAuthExamineRequests $request) ...@@ -144,15 +134,6 @@ public function examine(UserAuthExamineRequests $request)
144 return JsonResource::success(JsonResource::UPDATE_SUCCESS); 134 return JsonResource::success(JsonResource::UPDATE_SUCCESS);
145 } catch (SingerLimitException $exception) { 135 } catch (SingerLimitException $exception) {
146 DB::rollBack(); 136 DB::rollBack();
147 $master = User::query()->find($exception->masterId, ['id', 'nick_name']);
148 UserSingerLimitJob::dispatch([
149 'title' => sprintf('%s:歌手额度已满', $master?->getAttribute('nick_name')),
150 'content' => sprintf('审核歌手认证:%s', $user->getAttribute('nick_name'))
151 ], [
152 'title' => sprintf('%s:审核歌手认证', $user->getAttribute('nick_name')),
153 'content' => sprintf('经纪人:%s', $master->getAttribute('nick_name')),
154 'limit' => $exception->maxSingerNum
155 ]);
156 return JsonResource::fail(JsonResource::TEAM_INVITE_SINGER_LIMIT, code: 403); 137 return JsonResource::fail(JsonResource::TEAM_INVITE_SINGER_LIMIT, code: 403);
157 138
158 139
......
1 <?php
2
3 namespace App\Jobs;
4
5 use App\Enums\UserOfficialStatusEnum;
6 use App\Models\SystemConfig;
7 use App\Models\User;
8 use Illuminate\Bus\Queueable;
9 use Illuminate\Contracts\Queue\ShouldQueue;
10 use Illuminate\Foundation\Bus\Dispatchable;
11 use Illuminate\Queue\InteractsWithQueue;
12 use Illuminate\Queue\SerializesModels;
13 use Illuminate\Support\Arr;
14
15 class UserSingerLimitJob implements ShouldQueue
16 {
17 use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
18
19 public array $jPushMessage;
20
21 public array $wechatMessage;
22
23 public int $defaultLimit;
24
25 /**
26 * Create a new job instance.
27 *
28 * @return void
29 */
30 public function __construct(array $jPushMessage, array $wechatMessage)
31 {
32 $this->jPushMessage = $jPushMessage;
33 $this->wechatMessage = $wechatMessage;
34 $this->defaultLimit = SystemConfig::query()->where('identifier', 'svMC9TNFz2Acx8ccPdAIH')->value('content') ?? 3;
35 }
36
37 /**
38 * Execute the job.
39 *
40 * @return void
41 */
42 public function handle(): void
43 {
44
45 }
46 }
...@@ -49,16 +49,4 @@ public function via(mixed $notifiable): array ...@@ -49,16 +49,4 @@ public function via(mixed $notifiable): array
49 } 49 }
50 50
51 51
52 private function getProjectName(): string
53 {
54 return Arr::get($this->activity, 'project.name', '');
55 }
56
57 /**
58 * @return bool
59 */
60 private function hasProject(): bool
61 {
62 return !empty($this->getProjectName());
63 }
64 } 52 }
......
...@@ -42,17 +42,4 @@ public function via(mixed $notifiable): array ...@@ -42,17 +42,4 @@ public function via(mixed $notifiable): array
42 { 42 {
43 return []; 43 return [];
44 } 44 }
45
46 private function getProjectName(): string
47 {
48 return Arr::get($this->activity, 'project.name', '');
49 }
50
51 /**
52 * @return bool
53 */
54 private function hasProject(): bool
55 {
56 return !empty($this->getProjectName());
57 }
58 } 45 }
......
...@@ -35,17 +35,4 @@ public function via(mixed $notifiable): array ...@@ -35,17 +35,4 @@ public function via(mixed $notifiable): array
35 { 35 {
36 return []; 36 return [];
37 } 37 }
38
39 private function getProjectName(): string
40 {
41 return Arr::get($this->activity, 'project.name', '');
42 }
43
44 /**
45 * @return bool
46 */
47 private function hasProject(): bool
48 {
49 return !empty($this->getProjectName());
50 }
51 } 38 }
......
...@@ -53,12 +53,4 @@ public function via(mixed $notifiable): array ...@@ -53,12 +53,4 @@ public function via(mixed $notifiable): array
53 { 53 {
54 return []; 54 return [];
55 } 55 }
56
57 /**
58 * @return string
59 */
60 protected function formatChangeLabel(): string
61 {
62 return collect($this->change)->map(fn($item) => sprintf('[%s]', $item))->join('、');
63 }
64 } 56 }
......
...@@ -2,9 +2,7 @@ ...@@ -2,9 +2,7 @@
2 2
3 namespace App\Providers; 3 namespace App\Providers;
4 4
5 use App\Channels\JPushNotificationChannel;
6 use App\Channels\SmsNotificationChannel; 5 use App\Channels\SmsNotificationChannel;
7 use App\Channels\WechatNotificationChannel;
8 use App\Support\Model; 6 use App\Support\Model;
9 use Illuminate\Database\Events\QueryExecuted; 7 use Illuminate\Database\Events\QueryExecuted;
10 use Illuminate\Support\Facades\DB; 8 use Illuminate\Support\Facades\DB;
...@@ -22,8 +20,6 @@ class AppServiceProvider extends ServiceProvider ...@@ -22,8 +20,6 @@ class AppServiceProvider extends ServiceProvider
22 */ 20 */
23 public function register(): void 21 public function register(): void
24 { 22 {
25 Notification::extend('wechat', static fn() => new WechatNotificationChannel);
26 Notification::extend('jPush', static fn() => new JPushNotificationChannel);
27 Notification::extend('sms', static fn() => new SmsNotificationChannel); 23 Notification::extend('sms', static fn() => new SmsNotificationChannel);
28 24
29 if (!$this->app->isProduction()) { 25 if (!$this->app->isProduction()) {
......
...@@ -25,7 +25,6 @@ ...@@ -25,7 +25,6 @@
25 "hikoon/laravel-api": "0.1.4.9", 25 "hikoon/laravel-api": "0.1.4.9",
26 "hikoon/laravel-jwt": "^0.1.3", 26 "hikoon/laravel-jwt": "^0.1.3",
27 "inertiajs/inertia-laravel": "^0.6.11", 27 "inertiajs/inertia-laravel": "^0.6.11",
28 "jpush/jpush": "^3.6",
29 "laravel/framework": "^9.52.4", 28 "laravel/framework": "^9.52.4",
30 "laravel/horizon": "^5.19", 29 "laravel/horizon": "^5.19",
31 "laravel/octane": "^1.3", 30 "laravel/octane": "^1.3",
...@@ -33,7 +32,6 @@ ...@@ -33,7 +32,6 @@
33 "laravel/tinker": "^2.7", 32 "laravel/tinker": "^2.7",
34 "lorisleiva/laravel-actions": "^2.7", 33 "lorisleiva/laravel-actions": "^2.7",
35 "overtrue/laravel-easy-sms": "^2.1", 34 "overtrue/laravel-easy-sms": "^2.1",
36 "overtrue/laravel-wechat": "^7.1",
37 "pbmedia/laravel-ffmpeg": "^8.3", 35 "pbmedia/laravel-ffmpeg": "^8.3",
38 "tencent/tls-sig-api-v2": "^1.1", 36 "tencent/tls-sig-api-v2": "^1.1",
39 "torann/geoip": "^3.0", 37 "torann/geoip": "^3.0",
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
4 "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 4 "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5 "This file is @generated automatically" 5 "This file is @generated automatically"
6 ], 6 ],
7 "content-hash": "5b6123f121cdae0e82e10fa177d1da85", 7 "content-hash": "638f5028cdbfdd0a0242652abeccfacf",
8 "packages": [ 8 "packages": [
9 { 9 {
10 "name": "adbario/php-dot-notation", 10 "name": "adbario/php-dot-notation",
...@@ -2528,53 +2528,6 @@ ...@@ -2528,53 +2528,6 @@
2528 "time": "2023-10-27T10:59:02+00:00" 2528 "time": "2023-10-27T10:59:02+00:00"
2529 }, 2529 },
2530 { 2530 {
2531 "name": "jpush/jpush",
2532 "version": "v3.6.8",
2533 "source": {
2534 "type": "git",
2535 "url": "https://github.com/jpush/jpush-api-php-client.git",
2536 "reference": "ebb191e8854a35c3fb7a6626028b3a23132cbe2c"
2537 },
2538 "dist": {
2539 "type": "zip",
2540 "url": "https://api.github.com/repos/jpush/jpush-api-php-client/zipball/ebb191e8854a35c3fb7a6626028b3a23132cbe2c",
2541 "reference": "ebb191e8854a35c3fb7a6626028b3a23132cbe2c",
2542 "shasum": ""
2543 },
2544 "require": {
2545 "ext-curl": "*",
2546 "php": ">=5.3.3"
2547 },
2548 "require-dev": {
2549 "phpunit/phpunit": "*"
2550 },
2551 "type": "library",
2552 "autoload": {
2553 "psr-4": {
2554 "JPush\\": "src/JPush/"
2555 }
2556 },
2557 "notification-url": "https://packagist.org/downloads/",
2558 "license": [
2559 "MIT"
2560 ],
2561 "authors": [
2562 {
2563 "name": "JPush",
2564 "email": "support@jpush.cn",
2565 "homepage": "https://www.jpush.cn/",
2566 "role": "Developer"
2567 }
2568 ],
2569 "description": "JPush API PHP Client",
2570 "homepage": "https://github.com/jpush/jpush-api-php-client",
2571 "support": {
2572 "issues": "https://github.com/jpush/jpush-api-php-client/issues",
2573 "source": "https://github.com/jpush/jpush-api-php-client/tree/v3.6.8"
2574 },
2575 "time": "2021-08-12T07:43:39+00:00"
2576 },
2577 {
2578 "name": "laminas/laminas-diactoros", 2531 "name": "laminas/laminas-diactoros",
2579 "version": "2.24.0", 2532 "version": "2.24.0",
2580 "source": { 2533 "source": {
...@@ -4420,149 +4373,6 @@ ...@@ -4420,149 +4373,6 @@
4420 "time": "2023-02-08T01:06:31+00:00" 4373 "time": "2023-02-08T01:06:31+00:00"
4421 }, 4374 },
4422 { 4375 {
4423 "name": "nyholm/psr7",
4424 "version": "1.5.1",
4425 "source": {
4426 "type": "git",
4427 "url": "https://github.com/Nyholm/psr7.git",
4428 "reference": "f734364e38a876a23be4d906a2a089e1315be18a"
4429 },
4430 "dist": {
4431 "type": "zip",
4432 "url": "https://api.github.com/repos/Nyholm/psr7/zipball/f734364e38a876a23be4d906a2a089e1315be18a",
4433 "reference": "f734364e38a876a23be4d906a2a089e1315be18a",
4434 "shasum": ""
4435 },
4436 "require": {
4437 "php": ">=7.1",
4438 "php-http/message-factory": "^1.0",
4439 "psr/http-factory": "^1.0",
4440 "psr/http-message": "^1.0"
4441 },
4442 "provide": {
4443 "psr/http-factory-implementation": "1.0",
4444 "psr/http-message-implementation": "1.0"
4445 },
4446 "require-dev": {
4447 "http-interop/http-factory-tests": "^0.9",
4448 "php-http/psr7-integration-tests": "^1.0",
4449 "phpunit/phpunit": "^7.5 || 8.5 || 9.4",
4450 "symfony/error-handler": "^4.4"
4451 },
4452 "type": "library",
4453 "extra": {
4454 "branch-alias": {
4455 "dev-master": "1.4-dev"
4456 }
4457 },
4458 "autoload": {
4459 "psr-4": {
4460 "Nyholm\\Psr7\\": "src/"
4461 }
4462 },
4463 "notification-url": "https://packagist.org/downloads/",
4464 "license": [
4465 "MIT"
4466 ],
4467 "authors": [
4468 {
4469 "name": "Tobias Nyholm",
4470 "email": "tobias.nyholm@gmail.com"
4471 },
4472 {
4473 "name": "Martijn van der Ven",
4474 "email": "martijn@vanderven.se"
4475 }
4476 ],
4477 "description": "A fast PHP7 implementation of PSR-7",
4478 "homepage": "https://tnyholm.se",
4479 "keywords": [
4480 "psr-17",
4481 "psr-7"
4482 ],
4483 "support": {
4484 "issues": "https://github.com/Nyholm/psr7/issues",
4485 "source": "https://github.com/Nyholm/psr7/tree/1.5.1"
4486 },
4487 "funding": [
4488 {
4489 "url": "https://github.com/Zegnat",
4490 "type": "github"
4491 },
4492 {
4493 "url": "https://github.com/nyholm",
4494 "type": "github"
4495 }
4496 ],
4497 "time": "2022-06-22T07:13:36+00:00"
4498 },
4499 {
4500 "name": "nyholm/psr7-server",
4501 "version": "1.0.2",
4502 "source": {
4503 "type": "git",
4504 "url": "https://github.com/Nyholm/psr7-server.git",
4505 "reference": "b846a689844cef114e8079d8c80f0afd96745ae3"
4506 },
4507 "dist": {
4508 "type": "zip",
4509 "url": "https://api.github.com/repos/Nyholm/psr7-server/zipball/b846a689844cef114e8079d8c80f0afd96745ae3",
4510 "reference": "b846a689844cef114e8079d8c80f0afd96745ae3",
4511 "shasum": ""
4512 },
4513 "require": {
4514 "php": "^7.1 || ^8.0",
4515 "psr/http-factory": "^1.0",
4516 "psr/http-message": "^1.0"
4517 },
4518 "require-dev": {
4519 "nyholm/nsa": "^1.1",
4520 "nyholm/psr7": "^1.3",
4521 "phpunit/phpunit": "^7.0 || ^8.5 || ^9.3"
4522 },
4523 "type": "library",
4524 "autoload": {
4525 "psr-4": {
4526 "Nyholm\\Psr7Server\\": "src/"
4527 }
4528 },
4529 "notification-url": "https://packagist.org/downloads/",
4530 "license": [
4531 "MIT"
4532 ],
4533 "authors": [
4534 {
4535 "name": "Tobias Nyholm",
4536 "email": "tobias.nyholm@gmail.com"
4537 },
4538 {
4539 "name": "Martijn van der Ven",
4540 "email": "martijn@vanderven.se"
4541 }
4542 ],
4543 "description": "Helper classes to handle PSR-7 server requests",
4544 "homepage": "http://tnyholm.se",
4545 "keywords": [
4546 "psr-17",
4547 "psr-7"
4548 ],
4549 "support": {
4550 "issues": "https://github.com/Nyholm/psr7-server/issues",
4551 "source": "https://github.com/Nyholm/psr7-server/tree/1.0.2"
4552 },
4553 "funding": [
4554 {
4555 "url": "https://github.com/Zegnat",
4556 "type": "github"
4557 },
4558 {
4559 "url": "https://github.com/nyholm",
4560 "type": "github"
4561 }
4562 ],
4563 "time": "2021-05-12T11:11:27+00:00"
4564 },
4565 {
4566 "name": "overtrue/easy-sms", 4376 "name": "overtrue/easy-sms",
4567 "version": "2.4.2", 4377 "version": "2.4.2",
4568 "source": { 4378 "source": {
...@@ -4693,153 +4503,6 @@ ...@@ -4693,153 +4503,6 @@
4693 "time": "2023-01-17T01:11:00+00:00" 4503 "time": "2023-01-17T01:11:00+00:00"
4694 }, 4504 },
4695 { 4505 {
4696 "name": "overtrue/laravel-wechat",
4697 "version": "7.2.0",
4698 "source": {
4699 "type": "git",
4700 "url": "https://github.com/overtrue/laravel-wechat.git",
4701 "reference": "2ef8b18b525e054838770c60bfcfbd30ac9ede65"
4702 },
4703 "dist": {
4704 "type": "zip",
4705 "url": "https://api.github.com/repos/overtrue/laravel-wechat/zipball/2ef8b18b525e054838770c60bfcfbd30ac9ede65",
4706 "reference": "2ef8b18b525e054838770c60bfcfbd30ac9ede65",
4707 "shasum": ""
4708 },
4709 "require": {
4710 "illuminate/container": "^9.0|^10.0",
4711 "w7corp/easywechat": "^6.0.0"
4712 },
4713 "require-dev": {
4714 "brainmaestro/composer-git-hooks": "dev-master",
4715 "jetbrains/phpstorm-attributes": "^1.0",
4716 "laravel/framework": "^10.0",
4717 "laravel/pint": "^1.5"
4718 },
4719 "type": "library",
4720 "extra": {
4721 "laravel": {
4722 "providers": [
4723 "Overtrue\\LaravelWeChat\\ServiceProvider"
4724 ]
4725 },
4726 "hooks": {
4727 "pre-commit": [
4728 "composer check-style"
4729 ],
4730 "pre-push": [
4731 "composer check-style"
4732 ]
4733 }
4734 },
4735 "autoload": {
4736 "psr-4": {
4737 "Overtrue\\LaravelWeChat\\": "src/"
4738 }
4739 },
4740 "notification-url": "https://packagist.org/downloads/",
4741 "license": [
4742 "MIT"
4743 ],
4744 "authors": [
4745 {
4746 "name": "overtrue",
4747 "email": "anzhengchao@gmail.com"
4748 }
4749 ],
4750 "description": "微信 SDK for Laravel",
4751 "keywords": [
4752 "laravel",
4753 "sdk",
4754 "wechat",
4755 "weixin"
4756 ],
4757 "support": {
4758 "issues": "https://github.com/overtrue/laravel-wechat/issues",
4759 "source": "https://github.com/overtrue/laravel-wechat/tree/7.2.0"
4760 },
4761 "funding": [
4762 {
4763 "url": "https://github.com/overtrue",
4764 "type": "github"
4765 }
4766 ],
4767 "time": "2023-02-15T08:16:22+00:00"
4768 },
4769 {
4770 "name": "overtrue/socialite",
4771 "version": "4.8.0",
4772 "source": {
4773 "type": "git",
4774 "url": "https://github.com/overtrue/socialite.git",
4775 "reference": "e55fdf50f8003be8f03a85a7e5a5b7c5716f4c9a"
4776 },
4777 "dist": {
4778 "type": "zip",
4779 "url": "https://api.github.com/repos/overtrue/socialite/zipball/e55fdf50f8003be8f03a85a7e5a5b7c5716f4c9a",
4780 "reference": "e55fdf50f8003be8f03a85a7e5a5b7c5716f4c9a",
4781 "shasum": ""
4782 },
4783 "require": {
4784 "ext-json": "*",
4785 "ext-openssl": "*",
4786 "guzzlehttp/guzzle": "^7.0",
4787 "php": ">=8.0.2",
4788 "symfony/http-foundation": "^6.0",
4789 "symfony/psr-http-message-bridge": "^2.1"
4790 },
4791 "require-dev": {
4792 "jetbrains/phpstorm-attributes": "^1.0",
4793 "laravel/pint": "^1.2",
4794 "mockery/mockery": "^1.3",
4795 "phpstan/phpstan": "^1.7",
4796 "phpunit/phpunit": "^9.0"
4797 },
4798 "type": "library",
4799 "autoload": {
4800 "files": [
4801 "src/Contracts/FactoryInterface.php",
4802 "src/Contracts/UserInterface.php",
4803 "src/Contracts/ProviderInterface.php"
4804 ],
4805 "psr-4": {
4806 "Overtrue\\Socialite\\": "src/"
4807 }
4808 },
4809 "notification-url": "https://packagist.org/downloads/",
4810 "license": [
4811 "MIT"
4812 ],
4813 "authors": [
4814 {
4815 "name": "overtrue",
4816 "email": "anzhengchao@gmail.com"
4817 }
4818 ],
4819 "description": "A collection of OAuth 2 packages.",
4820 "keywords": [
4821 "Feishu",
4822 "login",
4823 "oauth",
4824 "qcloud",
4825 "qq",
4826 "social",
4827 "wechat",
4828 "weibo"
4829 ],
4830 "support": {
4831 "issues": "https://github.com/overtrue/socialite/issues",
4832 "source": "https://github.com/overtrue/socialite/tree/4.8.0"
4833 },
4834 "funding": [
4835 {
4836 "url": "https://github.com/overtrue",
4837 "type": "github"
4838 }
4839 ],
4840 "time": "2023-01-10T14:29:55+00:00"
4841 },
4842 {
4843 "name": "pbmedia/laravel-ffmpeg", 4506 "name": "pbmedia/laravel-ffmpeg",
4844 "version": "8.3.0", 4507 "version": "8.3.0",
4845 "dist": { 4508 "dist": {
...@@ -4981,60 +4644,6 @@ ...@@ -4981,60 +4644,6 @@
4981 "time": "2022-12-09T13:57:05+00:00" 4644 "time": "2022-12-09T13:57:05+00:00"
4982 }, 4645 },
4983 { 4646 {
4984 "name": "php-http/message-factory",
4985 "version": "v1.0.2",
4986 "source": {
4987 "type": "git",
4988 "url": "https://github.com/php-http/message-factory.git",
4989 "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1"
4990 },
4991 "dist": {
4992 "type": "zip",
4993 "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1",
4994 "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1",
4995 "shasum": ""
4996 },
4997 "require": {
4998 "php": ">=5.4",
4999 "psr/http-message": "^1.0"
5000 },
5001 "type": "library",
5002 "extra": {
5003 "branch-alias": {
5004 "dev-master": "1.0-dev"
5005 }
5006 },
5007 "autoload": {
5008 "psr-4": {
5009 "Http\\Message\\": "src/"
5010 }
5011 },
5012 "notification-url": "https://packagist.org/downloads/",
5013 "license": [
5014 "MIT"
5015 ],
5016 "authors": [
5017 {
5018 "name": "Márk Sági-Kazár",
5019 "email": "mark.sagikazar@gmail.com"
5020 }
5021 ],
5022 "description": "Factory interfaces for PSR-7 HTTP Message",
5023 "homepage": "http://php-http.org",
5024 "keywords": [
5025 "factory",
5026 "http",
5027 "message",
5028 "stream",
5029 "uri"
5030 ],
5031 "support": {
5032 "issues": "https://github.com/php-http/message-factory/issues",
5033 "source": "https://github.com/php-http/message-factory/tree/master"
5034 },
5035 "time": "2015-12-19T14:08:53+00:00"
5036 },
5037 {
5038 "name": "phpoption/phpoption", 4647 "name": "phpoption/phpoption",
5039 "version": "1.9.1", 4648 "version": "1.9.1",
5040 "source": { 4649 "source": {
...@@ -6422,197 +6031,40 @@ ...@@ -6422,197 +6031,40 @@
6422 "time": "2023-02-14T08:44:56+00:00" 6031 "time": "2023-02-14T08:44:56+00:00"
6423 }, 6032 },
6424 { 6033 {
6425 "name": "symfony/event-dispatcher-contracts", 6034 "name": "symfony/event-dispatcher-contracts",
6426 "version": "v3.2.1", 6035 "version": "v3.2.1",
6427 "source": {
6428 "type": "git",
6429 "url": "https://github.com/symfony/event-dispatcher-contracts.git",
6430 "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd"
6431 },
6432 "dist": {
6433 "type": "zip",
6434 "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ad3b6f1e4e2da5690fefe075cd53a238646d8dd",
6435 "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd",
6436 "shasum": ""
6437 },
6438 "require": {
6439 "php": ">=8.1",
6440 "psr/event-dispatcher": "^1"
6441 },
6442 "suggest": {
6443 "symfony/event-dispatcher-implementation": ""
6444 },
6445 "type": "library",
6446 "extra": {
6447 "branch-alias": {
6448 "dev-main": "3.3-dev"
6449 },
6450 "thanks": {
6451 "name": "symfony/contracts",
6452 "url": "https://github.com/symfony/contracts"
6453 }
6454 },
6455 "autoload": {
6456 "psr-4": {
6457 "Symfony\\Contracts\\EventDispatcher\\": ""
6458 }
6459 },
6460 "notification-url": "https://packagist.org/downloads/",
6461 "license": [
6462 "MIT"
6463 ],
6464 "authors": [
6465 {
6466 "name": "Nicolas Grekas",
6467 "email": "p@tchwork.com"
6468 },
6469 {
6470 "name": "Symfony Community",
6471 "homepage": "https://symfony.com/contributors"
6472 }
6473 ],
6474 "description": "Generic abstractions related to dispatching event",
6475 "homepage": "https://symfony.com",
6476 "keywords": [
6477 "abstractions",
6478 "contracts",
6479 "decoupling",
6480 "interfaces",
6481 "interoperability",
6482 "standards"
6483 ],
6484 "support": {
6485 "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.1"
6486 },
6487 "funding": [
6488 {
6489 "url": "https://symfony.com/sponsor",
6490 "type": "custom"
6491 },
6492 {
6493 "url": "https://github.com/fabpot",
6494 "type": "github"
6495 },
6496 {
6497 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
6498 "type": "tidelift"
6499 }
6500 ],
6501 "time": "2023-03-01T10:32:47+00:00"
6502 },
6503 {
6504 "name": "symfony/finder",
6505 "version": "v6.2.7",
6506 "source": {
6507 "type": "git",
6508 "url": "https://github.com/symfony/finder.git",
6509 "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb"
6510 },
6511 "dist": {
6512 "type": "zip",
6513 "url": "https://api.github.com/repos/symfony/finder/zipball/20808dc6631aecafbe67c186af5dcb370be3a0eb",
6514 "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb",
6515 "shasum": ""
6516 },
6517 "require": {
6518 "php": ">=8.1"
6519 },
6520 "require-dev": {
6521 "symfony/filesystem": "^6.0"
6522 },
6523 "type": "library",
6524 "autoload": {
6525 "psr-4": {
6526 "Symfony\\Component\\Finder\\": ""
6527 },
6528 "exclude-from-classmap": [
6529 "/Tests/"
6530 ]
6531 },
6532 "notification-url": "https://packagist.org/downloads/",
6533 "license": [
6534 "MIT"
6535 ],
6536 "authors": [
6537 {
6538 "name": "Fabien Potencier",
6539 "email": "fabien@symfony.com"
6540 },
6541 {
6542 "name": "Symfony Community",
6543 "homepage": "https://symfony.com/contributors"
6544 }
6545 ],
6546 "description": "Finds files and directories via an intuitive fluent interface",
6547 "homepage": "https://symfony.com",
6548 "support": {
6549 "source": "https://github.com/symfony/finder/tree/v6.2.7"
6550 },
6551 "funding": [
6552 {
6553 "url": "https://symfony.com/sponsor",
6554 "type": "custom"
6555 },
6556 {
6557 "url": "https://github.com/fabpot",
6558 "type": "github"
6559 },
6560 {
6561 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
6562 "type": "tidelift"
6563 }
6564 ],
6565 "time": "2023-02-16T09:57:23+00:00"
6566 },
6567 {
6568 "name": "symfony/http-client",
6569 "version": "v6.2.7",
6570 "source": { 6036 "source": {
6571 "type": "git", 6037 "type": "git",
6572 "url": "https://github.com/symfony/http-client.git", 6038 "url": "https://github.com/symfony/event-dispatcher-contracts.git",
6573 "reference": "0a5be6cbc570ae23b51b49d67341f378629d78e4" 6039 "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd"
6574 }, 6040 },
6575 "dist": { 6041 "dist": {
6576 "type": "zip", 6042 "type": "zip",
6577 "url": "https://api.github.com/repos/symfony/http-client/zipball/0a5be6cbc570ae23b51b49d67341f378629d78e4", 6043 "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ad3b6f1e4e2da5690fefe075cd53a238646d8dd",
6578 "reference": "0a5be6cbc570ae23b51b49d67341f378629d78e4", 6044 "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd",
6579 "shasum": "" 6045 "shasum": ""
6580 }, 6046 },
6581 "require": { 6047 "require": {
6582 "php": ">=8.1", 6048 "php": ">=8.1",
6583 "psr/log": "^1|^2|^3", 6049 "psr/event-dispatcher": "^1"
6584 "symfony/deprecation-contracts": "^2.1|^3",
6585 "symfony/http-client-contracts": "^3",
6586 "symfony/service-contracts": "^1.0|^2|^3"
6587 },
6588 "provide": {
6589 "php-http/async-client-implementation": "*",
6590 "php-http/client-implementation": "*",
6591 "psr/http-client-implementation": "1.0",
6592 "symfony/http-client-implementation": "3.0"
6593 }, 6050 },
6594 "require-dev": { 6051 "suggest": {
6595 "amphp/amp": "^2.5", 6052 "symfony/event-dispatcher-implementation": ""
6596 "amphp/http-client": "^4.2.1",
6597 "amphp/http-tunnel": "^1.0",
6598 "amphp/socket": "^1.1",
6599 "guzzlehttp/promises": "^1.4",
6600 "nyholm/psr7": "^1.0",
6601 "php-http/httplug": "^1.0|^2.0",
6602 "psr/http-client": "^1.0",
6603 "symfony/dependency-injection": "^5.4|^6.0",
6604 "symfony/http-kernel": "^5.4|^6.0",
6605 "symfony/process": "^5.4|^6.0",
6606 "symfony/stopwatch": "^5.4|^6.0"
6607 }, 6053 },
6608 "type": "library", 6054 "type": "library",
6055 "extra": {
6056 "branch-alias": {
6057 "dev-main": "3.3-dev"
6058 },
6059 "thanks": {
6060 "name": "symfony/contracts",
6061 "url": "https://github.com/symfony/contracts"
6062 }
6063 },
6609 "autoload": { 6064 "autoload": {
6610 "psr-4": { 6065 "psr-4": {
6611 "Symfony\\Component\\HttpClient\\": "" 6066 "Symfony\\Contracts\\EventDispatcher\\": ""
6612 }, 6067 }
6613 "exclude-from-classmap": [
6614 "/Tests/"
6615 ]
6616 }, 6068 },
6617 "notification-url": "https://packagist.org/downloads/", 6069 "notification-url": "https://packagist.org/downloads/",
6618 "license": [ 6070 "license": [
...@@ -6628,10 +6080,18 @@ ...@@ -6628,10 +6080,18 @@
6628 "homepage": "https://symfony.com/contributors" 6080 "homepage": "https://symfony.com/contributors"
6629 } 6081 }
6630 ], 6082 ],
6631 "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", 6083 "description": "Generic abstractions related to dispatching event",
6632 "homepage": "https://symfony.com", 6084 "homepage": "https://symfony.com",
6085 "keywords": [
6086 "abstractions",
6087 "contracts",
6088 "decoupling",
6089 "interfaces",
6090 "interoperability",
6091 "standards"
6092 ],
6633 "support": { 6093 "support": {
6634 "source": "https://github.com/symfony/http-client/tree/v6.2.7" 6094 "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.1"
6635 }, 6095 },
6636 "funding": [ 6096 "funding": [
6637 { 6097 {
...@@ -6647,44 +6107,35 @@ ...@@ -6647,44 +6107,35 @@
6647 "type": "tidelift" 6107 "type": "tidelift"
6648 } 6108 }
6649 ], 6109 ],
6650 "time": "2023-02-21T10:54:55+00:00" 6110 "time": "2023-03-01T10:32:47+00:00"
6651 }, 6111 },
6652 { 6112 {
6653 "name": "symfony/http-client-contracts", 6113 "name": "symfony/finder",
6654 "version": "v3.2.1", 6114 "version": "v6.2.7",
6655 "source": { 6115 "source": {
6656 "type": "git", 6116 "type": "git",
6657 "url": "https://github.com/symfony/http-client-contracts.git", 6117 "url": "https://github.com/symfony/finder.git",
6658 "reference": "df2ecd6cb70e73c1080e6478aea85f5f4da2c48b" 6118 "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb"
6659 }, 6119 },
6660 "dist": { 6120 "dist": {
6661 "type": "zip", 6121 "type": "zip",
6662 "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/df2ecd6cb70e73c1080e6478aea85f5f4da2c48b", 6122 "url": "https://api.github.com/repos/symfony/finder/zipball/20808dc6631aecafbe67c186af5dcb370be3a0eb",
6663 "reference": "df2ecd6cb70e73c1080e6478aea85f5f4da2c48b", 6123 "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb",
6664 "shasum": "" 6124 "shasum": ""
6665 }, 6125 },
6666 "require": { 6126 "require": {
6667 "php": ">=8.1" 6127 "php": ">=8.1"
6668 }, 6128 },
6669 "suggest": { 6129 "require-dev": {
6670 "symfony/http-client-implementation": "" 6130 "symfony/filesystem": "^6.0"
6671 }, 6131 },
6672 "type": "library", 6132 "type": "library",
6673 "extra": {
6674 "branch-alias": {
6675 "dev-main": "3.3-dev"
6676 },
6677 "thanks": {
6678 "name": "symfony/contracts",
6679 "url": "https://github.com/symfony/contracts"
6680 }
6681 },
6682 "autoload": { 6133 "autoload": {
6683 "psr-4": { 6134 "psr-4": {
6684 "Symfony\\Contracts\\HttpClient\\": "" 6135 "Symfony\\Component\\Finder\\": ""
6685 }, 6136 },
6686 "exclude-from-classmap": [ 6137 "exclude-from-classmap": [
6687 "/Test/" 6138 "/Tests/"
6688 ] 6139 ]
6689 }, 6140 },
6690 "notification-url": "https://packagist.org/downloads/", 6141 "notification-url": "https://packagist.org/downloads/",
...@@ -6693,26 +6144,18 @@ ...@@ -6693,26 +6144,18 @@
6693 ], 6144 ],
6694 "authors": [ 6145 "authors": [
6695 { 6146 {
6696 "name": "Nicolas Grekas", 6147 "name": "Fabien Potencier",
6697 "email": "p@tchwork.com" 6148 "email": "fabien@symfony.com"
6698 }, 6149 },
6699 { 6150 {
6700 "name": "Symfony Community", 6151 "name": "Symfony Community",
6701 "homepage": "https://symfony.com/contributors" 6152 "homepage": "https://symfony.com/contributors"
6702 } 6153 }
6703 ], 6154 ],
6704 "description": "Generic abstractions related to HTTP clients", 6155 "description": "Finds files and directories via an intuitive fluent interface",
6705 "homepage": "https://symfony.com", 6156 "homepage": "https://symfony.com",
6706 "keywords": [
6707 "abstractions",
6708 "contracts",
6709 "decoupling",
6710 "interfaces",
6711 "interoperability",
6712 "standards"
6713 ],
6714 "support": { 6157 "support": {
6715 "source": "https://github.com/symfony/http-client-contracts/tree/v3.2.1" 6158 "source": "https://github.com/symfony/finder/tree/v6.2.7"
6716 }, 6159 },
6717 "funding": [ 6160 "funding": [
6718 { 6161 {
...@@ -6728,7 +6171,7 @@ ...@@ -6728,7 +6171,7 @@
6728 "type": "tidelift" 6171 "type": "tidelift"
6729 } 6172 }
6730 ], 6173 ],
6731 "time": "2023-03-01T10:32:47+00:00" 6174 "time": "2023-02-16T09:57:23+00:00"
6732 }, 6175 },
6733 { 6176 {
6734 "name": "symfony/http-foundation", 6177 "name": "symfony/http-foundation",
...@@ -7658,85 +7101,6 @@ ...@@ -7658,85 +7101,6 @@
7658 "time": "2022-11-03T14:55:06+00:00" 7101 "time": "2022-11-03T14:55:06+00:00"
7659 }, 7102 },
7660 { 7103 {
7661 "name": "symfony/polyfill-php81",
7662 "version": "v1.27.0",
7663 "source": {
7664 "type": "git",
7665 "url": "https://github.com/symfony/polyfill-php81.git",
7666 "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a"
7667 },
7668 "dist": {
7669 "type": "zip",
7670 "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a",
7671 "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a",
7672 "shasum": ""
7673 },
7674 "require": {
7675 "php": ">=7.1"
7676 },
7677 "type": "library",
7678 "extra": {
7679 "branch-alias": {
7680 "dev-main": "1.27-dev"
7681 },
7682 "thanks": {
7683 "name": "symfony/polyfill",
7684 "url": "https://github.com/symfony/polyfill"
7685 }
7686 },
7687 "autoload": {
7688 "files": [
7689 "bootstrap.php"
7690 ],
7691 "psr-4": {
7692 "Symfony\\Polyfill\\Php81\\": ""
7693 },
7694 "classmap": [
7695 "Resources/stubs"
7696 ]
7697 },
7698 "notification-url": "https://packagist.org/downloads/",
7699 "license": [
7700 "MIT"
7701 ],
7702 "authors": [
7703 {
7704 "name": "Nicolas Grekas",
7705 "email": "p@tchwork.com"
7706 },
7707 {
7708 "name": "Symfony Community",
7709 "homepage": "https://symfony.com/contributors"
7710 }
7711 ],
7712 "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
7713 "homepage": "https://symfony.com",
7714 "keywords": [
7715 "compatibility",
7716 "polyfill",
7717 "portable",
7718 "shim"
7719 ],
7720 "support": {
7721 "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0"
7722 },
7723 "funding": [
7724 {
7725 "url": "https://symfony.com/sponsor",
7726 "type": "custom"
7727 },
7728 {
7729 "url": "https://github.com/fabpot",
7730 "type": "github"
7731 },
7732 {
7733 "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
7734 "type": "tidelift"
7735 }
7736 ],
7737 "time": "2022-11-03T14:55:06+00:00"
7738 },
7739 {
7740 "name": "symfony/polyfill-uuid", 7104 "name": "symfony/polyfill-uuid",
7741 "version": "v1.27.0", 7105 "version": "v1.27.0",
7742 "source": { 7106 "source": {
...@@ -8679,57 +8043,6 @@ ...@@ -8679,57 +8043,6 @@
8679 "time": "2020-12-02T07:22:57+00:00" 8043 "time": "2020-12-02T07:22:57+00:00"
8680 }, 8044 },
8681 { 8045 {
8682 "name": "thenorthmemory/xml",
8683 "version": "1.1.1",
8684 "source": {
8685 "type": "git",
8686 "url": "https://github.com/TheNorthMemory/xml.git",
8687 "reference": "6f50c63450a0b098772423f8bdc3c4ad2c4c30bb"
8688 },
8689 "dist": {
8690 "type": "zip",
8691 "url": "https://api.github.com/repos/TheNorthMemory/xml/zipball/6f50c63450a0b098772423f8bdc3c4ad2c4c30bb",
8692 "reference": "6f50c63450a0b098772423f8bdc3c4ad2c4c30bb",
8693 "shasum": ""
8694 },
8695 "require": {
8696 "ext-libxml": "*",
8697 "ext-simplexml": "*",
8698 "php": ">=7.1.2"
8699 },
8700 "require-dev": {
8701 "phpstan/phpstan": "^0.12.89 || ^1.0",
8702 "phpunit/phpunit": "^7.5 || ^8.5.16 || ^9.3.5"
8703 },
8704 "type": "library",
8705 "autoload": {
8706 "psr-4": {
8707 "TheNorthMemory\\Xml\\": "src/"
8708 }
8709 },
8710 "notification-url": "https://packagist.org/downloads/",
8711 "license": [
8712 "Apache-2.0"
8713 ],
8714 "authors": [
8715 {
8716 "name": "James ZHANG",
8717 "homepage": "https://github.com/TheNorthMemory"
8718 }
8719 ],
8720 "description": "A wrapper of the XML parser and builder",
8721 "homepage": "https://github.com/TheNorthMemory/xml",
8722 "keywords": [
8723 "xml-builder",
8724 "xml-parser"
8725 ],
8726 "support": {
8727 "issues": "https://github.com/TheNorthMemory/xml/issues",
8728 "source": "https://github.com/TheNorthMemory/xml/tree/1.1.1"
8729 },
8730 "time": "2023-01-15T06:01:13+00:00"
8731 },
8732 {
8733 "name": "tijsverkoyen/css-to-inline-styles", 8046 "name": "tijsverkoyen/css-to-inline-styles",
8734 "version": "2.2.6", 8047 "version": "2.2.6",
8735 "source": { 8048 "source": {
...@@ -9135,106 +8448,6 @@ ...@@ -9135,106 +8448,6 @@
9135 "time": "2022-03-08T17:03:00+00:00" 8448 "time": "2022-03-08T17:03:00+00:00"
9136 }, 8449 },
9137 { 8450 {
9138 "name": "w7corp/easywechat",
9139 "version": "6.11.2",
9140 "source": {
9141 "type": "git",
9142 "url": "https://github.com/w7corp/easywechat.git",
9143 "reference": "515c09e187c9eb84cef46f0086a66e1e20e8a80b"
9144 },
9145 "dist": {
9146 "type": "zip",
9147 "url": "https://api.github.com/repos/w7corp/easywechat/zipball/515c09e187c9eb84cef46f0086a66e1e20e8a80b",
9148 "reference": "515c09e187c9eb84cef46f0086a66e1e20e8a80b",
9149 "shasum": ""
9150 },
9151 "require": {
9152 "ext-curl": "*",
9153 "ext-fileinfo": "*",
9154 "ext-libxml": "*",
9155 "ext-openssl": "*",
9156 "ext-simplexml": "*",
9157 "ext-sodium": "*",
9158 "monolog/monolog": "^2.2|^3.0",
9159 "nyholm/psr7": "^1.5",
9160 "nyholm/psr7-server": "^1.0",
9161 "overtrue/socialite": "^3.5.4|^4.0.1",
9162 "php": ">=8.0.2",
9163 "psr/http-client": "^1.0",
9164 "psr/simple-cache": "^1.0|^2.0|^3.0",
9165 "symfony/cache": "^5.4|^6.0",
9166 "symfony/http-client": "^5.4|^6.0",
9167 "symfony/http-foundation": "^5.4|^6.0",
9168 "symfony/mime": "^5.4|^6.0",
9169 "symfony/polyfill-php81": "^1.25",
9170 "symfony/psr-http-message-bridge": "^2.1.2",
9171 "thenorthmemory/xml": "^1.0"
9172 },
9173 "require-dev": {
9174 "brainmaestro/composer-git-hooks": "^2.8",
9175 "jetbrains/phpstorm-attributes": "^1.0",
9176 "laravel/pint": "^1.2",
9177 "mikey179/vfsstream": "^1.6",
9178 "mockery/mockery": "^1.4.4",
9179 "phpstan/phpstan": "^1.0",
9180 "phpunit/phpunit": "^9.5",
9181 "symfony/var-dumper": "^5.2"
9182 },
9183 "type": "library",
9184 "extra": {
9185 "hooks": {
9186 "pre-commit": [
9187 "composer check-style",
9188 "composer phpstan",
9189 "composer test"
9190 ],
9191 "pre-push": [
9192 "composer check-style"
9193 ],
9194 "config": {
9195 "stop-on-failure": [
9196 "pre-commit",
9197 "pre-push"
9198 ]
9199 }
9200 }
9201 },
9202 "autoload": {
9203 "psr-4": {
9204 "EasyWeChat\\": "src/"
9205 }
9206 },
9207 "notification-url": "https://packagist.org/downloads/",
9208 "license": [
9209 "MIT"
9210 ],
9211 "authors": [
9212 {
9213 "name": "overtrue",
9214 "email": "anzhengchao@gmail.com"
9215 }
9216 ],
9217 "description": "微信SDK",
9218 "keywords": [
9219 "easywechat",
9220 "sdk",
9221 "wechat",
9222 "weixin",
9223 "weixin-sdk"
9224 ],
9225 "support": {
9226 "issues": "https://github.com/w7corp/easywechat/issues",
9227 "source": "https://github.com/w7corp/easywechat/tree/6.11.2"
9228 },
9229 "funding": [
9230 {
9231 "url": "https://github.com/overtrue",
9232 "type": "github"
9233 }
9234 ],
9235 "time": "2023-03-16T07:09:44+00:00"
9236 },
9237 {
9238 "name": "webmozart/assert", 8451 "name": "webmozart/assert",
9239 "version": "1.11.0", 8452 "version": "1.11.0",
9240 "source": { 8453 "source": {
......
...@@ -213,8 +213,7 @@ ...@@ -213,8 +213,7 @@
213 */ 213 */
214 214
215 'aliases' => Facade::defaultAliases()->merge([ 215 'aliases' => Facade::defaultAliases()->merge([
216 'EasyWeChat' => Overtrue\LaravelWeChat\EasyWeChat::class, 216 'GeoIP' => \Torann\GeoIP\Facades\GeoIP::class,
217 'GeoIP' => \Torann\GeoIP\Facades\GeoIP::class,
218 217
219 // 'ExampleClass' => App\Example\ExampleClass::class, 218 // 'ExampleClass' => App\Example\ExampleClass::class,
220 ])->toArray(), 219 ])->toArray(),
......
1 <?php
2
3 return [
4 /*
5 * 默认配置,将会合并到各模块中
6 */
7 'defaults' => [
8 'http' => [
9 'timeout' => 5.0,
10 ],
11 ],
12
13 /*
14 * 公众号
15 */
16 'official_account' => [
17 'default' => [
18 'app_id' => env('WECHAT_OFFICIAL_ACCOUNT_APPID', ''), // AppID
19 'secret' => env('WECHAT_OFFICIAL_ACCOUNT_SECRET', ''), // AppSecret
20 'token' => env('WECHAT_OFFICIAL_ACCOUNT_TOKEN', ''), // Token
21 'aes_key' => env('WECHAT_OFFICIAL_ACCOUNT_AES_KEY', ''), // EncodingAESKey
22 /*
23 * OAuth 配置
24 *
25 * scopes:公众平台(snsapi_userinfo / snsapi_base),开放平台:snsapi_login
26 * callback:OAuth授权完成后的回调页地址(如果使用中间件,则随便填写。。。)
27 * enforce_https:是否强制使用 HTTPS 跳转
28 */
29 // 'oauth' => [
30 // 'scopes' => array_map('trim', explode(',', env('WECHAT_OFFICIAL_ACCOUNT_OAUTH_SCOPES', 'snsapi_userinfo'))),
31 // 'callback' => env('WECHAT_OFFICIAL_ACCOUNT_OAUTH_CALLBACK', '/examples/oauth_callback.php'),
32 // 'enforce_https' => true,
33 // ],
34
35 /**
36 * 接口请求相关配置,超时时间等,具体可用参数请参考:
37 * https://github.com/symfony/symfony/blob/6.0/src/Symfony/Contracts/HttpClient/HttpClientInterface.php#L26
38 */
39 'http' => [
40 'timeout' => 5.0,
41 'base_uri' => 'https://api.weixin.qq.com/',
42 ],
43 ],
44 ],
45
46 /*
47 * 开放平台第三方平台
48 */
49 // 'open_platform' => [
50 // 'default' => [
51 // 'app_id' => env('WECHAT_OPEN_PLATFORM_APPID', ''),
52 // 'secret' => env('WECHAT_OPEN_PLATFORM_SECRET', ''),
53 // 'token' => env('WECHAT_OPEN_PLATFORM_TOKEN', ''),
54 // 'aes_key' => env('WECHAT_OPEN_PLATFORM_AES_KEY', ''),
55
56 /**
57 * 接口请求相关配置,超时时间等,具体可用参数请参考:
58 * https://github.com/symfony/symfony/blob/6.0/src/Symfony/Contracts/HttpClient/HttpClientInterface.php#L26
59 */
60 // 'http' => [
61 // 'timeout' => 5.0,
62 // // 如果你在国外想要覆盖默认的 url 的时候才使用,根据不同的模块配置不同的 uri
63 // 'base_uri' => 'https://api.weixin.qq.com/',
64 // ],
65 // ],
66 // ],
67
68 /*
69 * 小程序
70 */
71 'mini_app' => [
72 'default' => [
73 'app_id' => env('WECHAT_MINI_APP_APPID', ''),
74 'secret' => env('WECHAT_MINI_APP_SECRET', ''),
75 'token' => env('WECHAT_MINI_APP_TOKEN', ''),
76 'aes_key' => env('WECHAT_MINI_APP_AES_KEY', ''),
77
78 /**
79 * 接口请求相关配置,超时时间等,具体可用参数请参考:
80 * https://github.com/symfony/symfony/blob/6.0/src/Symfony/Contracts/HttpClient/HttpClientInterface.php#L26
81 */
82 'http' => [
83 'timeout' => 5.0,
84 'base_uri' => 'https://api.weixin.qq.com/',
85 ],
86 ],
87 ],
88
89 /*
90 * 微信支付
91 */
92 // 'pay' => [
93 // 'default' => [
94 // 'app_id' => env('WECHAT_PAY_APPID', ''),
95 // 'mch_id' => env('WECHAT_PAY_MCH_ID', 'your-mch-id'),
96 // 'private_key' => '/data/private/certs/apiclient_key.pem',
97 // 'certificate' => '/data/private/certs/apiclient_cert.pem',
98 // 'notify_url' => 'http://example.com/payments/wechat-notify', // 默认支付结果通知地址
99 // /**
100 // * 证书序列号,可通过命令从证书获取:
101 // * `openssl x509 -in application_cert.pem -noout -serial`
102 // */
103 // 'certificate_serial_no' => '6F2BADBE1738B07EE45C6A85C5F86EE343CAABC3',
104 //
105 // 'http' => [
106 // 'base_uri' => 'https://api.mch.weixin.qq.com/',
107 // ],
108 //
109 // // v2 API 秘钥
110 // //'v2_secret_key' => '26db3e15cfedb44abfbb5fe94fxxxxx',
111 //
112 // // v3 API 秘钥
113 // //'secret_key' => '43A03299A3C3FED3D8CE7B820Fxxxxx',
114 //
115 // // 注意 此处为微信支付平台证书 https://pay.weixin.qq.com/wiki/doc/apiv3/apis/wechatpay5_1.shtml
116 // 'platform_certs' => [
117 // '/data/private/certs/platform_key.pem',
118 // ],
119 // ],
120 // ],
121
122 /*
123 * 企业微信
124 */
125 // 'work' => [
126 // 'default' => [
127 // 'corp_id' => env('WECHAT_WORK_CORP_ID', ''),
128 // 'secret' => env('WECHAT_WORK_SECRET', ''),
129 // 'token' => env('WECHAT_WORK_TOKEN', ''),
130 // 'aes_key' => env('WECHAT_WORK_AES_KEY', ''),
131
132 /**
133 * 接口请求相关配置,超时时间等,具体可用参数请参考:
134 * https://github.com/symfony/symfony/blob/6.0/src/Symfony/Contracts/HttpClient/HttpClientInterface.php#L26
135 */
136 // 'http' => [
137 // 'timeout' => 5.0,
138 // // 如果你在国外想要覆盖默认的 url 的时候才使用,根据不同的模块配置不同的 uri
139 // 'base_uri' => 'https://api.weixin.qq.com/',
140 // ],
141 // ],
142 // ],
143
144 /*
145 * 企业微信开放平台
146 */
147 // 'open_work' => [
148 // 'default' => [
149 // 'corp_id' => env('WECHAT_OPEN_WORK_CORP_ID', ''),
150 // 'provider_secret' => env('WECHAT_OPEN_WORK_SECRET', ''),
151 // 'token' => env('WECHAT_OPEN_WORK_TOKEN', ''),
152 // 'aes_key' => env('WECHAT_OPEN_WORK_AES_KEY', ''),
153
154 /**
155 * 接口请求相关配置,超时时间等,具体可用参数请参考:
156 * https://github.com/symfony/symfony/blob/6.0/src/Symfony/Contracts/HttpClient/HttpClientInterface.php#L26
157 */
158 // 'http' => [
159 // 'timeout' => 5.0,
160 // // 如果你在国外想要覆盖默认的 url 的时候才使用,根据不同的模块配置不同的 uri
161 // 'base_uri' => 'https://api.weixin.qq.com/',
162 // ],
163 // ],
164 // ],
165 ];
...@@ -117,18 +117,6 @@ ...@@ -117,18 +117,6 @@
117 'emergency' => [ 117 'emergency' => [
118 'path' => storage_path('logs/laravel.log'), 118 'path' => storage_path('logs/laravel.log'),
119 ], 119 ],
120 'wechat' => [
121 'driver' => 'daily',
122 'path' => storage_path('logs/wechat.log'),
123 'level' => env('LOG_LEVEL', 'debug'),
124 'days' => 7,
125 ],
126 'jpush' => [
127 'driver' => 'daily',
128 'path' => storage_path('logs/jpush.log'),
129 'level' => env('LOG_LEVEL', 'debug'),
130 'days' => 7,
131 ],
132 'im' => [ 120 'im' => [
133 'driver' => 'daily', 121 'driver' => 'daily',
134 'path' => storage_path('logs/im.log'), 122 'path' => storage_path('logs/im.log'),
......
...@@ -37,12 +37,6 @@ ...@@ -37,12 +37,6 @@
37 'secret' => env('IM_SECRET', ''), 37 'secret' => env('IM_SECRET', ''),
38 'prefix' => env('IM_PREFIX', ''), 38 'prefix' => env('IM_PREFIX', ''),
39 ], 39 ],
40 'jpush' => [
41 'key' => env('JPUSH_KEY', ''),
42 'secret' => env('JPUSH_SECRET', ''),
43 'apns_production' => env('JPUSH_APNS_PRODUCTION', false),
44 'prefix' => env('JPUSH_PREFIX', '')
45 ],
46 'easy-sms' => [ 40 'easy-sms' => [
47 'timeout' => 5.0, 41 'timeout' => 5.0,
48 'default' => [ 42 'default' => [
......