增加部门管理接口
Some checks failed
Build Docker / build (push) Has been cancelled

This commit is contained in:
2025-07-14 14:37:32 +08:00
parent 58c8eecf88
commit 0567eda8ca
7 changed files with 339 additions and 1 deletions

View File

@ -0,0 +1,128 @@
<?php
/**
* Author: ykxiao
* Date: 2025/7/14
* Time: 下午1:59
* Description:
*
* (c) ykxiao <yk_9001@hotmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
declare(strict_types=1);
namespace App\Controller;
use App\JsonRpc\DeptServiceInterface;
use App\Request\DeptRequest;
use Exception;
use Hyperf\Di\Annotation\Inject;
use Hyperf\HttpMessage\Server\Response;
use Hyperf\Validation\Annotation\Scene;
class DeptController extends AbstractController
{
#[Inject]
protected DeptServiceInterface $deptServiceInterface;
/**
* 增加部门.
*/
#[Scene(scene: 'addDept', argument: 'request')]
public function addDept(DeptRequest $request): Response
{
// 微服务接口
$params = $request->all();
$params['token'] = $this->token();
$rpcDept = $this->deptServiceInterface->addDept($params);
if (empty($rpcDept['result'])) {
return $this->apiResponse->error($rpcDept['message']);
}
$deptInfo = $rpcDept['result'];
$this->opLogs('[添加部门]' . $deptInfo['name'] ?? '');
return $this->apiResponse->success($deptInfo);
}
/**
* 部门列表.
* @return Response
* @throws Exception
*/
public function deptList(): Response
{
$params = $this->request->all();
$params['token'] = $this->token();
$rpcDept = $this->deptServiceInterface->deptList($params);
if (empty($rpcDept['result'])) {
return $this->apiResponse->error($rpcDept['message']);
}
return $this->apiResponse->success($rpcDept['result']);
}
/**
* 删除部门.
*/
#[Scene(scene: 'delDept', argument: 'request')]
public function delDept(DeptRequest $request): Response
{
$params = $request->all();
$params['token'] = $this->token();
$rpcDept = $this->deptServiceInterface->delDept($params);
if (empty($rpcDept['result'])) {
return $this->apiResponse->error($rpcDept['message']);
}
$this->opLogs('[删除部门]' . $rpcDept['result']['dept_name'] ?? '');
return $this->apiResponse->success();
}
/**
* 获取部门.
*/
public function getDeptInfo(): Response
{
$params = $this->request->all();
$params['token'] = $this->token();
$rpcDept = $this->deptServiceInterface->getDeptInfo($params);
if (empty($rpcDept['result'])) {
return $this->apiResponse->error($rpcDept['message']);
}
return $this->apiResponse->success($rpcDept['result']);
}
/**
* 部门活动列表.
*/
public function deptListActive(): Response
{
$params = $this->request->all();
$params['token'] = $this->token();
$rpcDept = $this->deptServiceInterface->getActiveDeptList($params);
if (empty($rpcDept['result'])) {
return $this->apiResponse->error($rpcDept['message']);
}
return $this->apiResponse->success($rpcDept['result']);
}
/**
* 更新部门状态.
* @return Response
*/
public function updateDeptStatus(): Response
{
$params = $this->request->all();
$params['token'] = $this->token();
$rpcDept = $this->deptServiceInterface->updateDeptStatus($params);
if (empty($rpcDept['result'])) {
return $this->apiResponse->error($rpcDept['message']);
}
$this->opLogs('[部门状态更新]' . $rpcDept['result']['name']);
return $this->apiResponse->success($rpcDept['result']);
}
}

View File

@ -0,0 +1,77 @@
<?php
/**
* Author: ykxiao
* Date: 2025/7/14
* Time: 下午2:04
* Description:
*
* (c) ykxiao <yk_9001@hotmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
declare(strict_types=1);
namespace App\JsonRpc;
use Hyperf\Di\Annotation\Inject;
use Hyperf\RpcClient\AbstractServiceClient;
class DeptServiceConsumer extends AbstractServiceClient implements DeptServiceInterface
{
#[Inject]
protected DeptServiceInterface $deptServiceInterface;
protected string $serviceName = 'DeptService';
protected string $protocol = 'jsonrpc-http';
/**
* @inheritDoc
*/
public function addDept(array $data): array
{
return $this->__request(__FUNCTION__, compact('data'));
}
/**
* @inheritDoc
*/
public function delDept(array $params): array
{
return $this->__request(__FUNCTION__, compact('params'));
}
/**
* @inheritDoc
*/
public function getDeptInfo(array $params = []): array
{
return $this->__request(__FUNCTION__, compact('params'));
}
/**
* @inheritDoc
*/
public function deptList(array $params = []): array
{
return $this->__request(__FUNCTION__, compact('params'));
}
/**
* @inheritDoc
*/
public function getActiveDeptList(array $params = []): array
{
return $this->__request(__FUNCTION__, compact('params'));
}
/**
* @inheritDoc
*/
public function updateDeptStatus(array $data): array
{
return $this->__request(__FUNCTION__, compact('data'));
}
}

View File

@ -0,0 +1,61 @@
<?php
/**
* Author: ykxiao
* Date: 2025/7/14
* Time: 下午2:04
* Description:
*
* (c) ykxiao <yk_9001@hotmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
declare(strict_types=1);
namespace App\JsonRpc;
interface DeptServiceInterface
{
/**
* @Desc 新增部门
* @param array $data
* @return array
*/
public function addDept(array $data): array;
/**
* @Desc 删除部门
* @param array $params
* @return array
*/
public function delDept(array $params): array;
/**
* @Desc 获取部门信息
* @param array $params
* @return array
*/
public function getDeptInfo(array $params = []): array;
/**
* @Desc 获取部门列表
* @param array $params
* @return array
*/
public function deptList(array $params = []): array;
/**
* @Desc 获取活动的部门列表
* @param array $params
* @return array
*/
public function getActiveDeptList(array $params = []): array;
/**
* @Desc 修改部门状态
* @param array $data
* @return array
*/
public function updateDeptStatus(array $data): array;
}

View File

@ -0,0 +1,58 @@
<?php
/**
* Author: ykxiao
* Date: 2025/7/14
* Time: 下午2:16
* Description:
*
* (c) ykxiao <yk_9001@hotmail.com>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
declare(strict_types=1);
namespace App\Request;
class DeptRequest extends AbstractRequest
{
public array $scenes = [
'addDept' => ['name', 'active_status', 'remark'],
'updateDept' => ['id', 'name', 'active_status', 'remark'],
'delDept' => ['ids'],
];
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
return [
'id' => 'required|integer|min:1',
'ids' => 'required|array|min:1',
'ids.*' => 'required|integer|min:1',
'name' => 'required|string|max:45',
'remark' => 'string|max:255',
];
}
public function attributes(): array
{
return [
'name' => '部门名称',
'remark' => '备注',
'id' => '记录ID',
'ids' => '记录ID列表',
'ids.*' => '记录ID',
];
}
}