diff --git a/app/Admin/Controllers/UserController.php b/app/Admin/Controllers/UserController.php index d81db04a..07cb0224 100644 --- a/app/Admin/Controllers/UserController.php +++ b/app/Admin/Controllers/UserController.php @@ -10,6 +10,7 @@ use App\Admin\Actions\Show\UserEditAgent; use App\Admin\Actions\Show\UserEditPhone; use App\Admin\Renderable\UserSalesValueLogSimpleTable; use App\Admin\Repositories\User; +use App\Events\UserCreated; use App\Exceptions\BizException; use App\Models\Agent; use App\Models\Order; @@ -240,6 +241,15 @@ class UserController extends AdminController $form->display('created_at'); $form->display('updated_at'); $form->hidden('register_ip')->value(RequestFacades::getClientIp()); + + // $form->saved(function (Form $form) { + // if ($form->isCreating()) { + // $newId = $form->getKey(); + // if ($newId) { + // event(new UserCreated(UserModel::findOrFail($newId))); + // } + // } + // }); }); } diff --git a/app/Endpoint/Api/Http/Controllers/Auth/MiniprogramController.php b/app/Endpoint/Api/Http/Controllers/Auth/MiniprogramController.php index 8c72a00f..69668e5e 100644 --- a/app/Endpoint/Api/Http/Controllers/Auth/MiniprogramController.php +++ b/app/Endpoint/Api/Http/Controllers/Auth/MiniprogramController.php @@ -10,6 +10,7 @@ use App\Exceptions\BizException; use Illuminate\Support\Facades\DB; use App\Models\{User, SocialiteUser}; use App\Endpoint\Api\Http\Controllers\Controller; +use App\Events\UserCreated; use EasyWeChat\Factory; class MiniprogramController extends Controller diff --git a/app/Endpoint/Api/Http/Controllers/DrawActivityController.php b/app/Endpoint/Api/Http/Controllers/DrawActivityController.php index 5af64c1e..fe501797 100644 --- a/app/Endpoint/Api/Http/Controllers/DrawActivityController.php +++ b/app/Endpoint/Api/Http/Controllers/DrawActivityController.php @@ -22,7 +22,7 @@ class DrawActivityController extends Controller { $drawActivity = DrawActivity::with(['prizes' => function ($builder) { $builder->latest('sort'); - }])->onlyPublished()->orderByDesc('id')->findOrFail($id); + }])->onlyPublished()->findOrFail($id); $drawTicket = null; $drawLog = null; diff --git a/app/Events/UserCreated.php b/app/Events/UserCreated.php new file mode 100644 index 00000000..b4ca57a1 --- /dev/null +++ b/app/Events/UserCreated.php @@ -0,0 +1,32 @@ +user = $user; + } +} diff --git a/app/Listeners/SendDrawTicket.php b/app/Listeners/SendDrawTicket.php new file mode 100644 index 00000000..6e932624 --- /dev/null +++ b/app/Listeners/SendDrawTicket.php @@ -0,0 +1,41 @@ +user; + // 有效的抽奖活动 + $drawActivity = DrawActivity::onlyRunning()->where("send_ticket_type", 1)->first(); + if ($drawActivity) { + (new DrawTicketService())->change($user, $drawActivity, 1, "新用户注册赠送1次抽奖"); + } + } +} diff --git a/app/Models/DrawActivity.php b/app/Models/DrawActivity.php index 5b6cf54a..8ced8ef9 100644 --- a/app/Models/DrawActivity.php +++ b/app/Models/DrawActivity.php @@ -41,6 +41,7 @@ class DrawActivity extends Model 'bg_image', 'bg_color', 'status', + 'send_ticket_type' ]; /** diff --git a/app/Models/User.php b/app/Models/User.php index 0ce8a557..aa79628e 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -2,6 +2,7 @@ namespace App\Models; +use App\Events\UserCreated; use Dcat\Admin\Traits\HasDateTimeFormatter; use Illuminate\Auth\Authenticatable; use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; @@ -10,6 +11,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Foundation\Auth\Access\Authorizable; +use Illuminate\Notifications\Notifiable; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Str; use Laravel\Sanctum\HasApiTokens; @@ -64,6 +66,10 @@ class User extends Model implements AuthorizableContract, AuthenticatableContrac 'status' => 'int', ]; + protected $dispatchesEvents = [ + 'created' => UserCreated::class, + ]; + /** * {@inheritdoc} */ @@ -380,7 +386,10 @@ class User extends Model implements AuthorizableContract, AuthenticatableContrac // 邀请人的深度 $depth = (int) $inviter?->userInfo?->depth; + $phone = $user->phone; + $hidePhone = substr($phone, 0, 3) . '****' . substr($phone, 7); $user->userInfo()->create([ + 'nickname' => $hidePhone, 'inviter_id' => $inviter?->id, 'depth' => $depth + 1, 'path' => Str::finish($inviter?->userInfo?->full_path, '-'), diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 091ef335..737d798f 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -24,6 +24,9 @@ class EventServiceProvider extends ServiceProvider \App\Listeners\OrderPrint::class, \App\Listeners\OrderAutoComplete::class, ], + \App\Events\UserCreated::class => [ + \App\Listeners\SendDrawTicket::class, + ], ]; /**