From a7aeb938231add574155038a4cf8179888a58a58 Mon Sep 17 00:00:00 2001 From: RuoYi Date: Tue, 22 May 2018 22:00:04 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=94=A8=E6=88=B7=E7=99=BB?= =?UTF-8?q?=E9=99=86IP=EF=BC=8C=E7=99=BB=E9=99=86=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/{ry_20180520.sql => ry_20180522.sql} | 6 +++-- .../com/ruoyi/common/utils/DateUtils.java | 11 +++++++- .../ruoyi/framework/aspectj/LogAspect.java | 1 - .../framework/shiro/service/LoginService.java | 18 ++++++++++--- .../system/config/mapper/ConfigMapper.java | 2 +- .../system/config/service/IConfigService.java | 4 +-- .../project/system/user/domain/User.java | 25 +++++++++++++++++++ .../system/user/mapper/UserMapper.java | 2 +- .../system/user/service/IUserService.java | 6 ++--- .../system/user/service/UserServiceImpl.java | 5 ++-- .../resources/mybatis/system/UserMapper.xml | 12 ++++++--- src/main/resources/static/ruoyi/index.js | 1 + .../system/user/profile/profile.html | 4 +-- 13 files changed, 75 insertions(+), 22 deletions(-) rename sql/{ry_20180520.sql => ry_20180522.sql} (98%) diff --git a/sql/ry_20180520.sql b/sql/ry_20180522.sql similarity index 98% rename from sql/ry_20180520.sql rename to sql/ry_20180522.sql index 34b3a5f1..7bacd05c 100644 --- a/sql/ry_20180520.sql +++ b/sql/ry_20180522.sql @@ -51,6 +51,8 @@ create table sys_user ( user_type char(1) default 'N' comment '类型:Y默认用户,N非默认用户', status int(1) default 0 comment '帐号状态:0正常,1禁用', refuse_des varchar(500) default '' comment '拒绝登录描述', + login_ip varchar(100) default '' comment '最后登陆IP', + login_date datetime comment '最后登陆时间', create_by varchar(64) default '' comment '创建者', create_time datetime comment '创建时间', update_by varchar(64) default '' comment '更新者', @@ -61,8 +63,8 @@ create table sys_user ( -- ---------------------------- -- 初始化-用户信息表数据 -- ---------------------------- -insert into sys_user values(1, 106, 'admin', '若依', 'ry@163.com', '15888888888', '1', '', '29c67a30398638269fe600f73a054934', '111111', 'Y', 0, '正常', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00'); -insert into sys_user values(2, 108, 'ry', '若依', 'ry@qq.com', '15666666666', '1', '', '8e6d98b90472783cc73c17047ddccf36', '222222', 'N', 0, '正常', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00'); +insert into sys_user values(1, 106, 'admin', '若依', 'ry@163.com', '15888888888', '1', '', '29c67a30398638269fe600f73a054934', '111111', 'Y', 0, '正常', '127.0.0.1', '2018-03-16 11-33-00', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00'); +insert into sys_user values(2, 108, 'ry', '若依', 'ry@qq.com', '15666666666', '1', '', '8e6d98b90472783cc73c17047ddccf36', '222222', 'N', 0, '正常', '127.0.0.1', '2018-03-16 11-33-00', 'admin', '2018-03-16 11-33-00', 'ry', '2018-03-16 11-33-00'); -- ---------------------------- -- 3、岗位信息表 diff --git a/src/main/java/com/ruoyi/common/utils/DateUtils.java b/src/main/java/com/ruoyi/common/utils/DateUtils.java index 617938d7..db32fb27 100644 --- a/src/main/java/com/ruoyi/common/utils/DateUtils.java +++ b/src/main/java/com/ruoyi/common/utils/DateUtils.java @@ -3,7 +3,6 @@ package com.ruoyi.common.utils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; - import org.apache.commons.lang3.time.DateFormatUtils; /** @@ -23,6 +22,16 @@ public class DateUtils public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss"; + /** + * 获取当前Date型日期 + * + * @return Date() 当前日期 + */ + public static Date getNowDate() + { + return new Date(); + } + /** * 获取当前日期, 默认格式为yyyy-MM-dd * diff --git a/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java b/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java index 442696f9..8fe40426 100644 --- a/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java +++ b/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java @@ -32,7 +32,6 @@ import com.ruoyi.project.system.user.domain.User; * * @author ruoyi */ - @Aspect @Component @EnableAsync diff --git a/src/main/java/com/ruoyi/framework/shiro/service/LoginService.java b/src/main/java/com/ruoyi/framework/shiro/service/LoginService.java index 87fef6df..e5aba618 100644 --- a/src/main/java/com/ruoyi/framework/shiro/service/LoginService.java +++ b/src/main/java/com/ruoyi/framework/shiro/service/LoginService.java @@ -10,9 +10,11 @@ import com.ruoyi.common.exception.user.CaptchaException; import com.ruoyi.common.exception.user.UserBlockedException; import com.ruoyi.common.exception.user.UserNotExistsException; import com.ruoyi.common.exception.user.UserPasswordNotMatchException; +import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.MessageUtils; import com.ruoyi.common.utils.ServletUtils; import com.ruoyi.common.utils.SystemLogUtils; +import com.ruoyi.common.utils.security.ShiroUtils; import com.ruoyi.project.system.user.domain.User; import com.ruoyi.project.system.user.service.IUserService; @@ -70,12 +72,12 @@ public class LoginService { user = userService.selectUserByPhoneNumber(username); } - + if (user == null && maybeEmail(username)) { user = userService.selectUserByEmail(username); } - + if (user == null) { SystemLogUtils.log(username, CommonConstant.LOGIN_FAIL, MessageUtils.message("user.not.exists")); @@ -89,8 +91,8 @@ public class LoginService SystemLogUtils.log(username, CommonConstant.LOGIN_FAIL, MessageUtils.message("user.blocked", user.getRefuseDes())); throw new UserBlockedException(user.getRefuseDes()); } - SystemLogUtils.log(username, CommonConstant.LOGIN_SUCCESS, MessageUtils.message("user.login.success")); + recordLoginInfo(user); return user; } @@ -112,4 +114,14 @@ public class LoginService return true; } + /** + * 记录登录信息 + */ + public void recordLoginInfo(User user) + { + user.setLoginIp(ShiroUtils.getIp()); + user.setLoginDate(DateUtils.getNowDate()); + userService.updateUser(user); + } + } diff --git a/src/main/java/com/ruoyi/project/system/config/mapper/ConfigMapper.java b/src/main/java/com/ruoyi/project/system/config/mapper/ConfigMapper.java index eb8b434e..e8c4823f 100644 --- a/src/main/java/com/ruoyi/project/system/config/mapper/ConfigMapper.java +++ b/src/main/java/com/ruoyi/project/system/config/mapper/ConfigMapper.java @@ -22,7 +22,7 @@ public interface ConfigMapper /** * 根据键名查询参数配置信息 * - * @param configName 参数名称 + * @param configKey 参数键名 * @return 参数配置信息 */ public Config selectConfigByKey(String configKey); diff --git a/src/main/java/com/ruoyi/project/system/config/service/IConfigService.java b/src/main/java/com/ruoyi/project/system/config/service/IConfigService.java index c6b6ae69..1109259f 100644 --- a/src/main/java/com/ruoyi/project/system/config/service/IConfigService.java +++ b/src/main/java/com/ruoyi/project/system/config/service/IConfigService.java @@ -22,7 +22,7 @@ public interface IConfigService /** * 根据键名查询参数配置信息 * - * @param configName 参数名称 + * @param configKey 参数键名 * @return 参数键值 */ public String selectConfigByKey(String configKey); @@ -78,7 +78,7 @@ public interface IConfigService /** * 校验参数键名是否唯一 * - * @param dept 部门信息 + * @param config 参数信息 * @return 结果 */ public String checkConfigKeyUnique(Config config); diff --git a/src/main/java/com/ruoyi/project/system/user/domain/User.java b/src/main/java/com/ruoyi/project/system/user/domain/User.java index bb336a42..902928a9 100644 --- a/src/main/java/com/ruoyi/project/system/user/domain/User.java +++ b/src/main/java/com/ruoyi/project/system/user/domain/User.java @@ -1,6 +1,7 @@ package com.ruoyi.project.system.user.domain; import java.util.Arrays; +import java.util.Date; import org.apache.shiro.crypto.SecureRandomNumberGenerator; import com.ruoyi.framework.web.domain.BaseEntity; import com.ruoyi.project.system.dept.domain.Dept; @@ -41,6 +42,10 @@ public class User extends BaseEntity private int status; /** 拒绝登录描述 */ private String refuseDes; + /** 最后登陆IP */ + private String loginIp; + /** 最后登陆时间 */ + private Date loginDate; /** 部门对象 */ private Dept dept; /** 角色组 */ @@ -199,6 +204,26 @@ public class User extends BaseEntity this.refuseDes = refuseDes; } + public String getLoginIp() + { + return loginIp; + } + + public void setLoginIp(String loginIp) + { + this.loginIp = loginIp; + } + + public Date getLoginDate() + { + return loginDate; + } + + public void setLoginDate(Date loginDate) + { + this.loginDate = loginDate; + } + public Dept getDept() { return dept; diff --git a/src/main/java/com/ruoyi/project/system/user/mapper/UserMapper.java b/src/main/java/com/ruoyi/project/system/user/mapper/UserMapper.java index 92bb1b86..b553707f 100644 --- a/src/main/java/com/ruoyi/project/system/user/mapper/UserMapper.java +++ b/src/main/java/com/ruoyi/project/system/user/mapper/UserMapper.java @@ -30,7 +30,7 @@ public interface UserMapper /** * 通过手机号码查询用户 * - * @param userName 用户名 + * @param phoneNumber 手机号码 * @return 用户对象信息 */ public User selectUserByPhoneNumber(String phoneNumber); diff --git a/src/main/java/com/ruoyi/project/system/user/service/IUserService.java b/src/main/java/com/ruoyi/project/system/user/service/IUserService.java index ec386dd0..c81bf573 100644 --- a/src/main/java/com/ruoyi/project/system/user/service/IUserService.java +++ b/src/main/java/com/ruoyi/project/system/user/service/IUserService.java @@ -30,7 +30,7 @@ public interface IUserService /** * 通过手机号码查询用户 * - * @param userName 用户名 + * @param phoneNumber 手机号码 * @return 用户对象信息 */ public User selectUserByPhoneNumber(String phoneNumber); @@ -103,7 +103,7 @@ public interface IUserService /** * 校验手机号码是否唯一 * - * @param phonenumber 登录名称 + * @param user 用户信息 * @return 结果 */ public String checkPhoneUnique(User user); @@ -112,7 +112,7 @@ public interface IUserService /** * 校验email是否唯一 * - * @param email 登录名称 + * @param user 用户信息 * @return 结果 */ public String checkEmailUnique(User user); diff --git a/src/main/java/com/ruoyi/project/system/user/service/UserServiceImpl.java b/src/main/java/com/ruoyi/project/system/user/service/UserServiceImpl.java index a0d3bcf4..d9a73810 100644 --- a/src/main/java/com/ruoyi/project/system/user/service/UserServiceImpl.java +++ b/src/main/java/com/ruoyi/project/system/user/service/UserServiceImpl.java @@ -5,6 +5,7 @@ import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.common.constant.UserConstants; +import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.security.ShiroUtils; import com.ruoyi.framework.shiro.service.PasswordService; @@ -152,7 +153,7 @@ public class UserServiceImpl implements IUserService { user.setUpdateBy(ShiroUtils.getLoginName()); // 修改用户信息 - count = userMapper.updateUser(user); + count = updateUser(user); // 删除用户与角色关联 userRoleMapper.deleteUserRoleByUserId(userId); // 新增用户与角色管理 @@ -201,7 +202,7 @@ public class UserServiceImpl implements IUserService { user.randomSalt(); user.setPassword(passwordService.encryptPassword(user.getLoginName(), user.getPassword(), user.getSalt())); - return userMapper.updateUser(user); + return updateUser(user); } /** diff --git a/src/main/resources/mybatis/system/UserMapper.xml b/src/main/resources/mybatis/system/UserMapper.xml index b007da62..b8ae00c1 100644 --- a/src/main/resources/mybatis/system/UserMapper.xml +++ b/src/main/resources/mybatis/system/UserMapper.xml @@ -18,6 +18,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + @@ -46,7 +48,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"