106 lines
3.1 KiB
PHP
106 lines
3.1 KiB
PHP
<?php
|
|
|
|
namespace app\admin\service;
|
|
|
|
use app\common\model\User as UserModel;
|
|
|
|
class AccountService
|
|
{
|
|
|
|
/* 查询所有用户 */
|
|
public function getAllUsers()
|
|
{
|
|
$users = UserModel::with('company')->select();
|
|
return $users->map(function ($user) {
|
|
$companyName = $user->role === 'client' && (bool) $user->can_view_all_tickets
|
|
? '全部客户'
|
|
: ($user->company->company_name ?? '');
|
|
|
|
return [
|
|
'id' => $user->id,
|
|
'company' => [
|
|
'id' => $user->company_id,
|
|
'company_name' => $companyName
|
|
],
|
|
'username' => $user->username,
|
|
'real_name' => $user->real_name,
|
|
'role' => $user->role,
|
|
'can_view_all_tickets' => (bool) $user->can_view_all_tickets,
|
|
'status' => $user->status,
|
|
];
|
|
})->toArray();
|
|
}
|
|
|
|
/* 注册账户 */
|
|
public function createAccount($data)
|
|
{
|
|
if (empty($data['real_name'])) {
|
|
$data['real_name'] = $data['username'];
|
|
}
|
|
|
|
# 检查数据库中是否有相同用户名账户
|
|
$exist = UserModel::where('username', $data['username'])->find();
|
|
|
|
if ($exist) {
|
|
throw new \Exception('用户名已存在');
|
|
}
|
|
|
|
$role = $data['role'] ?? 'user';
|
|
$companyId = (int) ($data['company_id'] ?? 0);
|
|
$canViewAllTickets = $role === 'client' && !empty($data['can_view_all_tickets']);
|
|
|
|
// 系统中只允许存在一个可查看全部工单的客户汇总账号。
|
|
if ($canViewAllTickets) {
|
|
$allAccessClient = UserModel::where('role', 'client')
|
|
->where('can_view_all_tickets', 1)
|
|
->find();
|
|
if ($allAccessClient) {
|
|
throw new \Exception('已存在可查看全部工单的客户账号');
|
|
}
|
|
}
|
|
|
|
$insertData = [
|
|
'company_id' => $companyId,
|
|
'username' => $data['username'],
|
|
'real_name' => $data['real_name'] ?? $data['username'],
|
|
'password' => password_hash('123456', PASSWORD_DEFAULT),
|
|
'role' => $role,
|
|
'can_view_all_tickets' => $canViewAllTickets ? 1 : 0,
|
|
'status' => 1,
|
|
];
|
|
|
|
$user = UserModel::create($insertData);
|
|
|
|
/** @var \think\Model $user */
|
|
return $user->visible(['id', 'username', 'real_name', 'role', 'can_view_all_tickets', 'status'])->toArray();
|
|
}
|
|
|
|
/* 更新用户状态 */
|
|
public function updateAccountStatus($id, $status)
|
|
{
|
|
$user = UserModel::find($id);
|
|
if (!$user) {
|
|
throw new \Exception('用户不存在');
|
|
}
|
|
|
|
$user->status = $status;
|
|
$user->save();
|
|
|
|
return $user->visible(['id', 'username', 'real_name', 'role', 'status'])->toArray();
|
|
}
|
|
|
|
|
|
/* 删除用户 */
|
|
public function deleteAccount($id)
|
|
{
|
|
$user = UserModel::find($id);
|
|
if (!$user) {
|
|
throw new \Exception('用户不存在');
|
|
}
|
|
|
|
$user->delete();
|
|
|
|
return ['id' => $id];
|
|
}
|
|
}
|