Prechádzať zdrojové kódy

Merge remote-tracking branch 'upstream/master'

# Conflicts:
#	ruoyi-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml
“zyj” 3 rokov pred
rodič
commit
1bb3a55333

+ 6 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java

@@ -125,7 +125,7 @@ public class SysUserController extends BaseController
     @PostMapping
     @PostMapping
     public AjaxResult add(@Validated @RequestBody SysUser user)
     public AjaxResult add(@Validated @RequestBody SysUser user)
     {
     {
-        if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user.getUserName())))
+        if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user)))
         {
         {
             return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
             return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
         }
         }
@@ -154,7 +154,11 @@ public class SysUserController extends BaseController
     {
     {
         userService.checkUserAllowed(user);
         userService.checkUserAllowed(user);
         userService.checkUserDataScope(user.getUserId());
         userService.checkUserDataScope(user.getUserId());
-        if (StringUtils.isNotEmpty(user.getPhonenumber())
+        if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user)))
+        {
+            return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,登录账号已存在");
+        }
+        else if (StringUtils.isNotEmpty(user.getPhonenumber())
                 && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user)))
                 && UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user)))
         {
         {
             return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
             return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");

+ 10 - 0
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/R.java

@@ -102,4 +102,14 @@ public class R<T> implements Serializable
     {
     {
         this.data = data;
         this.data = data;
     }
     }
+
+    public Boolean isError()
+    {
+        return !isSuccess();
+    }
+
+    public Boolean isSuccess()
+    {
+        return R.SUCCESS == getCode();
+    }
 }
 }

+ 0 - 2
ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java

@@ -808,7 +808,6 @@ public class ExcelUtil<T>
             if (!headerStyles.containsKey(key))
             if (!headerStyles.containsKey(key))
             {
             {
                 CellStyle style = wb.createCellStyle();
                 CellStyle style = wb.createCellStyle();
-                style = wb.createCellStyle();
                 style.cloneStyleFrom(styles.get("data"));
                 style.cloneStyleFrom(styles.get("data"));
                 style.setAlignment(HorizontalAlignment.CENTER);
                 style.setAlignment(HorizontalAlignment.CENTER);
                 style.setVerticalAlignment(VerticalAlignment.CENTER);
                 style.setVerticalAlignment(VerticalAlignment.CENTER);
@@ -842,7 +841,6 @@ public class ExcelUtil<T>
             if (!styles.containsKey(key))
             if (!styles.containsKey(key))
             {
             {
                 CellStyle style = wb.createCellStyle();
                 CellStyle style = wb.createCellStyle();
-                style = wb.createCellStyle();
                 style.setAlignment(excel.align());
                 style.setAlignment(excel.align());
                 style.setVerticalAlignment(VerticalAlignment.CENTER);
                 style.setVerticalAlignment(VerticalAlignment.CENTER);
                 style.setBorderRight(BorderStyle.THIN);
                 style.setBorderRight(BorderStyle.THIN);

+ 1 - 1
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java

@@ -78,7 +78,7 @@ public class LogAspect
             // 请求的地址
             // 请求的地址
             String ip = IpUtils.getIpAddr(ServletUtils.getRequest());
             String ip = IpUtils.getIpAddr(ServletUtils.getRequest());
             operLog.setOperIp(ip);
             operLog.setOperIp(ip);
-            operLog.setOperUrl(ServletUtils.getRequest().getRequestURI());
+            operLog.setOperUrl(StringUtils.substring(ServletUtils.getRequest().getRequestURI(), 0, 255));
             if (loginUser != null)
             if (loginUser != null)
             {
             {
                 operLog.setOperName(loginUser.getUsername());
                 operLog.setOperName(loginUser.getUsername());

+ 6 - 7
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysRegisterService.java

@@ -41,9 +41,11 @@ public class SysRegisterService
     public String register(RegisterBody registerBody)
     public String register(RegisterBody registerBody)
     {
     {
         String msg = "", username = registerBody.getUsername(), password = registerBody.getPassword();
         String msg = "", username = registerBody.getUsername(), password = registerBody.getPassword();
+        SysUser sysUser = new SysUser();
+        sysUser.setUserName(username);
 
 
-        boolean captchaEnabled = configService.selectCaptchaEnabled();
         // 验证码开关
         // 验证码开关
+        boolean captchaEnabled = configService.selectCaptchaEnabled();
         if (captchaEnabled)
         if (captchaEnabled)
         {
         {
             validateCaptcha(username, registerBody.getCode(), registerBody.getUuid());
             validateCaptcha(username, registerBody.getCode(), registerBody.getUuid());
@@ -67,16 +69,14 @@ public class SysRegisterService
         {
         {
             msg = "密码长度必须在5到20个字符之间";
             msg = "密码长度必须在5到20个字符之间";
         }
         }
-        else if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(username)))
+        else if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(sysUser)))
         {
         {
             msg = "保存用户'" + username + "'失败,注册账号已存在";
             msg = "保存用户'" + username + "'失败,注册账号已存在";
         }
         }
         else
         else
         {
         {
-            SysUser sysUser = new SysUser();
-            sysUser.setUserName(username);
             sysUser.setNickName(username);
             sysUser.setNickName(username);
-            sysUser.setPassword(SecurityUtils.encryptPassword(registerBody.getPassword()));
+            sysUser.setPassword(SecurityUtils.encryptPassword(password));
             boolean regFlag = userService.registerUser(sysUser);
             boolean regFlag = userService.registerUser(sysUser);
             if (!regFlag)
             if (!regFlag)
             {
             {
@@ -84,8 +84,7 @@ public class SysRegisterService
             }
             }
             else
             else
             {
             {
-                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.REGISTER,
-                        MessageUtils.message("user.register.success")));
+                AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.REGISTER, MessageUtils.message("user.register.success")));
             }
             }
         }
         }
         return msg;
         return msg;

+ 13 - 13
ruoyi-generator/src/main/resources/mapper/generator/GenTableColumnMapper.xml

@@ -91,19 +91,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <update id="updateGenTableColumn" parameterType="GenTableColumn">
     <update id="updateGenTableColumn" parameterType="GenTableColumn">
         update gen_table_column
         update gen_table_column
         <set>
         <set>
-            column_comment = #{columnComment},
-            java_type = #{javaType},
-            java_field = #{javaField},
-            is_insert = #{isInsert},
-            is_edit = #{isEdit},
-            is_list = #{isList},
-            is_query = #{isQuery},
-            is_required = #{isRequired},
-            query_type = #{queryType},
-            html_type = #{htmlType},
-            dict_type = #{dictType},
-            sort = #{sort},
-            update_by = #{updateBy},
+            <if test="columnComment != null">column_comment = #{columnComment},</if>
+            <if test="javaType != null">java_type = #{javaType},</if>
+            <if test="javaField != null">java_field = #{javaField},</if>
+            <if test="isInsert != null">is_insert = #{isInsert},</if>
+            <if test="isEdit != null">is_edit = #{isEdit},</if>
+            <if test="isList != null">is_list = #{isList},</if>
+            <if test="isQuery != null">is_query = #{isQuery},</if>
+            <if test="isRequired != null">is_required = #{isRequired},</if>
+            <if test="queryType != null">query_type = #{queryType},</if>
+            <if test="htmlType != null">html_type = #{htmlType},</if>
+            <if test="dictType != null">dict_type = #{dictType},</if>
+            <if test="sort != null">sort = #{sort},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
             update_time = current_timestamp
             update_time = current_timestamp
         </set>
         </set>
         where column_id = #{columnId}
         where column_id = #{columnId}

+ 1 - 1
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java

@@ -107,7 +107,7 @@ public interface SysUserMapper
      * @param userName 用户名称
      * @param userName 用户名称
      * @return 结果
      * @return 结果
      */
      */
-    public int checkUserNameUnique(String userName);
+    public SysUser checkUserNameUnique(String userName);
 
 
     /**
     /**
      * 校验手机号码是否唯一
      * 校验手机号码是否唯一

+ 2 - 2
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java

@@ -69,10 +69,10 @@ public interface ISysUserService
     /**
     /**
      * 校验用户名称是否唯一
      * 校验用户名称是否唯一
      * 
      * 
-     * @param userName 用户名称
+     * @param user 用户信息
      * @return 结果
      * @return 结果
      */
      */
-    public String checkUserNameUnique(String userName);
+    public String checkUserNameUnique(SysUser user);
 
 
     /**
     /**
      * 校验手机号码是否唯一
      * 校验手机号码是否唯一

+ 5 - 4
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java

@@ -161,14 +161,15 @@ public class SysUserServiceImpl implements ISysUserService
     /**
     /**
      * 校验用户名称是否唯一
      * 校验用户名称是否唯一
      * 
      * 
-     * @param userName 用户名称
+     * @param user 用户信息
      * @return 结果
      * @return 结果
      */
      */
     @Override
     @Override
-    public String checkUserNameUnique(String userName)
+    public String checkUserNameUnique(SysUser user)
     {
     {
-        int count = userMapper.checkUserNameUnique(userName);
-        if (count > 0)
+        Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId();
+        SysUser info = userMapper.checkUserNameUnique(user.getUserName());
+        if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue())
         {
         {
             return UserConstants.NOT_UNIQUE;
             return UserConstants.NOT_UNIQUE;
         }
         }

+ 4 - 2
ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml

@@ -59,8 +59,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 	</select>
 	</select>
     
     
     <select id="selectDeptById" parameterType="Long" resultMap="SysDeptResult">
     <select id="selectDeptById" parameterType="Long" resultMap="SysDeptResult">
-		<include refid="selectDeptVo"/>
-		where dept_id = #{deptId}
+		select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status,
+			(select dept_name from sys_dept where dept_id = d.parent_id) parent_name
+		from sys_dept d
+		where d.dept_id = #{deptId}
 	</select>
 	</select>
     
     
     <select id="checkDeptExistUser" parameterType="Long" resultType="int">
     <select id="checkDeptExistUser" parameterType="Long" resultType="int">

+ 2 - 2
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -130,8 +130,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		where u.user_id = #{userId}
 		where u.user_id = #{userId}
 	</select>
 	</select>
 	
 	
-	<select id="checkUserNameUnique" parameterType="String" resultType="int">
-		select count(1) from sys_user where user_name = #{userName} and del_flag = '0' limit 1
+	<select id="checkUserNameUnique" parameterType="String" resultMap="SysUserResult">
+		select user_id, user_name from sys_user where user_name = #{userName} and del_flag = '0' limit 1
 	</select>
 	</select>
 	
 	
 	<select id="checkPhoneUnique" parameterType="String" resultMap="SysUserResult">
 	<select id="checkPhoneUnique" parameterType="String" resultMap="SysUserResult">

+ 1 - 1
ruoyi-ui/package.json

@@ -41,7 +41,7 @@
     "clipboard": "2.0.8",
     "clipboard": "2.0.8",
     "core-js": "3.19.1",
     "core-js": "3.19.1",
     "echarts": "4.9.0",
     "echarts": "4.9.0",
-    "element-ui": "2.15.8",
+    "element-ui": "2.15.10",
     "file-saver": "2.0.5",
     "file-saver": "2.0.5",
     "fuse.js": "6.4.3",
     "fuse.js": "6.4.3",
     "highlight.js": "9.18.5",
     "highlight.js": "9.18.5",

+ 3 - 2
ruoyi-ui/src/utils/request.js

@@ -130,12 +130,13 @@ service.interceptors.response.use(res => {
 )
 )
 
 
 // 通用下载方法
 // 通用下载方法
-export function download(url, params, filename) {
+export function download(url, params, filename, config) {
   downloadLoadingInstance = Loading.service({ text: "正在下载数据,请稍候", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", })
   downloadLoadingInstance = Loading.service({ text: "正在下载数据,请稍候", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", })
   return service.post(url, params, {
   return service.post(url, params, {
     transformRequest: [(params) => { return tansParams(params) }],
     transformRequest: [(params) => { return tansParams(params) }],
     headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
     headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
-    responseType: 'blob'
+    responseType: 'blob',
+    ...config
   }).then(async (data) => {
   }).then(async (data) => {
     const isLogin = await blobValidate(data);
     const isLogin = await blobValidate(data);
     if (isLogin) {
     if (isLogin) {

+ 1 - 1
ruoyi-ui/src/views/monitor/logininfor/index.vue

@@ -189,8 +189,8 @@ export default {
     resetQuery() {
     resetQuery() {
       this.dateRange = [];
       this.dateRange = [];
       this.resetForm("queryForm");
       this.resetForm("queryForm");
+      this.queryParams.pageNum = 1;
       this.$refs.tables.sort(this.defaultSort.prop, this.defaultSort.order)
       this.$refs.tables.sort(this.defaultSort.prop, this.defaultSort.order)
-      this.handleQuery();
     },
     },
     /** 多选框选中数据 */
     /** 多选框选中数据 */
     handleSelectionChange(selection) {
     handleSelectionChange(selection) {

+ 1 - 1
ruoyi-ui/src/views/monitor/operlog/index.vue

@@ -255,8 +255,8 @@ export default {
     resetQuery() {
     resetQuery() {
       this.dateRange = [];
       this.dateRange = [];
       this.resetForm("queryForm");
       this.resetForm("queryForm");
+      this.queryParams.pageNum = 1;
       this.$refs.tables.sort(this.defaultSort.prop, this.defaultSort.order)
       this.$refs.tables.sort(this.defaultSort.prop, this.defaultSort.order)
-      this.handleQuery();
     },
     },
     /** 多选框选中数据 */
     /** 多选框选中数据 */
     handleSelectionChange(selection) {
     handleSelectionChange(selection) {

+ 7 - 3
ruoyi-ui/src/views/system/dept/index.vue

@@ -297,9 +297,13 @@ export default {
         this.form = response.data;
         this.form = response.data;
         this.open = true;
         this.open = true;
         this.title = "修改部门";
         this.title = "修改部门";
-      });
-      listDeptExcludeChild(row.deptId).then(response => {
-        this.deptOptions = this.handleTree(response.data, "deptId");
+        listDeptExcludeChild(row.deptId).then(response => {
+          this.deptOptions = this.handleTree(response.data, "deptId");
+          if (this.deptOptions.length == 0) {
+            const noResultsOptions = { deptId: this.form.parentId, deptName: this.form.parentName, children: [] };
+            this.deptOptions.push(noResultsOptions);
+          }
+        });
       });
       });
     },
     },
     /** 提交按钮 */
     /** 提交按钮 */