Compare commits

...

20 Commits

Author SHA1 Message Date
c46ec2415b 1 2023-02-09 10:16:46 +08:00
f0e060f12e 1 2023-02-09 10:01:32 +08:00
65a0d3b9df Apache Tomcat HTTP请求走私漏洞,威助等级: 高危 #4487 2023-01-10 09:48:36 +08:00
1a48fb86bc 敲敲云—零代码平台初版上线(完全在线的零代码平台,在线创建应用) 2022-12-30 20:16:32 +08:00
0fc374de47 修复 sql注入漏洞 #4393 2022-12-23 14:03:22 +08:00
f94c5e1f3f 项目介绍调整 2022-12-10 11:54:46 +08:00
352bd3e98f 项目介绍调整 2022-12-10 11:53:29 +08:00
22fe4475d0 项目介绍调整 2022-12-10 11:48:08 +08:00
7a3d1f1a58 flowable支持 2022-12-10 11:18:24 +08:00
3159c822c7 修复【BUG】最新版jeecgboot的auto-poi版本错误,导致excel导入有表达式的情况识别异常 #issues/4328 2022-12-07 16:15:25 +08:00
fa0ce6e7e1 钉钉对接domain https前缀问题【issues/I5WRIN】 2022-12-06 10:27:12 +08:00
c29794d07b 解决生成代码日期控件问题
RangePicker控件,第一个begin获取不到值,第二个值end取了第一个值 issues/268
2022-12-05 11:02:58 +08:00
6ba5536554 启动报错:java.lang.ArrayIndexOutOfBoundsException: -1 #3653 2022-11-28 12:03:35 +08:00
e6b93c2fca @RequiresPermissions注解写的有问题 2022-11-24 11:41:36 +08:00
b0b517e71e 3.4.3到3.4.4无增量sql 2022-11-23 17:03:03 +08:00
cf3d746d63 3.4.4 online低代码功能模块,依赖升级 2022-11-23 15:58:12 +08:00
0fdbf642d8 降低入门成本,代码生成器模板默认注释掉接口权限,需要请手工解开注释 2022-11-23 15:56:17 +08:00
0ebd1df81d 代码生成器模板完善 2022-11-23 10:08:47 +08:00
6f90a09558 优化代码生成器模板 2022-11-18 21:48:53 +08:00
f3b77442fc jeecgboot 3.4.4版本发布 2022-11-18 12:03:59 +08:00
63 changed files with 202 additions and 165 deletions

View File

@ -7,13 +7,13 @@
JEECG BOOT Low Code Development Platform
===============
The Latest Version 3.4.3-GARelease date2022-10-31
The Latest Version 3.4.4Release date2022-11-21
[![AUR](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg)](https://github.com/zhangdaiscott/jeecg-boot/blob/master/LICENSE)
[![](https://img.shields.io/badge/Author-GuojuSoftWare-orange.svg)](http://www.jeecg.com)
[![](https://img.shields.io/badge/Author-qiaoqiaoyun-orange.svg)](http://www.jeecg.com)
[![](https://img.shields.io/badge/Blog-blog-blue.svg)](https://jeecg.blog.csdn.net)
[![](https://img.shields.io/badge/version-3.4.3-brightgreen.svg)](https://github.com/zhangdaiscott/jeecg-boot)
[![](https://img.shields.io/badge/version-3.4.4-brightgreen.svg)](https://github.com/zhangdaiscott/jeecg-boot)
[![GitHub stars](https://img.shields.io/github/stars/zhangdaiscott/jeecg-boot.svg?style=social&label=Stars)](https://github.com/zhangdaiscott/jeecg-boot)
[![GitHub forks](https://img.shields.io/github/forks/zhangdaiscott/jeecg-boot.svg?style=social&label=Fork)](https://github.com/zhangdaiscott/jeecg-boot)

View File

@ -7,13 +7,13 @@
JEECG BOOT 低代码开发平台
===============
当前最新版本: 3.4.3-GA发布日期2022-10-31
当前最新版本: 3.4.4发布日期2022-11-21
[![AUR](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg)](https://github.com/zhangdaiscott/jeecg-boot/blob/master/LICENSE)
[![](https://img.shields.io/badge/Author-北京国炬软件-orange.svg)](http://www.jeecg.com)
[![](https://img.shields.io/badge/Author-北京敲敲云科技-orange.svg)](http://www.jeecg.com)
[![](https://img.shields.io/badge/Blog-官方博客-blue.svg)](https://jeecg.blog.csdn.net)
[![](https://img.shields.io/badge/version-3.4.3-brightgreen.svg)](https://github.com/zhangdaiscott/jeecg-boot)
[![](https://img.shields.io/badge/version-3.4.4-brightgreen.svg)](https://github.com/zhangdaiscott/jeecg-boot)
[![GitHub stars](https://img.shields.io/github/stars/zhangdaiscott/jeecg-boot.svg?style=social&label=Stars)](https://github.com/zhangdaiscott/jeecg-boot)
[![GitHub forks](https://img.shields.io/github/forks/zhangdaiscott/jeecg-boot.svg?style=social&label=Fork)](https://github.com/zhangdaiscott/jeecg-boot)
@ -34,20 +34,22 @@ JeecgBoot 提供了一系列`低代码模块`,实现在线开发`真正的零
`JEECG业务流程:` 采用工作流来实现、扩展出任务接口,供开发编写业务逻辑,表单提供多种解决方案: 表单设计器、online配置表单、编码表单。同时实现了流程与表单的分离设计松耦合、并支持任务节点灵活配置既保证了公司流程的保密性又减少了开发人员的工作量。
技术支持
-----------------------------------
关闭gitee的issue通道使用中遇到问题或者BUG可以在 [Github上提Issues](https://github.com/jeecgboot/jeecg-boot/issues/new)
官方支持: http://jeecg.com/doc/help
源码下载
-----------------------------------
- 后台源码 https://github.com/jeecgboot/jeecg-boot
- 前端源码(Vue3版)https://github.com/jeecgboot/jeecgboot-vue3
- 前端源码(Vue2版)https://github.com/jeecgboot/ant-design-vue-jeecg
- APP配套框架https://github.com/jeecgboot/jeecg-uniapp
| 源码 | 源码地址 |
|--------------------|------------------------|
| 后台源码 | https://github.com/jeecgboot/jeecg-boot |
| 前端源码 `Vue3版` | https://github.com/jeecgboot/jeecgboot-vue3 |
| 前端源码 `Vue2版` |https://github.com/jeecgboot/ant-design-vue-jeecg |
| APP配套框架 | https://github.com/jeecgboot/jeecg-uniapp |
##### 快速搭建开发环境
- [通过IDEA启动前后端项目](http://doc.jeecg.com/2043874)
- [Vue3前端项目快速启动](http://vue3.jeecg.com/2398848)
- [Vue2前端项目快速启动](http://doc.jeecg.com/2678320)
- [单体快速切换为微服务版](http://doc.jeecg.com/3043471)
##### 项目说明
@ -62,11 +64,22 @@ JeecgBoot 提供了一系列`低代码模块`,实现在线开发`真正的零
适用项目
技术文档
-----------------------------------
Jeecg-Boot低代码开发平台可以应用在任何J2EE项目的开发中尤其适合SAAS项目、企业信息管理系统MIS、内部办公系统OA、企业资源计划系统ERP、客户关系管理系统CRM其半智能手工Merge的开发方式可以显著提高开发效率70%以上,极大降低开发成本。
- 项目官网: [http://www.jeecg.com](http://www.jeecg.com)
- 在线演示 [Vue3版本](http://boot3.jeecg.com) | [Vue2版本](http://boot.jeecg.com) | [敲敲云(零代码)](http://app.qiaoqiaoyun.com)
- 开发文档: [Vue3文档](http://vue3.jeecg.com) | [主项目文档](http://doc.jeecg.com)
- 新手指南: [快速入门](http://www.jeecg.com/doc/quickstart) | [常见问题 ](http://www.jeecg.com/doc/qa) | [视频教程](https://space.bilibili.com/454617261/channel/series) | [1分钟体验低代码](https://my.oschina.net/jeecg/blog/3083313)
- 敲敲云平台(零代码) [http://qiaoqiaoyun.com](http://qiaoqiaoyun.com)
- QQ交流群 ⑥730954414、VUE3群683903138、⑤860162132(满)、④774126647(满)、③816531124(满)、②769925425(满)、①284271917(满)
> ` 提醒【QQ群是自助服务群建议给帮助您解决问题的同学发送指定红包表示感谢】 `
Docker启动项目
@ -79,25 +92,17 @@ Docker启动项目
- [Docker启动Vue2前端](http://doc.jeecg.com/3043612)
适用项目
-----------------------------------
Jeecg-Boot低代码开发平台可以应用在任何J2EE项目的开发中尤其适合SAAS项目、企业信息管理系统MIS、内部办公系统OA、企业资源计划系统ERP、客户关系管理系统CRM其半智能手工Merge的开发方式可以显著提高开发效率70%以上,极大降低开发成本。
技术文档
技术支持
-----------------------------------
- 技术官网: [http://www.jeecg.com](http://www.jeecg.com)
- 在线演示 [Vue3版本](http://boot3.jeecg.com) | [Vue2版本](http://boot.jeecg.com)
- 开发文档: [Vue3文档](http://vue3.jeecg.com) | [主项目文档](http://doc.jeecg.com)
- 新手指南: [快速入门](http://www.jeecg.com/doc/quickstart) | [视频教程](https://space.bilibili.com/454617261/channel/series) | [常见问题 ](http://www.jeecg.com/doc/qa) | [技术支持](http://jeecg.com/doc/help) | [1分钟体验低代码](https://my.oschina.net/jeecg/blog/3083313)
- 微服务开发: [单体升级为微服务](http://doc.jeecg.com/3043471)
- QQ交流群 ⑥730954414、VUE3群683903138、⑤860162132(满)、④774126647(满)、③816531124(满)、②769925425(满)、①284271917(满)
> ` 提醒【QQ群是自助服务群建议给帮助您解决问题的同学发送指定红包表示感谢】 `
关闭gitee的issue通道使用中遇到问题或者BUG可以在 [Github上提Issues](https://github.com/jeecgboot/jeecg-boot/issues/new)
官方支持: [http://jeecg.com/doc/help](http://jeecg.com/doc/help)
##### Star走势图
@ -160,7 +165,7 @@ Docker启动项目
* 17.支持SAAS服务模式提供SaaS多租户架构方案。
* 18.分布式文件服务集成minio、阿里OSS等优秀的第三方提供便捷的文件上传与管理同时也支持本地存储。
* 19.主流数据库兼容一套代码完全兼容Mysql、Postgresql、Oracle、Sqlserver、MariaDB、达梦等主流数据库。
* 20.集成工作流activiti并实现了只需在页面配置流程转向可极大的简化bpm工作流的开发用bpm的流程设计器画出了流程走向一个工作流基本就完成了只需写很少量的java代码
* 20.集成工作流activiti、flowable并实现了只需在页面配置流程转向可极大的简化bpm工作流的开发用bpm的流程设计器画出了流程走向一个工作流基本就完成了只需写很少量的java代码
* 21.低代码能力在线流程设计采用开源Activiti流程引擎实现在线画流程,自定义表单,表单挂靠,业务流转
* 22.多数据源:及其简易的使用方式,在线配置数据源配置,便捷的从其他数据抓取数据;
* 23.提供单点登录CAS集成方案项目中已经提供完善的对接代码

View File

@ -1,6 +0,0 @@
ALTER TABLE `onl_cgform_field`
MODIFY COLUMN `field_show_type` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '表单控件类型' AFTER `dict_text`;
ALTER TABLE `onl_cgform_field`
ADD COLUMN `db_is_persist` tinyint(1) NULL COMMENT '是否需要同步数据库字段 1是0否' AFTER `db_is_null`;
update onl_cgform_field set db_is_persist = 1;

View File

@ -4,7 +4,7 @@
<parent>
<artifactId>jeecg-boot-parent</artifactId>
<groupId>org.jeecgframework.boot</groupId>
<version>3.4.3</version>
<version>3.4.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -1,8 +1,6 @@
package org.jeecg.common.util;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.ServiceNameConstants;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
@ -11,6 +9,9 @@ import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @Description: spring上下文工具类
* @author: jeecg-boot
@ -56,12 +57,19 @@ public class SpringContextUtils implements ApplicationContextAware {
public static String getDomain(){
HttpServletRequest request = getHttpServletRequest();
StringBuffer url = request.getRequestURL();
//微服务情况下获取gateway的basePath
//1.微服务情况下获取gateway的basePath
String basePath = request.getHeader(ServiceNameConstants.X_GATEWAY_BASE_PATH);
if(oConvertUtils.isNotEmpty(basePath)){
return basePath;
}else{
return url.delete(url.length() - request.getRequestURI().length(), url.length()).toString();
String domain = url.delete(url.length() - request.getRequestURI().length(), url.length()).toString();
//2.【兼容】SSL认证之后request.getScheme()获取不到https的问题
// https://blog.csdn.net/weixin_34376986/article/details/89767950
String scheme = request.getHeader(CommonConstant.X_FORWARDED_SCHEME);
if(scheme!=null && !request.getScheme().equals(scheme)){
domain = domain.replace(request.getScheme(),scheme);
}
return domain;
}
}

View File

@ -3,6 +3,7 @@ package org.jeecg.common.util;
import cn.hutool.crypto.SecureUtil;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.exception.JeecgBootException;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Field;
import java.util.Set;
@ -21,7 +22,7 @@ public class SqlInjectionUtil {
* (上线修改值 20200501同步修改前端的盐值
*/
private final static String TABLE_DICT_SIGN_SALT = "20200501";
private final static String XSS_STR = "and |extractvalue|updatexml|exec |insert |select |delete |update |drop |count |chr |mid |master |truncate |char |declare |;|or |+|user()";
private final static String XSS_STR = "and |extractvalue|updatexml|geohash|gtid_subset|gtid_subtract|exec |insert |select |delete |update |drop |count |chr |mid |master |truncate |char |declare |;|or |+|user()";
/**
* 正则 user() 匹配更严谨
@ -33,7 +34,7 @@ public class SqlInjectionUtil {
/**
* sql注释的正则
*/
private final static Pattern SQL_ANNOTATION = Pattern.compile("/\\*.*\\*/");
private final static Pattern SQL_ANNOTATION = Pattern.compile("/\\*[\\s\\S]*\\*/");
/**
* 针对表字典进行额外的sign签名校验增加安全机制
@ -167,7 +168,7 @@ public class SqlInjectionUtil {
*/
//@Deprecated
public static void specialFilterContentForDictSql(String value) {
String specialXssStr = " exec |extractvalue|updatexml| insert | select | delete | update | drop | count | chr | mid | master | truncate | char | declare |;|+|user()";
String specialXssStr = " exec |extractvalue|updatexml|geohash|gtid_subset|gtid_subtract| insert | select | delete | update | drop | count | chr | mid | master | truncate | char | declare |;|+|user()";
String[] xssArr = specialXssStr.split("\\|");
if (value == null || "".equals(value)) {
return;
@ -201,7 +202,7 @@ public class SqlInjectionUtil {
*/
//@Deprecated
public static void specialFilterContentForOnlineReport(String value) {
String specialXssStr = " exec |extractvalue|updatexml| insert | delete | update | drop | chr | mid | master | truncate | char | declare |user()";
String specialXssStr = " exec |extractvalue|updatexml|geohash|gtid_subset|gtid_subtract| insert | delete | update | drop | chr | mid | master | truncate | char | declare |user()";
String[] xssArr = specialXssStr.split("\\|");
if (value == null || "".equals(value)) {
return;

View File

@ -116,7 +116,7 @@ public class Swagger2Config implements WebMvcConfigurer {
// 描述
.description("后台API接口")
// 作者
.contact(new Contact("北京国炬信息技术有限公司","www.jeccg.com","jeecgos@163.com"))
.contact(new Contact("北京敲敲云科技有限公司","www.jeccg.com","jeecgos@163.com"))
.license("The Apache License, Version 2.0")
.licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
.build();

View File

@ -35,7 +35,7 @@ public class MybatisPlusSaasConfig {
/**
* 哪些表需要做多租户 表需要添加一个字段 tenant_id
*/
private static final List<String> TENANT_TABLE = new ArrayList<String>();
public static final List<String> TENANT_TABLE = new ArrayList<String>();
static {
TENANT_TABLE.add("demo");

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>jeecg-boot-parent</artifactId>
<groupId>org.jeecgframework.boot</groupId>
<version>3.4.3</version>
<version>3.4.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>jeecg-system-api</artifactId>
<groupId>org.jeecgframework.boot</groupId>
<version>3.4.3</version>
<version>3.4.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>jeecg-system-api</artifactId>
<groupId>org.jeecgframework.boot</groupId>
<version>3.4.3</version>
<version>3.4.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>jeecg-module-system</artifactId>
<groupId>org.jeecgframework.boot</groupId>
<version>3.4.3</version>
<version>3.4.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -4,7 +4,7 @@
<parent>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-module-system</artifactId>
<version>3.4.3</version>
<version>3.4.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -160,7 +160,7 @@ public class SysUserController {
}
//@RequiresRoles({"admin"})
//Permissions("system:user:add")
//@RequiresPermissions("system:user:add")
@RequestMapping(value = "/add", method = RequestMethod.POST)
public Result<SysUser> add(@RequestBody JSONObject jsonObject) {
Result<SysUser> result = new Result<SysUser>();
@ -189,7 +189,7 @@ public class SysUserController {
}
//@RequiresRoles({"admin"})
//Permissions("system:user:edit")
//@RequiresPermissions("system:user:edit")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<SysUser> edit(@RequestBody JSONObject jsonObject) {
Result<SysUser> result = new Result<SysUser>();
@ -495,7 +495,7 @@ public class SysUserController {
* @return
*/
//@RequiresRoles({"admin"})
//Permissions("system:user:import")
//@RequiresPermissions("system:user:import")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response)throws IOException {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;

View File

@ -1,6 +1,5 @@
package org.jeecg.modules.system.security;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.SymbolConstant;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.common.util.security.AbstractQueryBlackListHandler;
@ -52,7 +51,9 @@ public class DictQueryBlackListHandler extends AbstractQueryBlackListHandler {
*/
private String getTableName(String str) {
String[] arr = str.split("\\s+(?i)where\\s+");
return arr[0];
// sys_user , (sys_user), sys_user%20, %60sys_user%60 issues/4393
String reg = "\\s+|\\(|\\)|`";
return arr[0].replaceAll(reg, "");
}
}

View File

@ -4,24 +4,24 @@
<#assign id = '${.now?string["yyyyMMddhhmmSSsss"]}0'>
INSERT INTO sys_permission(id, parent_id, name, url, component, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_route, is_leaf, keep_alive, hidden, hide_tab, description, status, del_flag, rule_flag, create_by, create_time, update_by, update_time, internal_or_external)
VALUES ('${id}', NULL, '${tableVo.ftlDescription}', '/${entityPackage}/${entityName?uncap_first}List', '${entityPackage}/${entityName}List', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 1, 0, 0, 0, NULL, '1', 0, 0, 'admin', '${.now?string["yyyy-MM-dd HH:mm:ss"]}', NULL, NULL, 0);
VALUES ('${id}', NULL, '${tableVo.ftlDescription}', '/${entityPackage}/${entityName?uncap_first}List', '${entityPackage}/${entityName}List', NULL, NULL, 0, NULL, '1', 0.00, 0, NULL, 1, 0, 0, 0, 0, NULL, '1', 0, 0, 'admin', '${.now?string["yyyy-MM-dd HH:mm:ss"]}', NULL, NULL, 0);
-- 权限控制sql
-- 新增
INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
VALUES ('${.now?string["yyyyMMddhhmmSSsss"]}1', '${id}', '添加${tableVo.ftlDescription}', NULL, NULL, 0, NULL, NULL, 2, '${bussiPackage}:${tableName}:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '${.now?string["yyyy-MM-dd HH:mm:ss"]}', NULL, NULL, 0, 0, '1', 0);
VALUES ('${.now?string["yyyyMMddhhmmSSsss"]}1', '${id}', '添加${tableVo.ftlDescription}', NULL, NULL, 0, NULL, NULL, 2, '${entityPackage}:${tableName}:add', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '${.now?string["yyyy-MM-dd HH:mm:ss"]}', NULL, NULL, 0, 0, '1', 0);
-- 编辑
INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
VALUES ('${.now?string["yyyyMMddhhmmSSsss"]}2', '${id}', '编辑${tableVo.ftlDescription}', NULL, NULL, 0, NULL, NULL, 2, '${bussiPackage}:${tableName}:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '${.now?string["yyyy-MM-dd HH:mm:ss"]}', NULL, NULL, 0, 0, '1', 0);
VALUES ('${.now?string["yyyyMMddhhmmSSsss"]}2', '${id}', '编辑${tableVo.ftlDescription}', NULL, NULL, 0, NULL, NULL, 2, '${entityPackage}:${tableName}:edit', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '${.now?string["yyyy-MM-dd HH:mm:ss"]}', NULL, NULL, 0, 0, '1', 0);
-- 删除
INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
VALUES ('${.now?string["yyyyMMddhhmmSSsss"]}3', '${id}', '删除${tableVo.ftlDescription}', NULL, NULL, 0, NULL, NULL, 2, '${bussiPackage}:${tableName}:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '${.now?string["yyyy-MM-dd HH:mm:ss"]}', NULL, NULL, 0, 0, '1', 0);
VALUES ('${.now?string["yyyyMMddhhmmSSsss"]}3', '${id}', '删除${tableVo.ftlDescription}', NULL, NULL, 0, NULL, NULL, 2, '${entityPackage}:${tableName}:delete', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '${.now?string["yyyy-MM-dd HH:mm:ss"]}', NULL, NULL, 0, 0, '1', 0);
-- 批量删除
INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
VALUES ('${.now?string["yyyyMMddhhmmSSsss"]}4', '${id}', '批量删除${tableVo.ftlDescription}', NULL, NULL, 0, NULL, NULL, 2, '${bussiPackage}:${tableName}:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '${.now?string["yyyy-MM-dd HH:mm:ss"]}', NULL, NULL, 0, 0, '1', 0);
VALUES ('${.now?string["yyyyMMddhhmmSSsss"]}4', '${id}', '批量删除${tableVo.ftlDescription}', NULL, NULL, 0, NULL, NULL, 2, '${entityPackage}:${tableName}:deleteBatch', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '${.now?string["yyyy-MM-dd HH:mm:ss"]}', NULL, NULL, 0, 0, '1', 0);
-- 导出excel
INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
VALUES ('${.now?string["yyyyMMddhhmmSSsss"]}5', '${id}', '导出excel_${tableVo.ftlDescription}', NULL, NULL, 0, NULL, NULL, 2, '${bussiPackage}:${tableName}:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '${.now?string["yyyy-MM-dd HH:mm:ss"]}', NULL, NULL, 0, 0, '1', 0);
VALUES ('${.now?string["yyyyMMddhhmmSSsss"]}5', '${id}', '导出excel_${tableVo.ftlDescription}', NULL, NULL, 0, NULL, NULL, 2, '${entityPackage}:${tableName}:exportXls', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '${.now?string["yyyy-MM-dd HH:mm:ss"]}', NULL, NULL, 0, 0, '1', 0);
-- 导入excel
INSERT INTO sys_permission(id, parent_id, name, url, component, is_route, component_name, redirect, menu_type, perms, perms_type, sort_no, always_show, icon, is_leaf, keep_alive, hidden, hide_tab, description, create_by, create_time, update_by, update_time, del_flag, rule_flag, status, internal_or_external)
VALUES ('${.now?string["yyyyMMddhhmmSSsss"]}6', '${id}', '导入excel_${tableVo.ftlDescription}', NULL, NULL, 0, NULL, NULL, 2, '${bussiPackage}:${tableName}:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '${.now?string["yyyy-MM-dd HH:mm:ss"]}', NULL, NULL, 0, 0, '1', 0);
VALUES ('${.now?string["yyyyMMddhhmmSSsss"]}6', '${id}', '导入excel_${tableVo.ftlDescription}', NULL, NULL, 0, NULL, NULL, 2, '${entityPackage}:${tableName}:importExcel', '1', NULL, 0, NULL, 1, 0, 0, 0, NULL, 'admin', '${.now?string["yyyy-MM-dd HH:mm:ss"]}', NULL, NULL, 0, 0, '1', 0);

View File

@ -35,6 +35,7 @@ import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.apache.shiro.authz.annotation.RequiresPermissions;
<#assign bpm_flag=false>
<#list originalColumns as po>
<#if po.fieldDbName=='bpm_status'>
@ -86,7 +87,7 @@ public class ${entityName}Controller extends JeecgController<${entityName}, I${e
*/
@AutoLog(value = "${tableVo.ftlDescription}-添加")
@ApiOperation(value="${tableVo.ftlDescription}-添加", notes="${tableVo.ftlDescription}-添加")
//@RequiresPermissions("${bussiPackage}:${tableName}:add")
//@RequiresPermissions("${entityPackage}:${tableName}:add")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody ${entityName} ${entityName?uncap_first}) {
<#if bpm_flag>
@ -104,7 +105,7 @@ public class ${entityName}Controller extends JeecgController<${entityName}, I${e
*/
@AutoLog(value = "${tableVo.ftlDescription}-编辑")
@ApiOperation(value="${tableVo.ftlDescription}-编辑", notes="${tableVo.ftlDescription}-编辑")
//@RequiresPermissions("${bussiPackage}:${tableName}:edit")
//@RequiresPermissions("${entityPackage}:${tableName}:edit")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> edit(@RequestBody ${entityName} ${entityName?uncap_first}) {
${entityName?uncap_first}Service.updateById(${entityName?uncap_first});
@ -119,7 +120,7 @@ public class ${entityName}Controller extends JeecgController<${entityName}, I${e
*/
@AutoLog(value = "${tableVo.ftlDescription}-通过id删除")
@ApiOperation(value="${tableVo.ftlDescription}-通过id删除", notes="${tableVo.ftlDescription}-通过id删除")
//@RequiresPermissions("${bussiPackage}:${tableName}:delete")
//@RequiresPermissions("${entityPackage}:${tableName}:delete")
@DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
${entityName?uncap_first}Service.removeById(id);
@ -134,7 +135,7 @@ public class ${entityName}Controller extends JeecgController<${entityName}, I${e
*/
@AutoLog(value = "${tableVo.ftlDescription}-批量删除")
@ApiOperation(value="${tableVo.ftlDescription}-批量删除", notes="${tableVo.ftlDescription}-批量删除")
//@RequiresPermissions("${bussiPackage}:${tableName}:deleteBatch")
//@RequiresPermissions("${entityPackage}:${tableName}:deleteBatch")
@DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.${entityName?uncap_first}Service.removeByIds(Arrays.asList(ids.split(",")));
@ -164,7 +165,7 @@ public class ${entityName}Controller extends JeecgController<${entityName}, I${e
* @param request
* @param ${entityName?uncap_first}
*/
//@RequiresPermissions("${bussiPackage}:${tableName}:exportXls")
//@RequiresPermissions("${entityPackage}:${tableName}:exportXls")
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, ${entityName} ${entityName?uncap_first}) {
return super.exportXls(request, ${entityName?uncap_first}, ${entityName}.class, "${tableVo.ftlDescription}");
@ -177,7 +178,7 @@ public class ${entityName}Controller extends JeecgController<${entityName}, I${e
* @param response
* @return
*/
//@RequiresPermissions("${tableName}:importExcel")
//@RequiresPermissions("${entityPackage}:${tableName}:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, ${entityName}.class);

View File

@ -155,9 +155,13 @@ export const searchFormSchema: FormSchema[] = [
field: "${po.fieldName}",
<#if po.classType=='date'>
component: 'RangePicker',
componentProps: {
valueType: 'Date',
},
<#elseif po.classType=='datetime'>
component: 'RangePicker',
componentProps: {
valueType: 'Date',
showTime:true
},
<#elseif po.fieldDbType=='int' || po.fieldDbType=='double' || po.fieldDbType=='BigDecimal'>

View File

@ -45,6 +45,7 @@ import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.apache.shiro.authz.annotation.RequiresPermissions;
<#assign bpm_flag=false>
<#list originalColumns as po>
<#if po.fieldDbName=='bpm_status'>
@ -100,7 +101,7 @@ public class ${entityName}Controller {
*/
@AutoLog(value = "${tableVo.ftlDescription}-添加")
@ApiOperation(value="${tableVo.ftlDescription}-添加", notes="${tableVo.ftlDescription}-添加")
//@RequiresPermissions("${bussiPackage}:${tableName}:add")
//@RequiresPermissions("${entityPackage}:${tableName}:add")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody ${entityName}Page ${entityName?uncap_first}Page) {
${entityName} ${entityName?uncap_first} = new ${entityName}();
@ -120,7 +121,7 @@ public class ${entityName}Controller {
*/
@AutoLog(value = "${tableVo.ftlDescription}-编辑")
@ApiOperation(value="${tableVo.ftlDescription}-编辑", notes="${tableVo.ftlDescription}-编辑")
//@RequiresPermissions("${bussiPackage}:${tableName}:edit")
//@RequiresPermissions("${entityPackage}:${tableName}:edit")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> edit(@RequestBody ${entityName}Page ${entityName?uncap_first}Page) {
${entityName} ${entityName?uncap_first} = new ${entityName}();
@ -141,7 +142,7 @@ public class ${entityName}Controller {
*/
@AutoLog(value = "${tableVo.ftlDescription}-通过id删除")
@ApiOperation(value="${tableVo.ftlDescription}-通过id删除", notes="${tableVo.ftlDescription}-通过id删除")
//@RequiresPermissions("${bussiPackage}:${tableName}:delete")
//@RequiresPermissions("${entityPackage}:${tableName}:delete")
@DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
${entityName?uncap_first}Service.delMain(id);
@ -156,7 +157,7 @@ public class ${entityName}Controller {
*/
@AutoLog(value = "${tableVo.ftlDescription}-批量删除")
@ApiOperation(value="${tableVo.ftlDescription}-批量删除", notes="${tableVo.ftlDescription}-批量删除")
//@RequiresPermissions("${bussiPackage}:${tableName}:deleteBatch")
//@RequiresPermissions("${entityPackage}:${tableName}:deleteBatch")
@DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.${entityName?uncap_first}Service.delBatchMain(Arrays.asList(ids.split(",")));
@ -203,7 +204,7 @@ public class ${entityName}Controller {
* @param request
* @param ${entityName?uncap_first}
*/
//@RequiresPermissions("${bussiPackage}:${tableName}:exportXls")
//@RequiresPermissions("${entityPackage}:${tableName}:exportXls")
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, ${entityName} ${entityName?uncap_first}) {
// Step.1 组装查询条件查询数据
@ -247,7 +248,7 @@ public class ${entityName}Controller {
* @param response
* @return
*/
//@RequiresPermissions("${bussiPackage}:${tableName}:importExcel")
//@RequiresPermissions("${entityPackage}:${tableName}:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;

View File

@ -36,6 +36,7 @@ import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.apache.shiro.authz.annotation.RequiresPermissions;
/**
* @Description: ${tableVo.ftlDescription}
@ -206,7 +207,7 @@ public class ${entityName}Controller extends JeecgController<${entityName}, I${e
*/
@AutoLog(value = "${tableVo.ftlDescription}-添加")
@ApiOperation(value="${tableVo.ftlDescription}-添加", notes="${tableVo.ftlDescription}-添加")
//@RequiresPermissions("${bussiPackage}:${tableName}:add")
//@RequiresPermissions("${entityPackage}:${tableName}:add")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody ${entityName} ${entityName?uncap_first}) {
${entityName?uncap_first}Service.add${entityName}(${entityName?uncap_first});
@ -221,7 +222,7 @@ public class ${entityName}Controller extends JeecgController<${entityName}, I${e
*/
@AutoLog(value = "${tableVo.ftlDescription}-编辑")
@ApiOperation(value="${tableVo.ftlDescription}-编辑", notes="${tableVo.ftlDescription}-编辑")
//@RequiresPermissions("${bussiPackage}:${tableName}:edit")
//@RequiresPermissions("${entityPackage}:${tableName}:edit")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> edit(@RequestBody ${entityName} ${entityName?uncap_first}) {
${entityName?uncap_first}Service.update${entityName}(${entityName?uncap_first});
@ -236,7 +237,7 @@ public class ${entityName}Controller extends JeecgController<${entityName}, I${e
*/
@AutoLog(value = "${tableVo.ftlDescription}-通过id删除")
@ApiOperation(value="${tableVo.ftlDescription}-通过id删除", notes="${tableVo.ftlDescription}-通过id删除")
//@RequiresPermissions("${bussiPackage}:${tableName}:delete")
//@RequiresPermissions("${entityPackage}:${tableName}:delete")
@DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
${entityName?uncap_first}Service.delete${entityName}(id);
@ -251,7 +252,7 @@ public class ${entityName}Controller extends JeecgController<${entityName}, I${e
*/
@AutoLog(value = "${tableVo.ftlDescription}-批量删除")
@ApiOperation(value="${tableVo.ftlDescription}-批量删除", notes="${tableVo.ftlDescription}-批量删除")
//@RequiresPermissions("${bussiPackage}:${tableName}:deleteBatch")
//@RequiresPermissions("${entityPackage}:${tableName}:deleteBatch")
@DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.${entityName?uncap_first}Service.removeByIds(Arrays.asList(ids.split(",")));
@ -281,7 +282,7 @@ public class ${entityName}Controller extends JeecgController<${entityName}, I${e
* @param request
* @param ${entityName?uncap_first}
*/
//@RequiresPermissions("${bussiPackage}:${tableName}:exportXls")
//@RequiresPermissions("${entityPackage}:${tableName}:exportXls")
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, ${entityName} ${entityName?uncap_first}) {
return super.exportXls(request, ${entityName?uncap_first}, ${entityName}.class, "${tableVo.ftlDescription}");
@ -294,7 +295,7 @@ public class ${entityName}Controller extends JeecgController<${entityName}, I${e
* @param response
* @return
*/
//@RequiresPermissions("${bussiPackage}:${tableName}:importExcel")
//@RequiresPermissions("${entityPackage}:${tableName}:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, ${entityName}.class);

View File

@ -168,9 +168,13 @@ export const searchFormSchema: FormSchema[] = [
field: "${po.fieldName}",
<#if po.classType=='date'>
component: 'RangePicker',
componentProps: {
valueType: 'Date',
},
<#elseif po.classType=='datetime'>
component: 'RangePicker',
componentProps: {
valueType: 'Date',
showTime:true
},
<#elseif po.classType == 'time'>

View File

@ -38,6 +38,7 @@ import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.apache.shiro.authz.annotation.RequiresPermissions;
/**
* @Description: ${tableVo.ftlDescription}
@ -90,7 +91,7 @@ public class ${entityName}Controller extends JeecgController<${entityName}, I${e
*/
@AutoLog(value = "${tableVo.ftlDescription}-添加")
@ApiOperation(value="${tableVo.ftlDescription}-添加", notes="${tableVo.ftlDescription}-添加")
//@RequiresPermissions("${bussiPackage}:${tableName}:add")
//@RequiresPermissions("${entityPackage}:${tableName}:add")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody ${entityName} ${entityName?uncap_first}) {
${entityName?uncap_first}Service.save(${entityName?uncap_first});
@ -104,7 +105,7 @@ public class ${entityName}Controller extends JeecgController<${entityName}, I${e
*/
@AutoLog(value = "${tableVo.ftlDescription}-编辑")
@ApiOperation(value="${tableVo.ftlDescription}-编辑", notes="${tableVo.ftlDescription}-编辑")
//@RequiresPermissions("${bussiPackage}:${tableName}:edit")
//@RequiresPermissions("${entityPackage}:${tableName}:edit")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> edit(@RequestBody ${entityName} ${entityName?uncap_first}) {
${entityName?uncap_first}Service.updateById(${entityName?uncap_first});
@ -118,7 +119,7 @@ public class ${entityName}Controller extends JeecgController<${entityName}, I${e
*/
@AutoLog(value = "${tableVo.ftlDescription}-通过id删除")
@ApiOperation(value="${tableVo.ftlDescription}-通过id删除", notes="${tableVo.ftlDescription}-通过id删除")
//@RequiresPermissions("${bussiPackage}:${tableName}:delete")
//@RequiresPermissions("${entityPackage}:${tableName}:delete")
@DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
${entityName?uncap_first}Service.delMain(id);
@ -132,7 +133,7 @@ public class ${entityName}Controller extends JeecgController<${entityName}, I${e
*/
@AutoLog(value = "${tableVo.ftlDescription}-批量删除")
@ApiOperation(value="${tableVo.ftlDescription}-批量删除", notes="${tableVo.ftlDescription}-批量删除")
//@RequiresPermissions("${bussiPackage}:${tableName}:deleteBatch")
//@RequiresPermissions("${entityPackage}:${tableName}:deleteBatch")
@DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.${entityName?uncap_first}Service.delBatchMain(Arrays.asList(ids.split(",")));
@ -143,7 +144,7 @@ public class ${entityName}Controller extends JeecgController<${entityName}, I${e
* 导出
* @return
*/
//@RequiresPermissions("${bussiPackage}:${tableName}:exportXls")
//@RequiresPermissions("${entityPackage}:${tableName}:exportXls")
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, ${entityName} ${entityName?uncap_first}) {
return super.exportXls(request, ${entityName?uncap_first}, ${entityName}.class, "${tableVo.ftlDescription}");
@ -153,7 +154,7 @@ public class ${entityName}Controller extends JeecgController<${entityName}, I${e
* 导入
* @return
*/
//@RequiresPermissions("${bussiPackage}:${tableName}:importExcel")
//@RequiresPermissions("${entityPackage}:${tableName}:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
return super.importExcel(request, response, ${entityName}.class);

View File

@ -147,9 +147,13 @@ export const searchFormSchema: FormSchema[] = [
field: "${po.fieldName}",
<#if po.classType=='date'>
component: 'RangePicker',
componentProps: {
valueType: 'Date',
},
<#elseif po.classType=='datetime'>
component: 'RangePicker',
componentProps: {
valueType: 'Date',
showTime:true
},
<#elseif po.fieldDbType=='int' || po.fieldDbType=='double' || po.fieldDbType=='BigDecimal'>

View File

@ -45,6 +45,7 @@ import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.apache.shiro.authz.annotation.RequiresPermissions;
/**
* @Description: ${tableVo.ftlDescription}
@ -94,7 +95,7 @@ public class ${entityName}Controller {
*/
@AutoLog(value = "${tableVo.ftlDescription}-添加")
@ApiOperation(value="${tableVo.ftlDescription}-添加", notes="${tableVo.ftlDescription}-添加")
//@RequiresPermissions("${bussiPackage}:${tableName}:add")
//@RequiresPermissions("${entityPackage}:${tableName}:add")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody ${entityName}Page ${entityName?uncap_first}Page) {
${entityName} ${entityName?uncap_first} = new ${entityName}();
@ -111,7 +112,7 @@ public class ${entityName}Controller {
*/
@AutoLog(value = "${tableVo.ftlDescription}-编辑")
@ApiOperation(value="${tableVo.ftlDescription}-编辑", notes="${tableVo.ftlDescription}-编辑")
//@RequiresPermissions("${bussiPackage}:${tableName}:edit")
//@RequiresPermissions("${entityPackage}:${tableName}:edit")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> edit(@RequestBody ${entityName}Page ${entityName?uncap_first}Page) {
${entityName} ${entityName?uncap_first} = new ${entityName}();
@ -132,7 +133,7 @@ public class ${entityName}Controller {
*/
@AutoLog(value = "${tableVo.ftlDescription}-通过id删除")
@ApiOperation(value="${tableVo.ftlDescription}-通过id删除", notes="${tableVo.ftlDescription}-通过id删除")
//@RequiresPermissions("${bussiPackage}:${tableName}:delete")
//@RequiresPermissions("${entityPackage}:${tableName}:delete")
@DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
${entityName?uncap_first}Service.delMain(id);
@ -147,7 +148,7 @@ public class ${entityName}Controller {
*/
@AutoLog(value = "${tableVo.ftlDescription}-批量删除")
@ApiOperation(value="${tableVo.ftlDescription}-批量删除", notes="${tableVo.ftlDescription}-批量删除")
//@RequiresPermissions("${bussiPackage}:${tableName}:deleteBatch")
//@RequiresPermissions("${entityPackage}:${tableName}:deleteBatch")
@DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.${entityName?uncap_first}Service.delBatchMain(Arrays.asList(ids.split(",")));
@ -198,7 +199,7 @@ public class ${entityName}Controller {
* @param request
* @param ${entityName?uncap_first}
*/
//@RequiresPermissions("${bussiPackage}:${tableName}:exportXls")
//@RequiresPermissions("${entityPackage}:${tableName}:exportXls")
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, ${entityName} ${entityName?uncap_first}) {
// Step.1 组装查询条件查询数据
@ -242,7 +243,7 @@ public class ${entityName}Controller {
* @param response
* @return
*/
//@RequiresPermissions("${bussiPackage}:${tableName}:importExcel")
//@RequiresPermissions("${entityPackage}:${tableName}:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;

View File

@ -151,9 +151,13 @@ export const searchFormSchema: FormSchema[] = [
field: "${po.fieldName}",
<#if po.classType=='date'>
component: 'RangePicker',
componentProps: {
valueType: 'Date',
},
<#elseif po.classType=='datetime'>
component: 'RangePicker',
componentProps: {
valueType: 'Date',
showTime:true
},
<#elseif po.fieldDbType=='int' || po.fieldDbType=='double' || po.fieldDbType=='BigDecimal'>

View File

@ -45,6 +45,8 @@ import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.apache.shiro.authz.annotation.RequiresPermissions;
<#assign bpm_flag=false>
<#list originalColumns as po>
<#if po.fieldDbName=='bpm_status'>
@ -100,7 +102,7 @@ public class ${entityName}Controller {
*/
@AutoLog(value = "${tableVo.ftlDescription}-添加")
@ApiOperation(value="${tableVo.ftlDescription}-添加", notes="${tableVo.ftlDescription}-添加")
//@RequiresPermissions("${bussiPackage}:${tableName}:add")
//@RequiresPermissions("${entityPackage}:${tableName}:add")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody ${entityName}Page ${entityName?uncap_first}Page) {
${entityName} ${entityName?uncap_first} = new ${entityName}();
@ -120,7 +122,7 @@ public class ${entityName}Controller {
*/
@AutoLog(value = "${tableVo.ftlDescription}-编辑")
@ApiOperation(value="${tableVo.ftlDescription}-编辑", notes="${tableVo.ftlDescription}-编辑")
//@RequiresPermissions("${bussiPackage}:${tableName}:edit")
//@RequiresPermissions("${entityPackage}:${tableName}:edit")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> edit(@RequestBody ${entityName}Page ${entityName?uncap_first}Page) {
${entityName} ${entityName?uncap_first} = new ${entityName}();
@ -141,7 +143,7 @@ public class ${entityName}Controller {
*/
@AutoLog(value = "${tableVo.ftlDescription}-通过id删除")
@ApiOperation(value="${tableVo.ftlDescription}-通过id删除", notes="${tableVo.ftlDescription}-通过id删除")
//@RequiresPermissions("${bussiPackage}:${tableName}:delete")
//@RequiresPermissions("${entityPackage}:${tableName}:delete")
@DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
${entityName?uncap_first}Service.delMain(id);
@ -156,7 +158,7 @@ public class ${entityName}Controller {
*/
@AutoLog(value = "${tableVo.ftlDescription}-批量删除")
@ApiOperation(value="${tableVo.ftlDescription}-批量删除", notes="${tableVo.ftlDescription}-批量删除")
//@RequiresPermissions("${bussiPackage}:${tableName}:deleteBatch")
//@RequiresPermissions("${entityPackage}:${tableName}:deleteBatch")
@DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.${entityName?uncap_first}Service.delBatchMain(Arrays.asList(ids.split(",")));
@ -203,7 +205,7 @@ public class ${entityName}Controller {
* @param request
* @param ${entityName?uncap_first}
*/
//@RequiresPermissions("${bussiPackage}:${tableName}:exportXls")
//@RequiresPermissions("${entityPackage}:${tableName}:exportXls")
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, ${entityName} ${entityName?uncap_first}) {
// Step.1 组装查询条件查询数据
@ -247,7 +249,7 @@ public class ${entityName}Controller {
* @param response
* @return
*/
//@RequiresPermissions("${bussiPackage}:${tableName}:importExcel")
//@RequiresPermissions("${entityPackage}:${tableName}:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;

View File

@ -151,9 +151,13 @@ export const searchFormSchema: FormSchema[] = [
field: "${po.fieldName}",
<#if po.classType=='date'>
component: 'RangePicker',
componentProps: {
valueType: 'Date',
},
<#elseif po.classType=='datetime'>
component: 'RangePicker',
componentProps: {
valueType: 'Date',
showTime:true
},
<#elseif po.fieldDbType=='int' || po.fieldDbType=='double' || po.fieldDbType=='BigDecimal'>

View File

@ -46,7 +46,7 @@
</a-form>
<!-- 子表单区域 -->
<a-tabs v-model:activeKey="activeKey">
<a-tabs v-model:activeKey="activeKey" animated>
<#list subTables as sub><#rt/>
<a-tab-pane tab="${sub.ftlDescription}" key="${sub.entityName?uncap_first}" :forceRender="true">
<#if sub.foreignRelationType =='1'>
@ -54,8 +54,8 @@
<#else>
<j-vxe-table
:keep-source="true"
resizable
ref="${sub.entityName?uncap_first}TableRef"
v-if="${sub.entityName?uncap_first}Table.show"
:loading="${sub.entityName?uncap_first}Table.loading"
:columns="${sub.entityName?uncap_first}Table.columns"
:dataSource="${sub.entityName?uncap_first}Table.dataSource"
@ -140,8 +140,7 @@
const ${sub.entityName?uncap_first}Table = reactive<Record<string, any>>({
loading: false,
columns: ${sub.entityName?uncap_first}Columns,
dataSource: [],
show: false
dataSource: []
});
</#if>
</#list>
@ -203,7 +202,6 @@
<#else>
const ${sub.entityName?uncap_first}DataList = await query${sub.entityName}ListByMainId(row['${subMainFieldMap[sub.entityName]}']);
${sub.entityName?uncap_first}Table.dataSource = [...${sub.entityName?uncap_first}DataList];
${sub.entityName?uncap_first}Table.show = true;
</#if>
</#list>
}

View File

@ -45,6 +45,7 @@ import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.apache.shiro.authz.annotation.RequiresPermissions;
/**
* @Description: ${tableVo.ftlDescription}
@ -94,7 +95,7 @@ public class ${entityName}Controller {
*/
@AutoLog(value = "${tableVo.ftlDescription}-添加")
@ApiOperation(value="${tableVo.ftlDescription}-添加", notes="${tableVo.ftlDescription}-添加")
//@RequiresPermissions("${bussiPackage}:${tableName}:add")
//@RequiresPermissions("${entityPackage}:${tableName}:add")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody ${entityName}Page ${entityName?uncap_first}Page) {
${entityName} ${entityName?uncap_first} = new ${entityName}();
@ -111,7 +112,7 @@ public class ${entityName}Controller {
*/
@AutoLog(value = "${tableVo.ftlDescription}-编辑")
@ApiOperation(value="${tableVo.ftlDescription}-编辑", notes="${tableVo.ftlDescription}-编辑")
//@RequiresPermissions("${bussiPackage}:${tableName}:edit")
//@RequiresPermissions("${entityPackage}:${tableName}:edit")
@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
public Result<String> edit(@RequestBody ${entityName}Page ${entityName?uncap_first}Page) {
${entityName} ${entityName?uncap_first} = new ${entityName}();
@ -132,7 +133,7 @@ public class ${entityName}Controller {
*/
@AutoLog(value = "${tableVo.ftlDescription}-通过id删除")
@ApiOperation(value="${tableVo.ftlDescription}-通过id删除", notes="${tableVo.ftlDescription}-通过id删除")
//@RequiresPermissions("${bussiPackage}:${tableName}:delete")
//@RequiresPermissions("${entityPackage}:${tableName}:delete")
@DeleteMapping(value = "/delete")
public Result<String> delete(@RequestParam(name="id",required=true) String id) {
${entityName?uncap_first}Service.delMain(id);
@ -147,7 +148,7 @@ public class ${entityName}Controller {
*/
@AutoLog(value = "${tableVo.ftlDescription}-批量删除")
@ApiOperation(value="${tableVo.ftlDescription}-批量删除", notes="${tableVo.ftlDescription}-批量删除")
//@RequiresPermissions("${bussiPackage}:${tableName}:deleteBatch")
//@RequiresPermissions("${entityPackage}:${tableName}:deleteBatch")
@DeleteMapping(value = "/deleteBatch")
public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.${entityName?uncap_first}Service.delBatchMain(Arrays.asList(ids.split(",")));
@ -194,7 +195,7 @@ public class ${entityName}Controller {
* @param request
* @param ${entityName?uncap_first}
*/
//@RequiresPermissions("${bussiPackage}:${tableName}:exportXls")
//@RequiresPermissions("${entityPackage}:${tableName}:exportXls")
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, ${entityName} ${entityName?uncap_first}) {
// Step.1 组装查询条件查询数据
@ -238,7 +239,7 @@ public class ${entityName}Controller {
* @param response
* @return
*/
//@RequiresPermissions("${bussiPackage}:${tableName}:importExcel")
//@RequiresPermissions("${entityPackage}:${tableName}:importExcel")
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;

View File

@ -151,9 +151,13 @@ export const searchFormSchema: FormSchema[] = [
field: "${po.fieldName}",
<#if po.classType=='date'>
component: 'RangePicker',
componentProps: {
valueType: 'Date',
},
<#elseif po.classType=='datetime'>
component: 'RangePicker',
componentProps: {
valueType: 'Date',
showTime:true
},
<#elseif po.fieldDbType=='int' || po.fieldDbType=='double' || po.fieldDbType=='BigDecimal'>

View File

@ -149,12 +149,10 @@
const tabsStyle = computed(() => {
let height: Nullable<string> = null
let minHeight = '100px'
let maxHeight: Nullable<string> = '500px'
// 弹窗wrapper
<#-- update-begin-author:taoyan date:2022-11-14 for:VUEN-2674 【代码生成】对接流程表单 附加单据显示问题 5.多tab生成代码后新增 没有滚动条,只能填写部分字段 -->
let overflow = 'auto';
return {height, minHeight, maxHeight, overflow};
return {height, minHeight, overflow};
<#-- update-end-author:taoyan date:2022-11-14 for:VUEN-2674 【代码生成】对接流程表单 附加单据显示问题 5.多tab生成代码后新增 没有滚动条,只能填写部分字段 -->
})

View File

@ -11,6 +11,6 @@ WORKDIR /jeecg-boot
EXPOSE 8080
#ADD ./src/main/resources/jeecg ./config/jeecg
ADD ./target/jeecg-system-start-3.4.3.jar ./
ADD ./target/jeecg-system-start-3.4.4.jar ./
CMD sleep 60;java -Djava.security.egd=file:/dev/./urandom -jar jeecg-system-start-3.4.3.jar
CMD sleep 60;java -Djava.security.egd=file:/dev/./urandom -jar jeecg-system-start-3.4.4.jar

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>jeecg-module-system</artifactId>
<groupId>org.jeecgframework.boot</groupId>
<version>3.4.3</version>
<version>3.4.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -26,7 +26,7 @@ spring:
max-request-size: 10MB
mail:
host: smtp.163.com
username: jeecgos@163.com
username: ??
password: ??
properties:
mail:

View File

@ -26,7 +26,7 @@ spring:
max-request-size: 10MB
mail:
host: smtp.163.com
username: jeecgos@163.com
username: ??
password: ??
properties:
mail:

View File

@ -26,7 +26,7 @@ spring:
max-request-size: 10MB
mail:
host: smtp.163.com
username: jeecgos@163.com
username: ??
password: ??
properties:
mail:

View File

@ -26,7 +26,7 @@ spring:
max-request-size: 10MB
mail:
host: smtp.163.com
username: jeecgos@163.com
username: ??
password: ??
properties:
mail:

View File

@ -9,6 +9,6 @@ ${AnsiColor.BRIGHT_BLUE}
${AnsiColor.BRIGHT_GREEN}
Jeecg Boot Version: 3.4.3
Jeecg Boot Version: 3.4.4
Spring Boot Version: ${spring-boot.version}${spring-boot.formatted-version}
${AnsiColor.BLACK}

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>jeecg-boot-parent</artifactId>
<groupId>org.jeecgframework.boot</groupId>
<version>3.4.3</version>
<version>3.4.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -10,6 +10,6 @@ WORKDIR /jeecg-cloud-gateway
EXPOSE 9999
ADD ./target/jeecg-cloud-gateway-3.4.3.jar ./
ADD ./target/jeecg-cloud-gateway-3.4.4.jar ./
CMD sleep 50;java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jeecg-cloud-gateway-3.4.3.jar
CMD sleep 50;java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jeecg-cloud-gateway-3.4.4.jar

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>jeecg-server-cloud</artifactId>
<groupId>org.jeecgframework.boot</groupId>
<version>3.4.3</version>
<version>3.4.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jeecg-cloud-gateway</artifactId>

View File

@ -10,6 +10,6 @@ WORKDIR /jeecg-cloud-nacos
EXPOSE 8848
ADD ./target/jeecg-cloud-nacos-3.4.3.jar ./
ADD ./target/jeecg-cloud-nacos-3.4.4.jar ./
CMD sleep 5;java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jeecg-cloud-nacos-3.4.3.jar
CMD sleep 5;java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jeecg-cloud-nacos-3.4.4.jar

View File

@ -5,7 +5,7 @@
<artifactId>jeecg-cloud-nacos</artifactId>
<name>jeecg-cloud-nacos</name>
<description>nacos启动模块</description>
<version>3.4.3</version>
<version>3.4.4</version>
<!-- Nacos2不支持springboot2.6.6 -->
<parent>

View File

@ -10,6 +10,6 @@ WORKDIR /jeecg-demo-cloud
EXPOSE 7002
ADD ./target/jeecg-demo-cloud-start-3.4.3.jar ./
ADD ./target/jeecg-demo-cloud-start-3.4.4.jar ./
CMD sleep 10;java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jeecg-demo-cloud-start-3.4.3.jar
CMD sleep 10;java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jeecg-demo-cloud-start-3.4.4.jar

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>jeecg-server-cloud</artifactId>
<groupId>org.jeecgframework.boot</groupId>
<version>3.4.3</version>
<version>3.4.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -10,6 +10,6 @@ WORKDIR /jeecg-system-cloud
EXPOSE 7001
ADD ./target/jeecg-system-cloud-start-3.4.3.jar ./
ADD ./target/jeecg-system-cloud-start-3.4.4.jar ./
CMD sleep 10;java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jeecg-system-cloud-start-3.4.3.jar
CMD sleep 10;java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jeecg-system-cloud-start-3.4.4.jar

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>jeecg-server-cloud</artifactId>
<groupId>org.jeecgframework.boot</groupId>
<version>3.4.3</version>
<version>3.4.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jeecg-system-cloud-start</artifactId>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>jeecg-visual</artifactId>
<groupId>org.jeecgframework.boot</groupId>
<version>3.4.3</version>
<version>3.4.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jeecg-cloud-monitor</artifactId>

View File

@ -10,6 +10,6 @@ WORKDIR /jeecg-cloud-sentinel
EXPOSE 8848
ADD ./target/jeecg-cloud-sentinel-3.4.3.jar ./
ADD ./target/jeecg-cloud-sentinel-3.4.4.jar ./
CMD sleep 5;java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jeecg-cloud-sentinel-3.4.3.jar
CMD sleep 5;java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jeecg-cloud-sentinel-3.4.4.jar

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>jeecg-visual</artifactId>
<groupId>org.jeecgframework.boot</groupId>
<version>3.4.3</version>
<version>3.4.4</version>
</parent>
<artifactId>jeecg-cloud-sentinel</artifactId>
<name>jeecg-cloud-sentinel</name>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>jeecg-cloud-test</artifactId>
<groupId>org.jeecgframework.boot</groupId>
<version>3.4.3</version>
<version>3.4.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<description>公共测试模块</description>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>jeecg-cloud-test</artifactId>
<groupId>org.jeecgframework.boot</groupId>
<version>3.4.3</version>
<version>3.4.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<description>消息队列测试模块</description>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>jeecg-cloud-test-seata</artifactId>
<groupId>org.jeecgframework.boot</groupId>
<version>3.4.3</version>
<version>3.4.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<description>分布式事务测试模块</description>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>jeecg-cloud-test-seata</artifactId>
<groupId>org.jeecgframework.boot</groupId>
<version>3.4.3</version>
<version>3.4.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<description>分布式事务测试模块</description>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>jeecg-cloud-test-seata</artifactId>
<groupId>org.jeecgframework.boot</groupId>
<version>3.4.3</version>
<version>3.4.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<description>分布式事务测试模块</description>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>jeecg-cloud-test</artifactId>
<groupId>org.jeecgframework.boot</groupId>
<version>3.4.3</version>
<version>3.4.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>jeecg-cloud-test-seata</artifactId>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>jeecg-cloud-test</artifactId>
<groupId>org.jeecgframework.boot</groupId>
<version>3.4.3</version>
<version>3.4.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>jeecg-visual</artifactId>
<groupId>org.jeecgframework.boot</groupId>
<version>3.4.3</version>
<version>3.4.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -10,7 +10,7 @@ WORKDIR /jeecg-cloud-xxljob
EXPOSE 9080
ADD ./target/jeecg-cloud-xxljob-3.4.3.jar ./
ADD ./target/jeecg-cloud-xxljob-3.4.4.jar ./
CMD java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jeecg-cloud-xxljob-3.4.3.jar
CMD java -Dfile.encoding=utf-8 -Djava.security.egd=file:/dev/./urandom -jar jeecg-cloud-xxljob-3.4.4.jar

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>jeecg-visual</artifactId>
<groupId>org.jeecgframework.boot</groupId>
<version>3.4.3</version>
<version>3.4.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>jeecg-server-cloud</artifactId>
<groupId>org.jeecgframework.boot</groupId>
<version>3.4.3</version>
<version>3.4.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>

View File

@ -5,7 +5,7 @@
<parent>
<artifactId>jeecg-boot-parent</artifactId>
<groupId>org.jeecgframework.boot</groupId>
<version>3.4.3</version>
<version>3.4.4</version>
</parent>
<modelVersion>4.0.0</modelVersion>

10
pom.xml
View File

@ -2,19 +2,19 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>jeecg-boot-parent</artifactId>
<version>3.4.3</version>
<version>3.4.4</version>
<packaging>pom</packaging>
<name>JEECG BOOT ${project.version}</name>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.6</version>
<version>2.6.14</version>
<relativePath/>
</parent>
<properties>
<jeecgboot.version>3.4.3</jeecgboot.version>
<jeecgboot.version>3.4.4</jeecgboot.version>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@ -51,7 +51,7 @@
<java-jwt.version>3.11.0</java-jwt.version>
<shiro-redis.version>3.1.0</shiro-redis.version>
<codegenerate.version>1.4.3</codegenerate.version>
<autopoi-web.version>1.4.4</autopoi-web.version>
<autopoi-web.version>1.4.5</autopoi-web.version>
<minio.version>8.0.3</minio.version>
<justauth-spring-boot-starter.version>1.3.4</justauth-spring-boot-starter.version>
<dom4j.version>1.6.1</dom4j.version>
@ -222,7 +222,7 @@
<dependency>
<groupId>org.jeecgframework.boot</groupId>
<artifactId>hibernate-re</artifactId>
<version>3.4.3-GA2</version>
<version>3.4.4-beta</version>
</dependency>
<!-- 七牛云SDK -->