增加 营销邮件接收选项
This commit is contained in:
parent
7e9e5e2559
commit
56d1aacc79
@ -58,6 +58,11 @@ public function query(Request|array $request): User|CachedBuilder|Builder
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 是否是营销邮件
|
||||||
|
if (! empty($request['receive_marketing_email'])) {
|
||||||
|
$users = $users->where('receive_marketing_email', true);
|
||||||
|
}
|
||||||
|
|
||||||
return $users;
|
return $users;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,12 +2,11 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers\Web;
|
namespace App\Http\Controllers\Web;
|
||||||
|
|
||||||
// use App\Helpers\ApiResponse;
|
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Notifications\User\UserNotification;
|
use App\Notifications\User\UserNotification;
|
||||||
use function back;
|
use function back;
|
||||||
use function config;
|
use function config;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Http\RedirectResponse;
|
use Illuminate\Http\RedirectResponse;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Carbon;
|
use Illuminate\Support\Carbon;
|
||||||
@ -65,17 +64,20 @@ public function confirm_redirect(Request $request): View
|
|||||||
return view('confirm_redirect', compact('callback', 'referer_host'));
|
return view('confirm_redirect', compact('callback', 'referer_host'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function update(Request $request): RedirectResponse
|
public function update(Request $request): RedirectResponse|JsonResponse
|
||||||
{
|
{
|
||||||
$request->validate([
|
$request->validate([
|
||||||
'name' => 'required|string|max:255',
|
'name' => 'nullable|sometimes|string|max:255',
|
||||||
|
'receive_marketing_email' => 'nullable|sometimes|boolean',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$user = $request->user('web');
|
$user = $request->user('web');
|
||||||
|
|
||||||
$user->update([
|
$user->update($request->only('name', 'receive_marketing_email'));
|
||||||
'name' => $request->input('name'),
|
|
||||||
]);
|
if ($request->ajax()) {
|
||||||
|
return $this->success($user->only('name', 'receive_marketing_email'));
|
||||||
|
}
|
||||||
|
|
||||||
return back()->with('success', '更新成功。');
|
return back()->with('success', '更新成功。');
|
||||||
}
|
}
|
||||||
|
@ -47,6 +47,7 @@ class User extends Authenticatable implements MustVerifyEmail
|
|||||||
'name',
|
'name',
|
||||||
'email',
|
'email',
|
||||||
'password',
|
'password',
|
||||||
|
'receive_marketing_email',
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('users', function (Blueprint $table) {
|
||||||
|
$table->boolean('receive_marketing_email')->default(true)->index()->after('remember_token');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('users', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('receive_marketing_email');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
@ -32,6 +32,15 @@
|
|||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="form-check">
|
||||||
|
<label class="form-check-label" for="receive_marketing_email">
|
||||||
|
接收营销邮件的用户
|
||||||
|
</label>
|
||||||
|
<input class="form-check-input" type="checkbox" name="receive_marketing_email" id="receive_marketing_email" value="1" @if(Request::get('receive_marketing_email') == 1) checked @endif>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<p>这两个搜搜条件只能二选一。</p>
|
<p>这两个搜搜条件只能二选一。</p>
|
||||||
|
|
||||||
<button type="submit" class="btn btn-primary mt-1">筛选并确定条件</button>
|
<button type="submit" class="btn btn-primary mt-1">筛选并确定条件</button>
|
||||||
@ -96,40 +105,37 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{-- 分页 --}}
|
|
||||||
{{ $users->links() }}
|
{{ $users->links() }}
|
||||||
|
|
||||||
|
<form method="POST" action="{{ route('admin.notifications.store')}}">
|
||||||
|
@csrf
|
||||||
|
|
||||||
|
<input type="hidden" name="user" value="{{ Request::get('user') }}">
|
||||||
|
<input type="hidden" name="module_id" value="{{ Request::get('module_id') }}">
|
||||||
|
<input type="hidden" name="user_id" value="{{ Request::get('user_id') }}">
|
||||||
|
|
||||||
|
<div class="form-check mt-1">
|
||||||
|
<label class="form-check-label" for="send_mail">
|
||||||
|
邮件通知
|
||||||
|
</label>
|
||||||
|
<input class="form-check-input" type="checkbox" name="send_mail" id="send_mail" value="1" @if(Request::get('send_mail') == 1) checked @endif>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="title">标题</label>
|
||||||
|
<input type="text" name="title" id="title" class="form-control" value="{{ old('title') }}">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group mt-4">
|
||||||
|
<label for="content">通知内容 支持 Markdown</label>
|
||||||
|
<textarea name="content" id="content" class="form-control" rows="10">{{ old('content') }}</textarea>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn-primary mt-3">发送</button>
|
||||||
|
<span class="text-muted d-block">通知一旦发送,将无法撤销!</span>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
@else
|
||||||
|
<h5 class="mt-4">没有符合条件的用户。</h5>
|
||||||
@endif
|
@endif
|
||||||
|
|
||||||
|
|
||||||
<form method="POST" action="{{ route('admin.notifications.store')}}">
|
|
||||||
@csrf
|
|
||||||
|
|
||||||
<input type="hidden" name="user" value="{{ Request::get('user') }}">
|
|
||||||
<input type="hidden" name="module_id" value="{{ Request::get('module_id') }}">
|
|
||||||
<input type="hidden" name="user_id" value="{{ Request::get('user_id') }}">
|
|
||||||
|
|
||||||
{{-- checkbox send_mail --}}
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="send_mail">邮件通知</label>
|
|
||||||
<input type="checkbox" name="send_mail" id="send_mail" value="1"
|
|
||||||
@if(Request::get('send_mail') == 1) checked @endif>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="title">标题</label>
|
|
||||||
<input type="text" name="title" id="title" class="form-control" value="{{ old('title') }}">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{{-- 通知内容 --}}
|
|
||||||
<div class="form-group mt-4">
|
|
||||||
<label for="content">通知内容 支持 Markdown</label>
|
|
||||||
<textarea name="content" id="content" class="form-control" rows="10">{{ old('content') }}</textarea>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<button type="submit" class="btn btn-primary mt-3">发送</button>
|
|
||||||
<span class="text-muted d-block">通知一旦发送,将无法撤销!</span>
|
|
||||||
</form>
|
|
||||||
|
|
||||||
@endsection
|
@endsection
|
||||||
|
@ -90,6 +90,12 @@
|
|||||||
@if ($user->real_name_verified_at)
|
@if ($user->real_name_verified_at)
|
||||||
<p>实人认证时间: {{ $user->real_name_verified_at }}</p>
|
<p>实人认证时间: {{ $user->real_name_verified_at }}</p>
|
||||||
@endif
|
@endif
|
||||||
|
<p>
|
||||||
|
营销邮件订阅: <a
|
||||||
|
onclick="update_receive_marketing_email()" style="cursor: pointer"
|
||||||
|
class="text-decoration-underline"></a>
|
||||||
|
<span id="receive_marketing_email_append_text"></span>
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-secondary"
|
<button type="button" class="btn btn-secondary"
|
||||||
@ -100,4 +106,37 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
let receive_marketing_email = {{ $user->receive_marketing_email ? 'true' : 'false' }};
|
||||||
|
let receive_marketing_email_append_text = document.querySelector('#receive_marketing_email_append_text');
|
||||||
|
|
||||||
|
function update_receive_marketing_email_text() {
|
||||||
|
let ele = document.querySelector('a[onclick="update_receive_marketing_email()"]');
|
||||||
|
|
||||||
|
if (receive_marketing_email) {
|
||||||
|
ele.innerText = '是';
|
||||||
|
receive_marketing_email_append_text.innerText = ',如果有打扰到您,请取消订阅。';
|
||||||
|
} else {
|
||||||
|
receive_marketing_email_append_text.innerText = '。创业不易,感谢理解。';
|
||||||
|
ele.innerText = '否';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function update_receive_marketing_email() {
|
||||||
|
axios.patch("{{route('users.update')}}", {
|
||||||
|
receive_marketing_email: !receive_marketing_email
|
||||||
|
}).then(response => {
|
||||||
|
receive_marketing_email = response.data['receive_marketing_email']
|
||||||
|
|
||||||
|
update_receive_marketing_email_text(receive_marketing_email)
|
||||||
|
}).finally(() => {
|
||||||
|
update_receive_marketing_email_text()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
update_receive_marketing_email_text()
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
@endsection
|
@endsection
|
||||||
|
Loading…
Reference in New Issue
Block a user