Erupt 项目搭建

创建Spring Boot项目

Maven依赖

Spring Boot版本为 2.7.10,erupt版本为 1.12.14

erupt版本要与Spring Boot版本适配,3.x.x版本Spring Boot暂不适用说是

    <properties><erupt.version>1.12.14</erupt.version></properties>
    <dependencies><!--tomcat--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId><scope>provided</scope></dependency><!--test测试--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--MySql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.16</version><scope>runtime</scope></dependency><!--核心管理模块--><dependency><groupId>xyz.erupt</groupId><artifactId>erupt-admin</artifactId><version>${erupt.version}</version></dependency><!--后台WEB界面--><dependency><groupId>xyz.erupt</groupId><artifactId>erupt-web</artifactId><version>${erupt.version}</version></dependency><!-- ****** 以下模块不需要可以去掉 ****** --><!--erupt-cloud 云节点分布式控制模块--><dependency><groupId>xyz.erupt</groupId><artifactId>erupt-cloud-server</artifactId><version>${erupt.version}</version></dependency><!--任务管理模块--><dependency><groupId>xyz.erupt</groupId><artifactId>erupt-job</artifactId><version>${erupt.version}</version></dependency><!--代码生成器模块--><dependency><groupId>xyz.erupt</groupId><artifactId>erupt-generator</artifactId><version>${erupt.version}</version></dependency><!--服务监控模块--><dependency><groupId>xyz.erupt</groupId><artifactId>erupt-monitor</artifactId><version>${erupt.version}</version></dependency><!--在线接口开发--><dependency><groupId>xyz.erupt</groupId><artifactId>erupt-magic-api</artifactId><version>${erupt.version}</version></dependency><!--自定义页面模块--><dependency><groupId>xyz.erupt</groupId><artifactId>erupt-tpl</artifactId><version>${erupt.version}</version></dependency><!--element-ui--><dependency><groupId>xyz.erupt</groupId><artifactId>erupt-tpl-ui.element-ui</artifactId><version>${erupt.version}</version></dependency><!--velocity--><dependency><groupId>org.apache.velocity</groupId><artifactId>velocity-engine-core</artifactId><version>2.3</version></dependency></dependencies>

xxxApplication启动类添加注解

import org.springframework.boot.autoconfigure.domain.EntityScan;
import xyz.erupt.core.annotation.EruptScan;@EruptScan
@EntityScan

 main方法中加入下列代码,启动后自动打开指定页面

        try {System.setProperty("java.awt.headless", "false");Desktop.getDesktop().browse(new URI("http://localhost:8088"));} catch (Exception ignore) {}

yml参数配置

server:port: 8081# 启用 gzip 压缩compression:mime-types: application/javascript,text/css,application/json,application/xml,text/html,text/xml,text/plainenabled: trueerror:includeException: trueincludeStacktrace: ALWAYSincludeMessage: ALWAYSspring:#当 erupt.redisSession 为 true 时必须配置此项!redis:database: 0timeout: 10000host: 127.0.0.1datasource:url: jdbc:mysql://127.0.0.1:3306/erupt?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghaiusername: rootpassword: ****jpa:show-sql: falsegenerate-ddl: truedatabase-platform: org.hibernate.dialect.MySQL5InnoDBDialectdatabase: mysqlproperties:hibernate:format_sql: falsemail:username: xxxx@qq.compassword: xxxxxxxhost: smtp.qq.comproperties:mail.smtp.ssl.auth: truemail.smtp.ssl.enable: truemail.smtp.ssl.required: trueservlet:multipart:max-file-size: 100MBmax-request-size: 100MBprofiles:active: dev#避免依赖循环引用
#  main:
#    allow-circular-references: trueerupt-app:# 登录失败几次,需要验证码verifyCodeCount: 2# 是否开启水印,1.12.0 及以上版本支持water-mark: true# 登录失败几次出现验证码,值为0时表示一直需要登录验证码verify-code-count: 2# 登录密码是否加密传输,特殊场景如:LDAP登录可关闭该功能获取密码明文pwd-transfer-encrypt: true# 是否开启密码重置功能,关闭后前端会屏蔽所有重置密码的入口适用于 ldap 等场景,1.12.7 及以上版本支持reset-pwd: true# 多语言配置locales: ["zh-CN",      // 简体中文"zh-TW",      // 繁体中文"en-US",      // English"fr-FR",      // En français"ja-JP",      // 日本語"ko-KR",      // 한국어"ru-RU",      // русск"es-ES"       // español]# 自定义登录页路径,1.10.6 及以上版本支持,支持http网络路径
#  login-page-path: /customer-login.html
erupt:# 是否开启csrf防御csrf-inspect: true# 开启redis方式存储session,默认false,开启后需在配置文件中添加redis配置(同 Spring Boot)redis-session: false# redis session是否自动续期,1.10.8及以上版本支持redis-session-refresh: false# 附件上传存储路径, 默认路径为:/opt/erupt-attachmentupload-path: D:/erupt/annex# 是否保留上传文件原始名称keep-upload-file-name: false# 项目初始化方式,NONE 不执行初始化代码、EVERY 每次启动都进行初始化、FILE 通过标识文件判断是否需要初始化init-method-enum: file# 默认语言,1.12.3 及以上版本支持default-locales: zh-CN# 是否开启任务调度(导入erupt-job时有效)job.enable: true# 是否开启日志采集,开启后可在系统日志中查看实时日志 1.12.14 及以上版本支持log-track: true# 日志采集最大暂存行数 1.12.14 及以上版本支持log-track-cache-size: 1000# 是否记录操作日志,默认true,该功能开启后可在【系统管理 → 操作日志】中查看操作日志security:record-operate-log: trueupms:# 登录 session 时长(redisSession为true时有效)# redisSession 为 false 时控制有效期的方法:server.servlet.session.timeoutexpire-time-by-login: 60# 严格的角色菜单策略,如果非管理员用户拥有“角色管理权限”则仅能编辑已有权限的角色菜单strict-role-menu-legal: falsemagic-api:web: /magic/web# 接口配置文件存放路径resource.location: D:/erupt/magic-scriptshow-url: false
数据库配置

根据所用数据库类型选择MySQL、SQLServer等进行配置

建立一个数据库(erupt),其他名也行,暂时不用建表,项目启动会自动建立多个基础表

首页配置(home.html)

手动创建,位置:/resources/public/home.html

<!DOCTYPE html>
<html lang="en">
<head><title>home</title><meta charset="UTF-8"><meta content="width=device-width, initial-scale=1" name="viewport">
</head>
<style>body {/* 设置背景图片 */background-image: url('login-img-BlackSilk.jpg');/* 背景图片覆盖整个元素 */background-size: cover;/* 背景图片不重复 */background-repeat: no-repeat;/* 背景图片居中显示 */background-position: center;/* 可选:设置背景图片固定,滚动页面时不移动 */background-attachment: fixed;/* 可选:设置边距,根据需要调整 */margin: 0;padding: 0;/* 确保整个页面都有背景图片 */height: 100vh; /* 视口高度 */width: 100vw; /* 视口宽度,但通常不需要设置,因为body默认就是100%宽度 */}
</style>
<body>
</body>
</html>

 前端配置(app.js)

手动创建,位置:/resources/public/app.js

window.eruptSiteConfig = {//erupt接口地址,在前后端分离时指定domain: "",//附件地址,一般情况下不需要指定,如果自定义对象存储空间,则需在此指定附件资源访问地址fileDomain: "",//登录页中间标题title: "風華絕代",//登录页中间标题描述desc: "風華絕代-Leslie",//是否展示版权信息copyright: true,//自定义版权内容,1.12.8及以上版本支持,值可以是方法也可以是字符串copyrightTxt: function() {return "風華絕代-Cheung Kowk Wing"},//高德地图 api key,使用地图组件须指定此属性,amapKey获取地址:https://lbs.amap.com (服务平台为:Web端(JS API))amapKey: "xxxx",//高德地图 SecurityJsCodeamapSecurityJsCode: "xxxxx",//登录页logo路径logoPath: "log-Leslie.jpg",//登录后左上角logo旁边的文字logoText: "風華絕代",//注册页地址,会在登录页面增加一个链接 (仅是一个链接,需要自定义实际样式)registerPage: "",//自定义导航栏按钮,配置后将会出现在页面右上角r_tools: [{text: "自定义功能按钮",icon: "fa-eercast",mobileHidden: true,click: function (event) {alert("Function button");}}],//登录成功事件 1.12.3 及以上版本移动至window.eruptEvent中声明login: function(user){},//注销事件 1.12.3 及以上版本移动至window.eruptEvent中声明logout: function(user){}
};//路由回调函数
window.eruptRouterEvent = {//key表示要监听的路由切换地址,为url hash地址最后一段//例如:http://www.erupt.xyz:9999/#/build/table/demo中demo为回调keydemo: {//路由载入事件load: function (e) {},//路由退出事件unload: function (e) {}},//$ 为全路径通配符,在任何路由切换时都会执行load与unload事件$: {load: function (e) {},unload: function (e) {}}
};//erupt生命周期函数
window.eruptEvent = {//页面加载完成后回调startup: function () {},//登录成功login: function(user){},//注销事件logout: function(user){}
}

前端样式(app.css)

手动创建,位置:/resources/public/app.css

/* 例:修改登录页样式 */
layout-passport > .container {background-position: center !important;background-repeat: repeat !important;background-size: cover !important;background-color: #fff !important;background-image: url(login-img-BlackSilk.jpg) !important;/*background-image: url(https://www.erupt.xyz/demo/login-bg.svg) !important;*/
}

启动项目

访问地址:localhost:8081

默认账号:erupt

默认密码:erupt

登录

默认有以下菜单栏

新建菜单

新建下级菜单(表格视图)

新建实体类

实体类对应的表,数据库中如果没有,项目启动时会自动创建

实体类字段名为驼峰命名的字段在表中会转为“_”类型的字段名,例如:

recommendedLevel        ==>        recommended_level

import xyz.erupt.annotation.Erupt;
import xyz.erupt.annotation.EruptField;
import xyz.erupt.annotation.sub_field.Edit;
import xyz.erupt.annotation.sub_field.EditType;
import xyz.erupt.annotation.sub_field.View;
import xyz.erupt.annotation.sub_field.ViewType;
import xyz.erupt.annotation.sub_field.sub_edit.AttachmentType;
import xyz.erupt.annotation.sub_field.sub_edit.ChoiceType;
import xyz.erupt.annotation.sub_field.sub_edit.VL;
import xyz.erupt.upms.model.base.HyperModel;import javax.persistence.Entity;
import javax.persistence.Table;/*** @Package_Name * @Author * @TIME* @Version*/
@Erupt(name = "風華"
)
@Table(name = "leslie")
@Entity
public class Leslie extends HyperModel {@EruptField(views = {@View(title = "名称")},edit = @Edit(title = "名称", notNull = true))private String name;@EruptField(views = {@View(title = "年龄")},edit = @Edit(title = "年龄", notNull = true))private Integer age;@EruptField(views = {@View(title = "相片", type = ViewType.IMAGE)},edit = @Edit(title = "相片", notNull = true, type = EditType.ATTACHMENT,attachmentType = @AttachmentType(type = AttachmentType.Type.IMAGE)))private String image;@EruptField(views = @View(title = "实力"),edit = @Edit(title = "实力", notNull = true, type = EditType.CHOICE,choiceType = @ChoiceType(vl = {@VL(value = "0", label = "不是man"),@VL(value = "10", label = "失败的man"),@VL(value = "20", label = "成功的man"),@VL(value = "30", label = "嚣张的man")})))private Integer recommendedLevel;
}

注解

@Erupt 类注解

使用方法:添加在类上

排序OrderBy

布局定义 @Layout

 权限控制 @Power

控制erupt类能力,包括:新增、修改、删除、导入、导出等

数据过滤 @Filter

树形展示 @Tree

暂时没弄明白

左树右表 @LinkTree
@Erupt(name = "Erupt",linkTree = @LinkTree(field = "tree") //field 的值为类中支持树组件字段
)
public class EruptTest extends BaseModel {@ManyToOne@JoinColumn(name = "parent")//如果 linkTree 配置中 dependNode 值为 true 可以不声明 @EruptField 新增时会自动填充当前选择的树节点@EruptField(views =  @View(title = "树节点选择", column = "name"),//title-显示名称,column-实际值,实体类的字段edit = @Edit(title = "树节点选择", type = EditType.REFERENCE_TREE,referenceTreeType = @ReferenceTreeType(pid = "parent.id", expandLevel = 1)))private Tree tree;//另一个实体类,字段名与linkTree注解里的对应}

效果示例

代码:

页面效果

 数据钻取 @Drill (无需外键,低耦合一对多)

暂时没整明白

@EruptField 字段注解

@View

@View → type参照

@Edit

@Edit → type参照

逻辑删除

添加注解@Filter、@SQLDelete

import org.hibernate.annotations.SQLDelete;
import xyz.erupt.annotation.sub_erupt.Filter;

@Filter:对数据进行过滤,只显示未删除的

@SQLDelete:覆盖删除语句,改为修改 deleted 字段实现逻辑删除

添加实体类字段

    private Date deleteTime;private Boolean deleted = false;

注意事项:

1、项目启动生成的表,没有这两个字段

2、这时候配置逻辑删除后,项目启动后表中自动生成对应字段,但是查询时后报错,需要将表中数据的 deleted 字段值设为 0(0-false,1-true)

3、@Filter注解中过滤字段需为 表名.字段

                                                                Leslie Lee 随笔

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/402994.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AR 眼镜之-开关机定制-实现方案

目录 &#x1f4c2; 前言 AR 眼镜系统版本 开关机定制 1. &#x1f531; 技术方案 1.1 技术方案概述 1.2 实现方案 1&#xff09;开机 Logo 2&#xff09;开机音效 3&#xff09;开机动画 4&#xff09;关机动画 5&#xff09;关机弹窗 2. &#x1f4a0; 开机 Logo…

Java基础——注释

在开发中注释是必不可少的&#xff0c;帮助我们更好的标记阅读代码&#xff0c;下面介绍几种常用的注释方式。 一、注释种类 1. 单行注释 使用//一行代码来进行注释&#xff0c;只能注释一行内容 2. 多行注释 使用斜杠星号的方式 /*注释多行代码*/&#xff0c;注释多行代…

ECharts 数据可视化 入门基本知识 下载安装常用的图表 【1】

ECharts一个基于 JavaScript 的开源可视化图表库&#xff0c;即将数据以图形或图像的方式展现成在屏幕上显示出来&#xff0c;这种方式称为数据可视化。数据可视化有助于我们分析数据&#xff0c;帮助我们更深入更直观的理解数据。今天回顾顺便总结一下echarts的基本知识&#…

C++密码管理器

先问一句 最近有几个关注我的原力等级为0或-1&#xff0c;文章全是转载&#xff0c;转载时间基本都在2021年&#xff0c;而且关注了很多人&#xff0c;这些是僵尸粉吗&#xff1f; 文末有投票&#xff0c;麻烦参与一下谢谢 实现功能列表 暂时还没做加密功能 打算用openssl/a…

HTTPS通讯全过程

HTTPS通讯全过程 不得不说&#xff0c;https比http通讯更加复杂惹。在第一次接触https代码的时候&#xff0c;不知道为什么要用用证书&#xff0c;公钥是什么&#xff1f;私钥是什么&#xff1f;他们作用是什么&#xff1f;非对称加密和对称加密是啥&#xff1f;天&#xff0c;…

可视化大屏入口界面,炫酷科技又不失简洁时尚。

可视化大屏界面&#xff0c;大家见到很多了&#xff0c;当可视化大屏是多个系统的融合&#xff0c;而且彼此又相互独立&#xff0c;就需要设计一个入口页面&#xff0c;便于分流客户&#xff0c;这次我给大家分享一批。 设计可视化大屏入口界面时&#xff0c;可以结合炫酷科技…

startData

某音startData 记得加入学习群&#xff1a; python爬虫&js逆向3 714283180

leetcode算法题之N皇后

N皇后也是一道很经典的问题&#xff0c;问题如下&#xff1a; 题目地址 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你…

记录Java使用websocket

实现场景&#xff1a;每在小程序中添加一条数据时&#xff0c;后台将主动推送一个标记给PC端&#xff0c;PC端接收到标记将进行自动播放音频。 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import or…

游戏管理系统

目录 Java程序设计课程设计 游戏管理系统 1系统简介 1.1需求分析 1.2 编程环境与工具 2系统总体设计 2.1 系统的功能模块图。 2.2 各功能模块简介。 3主要业务流程 &#xff08;1&#xff09;用户及管理员登录流程图 &#xff08;2&#xff09;信息添加流程 &#x…

即插即用的3D神经元注意算法

在快速发展的人工智能领域&#xff0c;科技的进步往往源于对复杂问题的突破性解决方案。如今&#xff0c;我们正站在一种激动人心的技术创新的前沿——即插即用的3D神经元注意算法。这一前沿技术不仅为计算神经科学提供了全新的视角&#xff0c;也为人工智能的未来打开了新的大…

Python教程(十四):Requests模块详解

目录 专栏列表前言&#xff1a;安装 Requests查看包安装情况&#xff1a; RESTful 介绍RESTful API设计原则示例 基本用法1. 查询ID为1的用户&#xff08;GET&#xff09;2. 创建新用户&#xff08;POST&#xff09;3. 更新ID 为 1 的用户&#xff08;PUT&#xff09;4. 删除ID…

18. 基于ES实战海量数据检索

18. 基于ES实战海量数据检索 一. 概述二. Elasticsearch 全文检索1. 分布式搜索引擎2. 搜索引擎种类3. 倒排索引三. elastic使用1. 官网介绍2. docker安装3. elasticsearch-head工具4. 分词与内置分词4.1 内置分词器(了解即可)4.2 `IK`中文分词器三. 整合SpringCloud1. 基础配置…

计算函数(c语言)

1.描述 //小乐乐学会了自定义函数&#xff0c;BoBo老师给他出了个问题&#xff0c;根据以下公式计算m的值。 // //其中 max3函数为计算三个数的最大值&#xff0c;如&#xff1a; max3(1, 2, 3) 返回结果为3。 //输入描述&#xff1a; //一行&#xff0c;输入三个整数&#xff…

视频汇聚/安防综合管理系统EasyCVR非管理员账户能调用分配给其他用户的通道是什么原因?

视频汇聚/安防综合管理系统EasyCVR视频监控平台&#xff0c;作为一款智能视频监控综合管理平台&#xff0c;凭借其强大的视频融合汇聚能力和灵活的视频能力&#xff0c;在各行各业的应用中发挥着越来越重要的作用。平台不仅具备视频资源管理、设备管理、用户管理、网络管理和安…

超精细CG杰作:8K壁纸级官方艺术插画,展现极致美丽与细节的汉服女孩

极致精美的数字艺术杰作&#xff1a;8K壁纸级别的官方插画&#xff0c;展现超高清细节与和谐统一的美感&#xff0c;女孩的精致面容与眼神在光影下熠熠生辉&#xff0c;汉服主题下的超高分辨率作品&#xff0c;文件巨大&#xff0c;细节丰富&#xff0c;令人惊叹。 正向提示词…

Android gradle 构建

Understanding Tasks - Gradle task kapt 是 Kotlin 语言的注解处理器&#xff0c;它是 Android Studio 中用于处理 Kotlin 注解的工具。它通过在编译期间生成代码来增强 Kotlin 代码的功能。需要 Kotlin 编译器来解析和处理注解&#xff1b;使用 APT 来生成代码&#xff0c…

【初阶数据结构】链表(附题)

目录 一、顺序表的问题及思考 二、单链表 2.1链表的概念及结构 2.2.单链表的实现 2.2.1.节点的定义 2.2.2.链表的打印 2.2.3.头部插入删除/尾部插入删除 a.创建节点 b.尾插 c.头插 d.尾删 e.头删 2.2.4.查找数据 2.2.5.在指定位置之前插入数据 2.2.6删除pos节点 …

每日OJ_牛客_DP3跳台阶扩展问题

目录 DP3跳台阶扩展问题 题解代码1&#xff08;dp&#xff09; 题解代码2&#xff08;找规律&#xff09; DP3跳台阶扩展问题 跳台阶扩展问题_牛客题霸_牛客网 题解代码1&#xff08;dp&#xff09; 假定第一次跳的是一阶&#xff0c;那么剩下的是n-1个台阶&#xff0c;跳法…