获取fdesk对应的用户id
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
namespace app\controller;
|
namespace app\controller;
|
||||||
|
|
||||||
use app\model\User;
|
use app\model\User;
|
||||||
|
use app\model\UserSystemMapping;
|
||||||
use Webman\Http\Request;
|
use Webman\Http\Request;
|
||||||
use Webman\Http\Response;
|
use Webman\Http\Response;
|
||||||
|
|
||||||
@@ -130,4 +131,36 @@ class UserController extends BaseController
|
|||||||
'page_size' => $pageSize,
|
'page_size' => $pageSize,
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取用户在指定系统的映射ID
|
||||||
|
*/
|
||||||
|
public function systemMapping(Request $request): Response
|
||||||
|
{
|
||||||
|
$userId = $this->getUserId($request);
|
||||||
|
$systemCode = $request->get('system', 'fdesk');
|
||||||
|
|
||||||
|
// 获取用户信息以获取公司ID
|
||||||
|
$user = User::find($userId);
|
||||||
|
if (!$user) {
|
||||||
|
return $this->error('用户不存在');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询系统映射
|
||||||
|
$mapping = UserSystemMapping::active()
|
||||||
|
->bySystem($systemCode)
|
||||||
|
->where('user_id', $userId)
|
||||||
|
->where('company_id', $user->company_id)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if (!$mapping) {
|
||||||
|
return $this->error('未找到系统映射信息,请联系管理员配置');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->success([
|
||||||
|
'system_code' => $mapping->system_code,
|
||||||
|
'system_user_id' => $mapping->system_user_id,
|
||||||
|
'system_user_name' => $mapping->system_user_name,
|
||||||
|
]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,89 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace app\model;
|
||||||
|
|
||||||
|
use support\Model;
|
||||||
|
|
||||||
|
class UserSystemMapping extends Model
|
||||||
|
{
|
||||||
|
protected $table = 'user_system_mapping';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 可填充字段
|
||||||
|
*/
|
||||||
|
protected $fillable = [
|
||||||
|
'user_id',
|
||||||
|
'company_id',
|
||||||
|
'system_code',
|
||||||
|
'system_user_id',
|
||||||
|
'system_user_name',
|
||||||
|
'status',
|
||||||
|
];
|
||||||
|
|
||||||
|
protected $casts = [
|
||||||
|
'user_id' => 'integer',
|
||||||
|
'company_id' => 'integer',
|
||||||
|
'status' => 'integer',
|
||||||
|
'created_at' => 'datetime',
|
||||||
|
'updated_at' => 'datetime',
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 关联用户
|
||||||
|
*/
|
||||||
|
public function user()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(User::class, 'user_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 关联公司
|
||||||
|
*/
|
||||||
|
public function company()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(Company::class, 'company_id');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取有效的映射
|
||||||
|
*/
|
||||||
|
public function scopeActive($query)
|
||||||
|
{
|
||||||
|
return $query->where('status', 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据系统代码查找
|
||||||
|
*/
|
||||||
|
public function scopeBySystem($query, string $systemCode)
|
||||||
|
{
|
||||||
|
return $query->where('system_code', $systemCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据公司ID查找
|
||||||
|
*/
|
||||||
|
public function scopeByCompany($query, int $companyId)
|
||||||
|
{
|
||||||
|
return $query->where('company_id', $companyId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据外部系统用户ID查找
|
||||||
|
*/
|
||||||
|
public function scopeBySystemUserId($query, string $systemUserId, string $systemCode = 'fdesk')
|
||||||
|
{
|
||||||
|
return $query->where('system_code', $systemCode)
|
||||||
|
->where('system_user_id', $systemUserId);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取用户在指定系统的映射
|
||||||
|
*/
|
||||||
|
public function scopeUserMapping($query, int $userId, int $companyId, string $systemCode = 'fdesk')
|
||||||
|
{
|
||||||
|
return $query->where('user_id', $userId)
|
||||||
|
->where('company_id', $companyId)
|
||||||
|
->where('system_code', $systemCode);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -36,6 +36,7 @@ Route::group('/api/v1/user', function () {
|
|||||||
Route::get('/menu', [app\controller\UserController::class, 'menu']);
|
Route::get('/menu', [app\controller\UserController::class, 'menu']);
|
||||||
Route::get('/companies', [app\controller\UserController::class, 'companies']);
|
Route::get('/companies', [app\controller\UserController::class, 'companies']);
|
||||||
Route::get('/list', [app\controller\UserController::class, 'list']);
|
Route::get('/list', [app\controller\UserController::class, 'list']);
|
||||||
|
Route::get('/system-mapping', [app\controller\UserController::class, 'systemMapping']);
|
||||||
Route::post('/switch-company', [app\controller\UserController::class, 'switchCompany']);
|
Route::post('/switch-company', [app\controller\UserController::class, 'switchCompany']);
|
||||||
Route::post('/change-password', [app\controller\UserController::class, 'changePassword']);
|
Route::post('/change-password', [app\controller\UserController::class, 'changePassword']);
|
||||||
})->middleware($authMiddleware);
|
})->middleware($authMiddleware);
|
||||||
|
|||||||
+35
-5
@@ -1,8 +1,8 @@
|
|||||||
# 数据库结构文档
|
# 数据库结构文档
|
||||||
|
|
||||||
**版本**: 1.1.0
|
**版本**: 1.1.1
|
||||||
**更新时间**: 2026-03-01
|
**更新时间**: 2026-03-03
|
||||||
**状态**: 线上稳定版本
|
**状态**: 开发中
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -358,6 +358,34 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### 15. user_system_mapping - 用户系统映射表
|
||||||
|
|
||||||
|
用于将本项目用户ID映射到外部系统(如fdesk、ERP、CRM等)的用户ID。
|
||||||
|
|
||||||
|
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|
||||||
|
|------|------|------|--------|------|
|
||||||
|
| id | bigint unsigned | ✓ | AUTO_INCREMENT | 记录ID |
|
||||||
|
| user_id | bigint unsigned | ✓ | | 本项目用户ID |
|
||||||
|
| company_id | bigint unsigned | ✓ | | 公司ID |
|
||||||
|
| system_code | varchar(50) | ✓ | fdesk | 系统代码(如:fdesk, erp, crm) |
|
||||||
|
| system_user_id | varchar(100) | ✓ | | 外部系统用户ID |
|
||||||
|
| system_user_name | varchar(100) | | | 外部系统用户名(冗余字段) |
|
||||||
|
| status | tinyint | ✓ | 1 | 状态:1=有效,0=无效 |
|
||||||
|
| created_at | timestamp | ✓ | CURRENT_TIMESTAMP | 创建时间 |
|
||||||
|
| updated_at | timestamp | ✓ | CURRENT_TIMESTAMP | 更新时间 |
|
||||||
|
|
||||||
|
**索引**:
|
||||||
|
- PRIMARY KEY (`id`)
|
||||||
|
- UNIQUE KEY `uk_user_company_system` (`user_id`, `company_id`, `system_code`)
|
||||||
|
- KEY `idx_system_user_id` (`system_code`, `system_user_id`)
|
||||||
|
- KEY `idx_company_id` (`company_id`)
|
||||||
|
|
||||||
|
**说明**:
|
||||||
|
- 同一用户在同一公司下对应一个外部系统只能有一条记录
|
||||||
|
- 支持多个外部系统的映射关系
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 📊 表关系图
|
## 📊 表关系图
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -368,6 +396,8 @@ users (1) ----< (N) user_feishu_apps
|
|||||||
+----> companies (1) ----< (N) company_feishu_apps
|
+----> companies (1) ----< (N) company_feishu_apps
|
||||||
|
|
|
|
||||||
+----> user_sn (N)
|
+----> user_sn (N)
|
||||||
|
|
|
||||||
|
+----> user_system_mapping (N)
|
||||||
|
|
||||||
users (1) ----< (N) business_trip
|
users (1) ----< (N) business_trip
|
||||||
| |
|
| |
|
||||||
@@ -419,5 +449,5 @@ users (1) ----< (N) business_trip
|
|||||||
---
|
---
|
||||||
|
|
||||||
**维护人**: 开发团队
|
**维护人**: 开发团队
|
||||||
**最后更新**: 2026-03-01
|
**最后更新**: 2026-03-03
|
||||||
**版本**: 1.1.0 (线上稳定版)
|
**版本**: 1.1.1
|
||||||
|
|||||||
Reference in New Issue
Block a user