refactor: 重构多飞书应用绑定架构和数据库清理
- 新增 user_feishu_apps 表支持用户绑定多个飞书应用 - users 表添加唯一约束(公司内邮箱/手机唯一) - 迁移现有飞书数据到 user_feishu_apps 表 - 清理冗余表(users_bak, user_feishu_binding) - 废弃 users 表中的 feishu_user_id/feishu_open_id/tenant_key 字段 - 更新 FeishuNotificationService 使用新的数据获取方式 - User 模型新增 getFeishuUserId() 等便捷方法 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -86,7 +86,7 @@ class AuthController extends BaseController
|
||||
}
|
||||
|
||||
$companyId = $feishuApp->company_id;
|
||||
error_log("✅ 找到飞书应用配置: company_id={$companyId}");
|
||||
error_log("✅ 找到飞书应用配置: company_id={$companyId}, feishu_app_id={$feishuApp->id}");
|
||||
|
||||
$feishuService->setCompany($companyId);
|
||||
}
|
||||
@@ -111,8 +111,11 @@ class AuthController extends BaseController
|
||||
return $this->error('未配置飞书应用');
|
||||
}
|
||||
|
||||
error_log("✅ 找到公司配置: company_id={$companyId}");
|
||||
error_log("✅ 找到公司配置: company_id={$companyId}, feishu_app_id={$feishuApp->id}");
|
||||
$feishuService->setCompany($companyId);
|
||||
|
||||
// 设置应用ID
|
||||
$appId = $feishuApp->id;
|
||||
} else {
|
||||
return $this->error('缺少 app_id 或 tenant_key 参数');
|
||||
}
|
||||
@@ -121,15 +124,15 @@ class AuthController extends BaseController
|
||||
$feishuData = $feishuService->getUserInfo($authCode);
|
||||
error_log("👤 获取到用户信息: " . json_encode($feishuData));
|
||||
|
||||
// 创建或更新用户
|
||||
$user = $feishuService->createOrUpdateUser($feishuData, $companyId);
|
||||
// 创建或更新用户(传递应用ID)
|
||||
$user = $feishuService->createOrUpdateUser($feishuData, $companyId, $appId);
|
||||
|
||||
// 生成 JWT Token
|
||||
$token = JwtUtil::encode([
|
||||
'user_id' => $user->id,
|
||||
'company_id' => $user->company_id,
|
||||
'feishu_user_id' => $user->feishu_user_id,
|
||||
'union_id' => $user->feishu_union_id,
|
||||
'union_id' => $user->union_id,
|
||||
]);
|
||||
|
||||
error_log("✅ 登录成功: user_id={$user->id}, company_id={$user->company_id}");
|
||||
@@ -222,6 +225,7 @@ class AuthController extends BaseController
|
||||
$loginSession = \app\model\FeishuLoginSession::create([
|
||||
'company_id' => $companyId,
|
||||
'tenant_key' => $tenantKey,
|
||||
'feishu_app_id' => $feishuApp->id,
|
||||
'status' => 'pending',
|
||||
'expires_at' => date('Y-m-d H:i:s', time() + 300), // 5分钟过期
|
||||
]);
|
||||
@@ -279,7 +283,7 @@ class AuthController extends BaseController
|
||||
'user_id' => $user->id,
|
||||
'company_id' => $user->company_id,
|
||||
'feishu_user_id' => $user->feishu_user_id,
|
||||
'union_id' => $user->feishu_union_id,
|
||||
'union_id' => $user->union_id,
|
||||
]);
|
||||
|
||||
// 清除会话
|
||||
@@ -346,7 +350,7 @@ class AuthController extends BaseController
|
||||
return $this->error('二维码已过期');
|
||||
}
|
||||
|
||||
error_log("🔄 Processing login for company_id: {$session->company_id}");
|
||||
error_log("🔄 Processing login for company_id: {$session->company_id}, feishu_app_id: {$session->feishu_app_id}");
|
||||
|
||||
// 使用 session 的公司信息
|
||||
$feishuService = new \app\service\FeishuService();
|
||||
@@ -356,8 +360,8 @@ class AuthController extends BaseController
|
||||
$feishuData = $feishuService->getUserInfo($authCode);
|
||||
error_log("👤 Got user info: " . json_encode($feishuData));
|
||||
|
||||
// 创建或更新用户
|
||||
$user = $feishuService->createOrUpdateUser($feishuData, $session->company_id);
|
||||
// 创建或更新用户(传递飞书应用ID)
|
||||
$user = $feishuService->createOrUpdateUser($feishuData, $session->company_id, $session->feishu_app_id);
|
||||
error_log("✅ User created/updated: user_id={$user->id}");
|
||||
|
||||
// 更新会话状态
|
||||
@@ -371,7 +375,7 @@ class AuthController extends BaseController
|
||||
'user_id' => $user->id,
|
||||
'company_id' => $user->company_id,
|
||||
'feishu_user_id' => $user->feishu_user_id,
|
||||
'union_id' => $user->feishu_union_id,
|
||||
'union_id' => $user->union_id,
|
||||
]);
|
||||
error_log("🎫 Generated token for user: {$user->id}");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user