Commit 91722542 91722542f34af65027ab54490445087402a0ae1d by 杨俊

feat(develop): 移除极光推送,微信推送

1 parent c47dcb22
1 <?php
2
3 namespace App\Actions;
4
5 use App\Jobs\WechatTemplateMessageJob;
6 use App\Models\Activity;
7 use App\Models\SystemRole;
8 use App\Models\User;
9 use Carbon\Carbon;
10 use Lorisleiva\Actions\Concerns\AsAction;
11 use Lorisleiva\Actions\Concerns\AsJob;
12
13 class ActivityPublishApply
14 {
15 use AsAction, AsJob;
16
17 protected string $template = 'o9i6qtgr4ghtGvU-piimB9_mAaSOAXDDMzqx9zXYkss';
18
19 public function handle(Activity $activity): void
20 {
21 $activity->loadMissing('user:id,nick_name,real_name');
22
23 $roleIds = SystemRole::query()
24 ->whereRelation('permissions', fn($query) => $query->where('guard', 'Admin')->where('system_permissions.name', 'audition-activity-audit-audit'))
25 ->where('system_roles.status', 1)
26 ->pluck('system_roles.id')->toArray();
27
28
29 User::query()
30 ->join('user_has_roles', 'user_has_roles.user_id', 'users.id')
31 ->whereIn('user_has_roles.role_id', $roleIds)
32 ->where('users.status', 1)->where('users.official_status', 1)
33 ->distinct()->pluck('users.official_id')
34 ->each(fn($item) => WechatTemplateMessageJob::dispatch($item, $this->template, [
35 'first' => '厂牌提交试唱发布申请',
36 'keyword1' => '海星试唱提交了上架申请',
37 'keyword2' => sprintf('%s(%s)', data_get($activity, 'user.nick_name'), data_get($activity, 'user.real_name')),
38 'keyword3' => (string)data_get($activity, 'created_at', Carbon::now()->toDateTimeString()),
39 'keyword4' => sprintf('【%s】活动上架需要您的审核', $activity->getAttribute('song_name')),
40 'remark' => ''
41 ]));
42 }
43 }
...@@ -2,24 +2,14 @@ ...@@ -2,24 +2,14 @@
2 2
3 namespace App\Channels; 3 namespace App\Channels;
4 4
5 use App\Jobs\WechatTemplateMessageJob;
6 use App\Models\User; 5 use App\Models\User;
7 use Illuminate\Notifications\Notification; 6 use Illuminate\Notifications\Notification;
8 use Illuminate\Support\Arr;
9 7
10 class WechatNotificationChannel 8 class WechatNotificationChannel
11 { 9 {
12 public function send(User $notifiable, Notification $notification): void 10 public function send(User $notifiable, Notification $notification): void
13 { 11 {
14 // @phpstan-ignore-next-line 12 // @phpstan-ignore-next-line
15 $message = $notification->toWechat($notifiable); 13 $notification->toWechat($notifiable);
16
17 WechatTemplateMessageJob::dispatchSync(
18 openId: Arr::get($message, 'openId', ''),
19 template: Arr::get($message, 'template', ''),
20 data: Arr::get($message, 'data', []),
21 url: Arr::get($message, 'url', ''),
22 page: Arr::get($message, 'page', '')
23 );
24 } 14 }
25 } 15 }
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
3 namespace App\Http\Container\AppSection\Controllers; 3 namespace App\Http\Container\AppSection\Controllers;
4 4
5 use App\Helpers\JsonResource; 5 use App\Helpers\JsonResource;
6 use App\Jobs\JPushMessageJob;
7 use App\Models\Activity; 6 use App\Models\Activity;
8 use App\Models\ActivityShareUser; 7 use App\Models\ActivityShareUser;
9 use App\Models\Pivots\UserActivityCollectionPivot; 8 use App\Models\Pivots\UserActivityCollectionPivot;
...@@ -184,19 +183,6 @@ public function sub(Request $request) ...@@ -184,19 +183,6 @@ public function sub(Request $request)
184 $resp = Http::asJson()->post($url, $req_data)->json(); 183 $resp = Http::asJson()->post($url, $req_data)->json();
185 } 184 }
186 } 185 }
187
188 # 极光推送-歌手收藏
189 $j_title = "您的歌手收藏了试唱";
190 $j_content = "您的歌手".$user->nick_name."收藏了试唱活动《".$song_name."》";
191 $jdata = ["title"=> $j_title, "content"=>$j_content, "content_type"=>"text",
192 "receiver_value"=> [$business_id],
193 "extras"=> ["type"=>"ToTaCollection", "value"=>""]];
194 JPushMessageJob::dispatch(
195 $business_id,
196 $j_title,
197 $j_content,
198 $jdata
199 );
200 } 186 }
201 187
202 return JsonResource::success('收藏成功'); 188 return JsonResource::success('收藏成功');
......
...@@ -5,12 +5,9 @@ ...@@ -5,12 +5,9 @@
5 use App\Exceptions\TestCallbackException; 5 use App\Exceptions\TestCallbackException;
6 use App\Helpers\IMHelper; 6 use App\Helpers\IMHelper;
7 use App\Jobs\ImMessageSaveJob; 7 use App\Jobs\ImMessageSaveJob;
8 use App\Jobs\WechatTemplateMessageJob;
9 use App\Models\ActivityGroup; 8 use App\Models\ActivityGroup;
10 use App\Models\ActivityGroupUser; 9 use App\Models\ActivityGroupUser;
11 use App\Models\SystemConfig;
12 use App\Models\User; 10 use App\Models\User;
13 use Carbon\Carbon;
14 use GuzzleHttp\Promise\PromiseInterface; 11 use GuzzleHttp\Promise\PromiseInterface;
15 use Hikoon\LaravelApi\Support\ApiController; 12 use Hikoon\LaravelApi\Support\ApiController;
16 use Illuminate\Http\Client\Response; 13 use Illuminate\Http\Client\Response;
...@@ -84,46 +81,12 @@ protected function stateStateChange(array $data): JsonResponse ...@@ -84,46 +81,12 @@ protected function stateStateChange(array $data): JsonResponse
84 */ 81 */
85 protected function c2CCallbackAfterSendMsg(array $data): JsonResponse 82 protected function c2CCallbackAfterSendMsg(array $data): JsonResponse
86 { 83 {
87 $toId = Arr::get($data, 'To_Account');
88 $formId = Arr::get($data, 'From_Account'); 84 $formId = Arr::get($data, 'From_Account');
89 $online = Arr::get($data, 'OnlineOnlyFlag', 0);
90 $time = Arr::get($data, 'MsgTime', Carbon::now()->getTimestamp());
91 85
92 throw_unless($this->gate($formId), TestCallbackException::class); 86 throw_unless($this->gate($formId), TestCallbackException::class);
93 87
94 $hashKey = 'imOfflineMsg';
95 $sendTime = Carbon::createFromTimestamp($time)->toDateTimeString();
96 $toId = IMHelper::accountToUserKey($toId);
97 $formId = IMHelper::accountToUserKey($formId);
98
99
100 ImMessageSaveJob::dispatch($data); 88 ImMessageSaveJob::dispatch($data);
101 89
102 $openId = User::query()
103 ->where('id', $toId)
104 ->where('audit_status', 1)
105 ->where('status', 1)
106 ->where('im_client', 'Web')
107 ->where('im_status', 0)
108 ->value('official_id');
109
110 if ($openId && (int)$online === 0 && !Redis::client()->hExists($hashKey, $formId)) {
111 Redis::client()->hSet($hashKey, $formId, 0);
112 $customerId = SystemConfig::query()->where('identifier', 'customer_service')->value('remark');
113 $formUser = User::with('artTags:id,name')->find($formId, ['id', 'nick_name']);
114 $formName = $formUser->getAttribute('nick_name');
115 $formTag = $formUser->getRelation('artTags') ? $formUser->getRelation('artTags')->implode('name', ',') : '无';
116
117 $data = $customerId === $formId ?
118 ['first' => '您收到平台客服发来的消息', 'keyword1' => $formName, 'keyword2' => '平台客服', 'keyword3' => '平台官方', 'keyword4' => $sendTime, 'remark' => '点击查看'] :
119 ['first' => '您收到新的私聊消息', 'keyword1' => $formName, 'keyword2' => $formTag, 'keyword3' => '私聊消息', 'keyword4' => $sendTime, 'remark' => '点击查看'];
120
121
122 WechatTemplateMessageJob::dispatch($openId, 'HTRAwaRoJksSGCiSeVCyvpF9vXdeQhC6R4PbSYnO8NM', $data);
123 }
124
125 Redis::client()->hIncrBy($hashKey, $formId, 1);
126
127 return new JsonResponse(['ActionStatus' => 'OK', 'ErrorInfo' => '', 'ErrorCode' => 0]); 90 return new JsonResponse(['ActionStatus' => 'OK', 'ErrorInfo' => '', 'ErrorCode' => 0]);
128 } 91 }
129 92
......
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
2 2
3 namespace App\Http\Service; 3 namespace App\Http\Service;
4 4
5 use App\Actions\ActivityPublishApply;
6 use App\Actions\ActivityWorkAuditFail; 5 use App\Actions\ActivityWorkAuditFail;
7 use App\Actions\ActivityWorkAuditSuccess; 6 use App\Actions\ActivityWorkAuditSuccess;
8 use App\Enums\ActivityAuditStatusEnum; 7 use App\Enums\ActivityAuditStatusEnum;
...@@ -160,7 +159,6 @@ public function createActivityApply(array $attribute, bool $checkConfig = true): ...@@ -160,7 +159,6 @@ public function createActivityApply(array $attribute, bool $checkConfig = true):
160 return DB::transaction(static function () use ($attribute) { 159 return DB::transaction(static function () use ($attribute) {
161 $activity = Activity::query()->create(array_merge($attribute, ['song_type' => ActivitySongTypeEnum::SONG->value])); 160 $activity = Activity::query()->create(array_merge($attribute, ['song_type' => ActivitySongTypeEnum::SONG->value]));
162 OperationLog::guard()->subject($activity)->createAction()->content('歌曲《%s》,申请上架', $activity->getAttribute('song_name')); 161 OperationLog::guard()->subject($activity)->createAction()->content('歌曲《%s》,申请上架', $activity->getAttribute('song_name'));
163 ActivityPublishApply::dispatch($activity);
164 return $activity; 162 return $activity;
165 }); 163 });
166 } 164 }
......
...@@ -41,26 +41,6 @@ public function __construct(array $jPushMessage, array $wechatMessage) ...@@ -41,26 +41,6 @@ public function __construct(array $jPushMessage, array $wechatMessage)
41 */ 41 */
42 public function handle(): void 42 public function handle(): void
43 { 43 {
44 User::query()->where('status', 1)
45 ->whereIn('id', explode(',', SystemConfig::query()->where('identifier', 'DBYsQqJrvuPf_d_zMR4va')->value('content') ?? ''))
46 ->select(['id', 'nick_name', 'real_name', 'official_id', 'official_status', 'area_code', 'phone'])
47 ->eachById(function (User $user) {
48 JPushMessageJob::dispatch(
49 $user->getKey(),
50 Arr::get($this->jPushMessage, 'title', ''),
51 Arr::get($this->jPushMessage, 'content', ''),
52 Arr::get($this->jPushMessage, 'data', [])
53 );
54 44
55 if ($user->getAttribute('official_status') === UserOfficialStatusEnum::SUBSCRIBE) {
56 WechatTemplateMessageJob::dispatch($user->getAttribute('official_id'), 'GFJxUXdJs37HX2hYB_jdOeR2FQHj2RpkJo57q24Lkkc', [
57 'keyword1' => '歌手额度上限提醒',
58 'keyword2' => Arr::get($this->wechatMessage, 'title', ''),
59 'keyword3' => Arr::get($this->wechatMessage, 'content', ''),
60 'keyword4' => Arr::get($this->wechatMessage, 'limit', $this->defaultLimit),
61 'keyword5' => Arr::get($this->wechatMessage, 'limit', $this->defaultLimit),
62 ]);
63 }
64 });
65 } 45 }
66 } 46 }
......
1 <?php
2
3 namespace App\Jobs;
4
5 use App\Helpers\ServiceHelper;
6 use Illuminate\Bus\Queueable;
7 use Illuminate\Contracts\Queue\ShouldQueue;
8 use Illuminate\Foundation\Bus\Dispatchable;
9 use Illuminate\Queue\InteractsWithQueue;
10 use Illuminate\Queue\SerializesModels;
11 use function array_key_exists;
12
13 class WechatTemplateMessageJob implements ShouldQueue
14 {
15 use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
16
17 // private const API_URI = 'cgi-bin/message/template/send';
18
19 /**
20 * @var array<string,mixed>
21 */
22 private array $data;
23
24 /**
25 * Create a new job instance.
26 *
27 * @param string $openId
28 * @param string $template
29 * @param array<string,mixed> $data
30 * @param string $url
31 * @param string $page
32 */
33 public function __construct(string $openId, string $template, array $data = [], string $url = '', string $page = '')
34 {
35 $this->data = ['openId' => $openId, 'template' => $template, 'data' => $this->formatData($data), 'page' => $page, 'url' => $url];
36 }
37
38 /**
39 * Execute the job.
40 *
41 * @return void
42 * @throws \JsonException
43 */
44 public function handle(): void
45 {
46 //Access_Token 问题,暂时访问Admin服务推送接口
47 ServiceHelper::sendWechatOfficial($this->data);
48 }
49
50 /**
51 * @param array<string,mixed> $data
52 * @return array<string,array<string,string>>
53 */
54 protected function formatData(array $data): array
55 {
56 $formatted = [];
57
58 foreach ($data as $key => $value) {
59 if (is_array($value)) {
60 if (array_key_exists('value', $value)) {
61 $formatted[$key] = $value;
62 continue;
63 }
64
65 if (count($value) >= 2) {
66 $value = [
67 'value' => $value[0],
68 'color' => $value[1],
69 ];
70 }
71 } else {
72 $value = ['value' => (string)$value,];
73 }
74
75 $formatted[$key] = $value;
76 }
77
78 return $formatted;
79 }
80
81 /**
82 * @param string $page
83 * @return array<string,string>
84 */
85 protected function formatMiniPage(string $page): array
86 {
87 return ['appid' => config('easywechat.mini_app.default.app_id'), 'pagepath' => $page];
88 }
89 }
...@@ -120,9 +120,7 @@ ...@@ -120,9 +120,7 @@
120 */ 120 */
121 121
122 'silenced' => [ 122 'silenced' => [
123 \App\Jobs\JPushMessageJob::class,
124 \App\Jobs\SmsMessageJob::class, 123 \App\Jobs\SmsMessageJob::class,
125 \App\Jobs\WechatTemplateMessageJob::class,
126 ], 124 ],
127 125
128 /* 126 /*
......