// 进行基本验证
$user_info = \GuzzleHttp\json_decode($request->input('rawData'),true);
//注册信息 字段名=》get到的值
json数据转为数组
$newUser = [
'openid' => $openid, //openid
'nickname' => $user_info['nickName'],// 昵称
'avatar' =>$user_info['avatarUrl'], //头像
'unionid' => isset($user_info['unionid'])?$user_info['unionid']:'', // unionid (可空)
'password' => bcrypt('123456'),
'level' => 'visitor',
'user_type'=>'personnel',
'last_login_ip' => $this->getClientIP(),
'last_login_time' => Carbon::now()
];
用户数据
$userInfo = User::create($newUser);
创建数据
$loginlog = new UserLoginLog(['login_ip'=>$this->getClientIP(),'login_time'=>Carbon::now(),'mark'=>'小程序注册']);
$userInfo->login_logs()->save($loginlog);
通过关联模型 存 登录log
//同步信息到微信用户表
$wechatuser = new WechatUser([
'openid' => $openid, //openid
'unionid' => isset($user_info['unionid'])?$user_info['unionid']:'',
'nickname' => $user_info['nickName'],// 昵称
'avatar' =>$user_info['avatarUrl'], //头像
'sex' => $user_info['gender'],// 性别
'language' =>$user_info['language'], //语言
'city' => $user_info['city'],// 城市
'province' =>$user_info['province'], //省
'country' => $user_info['country'],// 区
]);
$userInfo->wechat()->save($wechatuser);
通过关联模型储存数据到 wechat 用户表
// 直接创建token
$token = $userInfo->createToken($openid)->accessToken;
创建token
模型关联:
/**
* 模型关联 start
*
*/
//登录记录
public function login_logs()
{
return $this->hasMany(UserLoginLog::class);
}
//关联微信
public function wechat()
{
return $this->hasOne(WechatUser::class);
}
EVENT事件
//用户注册事件
event(new UserRegistered($userInfo));
用户注册时间:当用户注册时,发放优惠券等等
需要在头部引入
use App\Events\UserRegistered;
引入的UserRegistered文件
<?php
namespace App\Events;
use App\Models\User;
use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
class UserRegistered
{
use Dispatchable, InteractsWithSockets, SerializesModels;
protected $user;
/**
* Create a new event instance.
*
* @return void
*/
public function __construct(User $user)
{
$this->user = $user;
}
public function getUser()
{
return $this->user;
}
}
监听器处理
<?php
namespace App\Listeners;
use App\Events\UserRegistered;
use App\Models\WashCoupon;
use App\Models\WashCouponUser;
use Carbon\Carbon;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Log;
class GiveNewUserCoupon implements ShouldQueue
{
/**
* Handle the event.
*
* @param UserRegistered $event
* @return void
*/
public function handle(UserRegistered $event)
{
// 从事件对象中取出对应的用户
$user = $event->getUser();
$wash_coupons = WashCoupon::where(['is_to_newuser'=>1,'is_enabled'=>1])->get();
foreach($wash_coupons as $coupon)
{
$expire_time = Carbon::now()->addDays($coupon->expire_day);
$user_coupon = new WashCouponUser();
$user_coupon->user_id = $user->id;
$user_coupon->coupon_id = $coupon->id;
$user_coupon->expire_time = $expire_time;
$user_coupon->receive_time = Carbon::now();
$user_coupon->save();
Log::info('新用户注册发放优惠券成功,用户:'.$user->nickname);
}
}
}
找出发放给新用户的优惠券,发放到 用户优惠券 表中