Skip to content
forked from YaoApp/yao

Yao A low code engine to create web services and dashboard.

License

Notifications You must be signed in to change notification settings

tribe-health/yao

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Yao

UnitTest codecov

Yao 是一款 Go 语言驱动的低代码应用引擎,通过编写 JSON 描述即可快速制作 API 接口数据管理系统命令行工具 等应用程序,应用可以运行在本地、云端和物联网设备上。

介绍

Yao 基于 flow-based 编程思想,采用 Go 语言开发,支持多种方式扩展数据流处理器。这使得 Yao 具有极好的通用性,大部分场景下可以代替编程语言, 在复用性和编码效率上是传统编程语言的 10 倍;应用性能和资源占比上优于 PHP, JAVA 等语言。

Yao 内置了一套数据管理系统,通过编写 JSON 描述界面布局,即可实现 90% 常见界面交互功能,特别适合快速制作各类管理后台、CRM、ERP 等企业内部系统。对于特殊交互功能亦可通过编写扩展组件或 HTML 页面的方式实现。内置管理系统与 Yao 并不耦合,亦可采用 VUE, React 等任意前端技术实现管理界面。

Yao 的名字源于汉字爻(yáo),是构成八卦的基本符号。八卦,是上古大神伏羲观测总结自然规律后,创造的一个可以指代万事万物的符号体系。爻,有阴阳两种状态,就像 0 和 1。爻的阴阳转换,驱动八卦更替,以此来总结记录事物的发展规律。

演示

客户关系管理系统 源码 演示

一套通用 CRM 管理系统

智能仓库管理系统 源码 演示

云+边物联网应用示例,支持人脸识别、RFID 的无人值守智能仓库管理系统。

起步

注意:开始前需要了解 JSON、RESTFulAPI、关系型数据库的基本概念和常识,并可以使用常见终端命令。如需处理非常复杂的业务逻辑,则需要掌握 JavaScript 语言。

我们准备了一个在线开发调试环境,帮助您快速上手体验。在线开发环境仅做体验使用, 数据每小时重置 , 在实际开发中,请在本地安装 Yao 进行开发调试,具体参考 安装调试 章节的文档。如果您的应用开发完成,需要在生产环境部署,请参考 部署 章节文档。

<Extend title="打开在线调试环境" desc="在线开发测试环境仅做体验使用,数据每小时重置" link="https://ide-demo.yaoapps.com"

第一步: 创建项目

新建一个项目目录,进入项目目录,运行 yao init 命令,创建一个空白的 Yao 应用。

mkdir -p /data/crm  # 创建项目目录
cd /data/crm  # 进入项目目录
yao init # 运行初始化程序

命令运行成功后,将创建 app.json文件 , db目录, ui目录data目录

├── data        # 用于存放应用产生的文件,如图片,PDF等
├── db          # 用于存放 SQLite 数据库文件
│   └── xiang.db
└── ui          # 静态文件服务器文件目录,可以放置自定义前端制品,该目录下文件可通过 http://host:port/文件名称 访问。
└── app.json    # 应用配置文件, 用来定义应用名称等

第二步: 创建数据模型

设计一张数据表 customer,用于存放客户资料数据。数据表结构如下:

字段 类型 长度/参数 默认值 说明
id ID 数据表 ID
channel_id bigInteger 客户来源
name string 80 客户姓名
company string 200 公司名称
gender integer 0 性别 0, 未知,1 男,2,女
birthday date 生日
desc text 简历
status enum ["enabled"], ["disabled"], enabled 状态

创建数据表对应的 JSON 描述文件 :

在项目 models 目录下 (例如: /data/crm/models),创建数据模型描述文件 customer.mod.json

{
  "name": "客户",
  "table": { "name": "customer", "comment": "客户表" },
  "columns": [
    { "label": "ID", "name": "id", "type": "ID", "comment": "ID" },
    {
      "label": "来源",
      "name": "channel_id",
      "type": "bigInteger",
      "comment": "客户来源",
      "nullable": true,
      "index": true
    },
    {
      "label": "姓名",
      "name": "name",
      "type": "string",
      "length": 80,
      "comment": "客户姓名",
      "nullable": true,
      "index": true
    },
    {
      "label": "公司",
      "name": "company",
      "type": "string",
      "length": 200,
      "comment": "公司全称",
      "nullable": true,
      "index": true
    },
    {
      "label": "性别",
      "name": "gender",
      "type": "integer",
      "comment": "性别",
      "default": 0,
      "index": true
    },
    {
      "label": "生日",
      "name": "birthday",
      "type": "date",
      "comment": "性别",
      "nullable": true,
      "index": true
    },
    {
      "label": "介绍",
      "name": "desc",
      "type": "text",
      "comment": "介绍",
      "nullable": true
    },
    {
      "label": "状态",
      "name": "status",
      "type": "enum",
      "default": "enabled",
      "option": ["enabled", "disabled"],
      "comment": "状态 enabled 开启, disabled 关闭",
      "index": true
    }
  ],
  "option": { "timestamps": true, "soft_deletes": true },
  "values": [{ "id": 1, "name": "莉莉", "company": "yaoapps.com" }]
}

使用 yao migrate 命令创建数据表,打开命令行终端,在项目根录下运行:

yao migrate

技巧: 调试过程中,需要频繁检查数据。可以使用 yao run 命令查询数据。例如:在命令行终端中运行 yao run models.customer.find 1 即可查询 customer 数据表 ID=1 的数据。

第三步: 编写管理界面

在项目 tables 目录下 (例如: /data/crm/models),创建数据表格描述文件 customer.tab.json

{
  "name": "客户",
  "version": "1.0.0",
  "decription": "客户管理数据表格",
  "bind": {
    "model": "customer"
  },
  "columns": {},
  "filters": {
    "关键词": { "@": "filter.关键词", "in": ["where.name.match"] },
    "排序": { "@": "filter.排序" }
  },
  "list": {
    "primary": "id",
    "layout": {
      "columns": [
        { "name": "ID", "width": 80 },
        { "name": "公司", "width": 200 },
        { "name": "姓名", "width": 100 },
        { "name": "性别", "width": 80 },
        { "name": "生日", "width": 100 },
        { "name": "来源", "width": 80 },
        { "name": "状态", "width": 140 },
        { "name": "更新时间", "width": 160 }
      ],
      "filters": [{ "name": "关键词" }, { "name": "来源", "width": 3 }]
    },
    "actions": {
      "create": {
        "type": "button",
        "props": { "label": "添加客户", "icon": "fas fa-plus" }
      },
      "pagination": {}
    }
  },
  "edit": {
    "primary": "id",
    "layout": {
      "fieldset": [
        {
          "columns": [
            { "name": "姓名", "width": 12 },
            { "name": "性别", "width": 3 },
            { "name": "生日", "width": 3 },
            { "name": "来源", "width": 3 },
            { "name": "状态", "width": 3 },
            { "name": "公司", "width": 24 },
            { "name": "介绍", "width": 24 }
          ]
        }
      ]
    },
    "actions": {
      "cancel": {},
      "save": { "@": "action.保存" },
      "delete": { "@": "action.删除" }
    }
  }
}

注意:由于该项目诞生之初主要是为了提高团队内部生产力,在约定俗成的写法描述下,并没有做细粒度的抛错处理,所以开发者可能会在编写 JSON 调试界面的过程当中遇到界面为空的情况。处置方式请查阅组件文档。

启动服务

打开命令行终端,在项目根录下运行:

yao start
  1. 打开浏览器, 访问 https://127.0.0.1:5099/xiang/login/admin

  2. 输入默认用户名: xiang@iqka.com, 密码: A123456p+

  3. 成功登录后,在地址栏输入 https://127.0.0.1:5099/xiang/table/customer

  4. 建议将 /xiang/table/customer 路由添加为菜单项。

About

Yao A low code engine to create web services and dashboard.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 96.5%
  • JavaScript 1.7%
  • Makefile 1.5%
  • Other 0.3%