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 @@
- 实用工具 + 实用工具