From 7254cbb9caa3554b3b6c11653ef16279e01b2fac Mon Sep 17 00:00:00 2001
From: xjs <1294405880@qq.com>
Date: Fri, 21 Jan 2022 11:38:47 +0800
Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=90=8E=E7=AB=AF=E7=94=A8=E6=88=B7?=
=?UTF-8?q?=E6=A8=A1=E5=9D=97=E5=AE=9E=E7=8E=B0=E7=BB=9F=E8=AE=A1=E7=99=BB?=
=?UTF-8?q?=E5=BD=95=E6=AC=A1=E6=95=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../ruoyi/system/api/RemoteUserService.java | 23 +++++---
.../com/ruoyi/system/api/domain/SysUser.java | 47 +++++++++++++---
.../factory/RemoteUserFallbackFactory.java | 5 ++
.../ruoyi/auth/service/SysLoginService.java | 14 ++++-
.../system/controller/SysUserController.java | 56 ++++++++++---------
.../ruoyi/system/mapper/SysUserMapper.java | 13 ++++-
.../ruoyi/system/service/ISysUserService.java | 15 ++++-
.../service/impl/SysUserServiceImpl.java | 34 +++++------
.../resources/mapper/system/SysUserMapper.xml | 52 ++++++++++-------
.../views/business/tools/apitools/index.vue | 6 +-
10 files changed, 178 insertions(+), 87 deletions(-)
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java
index e7fe34c5..4620353b 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/RemoteUserService.java
@@ -1,11 +1,7 @@
package com.ruoyi.system.api;
import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.*;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.constant.ServiceNameConstants;
import com.ruoyi.common.core.domain.R;
@@ -14,9 +10,10 @@ import com.ruoyi.system.api.factory.RemoteUserFallbackFactory;
import com.ruoyi.system.api.model.LoginUser;
/**
- * 用户服务
- *
- * @author ruoyi
+ * 用户服务
+ * 新增修改用户remote
+ * @since 2022-01-21
+ * @author ruoyi,xjs
*/
@FeignClient(contextId = "remoteUserService", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = RemoteUserFallbackFactory.class)
public interface RemoteUserService
@@ -40,4 +37,14 @@ public interface RemoteUserService
*/
@PostMapping("/user/register")
public R registerUserInfo(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
+ /**
+ * 修改用户登录次数
+ * @param id 用户id
+ * @param count 登录次数
+ * @return int
+ */
+ @PutMapping("/user/updateForRPC/{id}")
+ R updateForRPC(@PathVariable("id") String id,@RequestBody Integer count,@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
}
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java
index f11f35fd..b0619de3 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java
@@ -1,10 +1,5 @@
package com.ruoyi.system.api.domain;
-import java.util.Date;
-import java.util.List;
-import javax.validation.constraints.*;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.annotation.Excel.ColumnType;
@@ -12,11 +7,19 @@ import com.ruoyi.common.core.annotation.Excel.Type;
import com.ruoyi.common.core.annotation.Excels;
import com.ruoyi.common.core.web.domain.BaseEntity;
import com.ruoyi.common.core.xss.Xss;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import javax.validation.constraints.Email;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Size;
+import java.util.Date;
+import java.util.List;
/**
* 用户对象 sys_user
- *
- * @author ruoyi
+ * @since 2022-01-21 11:06:11
+ * @author ruoyi,xjs
*/
public class SysUser extends BaseEntity
{
@@ -56,6 +59,19 @@ public class SysUser extends BaseEntity
/** 密码 */
private String password;
+
+ /**
+ * 登录次数
+ */
+ private Integer loginCount;
+
+
+ /**
+ * 登录总时长
+ */
+ private Long loginTimes;
+
+
/** 帐号状态(0正常 1停用) */
@Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用")
private String status;
@@ -100,6 +116,23 @@ public class SysUser extends BaseEntity
this.userId = userId;
}
+
+ public Integer getLoginCount() {
+ return loginCount;
+ }
+
+ public void setLoginCount(Integer loginCount) {
+ this.loginCount = loginCount;
+ }
+
+ public Long getLoginTimes() {
+ return loginTimes;
+ }
+
+ public void setLoginTimes(Long loginTimes) {
+ this.loginTimes = loginTimes;
+ }
+
public Long getUserId()
{
return userId;
diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java
index 8fd6c677..d40c2133 100644
--- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java
+++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java
@@ -36,6 +36,11 @@ public class RemoteUserFallbackFactory implements FallbackFactory updateForRPC(String id, Integer count, String source) {
+ return R.fail("修改用户登录次数失败:" + throwable.getMessage());
+ }
};
}
}
diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
index ddd6bfb5..07156374 100644
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
@@ -19,9 +19,10 @@ import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser;
/**
- * 登录校验方法
- *
- * @author ruoyi
+ * 登录校验方法
+ * 新增功能统计用户登录次数
+ * @since 2022-01-21 11:22:16
+ * @author ruoyi,xjs
*/
@Component
public class SysLoginService
@@ -88,6 +89,13 @@ public class SysLoginService
throw new ServiceException("用户不存在/密码错误");
}
recordLogininfor(username, Constants.LOGIN_SUCCESS, "登录成功");
+
+ //累加登录次数
+ if (StringUtils.isNull(user.getLoginCount())) {
+ user.setLoginCount(0);
+ }
+ Integer count = user.getLoginCount() + 1;
+ remoteUserService.updateForRPC(String.valueOf(user.getUserId()),count,SecurityConstants.INNER);
return userInfo;
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
index bc94e421..5613fdfa 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
@@ -1,22 +1,5 @@
package com.ruoyi.system.controller;
-import java.io.IOException;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-import javax.servlet.http.HttpServletResponse;
-import org.apache.commons.lang3.ArrayUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.StringUtils;
@@ -32,16 +15,24 @@ import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.system.api.domain.SysRole;
import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.api.model.LoginUser;
-import com.ruoyi.system.service.ISysConfigService;
-import com.ruoyi.system.service.ISysPermissionService;
-import com.ruoyi.system.service.ISysPostService;
-import com.ruoyi.system.service.ISysRoleService;
-import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.system.service.*;
+import org.apache.commons.lang3.ArrayUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
/**
- * 用户信息
- *
- * @author ruoyi
+ * 用户信息
+ * 新增修改用户信息接口远程调用
+ * @since 2022-01-21 10:53:38
+ * @author ruoyi、xjs
*/
@RestController
@RequestMapping("/user")
@@ -126,6 +117,21 @@ public class SysUserController extends BaseController
return R.ok(sysUserVo);
}
+
+ /**
+ * 远程登录之后累加登录次数
+ * @param id userId主键
+ * @param count 累加次数
+ * @return R
+ */
+ @InnerAuth
+ @PutMapping("/updateForRPC/{id}")
+ public R updateForRPC(@PathVariable("id") String id,@RequestBody Integer count) {
+ int c=userService.updateUserLoginCount(id,count);
+ return R.ok(c);
+ }
+
+
/**
* 注册用户信息
*/
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
index a7ffdb59..08311e2f 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
@@ -1,8 +1,9 @@
package com.ruoyi.system.mapper;
-import java.util.List;
-import org.apache.ibatis.annotations.Param;
import com.ruoyi.system.api.domain.SysUser;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
* 用户表 数据层
@@ -124,4 +125,12 @@ public interface SysUserMapper
* @return 结果
*/
public SysUser checkEmailUnique(String email);
+
+ /**
+ * 修改用户登录次数(统计)
+ * @param id 用户id
+ * @param count 登录次数
+ * @return int
+ */
+ int updateUserLoginCount(@Param("id")String id, @Param("count")Integer count);
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
index 1fc220ad..e2631b9e 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
@@ -1,12 +1,13 @@
package com.ruoyi.system.service;
-import java.util.List;
import com.ruoyi.system.api.domain.SysUser;
+import java.util.List;
+
/**
* 用户 业务层
- *
- * @author ruoyi
+ * @since 2022-01-21
+ * @author ruoyi,xjs
*/
public interface ISysUserService
{
@@ -203,4 +204,12 @@ public interface ISysUserService
* @return 结果
*/
public String importUser(List userList, Boolean isUpdateSupport, String operName);
+
+ /**
+ * 修改用户登录次数(统计)
+ * @param id 用户id
+ * @param count 登录次数
+ * @return int
+ */
+ int updateUserLoginCount(String id, Integer count);
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
index 7198daa1..4d8e8fa1 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -1,16 +1,5 @@
package com.ruoyi.system.service.impl;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
-import java.util.stream.Collectors;
-import javax.validation.Validator;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.CollectionUtils;
import com.ruoyi.common.core.constant.UserConstants;
import com.ruoyi.common.core.exception.ServiceException;
import com.ruoyi.common.core.utils.SpringUtils;
@@ -23,13 +12,20 @@ import com.ruoyi.system.api.domain.SysUser;
import com.ruoyi.system.domain.SysPost;
import com.ruoyi.system.domain.SysUserPost;
import com.ruoyi.system.domain.SysUserRole;
-import com.ruoyi.system.mapper.SysPostMapper;
-import com.ruoyi.system.mapper.SysRoleMapper;
-import com.ruoyi.system.mapper.SysUserMapper;
-import com.ruoyi.system.mapper.SysUserPostMapper;
-import com.ruoyi.system.mapper.SysUserRoleMapper;
+import com.ruoyi.system.mapper.*;
import com.ruoyi.system.service.ISysConfigService;
import com.ruoyi.system.service.ISysUserService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import javax.validation.Validator;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
/**
* 用户 业务层处理
@@ -561,4 +557,10 @@ public class SysUserServiceImpl implements ISysUserService
return successMsg.toString();
}
+ @Override
+ @Transactional
+ public int updateUserLoginCount(String id, Integer count) {
+ return userMapper.updateUserLoginCount(id,count);
+ }
+
}
diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index 4a095a6f..0531ac5e 100644
--- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -14,6 +14,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+
+
+
+
+
@@ -26,7 +31,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-
+
@@ -35,7 +40,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-
+
@@ -44,9 +49,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-
+
- select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
+ select u.login_count, u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
d.dept_id, d.parent_id, d.dept_name, d.order_num, d.leader, d.status as dept_status,
r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
from sys_user u
@@ -54,7 +59,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
left join sys_user_role ur on u.user_id = ur.user_id
left join sys_role r on r.role_id = ur.role_id
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
insert into sys_user(
user_id,
@@ -172,7 +177,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
sysdate()
)
-
+
update sys_user
@@ -193,15 +198,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where user_id = #{userId}
-
+
update sys_user set status = #{status} where user_id = #{userId}
-
+
update sys_user set avatar = #{avatar} where user_name = #{userName}
-
+
update sys_user set password = #{password} where user_name = #{userName}
@@ -209,12 +214,19 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
update sys_user set del_flag = '2' where user_id = #{userId}
-
+
update sys_user set del_flag = '2' where user_id in
#{userId}
-
+
-
+
+
+
+
+ update sys_user set login_count = #{count} where user_id= #{id}
+
+
+
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/business/tools/apitools/index.vue b/ruoyi-ui/src/views/business/tools/apitools/index.vue
index 36a97c2d..c36015b6 100644
--- a/ruoyi-ui/src/views/business/tools/apitools/index.vue
+++ b/ruoyi-ui/src/views/business/tools/apitools/index.vue
@@ -3,7 +3,7 @@
- 小工具
+ 小工具
@@ -102,7 +102,7 @@
placement="bottom"
width="300"
v-model="idCardVisible">
-
+
身份证号:{{ idCardData.idCardNum }}
@@ -129,7 +129,7 @@
- 实用工具
+ 实用工具