diff --git a/ruoyi-ui/src/components/TopNav/index.vue b/ruoyi-ui/src/components/TopNav/index.vue
index 6f7b68826..d89930a88 100644
--- a/ruoyi-ui/src/components/TopNav/index.vue
+++ b/ruoyi-ui/src/components/TopNav/index.vue
@@ -73,7 +73,9 @@ export default {
if(router.path === "/") {
router.children[item].path = "/redirect/" + router.children[item].path;
} else {
- router.children[item].path = router.path + "/" + router.children[item].path;
+ if(!this.ishttp(router.children[item].path)) {
+ router.children[item].path = router.path + "/" + router.children[item].path;
+ }
}
router.children[item].parentPath = router.path;
}
@@ -122,7 +124,7 @@ export default {
// 菜单选择事件
handleSelect(key, keyPath) {
this.currentIndex = key;
- if (key.indexOf("http://") !== -1 || key.indexOf("https://") !== -1) {
+ if (this.ishttp(key)) {
// http(s):// 路径新窗口打开
window.open(key, "_blank");
} else if (key.indexOf("/redirect") !== -1) {
@@ -147,6 +149,9 @@ export default {
this.$store.commit("SET_SIDEBAR_ROUTERS", routes);
}
return routes;
+ },
+ ishttp(url) {
+ return url.indexOf('http://') !== -1 || url.indexOf('https://') !== -1
}
},
};
diff --git a/ruoyi/pom.xml b/ruoyi/pom.xml
index 1122185d5..89e37f09b 100644
--- a/ruoyi/pom.xml
+++ b/ruoyi/pom.xml
@@ -8,8 +8,8 @@
ruoyi
3.4.0
- ruoyi
- http://www.ruoyi.vip
+ RuoYi-Vue-Plus
+ https://gitee.com/JavaLionLi/RuoYi-Vue-Plus
若依管理系统
diff --git a/ruoyi/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java b/ruoyi/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
index 57e46fce2..1460f0f6d 100644
--- a/ruoyi/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
+++ b/ruoyi/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
@@ -73,11 +73,11 @@ public class SysUser implements Serializable
/** 用户头像 */
private String avatar;
- /** 密码 */
- @JsonProperty
+ /** 密码 */
private String password;
@JsonIgnore
+ @JsonProperty
public String getPassword() {
return password;
}
diff --git a/ruoyi/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java b/ruoyi/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
index 4fd41dced..8fc46d0c2 100644
--- a/ruoyi/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
+++ b/ruoyi/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
@@ -32,7 +32,7 @@ import java.util.stream.Collectors;
/**
* Excel相关处理
- *
+ *
* @author ruoyi
*/
public class ExcelUtil
@@ -88,12 +88,12 @@ public class ExcelUtil
* 统计列表
*/
private Map statistics = new HashMap();
-
+
/**
* 数字格式
*/
private static final DecimalFormat DOUBLE_FORMAT = new DecimalFormat("######0.00");
-
+
/**
* 实体对象
*/
@@ -119,7 +119,7 @@ public class ExcelUtil
/**
* 对excel表单默认第一个索引名转换成list
- *
+ *
* @param is 输入流
* @return 转换后集合
*/
@@ -130,7 +130,7 @@ public class ExcelUtil
/**
* 对excel表单指定表格索引名转换成list
- *
+ *
* @param sheetName 表格索引名
* @param is 输入流
* @return 转换后集合
@@ -298,7 +298,7 @@ public class ExcelUtil
/**
* 对list数据源将其里面的数据导入到excel表单
- *
+ *
* @param list 导出数据集合
* @param sheetName 工作表的名称
* @return 结果
@@ -311,7 +311,7 @@ public class ExcelUtil
/**
* 对list数据源将其里面的数据导入到excel表单
- *
+ *
* @param sheetName 工作表的名称
* @return 结果
*/
@@ -323,7 +323,7 @@ public class ExcelUtil
/**
* 对list数据源将其里面的数据导入到excel表单
- *
+ *
* @return 结果
*/
public AjaxResult exportExcel()
@@ -391,7 +391,7 @@ public class ExcelUtil
/**
* 填充excel数据
- *
+ *
* @param index 序号
* @param row 单元格行
*/
@@ -418,7 +418,7 @@ public class ExcelUtil
/**
* 创建表格样式
- *
+ *
* @param wb 工作薄对象
* @return 样式列表
*/
@@ -456,7 +456,7 @@ public class ExcelUtil
headerFont.setColor(IndexedColors.WHITE.getIndex());
style.setFont(headerFont);
styles.put("header", style);
-
+
style = wb.createCellStyle();
style.setAlignment(HorizontalAlignment.CENTER);
style.setVerticalAlignment(VerticalAlignment.CENTER);
@@ -500,7 +500,7 @@ public class ExcelUtil
/**
* 设置单元格信息
- *
+ *
* @param value 单元格值
* @param attr 注解相关
* @param cell 单元格信息
@@ -513,7 +513,10 @@ public class ExcelUtil
}
else if (ColumnType.NUMERIC == attr.cellType())
{
- cell.setCellValue(StrUtil.contains(Convert.toStr(value), ".") ? Convert.toDouble(value) : Convert.toInt(value));
+ if (Validator.isNotNull(value))
+ {
+ cell.setCellValue(StrUtil.contains(Convert.toStr(value), ".") ? Convert.toDouble(value) : Convert.toInt(value));
+ }
}
else if (ColumnType.IMAGE == attr.cellType())
{
@@ -528,7 +531,7 @@ public class ExcelUtil
}
}
}
-
+
/**
* 获取画布
*/
@@ -643,7 +646,7 @@ public class ExcelUtil
/**
* 设置 POI XSSFSheet 单元格提示
- *
+ *
* @param sheet 表单
* @param promptTitle 提示标题
* @param promptContent 提示内容
@@ -653,7 +656,7 @@ public class ExcelUtil
* @param endCol 结束列
*/
public void setXSSFPrompt(Sheet sheet, String promptTitle, String promptContent, int firstRow, int endRow,
- int firstCol, int endCol)
+ int firstCol, int endCol)
{
DataValidationHelper helper = sheet.getDataValidationHelper();
DataValidationConstraint constraint = helper.createCustomConstraint("DD1");
@@ -666,7 +669,7 @@ public class ExcelUtil
/**
* 设置某些列的值只能输入预制的数据,显示下拉框.
- *
+ *
* @param sheet 要设置的sheet.
* @param textlist 下拉框显示的内容
* @param firstRow 开始行
@@ -700,7 +703,7 @@ public class ExcelUtil
/**
* 解析导出值 0=男,1=女,2=未知
- *
+ *
* @param propertyValue 参数值
* @param converterExp 翻译注解
* @param separator 分隔符
@@ -737,7 +740,7 @@ public class ExcelUtil
/**
* 反向解析值 男=0,女=1,未知=2
- *
+ *
* @param propertyValue 参数值
* @param converterExp 翻译注解
* @param separator 分隔符
@@ -771,10 +774,10 @@ public class ExcelUtil
}
return StrUtil.strip(propertyString.toString(), null,separator);
}
-
+
/**
* 解析字典值
- *
+ *
* @param dictValue 字典值
* @param dictType 字典类型
* @param separator 分隔符
@@ -787,7 +790,7 @@ public class ExcelUtil
/**
* 反向解析值字典值
- *
+ *
* @param dictLabel 字典标签
* @param dictType 字典类型
* @param separator 分隔符
@@ -797,7 +800,7 @@ public class ExcelUtil
{
return DictUtils.getDictValue(dictType, dictLabel, separator);
}
-
+
/**
* 合计统计信息
*/
@@ -834,7 +837,7 @@ public class ExcelUtil
cell = row.createCell(0);
cell.setCellStyle(styles.get("total"));
cell.setCellValue("合计");
-
+
for (Integer key : keys)
{
cell = row.createCell(key);
@@ -856,7 +859,7 @@ public class ExcelUtil
/**
* 获取下载路径
- *
+ *
* @param filename 文件名称
*/
public String getAbsoluteFile(String filename)
@@ -872,7 +875,7 @@ public class ExcelUtil
/**
* 获取bean中的属性值
- *
+ *
* @param vo 实体对象
* @param field 字段
* @param excel 注解
@@ -903,7 +906,7 @@ public class ExcelUtil
/**
* 以类的属性的get方法方法形式获取值
- *
+ *
* @param o
* @param name
* @return value
@@ -952,7 +955,7 @@ public class ExcelUtil
this.fields = this.fields.stream().sorted(Comparator.comparing(objects -> ((Excel) objects[1]).sort())).collect(Collectors.toList());
this.maxHeight = getRowHeight();
}
-
+
/**
* 根据注解获取最大行高
*/
@@ -988,7 +991,7 @@ public class ExcelUtil
/**
* 创建工作表
- *
+ *
* @param sheetNo sheet数量
* @param index 序号
*/
@@ -1009,7 +1012,7 @@ public class ExcelUtil
/**
* 获取单元格值
- *
+ *
* @param row 获取的行
* @param column 获取单元格列号
* @return 单元格值
diff --git a/ruoyi/src/main/java/com/ruoyi/framework/mybatisplus/CreateAndUpdateMetaObjectHandler.java b/ruoyi/src/main/java/com/ruoyi/framework/mybatisplus/CreateAndUpdateMetaObjectHandler.java
index 7c0922e3c..4797a64bd 100644
--- a/ruoyi/src/main/java/com/ruoyi/framework/mybatisplus/CreateAndUpdateMetaObjectHandler.java
+++ b/ruoyi/src/main/java/com/ruoyi/framework/mybatisplus/CreateAndUpdateMetaObjectHandler.java
@@ -7,49 +7,39 @@ import org.apache.ibatis.reflection.MetaObject;
import java.util.Date;
/**
- * @author woo
- * @date 2021/3/11
+ * MP注入处理器
+ * @author Lion Li
+ * @date 2021/4/25
*/
public class CreateAndUpdateMetaObjectHandler implements MetaObjectHandler {
+
@Override
public void insertFill(MetaObject metaObject) {
- //region 处理创建人信息
- Object createBy = this.getFieldValByName("createBy", metaObject);
- Object createTime = this.getFieldValByName("createTime", metaObject);
- if (createBy == null) {
- createBy = SecurityUtils.getUsername();
- this.setFieldValByName("createBy", createBy, metaObject);
+ //根据属性名字设置要填充的值
+ if (metaObject.hasGetter("createTime")) {
+ if (metaObject.getValue("createTime") == null) {
+ this.setFieldValByName("createTime", new Date(), metaObject);
+ }
}
- if (createTime == null) {
- createTime = new Date();
- this.setFieldValByName("createTime", createTime, metaObject);
+ if (metaObject.hasGetter("createBy")) {
+ if (metaObject.getValue("createBy") == null) {
+ this.setFieldValByName("createBy", SecurityUtils.getUsername(), metaObject);
+ }
}
- //endregion
}
@Override
public void updateFill(MetaObject metaObject) {
- //region 处理修改人信息
- Object updateBy = this.getFieldValByName("updateBy", metaObject);
- Object updateTime = this.getFieldValByName("updateTime", metaObject);
- if (updateBy == null) {
- updateBy = SecurityUtils.getUsername();
- this.setFieldValByName("updateBy", updateBy, metaObject);
+ if (metaObject.hasGetter("updateBy")) {
+ if (metaObject.getValue("updateBy") == null) {
+ this.setFieldValByName("updateBy", SecurityUtils.getUsername(), metaObject);
+ }
}
- if (updateTime == null) {
- updateTime = new Date();
- this.setFieldValByName("updateTime", updateTime, metaObject);
+ if (metaObject.hasGetter("updateTime")) {
+ if (metaObject.getValue("updateTime") == null) {
+ this.setFieldValByName("updateTime", new Date(), metaObject);
+ }
}
- //endregion
}
- @Override
- public boolean openInsertFill() {
- return true;
- }
-
- @Override
- public boolean openUpdateFill() {
- return true;
- }
}
diff --git a/ruoyi/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java b/ruoyi/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
index 8acb14f26..2c2c8e4f3 100644
--- a/ruoyi/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
+++ b/ruoyi/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
@@ -10,6 +10,7 @@ import com.ruoyi.system.service.ISysLogininforService;
import org.springframework.stereotype.Service;
import java.util.Arrays;
+import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -28,6 +29,7 @@ public class SysLogininforServiceImpl extends ServiceImpl= date_format({0},'%y%m%d')",
params.get("beginTime"))
.apply(Validator.isNotEmpty(params.get("endTime")),
- "date_format(login_time,'%y%m%d') <= date_format({0},'%y%m%d'",
+ "date_format(login_time,'%y%m%d') <= date_format({0},'%y%m%d')",
params.get("endTime"))
.orderByDesc(SysLogininfor::getInfoId));
}
diff --git a/ruoyi/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java b/ruoyi/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
index de669b193..b04d3b267 100644
--- a/ruoyi/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
+++ b/ruoyi/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
@@ -142,6 +142,7 @@ public class SysMenuServiceImpl extends ServiceImpl impl
router.setRedirect("noRedirect");
router.setChildren(buildMenus(cMenus));
} else if (isMenuFrame(menu)) {
+ router.setMeta(null);
List childrenList = new ArrayList();
RouterVo children = new RouterVo();
children.setPath(menu.getPath());
diff --git a/ruoyi/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java b/ruoyi/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java
index 6b1805615..95aaa5276 100644
--- a/ruoyi/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java
+++ b/ruoyi/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java
@@ -11,6 +11,7 @@ import com.ruoyi.system.service.ISysOperLogService;
import org.springframework.stereotype.Service;
import java.util.Arrays;
+import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -29,6 +30,7 @@ public class SysOperLogServiceImpl extends ServiceImpl= date_format({0},'%y%m%d')",
params.get("beginTime"))
.apply(Validator.isNotEmpty(params.get("endTime")),
- "date_format(login_time,'%y%m%d') <= date_format({0},'%y%m%d'",
+ "date_format(oper_time,'%y%m%d') <= date_format({0},'%y%m%d')",
params.get("endTime"))
.orderByDesc(SysOperLog::getOperId));
}
diff --git a/ruoyi/src/main/resources/application.yml b/ruoyi/src/main/resources/application.yml
index 4a80c434e..ec9adaa46 100644
--- a/ruoyi/src/main/resources/application.yml
+++ b/ruoyi/src/main/resources/application.yml
@@ -198,11 +198,11 @@ mybatis-plus:
# NOT_EMPTY 非空判断(只对字符串类型字段,其他类型字段依然为非NULL判断)
# DEFAULT 默认的,一般只用于注解里
# NEVER 不加入 SQL
- insertStrategy: NOT_NULL
+ insertStrategy: NOT_EMPTY
# 字段验证策略之 update,在 update 的时候的字段验证策略
- updateStrategy: NOT_NULL
+ updateStrategy: NOT_EMPTY
# 字段验证策略之 select,在 select 的时候的字段验证策略既 wrapper 根据内部 entity 生成的 where 条件
- selectStrategy: NOT_NULL
+ selectStrategy: NOT_EMPTY
# PageHelper分页插件
pagehelper: