diff --git a/Server/application/api/controller/AccountController.php b/Server/application/api/controller/AccountController.php index 1f1203f5..35bb5562 100644 --- a/Server/application/api/controller/AccountController.php +++ b/Server/application/api/controller/AccountController.php @@ -108,10 +108,7 @@ class AccountController extends BaseController if (empty($password)) { return errorJson('密码不能为空'); } - $passwordValidation = validateString($password, 'password'); - if (!$passwordValidation['status']) { - return errorJson($passwordValidation['message']); - } + if (empty($realName)) { return errorJson('真实姓名不能为空'); } diff --git a/Server/application/superadmin/config/route.php b/Server/application/superadmin/config/route.php index d1adbc4f..fa544508 100644 --- a/Server/application/superadmin/config/route.php +++ b/Server/application/superadmin/config/route.php @@ -35,7 +35,7 @@ Route::group('', function () { // 公司路由 Route::group('company', function () { - Route::post('create', 'app\superadmin\controller\company\CreateCompanyController@index'); + Route::post('add', 'app\superadmin\controller\company\CreateCompanyController@index'); Route::post('update', 'app\superadmin\controller\company\UpdateCompanyController@index'); Route::post('delete', 'app\superadmin\controller\company\DeleteCompanyController@index'); Route::get('list', 'app\superadmin\controller\company\GetCompanyListController@index'); diff --git a/Server/application/superadmin/controller/company/CreateCompanyController.php b/Server/application/superadmin/controller/company/CreateCompanyController.php index 52c02705..2c623a4a 100644 --- a/Server/application/superadmin/controller/company/CreateCompanyController.php +++ b/Server/application/superadmin/controller/company/CreateCompanyController.php @@ -17,13 +17,39 @@ use think\Validate; */ class CreateCompanyController extends BaseController { + /** + * S2 创建用户。 + * + * @param array $params + * @return mixed|null + * @throws \Exception + */ + protected function s2CreateUser(array $params): ?array + { + $params = ArrHelper::getValue('account=userName,password,username=realName,username=nickname,companyId=departmentId', $params); + + // 创建账号 + $response = CurlHandle::getInstant() + ->setBaseUrl(Env::get('rpc.API_BASE_URL')) + ->setMethod('post') + ->send('/v1/api/account/create', $params); + + $result = json_decode($response, true); + + if ($result['code'] != 200) { + throw new \Exception($result['msg'], 210 . $result['code']); + } + + return $result['data'] ?: null; + } + /** * S2 创建部门并返回id * * @param array $params * @return array */ - protected function s2CreateDepartment(array $params): ?array + protected function s2CreateDepartmentAndUser(array $params): ?array { $params = ArrHelper::getValue('name=departmentName,memo=departmentMemo,account=accountName,password=accountPassword,username=accountRealName,username=accountNickname,accountMemo', $params); @@ -88,7 +114,7 @@ class CreateCompanyController extends BaseController */ protected function creatS2About(array $params): array { - $department = $this->s2CreateDepartment($params); + $department = $this->s2CreateDepartmentAndUser($params); if (!$department || !isset($department['id']) || !isset($department['departmentId'])) { throw new \Exception('S2返参异常', 210402); @@ -117,6 +143,26 @@ class CreateCompanyController extends BaseController } } + /** + * 创建功能账号,不可登录,也非管理员,用户也不可见. + * + * @param array $params + * @return void + * @throws \Exception + */ + protected function createFuncUsers(array $params): void + { + $seedCols = [ + ['account' => $params['account'] . '_offline', 'username' => '处理离线专用', 'status' => 0, 'isAdmin' => 0, 'typeId' => -1], + ['account' => $params['account'] . '_delete' , 'username' => '处理删除专用', 'status' => 0, 'isAdmin' => 0, 'typeId' => -1], + ]; + + foreach ($seedCols as $seeds) { + $this->s2CreateUser (array_merge($params, ArrHelper::getValue('account,username', $seeds))); + $this->ckbCreateUser(array_merge($params, $seeds)); + } + } + /** * 存客宝创建账号 * @@ -126,19 +172,14 @@ class CreateCompanyController extends BaseController */ protected function ckbCreateUser(array $params): void { - $params = ArrHelper::getValue( - 'username,account,password,companyId,s2_accountId,status,phone', - $params - ); + $params = ArrHelper::getValue('username,account,password,companyId,s2_accountId,status,phone,isAdmin,typeId', $params); - $result = UsersModel::create(array_merge($params, [ + $params = array_merge($params, [ 'passwordLocal' => localEncrypt($params['password']), - 'passwordMd5' => md5($params['password']), - 'isAdmin' => 1, // 主要账号默认1 - 'typeId' => 1, // 类型:运营后台/操盘手传1、 门店传2 - ])); + 'passwordMd5' => md5($params['password']), + ]); - if (!$result) { + if (!UsersModel::create($params)) { throw new \Exception('创建用户记录失败', 402); } } @@ -154,7 +195,10 @@ class CreateCompanyController extends BaseController $this->ckbCreateCompany($params); // 2. 存客宝创建操盘手总账号 - $this->ckbCreateUser($params); + $this->ckbCreateUser(array_merge($params, [ + 'isAdmin' => 1, // 主要账号默认1 + 'typeId' => 1, // 类型:运营后台/操盘手传1、 门店传2 + ])); } /** @@ -199,9 +243,13 @@ class CreateCompanyController extends BaseController $params = $this->dataValidate($params)->creatS2About($params); Db::startTrans(); + $this->checkCompanyNameOrAccountOrPhoneExists(ArrHelper::getValue('name,account,phone', $params)); $this->createCkbAbout($params); + // 创建功能账号,不可登录,也非管理员,用户也不可见 + $this->createFuncUsers($params); + Db::commit(); return ResponseHelper::success(); } catch (\Exception $e) { diff --git a/Server/application/superadmin/controller/company/GetCompanyDetailForUpdateController.php b/Server/application/superadmin/controller/company/GetCompanyDetailForUpdateController.php index 9ca5bc67..5a03f582 100644 --- a/Server/application/superadmin/controller/company/GetCompanyDetailForUpdateController.php +++ b/Server/application/superadmin/controller/company/GetCompanyDetailForUpdateController.php @@ -22,7 +22,7 @@ class GetCompanyDetailForUpdateController extends BaseController { return DeviceModel::alias('d') ->field([ - 'd.id', 'd.memo', + 'd.id', 'd.memo', 'd.model', 'd.brand', 'd.phone', 'd.imei', 'd.createTime', 'd.alive', ]) ->where('companyId', $companyId) ->select() diff --git a/SuperAdmin/app/dashboard/projects/[id]/edit/page.tsx b/SuperAdmin/app/dashboard/projects/[id]/edit/page.tsx index 9c7f266e..b1413ab7 100644 --- a/SuperAdmin/app/dashboard/projects/[id]/edit/page.tsx +++ b/SuperAdmin/app/dashboard/projects/[id]/edit/page.tsx @@ -23,6 +23,12 @@ declare module 'react' { interface Device { id: number memo: string + imei: string + phone: string + model: string + brand: string + alive: number + createTime: number } interface Project { @@ -264,14 +270,40 @@ export default function EditProjectPage({ params }: { params: { id: string } })
| 设备名称 | +IMEI | +手机号 | +型号 | +品牌 | +状态 | +添加时间 | +
|---|---|---|---|---|---|---|
| {device.memo} | +{device.imei || '-'} | +{device.phone || '-'} | +{device.model || '-'} | +{device.brand || '-'} | ++ + {device.alive === 1 ? '在线' : '离线'} + + | +{device.createTime || '-'} | +