包含以下模块: - antdv-next-admin: Vue 3 + TypeScript + Ant Design Vue 管理后台 - 设备/许可证/配件/耗材 CRUD 管理页面 - 基础数据管理 (分类/位置/制造商/型号/供应商) - 业务管理 (故障报修/盘点/资产分配/资产申请/交易记录) - 下拉选项改造 (ID输入框 → 搜索下拉选择) - 资产状态字典化 (接入sys_dict系统) - 界面文案优化 (设备→资产, 在库/在用/维修中/已报废) - 修复 console 警告 (popupClassName, 重复组件注册) - our-itam: Java Spring Boot + magic-api 后端服务 - fantastic-admin: 前端底层框架 (pnpm monorepo) - ciyo-itasset: CIYO 资产模块 - magic-script-skill: Claude Code skill 定义 - .claude: 对话历史记录 Co-Authored-By: Claude Code <noreply@anthropic.com>
6.2 KiB
6.2 KiB
| name | description |
|---|---|
| magic-script | magic-api 框架接口开发助手,提供 magic-script 脚本编写指导、DB/HTTP 模块使用及语法纠错;当用户需要在 magic-api 中编写接口脚本、调试脚本或排查脚本错误时使用 |
Magic-Script 脚本开发助手
Magic-API 是一个基于 Java 的接口快速开发框架,支持通过 magic-script 脚本语言编写接口。magic-script 是一种基于 Mozilla Rhino 的脚本语言,语法类似 JavaScript,专为接口开发优化。
说明:本 Skill 同时兼容以下称呼方式:
- magic-api / magicapi(框架名称)
- magic-script / MagicScript / magicscript(脚本语言名称) 无论用户使用哪种称呼,都指代同一套技术栈。
任务目标
- 本 Skill 用于:为 magic-api/magicapi 框架提供 magic-script/MagicScript 脚本编写的完整指导
- 能力包含:magic-script 语法参考、内置模块(db、http 等)使用方法、接口开发示例和脚本故障排查
- 触发条件:用户需要在 magic-api/magicapi 中编写接口脚本、调试 magic-script/MagicScript 代码或解决脚本执行错误时使用
操作步骤
- 标准流程:确认场景 → 阅读 SKILL.md → 查阅 references/ 文档 → 编写脚本
- 可选分支:遇到脚本错误 → 查阅 faq 相关文档
使用示例
示例1:快速查询接口
// GET /api/user/list 分页查询
return db.table('sys_user')
.column('id', 'userId')
.column('name', 'userName')
.where()
.eq('status', 1)
.page(page, size);
示例2:带参数的增删改查
// POST /api/user/save 新增用户
assert not_blank(body.name) : 400, '用户名不能为空';
var userId = db.table('sys_user')
.column('name', body.name)
.column('create_time', now())
.insert();
return {code: 200, data: {id: userId}};
示例3:调用外部接口
import http;
var result = http.connect('https://api.example.com/data')
.param({key: 'value'})
.header('Authorization', 'Bearer xxx')
.post()
.getBody();
return result;
资源索引
语法类
| 文件 | 说明 |
|---|---|
references/keywords.md |
关键字、运算符、数据类型 |
references/script-syntax.md |
脚本语法详解 |
references/lambda-async.md |
Lambda表达式与异步调用 |
函数扩展
| 文件 | 说明 |
|---|---|
references/aggregation.md |
聚合函数(count/sum/max/min/avg/group_concat) |
references/string-functions.md |
字符串函数(uuid/is_blank/not_blank) |
references/date-functions.md |
日期函数(date_format/now/current_timestamp_millis/current_timestamp) |
references/number-extensions.md |
Number扩展与数学函数 |
references/collection-extensions.md |
列表与Map扩展 |
references/date-extensions.md |
日期扩展 |
references/array-functions.md |
数组创建函数 |
references/math-functions.md |
数学函数(round/floor/ceil/percent) |
references/other-functions.md |
其它函数(print/println/ifnull/is_null/not_null) |
references/object-extensions.md |
Object扩展方法 |
references/class-extensions.md |
Class扩展方法 |
references/pattern-extensions.md |
Pattern扩展方法 |
数据库
| 文件 | 说明 |
|---|---|
references/db-query.md |
数据库查询(select/selectOne/selectInt/selectValue) |
references/db-update.md |
数据库增删改(insert/update/batchUpdate/call) |
references/db-transaction.md |
事务操作 |
references/db-cache.md |
缓存操作(cache/deleteCache) |
references/single-table.md |
单表操作(db.table链式API) |
references/sql-param.md |
SQL参数(#{}、${}、动态SQL、Mybatis语法) |
references/page.md |
分页查询 |
模块
| 文件 | 说明 |
|---|---|
references/http-module.md |
HTTP模块调用外部接口 |
references/request-module.md |
Request模块获取请求信息 |
references/response-module.md |
Response模块设置响应 |
references/log-module.md |
日志模块 |
references/env-module.md |
环境配置模块 |
references/magic-module.md |
Magic模块(调用其他接口) |
集成
| 文件 | 说明 |
|---|---|
references/java-integration.md |
脚本调用Java |
references/api-integration.md |
Java调用接口 |
示例
| 文件 | 说明 |
|---|---|
references/quick-start.md |
快速入门(工程创建、三分钟写接口) |
references/quick-param.md |
请求参数获取 |
references/quick-crud.md |
CRUD操作示例 |
references/linq.md |
Lambda/LINQ操作示例 |
FAQ
| 文件 | 说明 |
|---|---|
references/faq.md |
常见问题 |
references/validate.md |
参数校验 |
注意事项
-
语法限制:magic-script 不支持 ES6 默认参数语法
excludeValue = null,需用if (excludeValue === undefined)判断;不支持new Set(),需用数组替代 -
数组方法:不支持传统
for循环,需用for (value in list)或for (index, value in list);注意 Collection 扩展提供了reduce方法用于归约操作 -
方法命名:遍历集合用
each而不是forEach;获取长度用size()而不是length;判断Map键用containsKey()而不是hasOwnProperty() -
SQL参数:
#{}防注入占位符用于普通参数,${}字符串拼接用于动态表名/列名/排序字段(存在注入风险) -
类型转换:
::type语法用于类型转换,如'123'::int,转换失败可指定默认值'abc'::int(0) -
获取请求参数:
- URL参数:直接使用变量名
name - 表单参数:直接使用变量名
name - Header参数:
header.xxx - Body参数:
body.xxx - Path参数:
path.xxx或直接使用变量名 - Cookie参数:
cookie.xxx - Session参数:
session.xxx
- URL参数:直接使用变量名
-
循环拼接参数:
in (#{ids})语法会自动对集合参数展开 -
多数据源:使用
db.slave.select(...)格式切换数据源 -
SQL缓存:
db.cache("cacheName", ttl).select(...)使用缓存 -
事务操作:
- 自动事务:
db.transaction(()=>{...}) - 手动事务:
var tx = db.transaction(); tx.commit(); tx.rollback();
- 自动事务: