# Kylin Dictionary

Kylin 数据字典包 — 字典类型和字典项 CRUD、缓存、API 接口。

## 功能特性

- **字典类型管理**：管理字典分类（如：性别、状态、地区类型）
- **字典项管理**：管理字典值（如：男/女、启用/禁用）
- **缓存优化**：字典数据自动缓存，更新时自动失效
- **树形结构**：支持父子级字典（如：地区省市区）
- **API 接口**：前端下拉框数据源
- **多租户**：支持租户独立字典数据

## 安装

```bash
composer require kylin/dictionary
php artisan vendor:publish --tag=kylin-dictionary-config
php artisan vendor:publish --tag=kylin-dictionary-migrations
php artisan migrate
```

## 配置说明

```php
// config/kylin-dictionary.php
return [
    'cache' => [
        'enabled' => true,           // 启用缓存
        'ttl' => 86400,              // 缓存时间（秒，默认 24 小时）
        'prefix' => 'kylin_dict_',   // 缓存键前缀
    ],
    'multi_tenant' => true,          // 多租户支持
];
```

## 使用示例

### Facade

```php
use Kylin\Dictionary\Facades\KylinDictionary;

// 获取字典项
$genders = KylinDictionary::getItems('gender');
// ['male' => '男', 'female' => '女']

// 获取单个值
$label = KylinDictionary::getLabel('gender', 'male'); // '男'

// 创建字典类型
KylinDictionary::createType('status', '状态', '系统状态字典');

// 添加字典项
KylinDictionary::addItem('status', 'active', '启用', 1);
KylinDictionary::addItem('status', 'disabled', '禁用', 2);
```

### Model

```php
use Kylin\Dictionary\Models\DictionaryType;
use Kylin\Dictionary\Models\DictionaryItem;

// 获取字典类型
$type = DictionaryType::where('code', 'gender')->first();

// 获取该类型下的所有字典项
$items = $type->items;
// 或
$items = DictionaryItem::where('type_id', $type->id)->orderBy('sort')->get();
```

### API 路由

| 方法 | 路径 | 说明 |
|------|------|------|
| GET | /api/kylin/dictionary/types | 字典类型列表 |
| GET | /api/kylin/dictionary/types/{code} | 字典类型详情 |
| GET | /api/kylin/dictionary/items/{typeCode} | 获取字典项（用于下拉框） |
| POST | /api/kylin/dictionary/types | 创建字典类型 |
| PUT | /api/kylin/dictionary/types/{code} | 更新字典类型 |
| DELETE | /api/kylin/dictionary/types/{code} | 删除字典类型 |
| POST | /api/kylin/dictionary/items | 创建字典项 |
| PUT | /api/kylin/dictionary/items/{id} | 更新字典项 |
| DELETE | /api/kylin/dictionary/items/{id} | 删除字典项 |

## 数据库表

| 表名 | 说明 |
|------|------|
| `kc_dictionary_types` | 字典类型表 |
| `kc_dictionary_items` | 字典项表（外键关联 type_id） |

## 法律合规

详见 [LEGAL.md](./LEGAL.md)，涵盖：
- 《中华人民共和国数据安全法》(2021.9.1)
- 《中华人民共和国个人信息保护法》(2021.11.1)
- 等保 2.0 (GB/T 22239-2019) — 访问控制、安全审计
- 《中华人民共和国标准化法》(2018.1.1 修订)

## 依赖

- PHP ^8.5
- Laravel ^13.0
- kylin/core

## 许可证

私有软件，未经授权禁止使用。