一飞开源
阅读5061

[开源]快速开发平台(低代码开发平台),本框架永远免费,永久全开源

一、开源项目简介

Fhs-Framework是一个基于Springboot+Springcloud + Mybatis Plus + sa-token+ vue + elementui 的快速开发平台(低代码开发平台),本框架永远免费,永久全开源。

FHS-Framwork是一个集成了国内外诸多优秀开源项目的快速开发平台,除了在常规快速开发平台提供 用户,角色,权限,菜单,字典,审计日志,代码生成器 还拥有可以让您更少写SQL和前端代码的翻译服务以及PAGEX服务。

二、开源协议

使用Apache-2.0开源协议

三、界面展示

[开源]快速开发平台(低代码开发平台),本框架永远免费,永久全开源

[开源]快速开发平台(低代码开发平台),本框架永远免费,永久全开源

[开源]快速开发平台(低代码开发平台),本框架永远免费,永久全开源

[开源]快速开发平台(低代码开发平台),本框架永远免费,永久全开源

四、功能概述

系统管理

  • 部门管理
  • 用户管理
  • 角色管理
  • 字典管理
  • 菜单管理
  • 代码生成
  • 登录日志

五、技术选型

基于Springboot+Springcloud + Mybatis Plus + sa-token+ vue + elementui。

用到的国产组件集

  • Mybatis Plus
  • Sa-Token
  • Validate-Springboot-Starter
  • SpringCloud Alibaba
  • ip2region
  • knife4j

和其他框架差异化特性

- 翻译组件

翻译组件可以只通过注解把你表里的id转换为名称,把你的字典码转换为字典注释(比如0转换为男1转换为女)。

- All in One模式 开发 微服务模式部署

微服务开发对于电脑内存要求比较高,调试个东西要启动好多个微服务还要启动网关,调用链路复杂的点一下不知道调用到谁那里去了,要解决还要自己机器跑nacos,fhs 首创,all in one 模式开发,微服务模式部署,在开发环境直接把所有的模块集成到一个springBoot项目启动,部署的时候又使用微服务+网关模式部署 参考:fhs_app/fhs_app_all_in_one 和 fhs_app/fhs_app_basics的做法 即可实现。

- 更简单的微服务调用

传统微服务玩法是第一我定义一个fegin api接口,然后写一个controller ,在写一个service实现 需要三个步骤,fhs 集成了easy cloud,只需要在service层给对应的方法上加@CloudMethod 即可完成接口暴露,哪个微服务用到直接 Autowired service接口即可。

- 更好用的校验框架

集成了validate-springboot-starter,在兼容hibernate Validator和javax validation的同时,支持了更多自定义玩法。 内置常用验证规则:比如手机号验证,正则验证,ip,邮箱,长度,范围,数字,小数,中国车牌号,身份证,长度, url, 图书ISBN编号,文件后缀,文件大小 等常用验证规则

[开源]快速开发平台(低代码开发平台),本框架永远免费,永久全开源

[开源]快速开发平台(低代码开发平台),本框架永远免费,永久全开源

- JSON驱动的VUE 列表和表单组件

avue今年又获得了GVP,证明了越来越多的前端程序员开始接受JSON驱动来写VUE 页面,fhs 也将组件封装为JSON驱动的组件,比如简单的CRUD,就可以这么写:

<template>

    <pagex-crudForm :namespace="namespace" :title="title" :crudSett="crudSett" :formSett="formSett" :idFieldName="idFieldName" >
    </pagex-crudForm>

</template>

<script>

export default {
  name: "Dict",
  data() {
    return {
      namespace:'dictGroup',
      title:'字典分组',
      idFieldName:'groupId',//主键
      crudSett:{ // 列表配置
        api: '/basic/ms/dictGroup/pagerAdvance', //列表接口
        sortSett: [{//排序
          "direction": "DESC",
          "property": "updateTime"
        }],
        buttons: [//列表上的按钮
          {
            title: '新增',
            name: 'add',
            code: "add",
            type: 'primary',
            size: 'mini',
            icon: 'el-icon-plus', // 支持写click 自定义点击事件,新增组件会自带事件
          }
        ],
        columns: [
          {label: '分组名称', name: 'groupName'},//列 分组名称
          {//分组编码列,点击之后跳转到字典项列表
            label: '分组编码', name: 'groupCode', type: 'formart',
            formart: "<label style='cursor:pointer'>${groupCode}</label>",//格式化显示效果
            click: function (_row) {
              this.$router.push({path: '/dict/type/data/',query:{groupCode: _row.groupCode}});
            }
          },
          {
            label: '操作',//操作列
            name: 'operation',
            type: 'textBtn',
            textBtn: [
              {
                title: "编辑",
                type: "bottom",
                size: 'mini'
              },
              {
                title: "详情",
                type: "success",
                size: 'mini'
              },
              {
                title: "删除",
                type: "danger",
                size: 'mini',
                api: '/basic/ms/dictGroup/'
              }
            ],
          }
        ],
        filters: [//过滤条件
          {label: '分组名称:', name: 'groupName', placeholder: "分组名称", type: 'text', operation: 'like'},//like 是后台过滤规则,模糊匹配 支持> < != between like 等等
          {label: '分组编码:', name: 'groupCode', placeholder: "分组编码", type: 'text', operation: 'like'}
        ],
      },
      formSett:{// 表单
        addApi: '/basic/ms/dictGroup/',//新增表单的url,默认的post 
        updateApi: '/basic/ms/dictGroup/',//修改表单的url 默认是post
        data:{
           //这里写默认值,比如groupName:'默认编码'
        },
        controls:[//表单字段
          {
            type: 'text',
            name: 'groupName',
            label: '分组名称',
            rule: 'required',
            placeholder: '请输入分组名称'
          }, {
            type: 'text',
            name: 'groupCode',
            label: '分组编码',
            rule: 'required',
            placeholder: '请输入分组编码'
          }
        ]
      },
    }
  },
  methods: {
     //自定义方法
  }
};
</script>

- Mybatis Plus查询增强

Mybatis的wrapper是我见过特别好的查询api设计,但是条件稍微多一点就写的很长,我们通过APT技术(类似lombok对po进行编译时增强),对PO进行增强,使用PO来替代原生Wrapper构造,和activeRecord配合起来简直不要太美。上demo:

//有po定义如下:
@Data
@Wrapperable //增强注解 类似lombok的@data 注解
@TableName("user")
public class User {

    @TableId("user_id")
    private Integer userId;

    @TableField("name")
    private String name;

    @TableField("age")
    private Integer age;

    @TableField("sex")
    private String sex;


}


 @GetMapping("/one")
    public User one() {
        return User.newOBJ().nameLike("小").one();
    }

    @GetMapping("/oneField")
    public User oneField() {
        //这里只查id和name2个字段
        return User.newOBJ().nameLike("小").one(new String[]{User.USERID, User.NAME});
    }

    @GetMapping("/list")
    public List<User> list() {
        return User.newOBJ().ageBetween(10, 25).list();
    }

    @GetMapping("/listField")
    public List<User> listField() {
        return User.newOBJ().ageBetween(10, 20).list(new String[]{User.USERID, User.NAME});
    }

    @GetMapping("/delete")
    public int delete() {
        return User.newOBJ().ageBetween(50, 80).delete();
    }

    @GetMapping("/count")
    public Long count() {
        return  User.newOBJ().ageBetween(10,26).count();
    }

    
    @GetMapping("/update")
    public int update() {
        User user = User.newOBJ();
        user.setAge(19);
		//把小明的年龄改为19
        return user.nameEQ("小明").update();
    }

class和提示已经支持自动生成的方法有:

bean2Wrapper,list,list(String[] fields),one,one(String[] fileds),count,delete,update,newOBJ

已经支持的wrapper相关操作方法有:

eq,neq,ge,gt,le,lt,like,notLike,likeLeft,likeRight,in,notIn,between,orderByAsc,orderByDesc,isNull,notNull

千万注意:

本功能和lombok一样需要搭配idea插件使用,不然class虽然增强了但是idea 无法识别这些方法报错,但是不影响运行,我们提供了配套的idea插件。

要求idea版本为 2021.2.2 以及 以上。 并且idea加入以下配置:setting-Build,Execution,Deployment-Compiler Shared build process VM 的value设置为 option -Djps.track.ap.dependencies=false

[开源]快速开发平台(低代码开发平台),本框架永远免费,永久全开源

六、源码地址

源码下载


PHP网站源码梧州品牌网站设计报价晋中百姓网标王多少钱南平百度关键词包年推广价格果洛营销型网站建设多少钱湘潭设计网站襄樊关键词按天收费价格遵义网站搜索优化哪家好恩施百度网站优化排名北京seo网站推广报价湖州优化公司飞来峡建网站价格沙井seo网站推广哪家好保山优化石岩seo排名推荐毕节seo推荐德州关键词按天计费哪家好德阳SEO按天计费多少钱吕梁营销网站推荐林芝SEO按天计费南澳seo网站推广公司银川网站优化软件鞍山seo网站推广报价海西百搜标王价格淮北SEO按天计费推荐厦门网站优化按天收费哪家好营口网站关键词优化哪家好桂林至尊标王公司衡水seo排名公司梅州优化哪家好亳州网站优化排名歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化

关注下面的标签,发现更多相似文章

一飞开源
发布了 篇专栏 · 获取点赞 · 获取阅读

评论

查看更多
相关推荐
关于作者
一飞开源
获得点赞 100
文章被阅读 1000
相关文章

    PHP网站源码梧州品牌网站设计报价晋中百姓网标王多少钱南平百度关键词包年推广价格果洛营销型网站建设多少钱湘潭设计网站襄樊关键词按天收费价格遵义网站搜索优化哪家好恩施百度网站优化排名北京seo网站推广报价湖州优化公司飞来峡建网站价格沙井seo网站推广哪家好保山优化石岩seo排名推荐毕节seo推荐德州关键词按天计费哪家好德阳SEO按天计费多少钱吕梁营销网站推荐林芝SEO按天计费南澳seo网站推广公司银川网站优化软件鞍山seo网站推广报价海西百搜标王价格淮北SEO按天计费推荐厦门网站优化按天收费哪家好营口网站关键词优化哪家好桂林至尊标王公司衡水seo排名公司梅州优化哪家好亳州网站优化排名歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

    PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化