# FunSwitch **Repository Path**: frontopOpen/FunSwitch ## Basic Information - **Project Name**: FunSwitch - **Description**: 一款面向数字化大屏,数字孪生的快速接口开发工具后台 FronTop开源 轻量化部署 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 28 - **Forks**: 3 - **Created**: 2023-03-10 - **Last Updated**: 2025-03-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FunSwitch 一款面向数字化大屏,数字孪生的快速接口开发工具后台 FronTop开源 目前包含如下功能: - API管理(普通类型,混合类型,回调类型,静态类型,SQL类型) - 普通类型(对应指标的各个类型处理) - 混合类型(可以选择多个指标进行合并) - 静态类型(直接返回静态数据 如果为json结果则转换为对象) - SQL类型(从SQL管理配置的脚本直接输出到接口) - 指标管理(普通类型,分组类型,对象转集合类型) - 普通类型(键过滤,键转换) - 分组类型(可选根据ID进行分组,或者进行包装一层) - 对象转集合(即将一个对象拆分为多个对象) - 以上都是对第三方的接口数据处理后 进行实时生成新的api输出 - token管理 - 配置第三方的 登入处理 返回使用的token给指标访问接口使用 - 数据源管理 - 对于MySQL,SQL service等等类型的 数据源管理 - WebSocket管理 - 负责管理 每个路径需要推送的内容(1对1的关系) - SQL脚本管理 - 从数据源选择数据源后 可编写SQL脚本测试 并输出到api 禁止非select操作! - 全局静态资源管理 - 全局仅一份 excel文件 详情看文档或者视频地址 ## 写在前面 项目发布初期,希望大家多多点点`Star` - [Gitee](https://gitee.com/frontopOpen/FunSwitch) - [前端开源](https://gitee.com/frontopOpen/FunSwitch_Web) - [视频教学地址](https://space.bilibili.com/1524258371/video) - [在线体验地址pro版 4-16到期](http://43.136.71.66/funswitch) - 默认账户:admin 密码:frontop ## 快速Docker部署 ```text 首先下载镜像:docker pull yunsnow/funswitch:1.0 仅作调研查看相关功能:docker run -d -p 访问端口:80 yunsnow/funswitch:1.0 实际使用体验:docker run -d -p 访问端口:80 -p api访问端口:10000 yunsnow/funswitch:1.0 前端访问地址:http://域名:访问端口/funswitch API访问地址:http://域名:api访问端口/api ``` ## 新建API说明 ![img.png](doc/img/APIInfo.png) - 普通类型 - 对应着指标的各个类型 没有什么特殊含义 详细查看指标各个类型 - 混合请求接口(叠加) - 对应着多个指标 直接合并 无需任何参数 顺序合并(以少的数组为准) 最多2条 - 混合请求接口(主键模式) ![img.png](doc/img/img.png) - 如下述数据 ```text 如以下两组数据: [ {“id”:1,”name”:”张三”}, {“id”:2,”name”:”李四”}, ] [ {“id”:1,”age”:18}, {“id”:2,”age”:18}, ] 参数主键 写入 ID 输出结果 [ {“id”:1,”age”:18,”name”:”张三”}, {“id”:2,”age”:18,”name”:”李四”}, ] ``` - SQL接口类型 - 详细查看SQL脚本配置 - 静态数据类型 - 直接返回静态数据 如果为json结果则转换为对象 - 回调接口类型 - 第三方在调用本接口传输数据后 会自动推送到 对应配置的路径下(如告警等) ## 指标说明 测试数据为以下数据: ```text { "msg": "请求成功!", "code": 200, "data": [{ "name": "张三", "age": 18, "sex": "男" }, { "name": "李四", "age": 18, "sex": "男" }, { "name": "小花", "age": 18, "sex": "女" }] } ``` 1. 普通类型 ![img.png](doc/img/img.png) ```text 为上述配置时候 输出值为 [{ "name": "张三", "value": 18 }, { "name": "李四", "value": 18 }, { "name": "小花", "value": 18 }] ``` 2. 对象转数组 ```text 此面向的数据不为上文所述 列: { "msg": "请求成功!", "code": 200, "data": { "name": "凡拓数字创意", "projectName": "数字孪生" } } 配置如下图所示 ``` ![img.png](doc/img/img1.png) ```text 转换参数 {"list":[{"key":"name","value":"name","join":{"xxx":"aaa"}},{"key":"projectName","value":"info"}],"common":{"common":"测试"}} 参数说明 List 里面存储多个 需要转换的对象 Key 代表拿取哪个key Value 代表要修改成什么 Join 后面的json 只能为键值对的 为私有的添加参数 Common 为公共的添加参数 输出结果: [ { "common": "测试", "name": "凡拓数字创意", "xxx": "aaa" }, { "common": "测试", "info": "数字孪生" } ] ``` 3. 分组 ![img.png](doc/img/img2.png) ```text 转换参数 {"name":"测试标题","conversion":{"name":"title"}} name 为展示值 具体看下述返回报文 key为固定值 name conversion 为转换参数 key为固定值 conversion 输出结果 { "name": "测试标题", "data": [{ "title": "张三", "age": 18, "sex": "男" }, { "title": "李四", "age": 18, "sex": "男" }, { "title": "小花", "age": 18, "sex": "女" }] } ``` 4. 分组根据Key ![img.png](doc/img/img3.png) ```text 转换参数 {"groupingBy":"sex","conversion":{}} groupingBy为固定key 值为需要的分组key conversion为固定key 转换参数 输出结果 [{ "name": "女", "data": [{ "name": "小花", "age": 18, "sex": "女" }] }, { "name": "男", "data": [{ "name": "张三", "age": 18, "sex": "男" }, { "name": "李四", "age": 18, "sex": "男" }] }] ``` ## Token配置 ![img.png](doc/img/img4.png) ```text 例如以下数据: { "type": 200, "content": "登录成功", "data": { "accessToken": "token", "refreshUctExpires": 0, "nowDate": "2022-12-01", "beforeDate": "2022-11-30", "userName": "FronTop数据可视化", "beginLoginDate": "1900-01-01 00:00:00", "endLoginDate": "2100-01-01 00:00:00", } } 我们根据文档已知 其他接口需要的token 参数为 accessToken 这时候JsonPath的参数为 $..accessToken 如果参数为 token 就为$..token 前缀这里 就拿新增项目的截图作为一个演示 在这里我们可以看到 在Authorization 对应的值 Bearer {Token 值} 这里的 {Token 值} 为占位符 无视即可 即理解为上文的accessToken 值 Bearer 在这里的配置中 就为 前缀 ``` ## 项目配置 ![img.png](doc/img/img5.png) ## 全局静态资源 1. 首先 需要先点击下载模板 ![img.png](doc/img/img6.png) 2. 请在该模板下进行修改数据 ![img.png](doc/img/img7.png) 3. 以上的数据可删除 保留 name 和 value 即可 ![img.png](doc/img/img8.png) 4. 导入数据会把上次数据全部删除 请注意操作 全量删除 5. 导出 就是导出最后一次上传的文件 6. 查询时候调用全局静态文件接口 传输 sheet下面填写的值 比如这里的测试 ## 数据库配置 与 SQL脚本配置 ![img.png](doc/img/img9.png) ![img_1.png](doc/img/img_1.png) ## 交流群 - 微信群:请扫下图二维码,备注`FunSwitch加群` ![image](/doc/img/qun.jpg)