Skip to content

6.6 岗位管理 ​

概述

岗位管理维护用户的岗位属性数据。继承 BaseTenantLogic 实现租户隔离,是典型的零自定义方法模块——全部能力由属性配置自动装配。

模块特点 ​

特性说明
基类BaseTenantLogic(租户隔离)
唯一校验name 全局唯一
枚举映射status → position_status 字典(1=在用 2=停用)
自定义方法无(全部由基类自动装配)

数据库表结构 ​

sql
CREATE TABLE `think_position` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `name` varchar(255) NOT NULL COMMENT '岗位名称',
  `status` int DEFAULT 0 COMMENT '岗位状态:1-在用 2-停用',
  `sort` int DEFAULT 0 COMMENT '岗位排序',
  `create_user` varchar(50) DEFAULT NULL COMMENT '创建人',
  `create_time` datetime DEFAULT (now()) COMMENT '创建时间',
  `update_user` varchar(50) DEFAULT NULL COMMENT '更新人',
  `update_time` datetime DEFAULT (now()) COMMENT '更新时间',
  `is_delete` int DEFAULT 0 COMMENT '删除标识:0-正常 1-已删除',
  PRIMARY KEY (`id`)
) COMMENT = '岗位表';

API 接口 ​

方法路径权限码说明
GET/api/position/pagesys:position:page分页列表
GET/api/position/listsys:position:list全量列表
GET/api/position/detail/:idsys:position:detail详情
POST/api/position/addsys:position:add新增
PUT/api/position/updatesys:position:update修改
DELETE/api/position/delete/:idsys:position:delete删除
DELETE/api/position/batchDeletesys:position:batchDelete批量删除

核心代码 ​

php
// app/logic/PositionLogic.php

class PositionLogic extends BaseTenantLogic
{
    /**
     * 关联的模型类
     *
     * @var string
     */
    protected string $modelClass = Position::class;

    /**
     * LIKE 模糊匹配字段
     *
     * @var array
     */
    protected array $pageLikeFields = ['name'];

    /**
     * 精确匹配字段
     *
     * @var array
     */
    protected array $pageEqFields = ['status'];

    /**
     * 默认排序规则
     *
     * @var array
     */
    protected array $pageOrderBy = [
        ['field' => 'tenant_id', 'type' => 'asc'],
        ['field' => 'sort', 'type' => 'asc'],
    ];

    /**
     * 唯一性校验字段
     *
     * @var array
     */
    protected array $uniqueFields = ['name'];

    /**
     * 枚举显示名映射
     *
     * @var array
     */
    protected array $serializeMaps = [
        'status' => 'position_status',
    ];
}

Controller 代码 ​

php
// app/controller/PositionController.php

class PositionController extends BaseController
{
    protected PositionLogic $logic;

    protected function initialize(): void
    {
        $this->logic = new PositionLogic();
    }

    #[Log('岗位管理-查询分页记录', Log::TYPE_QUERY)]
    #[Permission('sys:position:page', '岗位分页')]
    public function page(): Json
    {
        return parent::_index($this->logic);
    }

    #[Log('岗位管理-查询全量列表', Log::TYPE_QUERY)]
    public function list(): Json
    {
        return parent::_list($this->logic);
    }

    #[Log('岗位管理-查询详情', Log::TYPE_QUERY, '查询岗位ID:{id}')]
    public function detail(int $id): Json
    {
        return parent::_detail($this->logic, $id);
    }

    #[Log('岗位管理-新增记录', Log::TYPE_ADD, '新增岗位:{name}')]
    #[Permission('sys:position:add', '添加岗位')]
    public function add(): Json
    {
        return parent::_add($this->logic, $this->getJsonBody());
    }

    #[Log('岗位管理-修改记录', Log::TYPE_UPDATE, '修改岗位ID:{id}')]
    #[Permission('sys:position:update', '修改岗位')]
    public function update(): Json
    {
        $data = $this->getJsonBody();
        $id = $data['id'] ?? 0;
        if (empty($id)) return $this->fail('缺少id参数');
        return parent::_edit($this->logic, $id, $data);
    }

    #[Log('岗位管理-删除记录', Log::TYPE_DELETE, '删除岗位ID:{id}')]
    #[Permission('sys:position:delete', '删除岗位')]
    public function delete(int $id): Json
    {
        return parent::_remove($this->logic, $id);
    }

    #[Log('岗位管理-批量删除', Log::TYPE_DELETE)]
    #[Permission('sys:position:delete', '删除岗位')]
    public function batchDelete(): Json
    {
        $ids = $this->getJsonBody()['ids'] ?? [];
        return parent::_batchRemove($this->logic, $ids);
    }
}

极简 CRUD

岗位模块是"零自定义方法"的典型示例——Logic 类只声明属性配置,Controller 调用父类通用方法,无需编写任何业务代码,即可获得完整的增删改查、分页、唯一性校验、枚举翻译能力。

小蚂蚁云团队 · 提供技术支持