|
@@ -34,7 +34,7 @@ class AccountService
|
|
|
* 业务逻辑:
|
|
|
* 1. 生成6位随机数字验证码
|
|
|
* 2. 将验证码保存到缓存中,有效期5分钟
|
|
|
- * 3. 调用短信服务发送验证码
|
|
|
+ * 3. 调用短信服���发送验证码
|
|
|
* 4. 返回发送成功消息和验证码
|
|
|
*
|
|
|
* @param string $mobile 手机号
|
|
@@ -117,8 +117,8 @@ class AccountService
|
|
|
{
|
|
|
// 使用事务确保数据一致性
|
|
|
return DB::transaction(function () use ($openid, $userInfo) {
|
|
|
- // 查找或创建微信社交账号记录
|
|
|
- $socialAccount = $this->findOrCreateSocialAccount($openid);
|
|
|
+ // 查找或创建微信社交账号记录,传入用户信息
|
|
|
+ $socialAccount = $this->findOrCreateSocialAccount($openid, $userInfo);
|
|
|
|
|
|
// 获取关联的用户,如果没有则创建新用户
|
|
|
$user = $socialAccount->user ?? $this->createUserFromWechat($userInfo);
|
|
@@ -148,7 +148,7 @@ class AccountService
|
|
|
/**
|
|
|
* 用户退出
|
|
|
* 业务逻辑:
|
|
|
- * 1. 根据��户ID查找用户
|
|
|
+ * 1. 根据户ID查找用户
|
|
|
* 2. 验证用户是否存在,不存在则中断请求
|
|
|
* 3. 删除用户所有token
|
|
|
* 4. 返回退出成功消息
|
|
@@ -196,7 +196,7 @@ class AccountService
|
|
|
// 删除用户的所有认证令牌
|
|
|
$this->revokeTokens($user);
|
|
|
|
|
|
- // 返回注销成功的消息
|
|
|
+ // 返回���销成功的消息
|
|
|
return ['message' => '账号已注销'];
|
|
|
}
|
|
|
|
|
@@ -243,7 +243,7 @@ class AccountService
|
|
|
/**
|
|
|
* 发送验证码短信
|
|
|
*
|
|
|
- * 逻辑���述:
|
|
|
+ * 逻辑描述:
|
|
|
* 1. 调用短信服务发送验证码
|
|
|
*
|
|
|
* @param string $mobile 手机号
|
|
@@ -320,29 +320,36 @@ class AccountService
|
|
|
/**
|
|
|
* 查找或创建社交账号
|
|
|
*
|
|
|
- * 逻辑描述:
|
|
|
- * 1. 先查找是否存在社交账号
|
|
|
- * 2. 不存在则创建新记录
|
|
|
+ * 业务流程:
|
|
|
+ * 1. 根据openid查找已存在的社交账号记录
|
|
|
+ * 2. 如果存在则直接返回
|
|
|
+ * 3. 如果不存在,使用社交信息创建新记录
|
|
|
*
|
|
|
- * @param string $openid 微信openid
|
|
|
+ * @param string $openid 微信openid
|
|
|
+ * @param array $userInfo 微信用户信息(昵称、头像等)
|
|
|
+ * @return MemberSocialAccount
|
|
|
*/
|
|
|
- private function findOrCreateSocialAccount(string $openid): MemberSocialAccount
|
|
|
+ private function findOrCreateSocialAccount(string $openid, array $userInfo = []): MemberSocialAccount
|
|
|
{
|
|
|
- // 先查找是否存在社交账号
|
|
|
- $socialAccount = MemberSocialAccount::where([
|
|
|
- 'platform' => 'WECHAT',
|
|
|
- 'social_id' => $openid,
|
|
|
- ])->first();
|
|
|
-
|
|
|
- // 如果不存在,则创建新记录
|
|
|
- if (!$socialAccount) {
|
|
|
- $socialAccount = MemberSocialAccount::create([
|
|
|
- 'platform' => 'WECHAT',
|
|
|
- 'social_id' => $openid,
|
|
|
- ]);
|
|
|
+ // 根据openid查找已存在的社交账号
|
|
|
+ $socialAccount = MemberSocialAccount::where('social_id', $openid)
|
|
|
+ ->where('platform', 'WECHAT')
|
|
|
+ ->first();
|
|
|
+
|
|
|
+ // 如果已存在则直接返回
|
|
|
+ if ($socialAccount) {
|
|
|
+ return $socialAccount;
|
|
|
}
|
|
|
|
|
|
- return $socialAccount;
|
|
|
+ // 创建新的社交账号记录,包含用户信息
|
|
|
+ return MemberSocialAccount::create([
|
|
|
+ 'platform' => 'WECHAT',
|
|
|
+ 'social_id' => $openid,
|
|
|
+ 'nickname' => $userInfo['nickname'] ?? '',
|
|
|
+ 'avatar' => $userInfo['avatar'] ?? '', // 微信返回的头像字段名
|
|
|
+ 'gender' => $userInfo['gender'] ?? 0, // 微信返回的性别字段名
|
|
|
+ 'status' => 1, // 默认状态为有效
|
|
|
+ ]);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -430,7 +437,7 @@ class AccountService
|
|
|
* 1. 获取当前认证用户
|
|
|
* 2. 用户未登录则抛出异常
|
|
|
*
|
|
|
- * @throws BusinessException 用户未登录时抛出异常
|
|
|
+ * @throws BusinessException ���户未登录时抛出异常
|
|
|
*/
|
|
|
private function getCurrentUser(): MemberUser
|
|
|
{
|
|
@@ -511,7 +518,7 @@ class AccountService
|
|
|
* 2. 验证邀请码格式是否正确
|
|
|
* 3. 分解邀请码获取类型和ID
|
|
|
* 4. 根据类型查找邀请人
|
|
|
- * 5. 邀请人不存在则记录日���并返回
|
|
|
+ * 5. 邀请人不存在则记录日志并返回
|
|
|
* 6. 检查用户是否已在营销团队中
|
|
|
* 7. 使用事务创建团队关系
|
|
|
*
|
|
@@ -620,7 +627,7 @@ class AccountService
|
|
|
$user->mobile = $mobile;
|
|
|
$user->save();
|
|
|
|
|
|
- // 返回成功消息和更新后的用户信息
|
|
|
+ // 返回成功消息和更新后��用户信息
|
|
|
return [
|
|
|
'message' => '手机号绑定成功',
|
|
|
'user' => $user->fresh(),
|