|
|
@ -3,6 +3,7 @@ |
|
|
namespace app\api\controller; |
|
|
namespace app\api\controller; |
|
|
|
|
|
|
|
|
use app\service\api\member\MemberService; |
|
|
use app\service\api\member\MemberService; |
|
|
|
|
|
use app\service\api\login\LoginService; |
|
|
use core\base\BaseApiController; |
|
|
use core\base\BaseApiController; |
|
|
use think\facade\View; |
|
|
use think\facade\View; |
|
|
use think\facade\Db; |
|
|
use think\facade\Db; |
|
|
@ -51,17 +52,82 @@ class Dashboard extends BaseApiController |
|
|
*/ |
|
|
*/ |
|
|
private function getUserInfo($token) |
|
|
private function getUserInfo($token) |
|
|
{ |
|
|
{ |
|
|
// TODO: 实现token验证逻辑,这里暂时使用测试数据 |
|
|
try { |
|
|
// 根据教务系统角色使用指南,需要支持市场人员和管理者角色 |
|
|
// 使用 LoginService 验证 token |
|
|
return [ |
|
|
$loginService = new LoginService(); |
|
|
'id' => 7, // 麒麟老师,市场人员 |
|
|
$tokenInfo = $loginService->parsePersonnelToken($token); |
|
|
'name' => '麒麟老师', |
|
|
|
|
|
'role' => 'market_staff', |
|
|
// 根据 token 中的用户信息查询完整的用户数据 |
|
|
'campus_id' => 1, |
|
|
$userId = $tokenInfo['user_id'] ?? $tokenInfo['id'] ?? 0; |
|
|
'dept_id' => 1, |
|
|
|
|
|
'is_manager' => false, |
|
|
if (empty($userId)) { |
|
|
'staff_id' => 7 |
|
|
throw new \Exception('Token 中缺少用户ID信息'); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 查询员工信息 |
|
|
|
|
|
$personnel = Db::table('school_personnel') |
|
|
|
|
|
->where('id', $userId) |
|
|
|
|
|
->where('status', 2) // 状态2表示正常 |
|
|
|
|
|
->where('deleted_at', 0) |
|
|
|
|
|
->find(); |
|
|
|
|
|
|
|
|
|
|
|
if (empty($personnel)) { |
|
|
|
|
|
throw new \Exception('用户不存在或状态异常'); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 查询用户角色和部门信息 |
|
|
|
|
|
$roleInfo = Db::table('school_campus_person_role cpr') |
|
|
|
|
|
->leftJoin('school_departments d', 'cpr.dept_id = d.id') |
|
|
|
|
|
->leftJoin('school_sys_role r', 'cpr.role_id = r.id') |
|
|
|
|
|
->where('cpr.person_id', $userId) |
|
|
|
|
|
->where('cpr.deleted_at', 0) |
|
|
|
|
|
->field('cpr.campus_id, cpr.dept_id, cpr.role_id, d.department_name, r.role_name') |
|
|
|
|
|
->find(); |
|
|
|
|
|
|
|
|
|
|
|
// 判断是否为管理者(校长或总裁) |
|
|
|
|
|
$isManager = false; |
|
|
|
|
|
if ($roleInfo && in_array($roleInfo['dept_id'], [22])) { // 22为总裁部 |
|
|
|
|
|
$isManager = true; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return [ |
|
|
|
|
|
'id' => $personnel['id'], |
|
|
|
|
|
'name' => $personnel['name'] ?: $personnel['real_name'], |
|
|
|
|
|
'role' => $this->getRoleType($roleInfo['dept_id'] ?? 1), |
|
|
|
|
|
'campus_id' => $roleInfo['campus_id'] ?? 1, |
|
|
|
|
|
'dept_id' => $roleInfo['dept_id'] ?? 1, |
|
|
|
|
|
'role_id' => $roleInfo['role_id'] ?? 0, |
|
|
|
|
|
'is_manager' => $isManager, |
|
|
|
|
|
'staff_id' => $personnel['id'], |
|
|
|
|
|
'phone' => $personnel['phone'], |
|
|
|
|
|
'dept_name' => $roleInfo['department_name'] ?? '', |
|
|
|
|
|
'role_name' => $roleInfo['role_name'] ?? '' |
|
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
|
|
} catch (\Exception $e) { |
|
|
|
|
|
// Token 验证失败,抛出异常让上层处理 |
|
|
|
|
|
throw new \Exception('Token 验证失败: ' . $e->getMessage()); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 根据部门ID获取角色类型 |
|
|
|
|
|
*/ |
|
|
|
|
|
private function getRoleType($deptId) |
|
|
|
|
|
{ |
|
|
|
|
|
$roleMap = [ |
|
|
|
|
|
1 => 'market_staff', // 市场部门 |
|
|
|
|
|
2 => 'education_staff', // 教务部门 |
|
|
|
|
|
3 => 'sales_staff', // 销售部门 |
|
|
|
|
|
21 => 'finance_staff', // 财务部门 |
|
|
|
|
|
22 => 'manager', // 总裁部(校长、总裁) |
|
|
|
|
|
24 => 'coach_staff', // 教练部 |
|
|
|
|
|
25 => 'operation_staff', // 运营中心 |
|
|
|
|
|
26 => 'hr_staff', // 人力资源 |
|
|
|
|
|
27 => 'finance_staff' // 财务部 |
|
|
]; |
|
|
]; |
|
|
|
|
|
|
|
|
|
|
|
return $roleMap[$deptId] ?? 'staff'; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
@ -763,7 +829,7 @@ class Dashboard extends BaseApiController |
|
|
|
|
|
|
|
|
$comparison = []; |
|
|
$comparison = []; |
|
|
foreach ($depts as $dept) { |
|
|
foreach ($depts as $dept) { |
|
|
$performance = Db::table('school_order_table') |
|
|
$performance = Db::table('school_order_table o') |
|
|
->join('school_customer_resources r', 'r.id = o.resource_id') |
|
|
->join('school_customer_resources r', 'r.id = o.resource_id') |
|
|
->where('o.campus_id', $campusId) |
|
|
->where('o.campus_id', $campusId) |
|
|
->where('r.consultant', '!=', '') |
|
|
->where('r.consultant', '!=', '') |
|
|
|