#### 关于 Swagger 文档更新流程：

新增接口后更新文档步骤：

在 Controller 方法上添加 Swagger 注解（@Summary、@Param、@Router 等）
在 server 目录运行 swag init 重新生成文档
重启服务器
常用 Swagger 注解说明：

```go
// @Summary      接口简介
// @Description  详细描述
// @Tags         分组标签
// @Accept       json
// @Produce      json
// @Param        name  query/path/body  类型  是否必填  "描述"
// @Success      200  {object}  Response  "成功描述"
// @Failure      400  {object}  Response  "失败描述"
// @Router       /path [get/post/put/delete]
```

#### 批量修改/新增/删除

Mapper 层： | 方法 | 说明 | |------|------| | UpdateFields(id, fields) | 动态字段更新，只更新指定字段 | | BatchCreate(items, batchSize) | 批量插入，分批处理 | | BatchUpdate(items) | 批量更新 (根据主键) | | BatchUpsert(items, updateColumns) | 批量插入或更新 (存在则更新) | | BatchDelete(ids) | 批量删除 |

Service 层： 同样的方法，自动处理 UUID 生成。

使用示例：

```
// 动态字段更新 - 只更新指定字段
service.UpdateFields("xxx-id", map[string]interface{}{
    "school_name": "新名称",
    "plan_num":    100,
})

// 批量插入
items := []entity.SchoolMajor{{...}, {...}}
service.BatchCreate(items)

// 批量插入或更新 (存在则更新指定字段)
service.BatchUpsert(items, []string{"school_name", "plan_num"})

// 批量删除
service.BatchDelete([]string{"id1", "id2", "id3"})
```