From 8ae126d6005620f5c26a392ed4dd4e7bd8a71325 Mon Sep 17 00:00:00 2001 From: xiangwb Date: Tue, 7 Nov 2017 11:43:10 +0800 Subject: [PATCH] merge --- .../java/com/xwbing/constant/CommonEnum.java | 20 +++++ .../com/xwbing/entity/SysUserLoginInOut.java | 32 ++++++++ .../xwbing/entity/model/ValidateModel.java | 59 +------------- ...itory.java => SysAuthorityRepository.java} | 2 +- ...Repository.java => SysRoleRepository.java} | 2 +- .../SysUserLoginInOutRepository.java | 16 ++++ ...Repository.java => SysUserRepository.java} | 2 +- .../service/SysUserLoginInOutService.java | 74 +++++++++++++++++ .../{UserService.java => SysUserService.java} | 67 +++++++++++++--- .../src/main/java/com/xwbing/util/IpUtil.java | 51 ++++++++++++ .../java/com/xwbing/util/ThreadLocalUtil.java | 6 -- .../{UserControl.java => SysUserControl.java} | 79 ++++++------------- .../controller/SysUserLoginInOutControl.java | 34 ++++++++ .../handler/GlobalExceptionHandler.java | 3 +- .../com/xwbing/handler/LoginInterceptor.java | 11 ++- 15 files changed, 319 insertions(+), 139 deletions(-) create mode 100644 boot-service/src/main/java/com/xwbing/entity/SysUserLoginInOut.java rename boot-service/src/main/java/com/xwbing/repository/{AuthorityRepository.java => SysAuthorityRepository.java} (73%) rename boot-service/src/main/java/com/xwbing/repository/{RoleRepository.java => SysRoleRepository.java} (75%) create mode 100644 boot-service/src/main/java/com/xwbing/repository/SysUserLoginInOutRepository.java rename boot-service/src/main/java/com/xwbing/repository/{UserRepository.java => SysUserRepository.java} (78%) create mode 100644 boot-service/src/main/java/com/xwbing/service/SysUserLoginInOutService.java rename boot-service/src/main/java/com/xwbing/service/{UserService.java => SysUserService.java} (79%) create mode 100644 boot-service/src/main/java/com/xwbing/util/IpUtil.java delete mode 100644 boot-service/src/main/java/com/xwbing/util/ThreadLocalUtil.java rename boot-web/src/main/java/com/xwbing/controller/{UserControl.java => SysUserControl.java} (69%) create mode 100644 boot-web/src/main/java/com/xwbing/controller/SysUserLoginInOutControl.java diff --git a/boot-service/src/main/java/com/xwbing/constant/CommonEnum.java b/boot-service/src/main/java/com/xwbing/constant/CommonEnum.java index 2e313c8..ef70a0d 100644 --- a/boot-service/src/main/java/com/xwbing/constant/CommonEnum.java +++ b/boot-service/src/main/java/com/xwbing/constant/CommonEnum.java @@ -54,6 +54,26 @@ public class CommonEnum { } } + public enum LoginInOutEnum { + IN("登录", 1), OUT("登出", 2); + // 成员变量 + private String name; + private int value; + + private LoginInOutEnum(String name, int value) { + this.value = value; + this.name = name; + } + + public int getValue() { + return value; + } + + public String getName() { + return name; + } + } + public static void main(String[] args) { String code = "Y"; // for (YesOrNoEnum yesOrNoEnum : YesOrNoEnum.values()) { diff --git a/boot-service/src/main/java/com/xwbing/entity/SysUserLoginInOut.java b/boot-service/src/main/java/com/xwbing/entity/SysUserLoginInOut.java new file mode 100644 index 0000000..fb163d2 --- /dev/null +++ b/boot-service/src/main/java/com/xwbing/entity/SysUserLoginInOut.java @@ -0,0 +1,32 @@ +package com.xwbing.entity; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.persistence.Column; +import javax.persistence.Entity; + +/** + * 项目名称: boot-module-demo + * 创建时间: 2017/11/7 9:46 + * 作者: xiangwb + * 说明: 用户登录登出信息 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Entity(name = "sys_user_login_in_out") +public class SysUserLoginInOut extends BaseEntity { + private static final long serialVersionUID = -2719103095945780275L; + public static String table = "sys_user_login_in_out"; + private String ip; + @Column(name = "inout_type") + private int inoutType; + @Column(name = "user_id") + private String userId; + //临时字段 + private transient String userIdName; + private transient String recordTime; + private transient String inoutTypeName; +// private transient String startDate; +// private transient String endDate; +} diff --git a/boot-service/src/main/java/com/xwbing/entity/model/ValidateModel.java b/boot-service/src/main/java/com/xwbing/entity/model/ValidateModel.java index 7a0c1c2..7f75e49 100644 --- a/boot-service/src/main/java/com/xwbing/entity/model/ValidateModel.java +++ b/boot-service/src/main/java/com/xwbing/entity/model/ValidateModel.java @@ -1,5 +1,6 @@ package com.xwbing.entity.model; +import lombok.Data; import org.hibernate.validator.constraints.Email; import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.NotBlank; @@ -18,7 +19,7 @@ import java.util.Date; * 创建时间: 2017/5/17 16:13 * 作者: xiangwb */ - +@Data public class ValidateModel { @NotBlank(message = "name不能为空") @Length(max = 50, message = "name长度为1-50") @@ -45,60 +46,4 @@ public class ValidateModel { @NotBlank(message = "sex不能为空") @Pattern(regexp = "[01]", message = "sex格式为0|1,0代表女,1代表男") private String sex; - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getAge() { - return age; - } - - public void setAge(int age) { - this.age = age; - } - - public double getMoney() { - return money; - } - - public void setMoney(double money) { - this.money = money; - } - - public Date getBirthDay() { - return birthDay; - } - - public void setBirthDay(Date birthDay) { - this.birthDay = birthDay; - } - - public String getHappyTime() { - return happyTime; - } - - public void setHappyTime(String happyTime) { - this.happyTime = happyTime; - } - - public String getEmail() { - return email; - } - - public void setEmail(String email) { - this.email = email; - } - - public String getSex() { - return sex; - } - - public void setSex(String sex) { - this.sex = sex; - } } diff --git a/boot-service/src/main/java/com/xwbing/repository/AuthorityRepository.java b/boot-service/src/main/java/com/xwbing/repository/SysAuthorityRepository.java similarity index 73% rename from boot-service/src/main/java/com/xwbing/repository/AuthorityRepository.java rename to boot-service/src/main/java/com/xwbing/repository/SysAuthorityRepository.java index 11fd93c..1aaeea3 100644 --- a/boot-service/src/main/java/com/xwbing/repository/AuthorityRepository.java +++ b/boot-service/src/main/java/com/xwbing/repository/SysAuthorityRepository.java @@ -9,5 +9,5 @@ import org.springframework.data.jpa.repository.JpaRepository; * 创建时间: 2017/5/5 16:44 * 作者: xiangwb */ -public interface AuthorityRepository extends JpaRepository { +public interface SysAuthorityRepository extends JpaRepository { } diff --git a/boot-service/src/main/java/com/xwbing/repository/RoleRepository.java b/boot-service/src/main/java/com/xwbing/repository/SysRoleRepository.java similarity index 75% rename from boot-service/src/main/java/com/xwbing/repository/RoleRepository.java rename to boot-service/src/main/java/com/xwbing/repository/SysRoleRepository.java index 2f76947..81ed49f 100644 --- a/boot-service/src/main/java/com/xwbing/repository/RoleRepository.java +++ b/boot-service/src/main/java/com/xwbing/repository/SysRoleRepository.java @@ -9,5 +9,5 @@ import org.springframework.data.jpa.repository.JpaRepository; * 创建时间: 2017/5/5 16:44 * 作者: xiangwb */ -public interface RoleRepository extends JpaRepository { +public interface SysRoleRepository extends JpaRepository { } diff --git a/boot-service/src/main/java/com/xwbing/repository/SysUserLoginInOutRepository.java b/boot-service/src/main/java/com/xwbing/repository/SysUserLoginInOutRepository.java new file mode 100644 index 0000000..f2df019 --- /dev/null +++ b/boot-service/src/main/java/com/xwbing/repository/SysUserLoginInOutRepository.java @@ -0,0 +1,16 @@ +package com.xwbing.repository; + +import com.xwbing.entity.SysUserLoginInOut; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +/** + * 项目名称: boot-module-demo + * 创建时间: 2017/11/7 9:58 + * 作者: xiangwb + * 说明: + */ +public interface SysUserLoginInOutRepository extends JpaRepository { + List getByInoutType(int inout); +} diff --git a/boot-service/src/main/java/com/xwbing/repository/UserRepository.java b/boot-service/src/main/java/com/xwbing/repository/SysUserRepository.java similarity index 78% rename from boot-service/src/main/java/com/xwbing/repository/UserRepository.java rename to boot-service/src/main/java/com/xwbing/repository/SysUserRepository.java index e9e5679..3a2eaf8 100644 --- a/boot-service/src/main/java/com/xwbing/repository/UserRepository.java +++ b/boot-service/src/main/java/com/xwbing/repository/SysUserRepository.java @@ -8,6 +8,6 @@ import org.springframework.data.jpa.repository.JpaRepository; * 创建时间: 2017/5/5 16:44 * 作者: xiangwb */ -public interface UserRepository extends JpaRepository { +public interface SysUserRepository extends JpaRepository { SysUser findByUserName(String name); } diff --git a/boot-service/src/main/java/com/xwbing/service/SysUserLoginInOutService.java b/boot-service/src/main/java/com/xwbing/service/SysUserLoginInOutService.java new file mode 100644 index 0000000..f88e607 --- /dev/null +++ b/boot-service/src/main/java/com/xwbing/service/SysUserLoginInOutService.java @@ -0,0 +1,74 @@ +package com.xwbing.service; + +import com.xwbing.constant.CommonEnum; +import com.xwbing.entity.SysUser; +import com.xwbing.entity.SysUserLoginInOut; +import com.xwbing.repository.SysUserLoginInOutRepository; +import com.xwbing.util.DateUtil2; +import com.xwbing.util.PassWordUtil; +import com.xwbing.util.RestMessage; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections.MapUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 项目名称: boot-module-demo + * 创建时间: 2017/11/7 9:56 + * 作者: xiangwb + * 说明: 用户登录登出服务层 + */ +@Service +public class SysUserLoginInOutService { + @Resource + private SysUserLoginInOutRepository loginInOutRepository; + @Resource + private SysUserService sysUserService; + + /** + * 保存 + * + * @param inOut + * @return + */ + public RestMessage save(SysUserLoginInOut inOut) { + RestMessage result = new RestMessage(); + inOut.setId(PassWordUtil.createId()); + SysUserLoginInOut save = loginInOutRepository.save(inOut); + if (save != null) { + result.setSuccess(true); + result.setMessage("保存登录登出信息成功"); + } else { + result.setMessage("保存登录登出信息失败"); + } + return result; + } + + /** + * 根据类型列表查询 + * + * @param inout + * @return + */ + public List listByType(int inout) { + Map userMap = sysUserService.listAll().stream().collect(Collectors.toMap(SysUser::getId, Function.identity())); + List list = loginInOutRepository.getByInoutType(inout); + if (CollectionUtils.isNotEmpty(list)) { + if (MapUtils.isNotEmpty(userMap)) { + list.forEach(inOut -> { + inOut.setUserIdName(userMap.get(inOut.getUserId()).getName());//用户姓名 + inOut.setRecordTime(DateUtil2.dateToStr(inOut.getCreateTime(), DateUtil2.YYYY_MM_DD_HH_MM_SS));//记录时间 + CommonEnum.LoginInOutEnum inOutEnum = Arrays.stream(CommonEnum.LoginInOutEnum.values()).filter(obj -> obj.getValue() == inout).findFirst().get();//登录登出 + inOut.setInoutTypeName(inOutEnum.getName()); + }); + } + } + return list; + } +} diff --git a/boot-service/src/main/java/com/xwbing/service/UserService.java b/boot-service/src/main/java/com/xwbing/service/SysUserService.java similarity index 79% rename from boot-service/src/main/java/com/xwbing/service/UserService.java rename to boot-service/src/main/java/com/xwbing/service/SysUserService.java index 206d51c..17d9b2f 100644 --- a/boot-service/src/main/java/com/xwbing/service/UserService.java +++ b/boot-service/src/main/java/com/xwbing/service/SysUserService.java @@ -5,15 +5,16 @@ import com.xwbing.constant.CommonConstant; import com.xwbing.constant.CommonEnum; import com.xwbing.entity.SysConfig; import com.xwbing.entity.SysUser; -import com.xwbing.util.CommonDataUtil; +import com.xwbing.entity.SysUserLoginInOut; import com.xwbing.entity.model.EmailModel; import com.xwbing.exception.BusinessException; -import com.xwbing.repository.UserRepository; +import com.xwbing.repository.SysUserRepository; import com.xwbing.util.*; import org.apache.commons.collections.CollectionUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import java.util.Arrays; import java.util.Date; import java.util.List; @@ -25,11 +26,13 @@ import java.util.List; * 作者: xiangwb */ @Service -public class UserService { +public class SysUserService { @Resource - private UserRepository userRepository; + private SysUserRepository sysUserRepository; @Resource private SysConfigService sysConfigService; + @Resource + private SysUserLoginInOutService loginInOutService; /** * 增 @@ -51,7 +54,7 @@ public class UserService { sysUser.setPassword(res[2]); // 设置否管理员 sysUser.setAdmin(CommonEnum.YesOrNoEnum.NO.getCode()); - SysUser one = userRepository.save(sysUser); + SysUser one = sysUserRepository.save(sysUser); if (one == null) { throw new BusinessException("新增用户失败"); } @@ -83,7 +86,7 @@ public class UserService { if (CommonEnum.YesOrNoEnum.YES.getCode().equals(old.getAdmin())) { throw new BusinessException("不能对管理员进行删除操作"); } - userRepository.delete(id); + sysUserRepository.delete(id); result.setMessage("删除成功"); result.setSuccess(true); return result; @@ -114,7 +117,7 @@ public class UserService { old.setSex(sysUser.getSex()); old.setModifiedTime(new Date()); // old.setUserName(sysUser.getUserName());//用户名不能修改 - SysUser one = userRepository.save(old); + SysUser one = sysUserRepository.save(old); if (one != null) { result.setMessage("更新成功"); result.setSuccess(true); @@ -131,7 +134,7 @@ public class UserService { * @return */ public SysUser findOne(String id) { - return userRepository.findOne(id); + return sysUserRepository.findOne(id); } /** @@ -140,7 +143,7 @@ public class UserService { * @return */ public List listAll() { - List all = userRepository.findAll(); + List all = sysUserRepository.findAll(); if (CollectionUtils.isNotEmpty(all)) { all.forEach(sysUser -> { CommonEnum.SexEnum sexEnum = Arrays.stream(CommonEnum.SexEnum.values()).filter(obj -> obj.getCode().equals(sysUser.getSex())).findFirst().get(); @@ -174,7 +177,7 @@ public class UserService { old.setSalt(str[1]); old.setPassword(str[2]); old.setModifiedTime(new Date()); - SysUser save = userRepository.save(old); + SysUser save = sysUserRepository.save(old); if (save == null) throw new BusinessException("重置密码失败"); boolean send = sendEmail(old, str[0]); @@ -204,7 +207,7 @@ public class UserService { sysUser.setSalt(str[1]); sysUser.setPassword(str[2]); sysUser.setModifiedTime(new Date()); - SysUser save = userRepository.save(sysUser); + SysUser save = sysUserRepository.save(sysUser); if (save != null) { result.setMessage("修改密码成功"); result.setSuccess(true); @@ -222,7 +225,7 @@ public class UserService { * @param checkCode * @return */ - public RestMessage login(String userName, String passWord, String checkCode) { + public RestMessage login(HttpServletRequest request, String userName, String passWord, String checkCode) { RestMessage restMessage = new RestMessage(); String imgCode = (String) CommonDataUtil.getToken(CommonConstant.KEY_CAPTCHA); //验证验证码 @@ -238,11 +241,49 @@ public class UserService { throw new BusinessException("密码错误"); CommonDataUtil.setToken(CommonConstant.CURRENT_USER, userName); CommonDataUtil.setToken(CommonConstant.CURRENT_USER_ID, user.getId()); + //保存登录信息 + SysUserLoginInOut loginInOut = new SysUserLoginInOut(); + loginInOut.setCreateTime(new Date()); + loginInOut.setUserId(user.getId()); + loginInOut.setInoutType(CommonEnum.LoginInOutEnum.IN.getValue()); + loginInOut.setIp(IpUtil.getIpAddr(request)); + RestMessage save = loginInOutService.save(loginInOut); + if (!save.isSuccess()) + throw new BusinessException("保存用户登录日志失败"); restMessage.setSuccess(true); restMessage.setMessage("登录成功"); return restMessage; } + /** + * 登出 + * + * @param request + * @return + */ + public RestMessage logout(HttpServletRequest request) { + RestMessage restMessage = new RestMessage(); + String userId = (String) CommonDataUtil.getToken(CommonConstant.CURRENT_USER_ID); + SysUser user = findOne(userId); + if (user != null) { + CommonDataUtil.clearMap(); + SysUserLoginInOut loginInOut = new SysUserLoginInOut(); + loginInOut.setCreateTime(new Date()); + loginInOut.setUserId(user.getId()); + loginInOut.setInoutType(CommonEnum.LoginInOutEnum.OUT.getValue()); + loginInOut.setIp(IpUtil.getIpAddr(request)); + restMessage = loginInOutService.save(loginInOut); + if (restMessage.isSuccess()) { + restMessage.setMessage("登出成功"); + } else { + restMessage.setMessage("保存用户登出信息失败"); + } + } else { + restMessage.setMessage("没有获取到用户登录信息,请重新登录"); + } + return restMessage; + } + /** * 根据用户名查找用户 * @@ -250,7 +291,7 @@ public class UserService { * @return */ private SysUser findByUserName(String userName) { - return userRepository.findByUserName(userName); + return sysUserRepository.findByUserName(userName); } /** diff --git a/boot-service/src/main/java/com/xwbing/util/IpUtil.java b/boot-service/src/main/java/com/xwbing/util/IpUtil.java new file mode 100644 index 0000000..127f688 --- /dev/null +++ b/boot-service/src/main/java/com/xwbing/util/IpUtil.java @@ -0,0 +1,51 @@ +package com.xwbing.util; + +import javax.servlet.http.HttpServletRequest; +import java.net.InetAddress; +import java.net.UnknownHostException; + +/** + * 项目名称: boot-module-demo + * 创建时间: 2017/11/7 10:24 + * 作者: xiangwb + * 说明: + */ +public class IpUtil { + public static String getIpAddr(HttpServletRequest request) { + // 获取X-Forwarded-For + String ip = request.getHeader("x-forwarded-for"); + if (ip == null || ip.length() == 0 + || "unknown".equalsIgnoreCase(ip)) { + // 获取Proxy-Client-IP + ip = request.getHeader("Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 + || "unknown".equalsIgnoreCase(ip)) { + // WL-Proxy-Client-IP + ip = request.getHeader("WL-Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 + || "unknown".equalsIgnoreCase(ip)) { + // 获取的IP实际上是代理服务器的地址,并不是客户端的IP地址 + ip = request.getRemoteAddr(); + if (ip.equals("127.0.0.1") + || ip.equals("0:0:0:0:0:0:0:1")) { + // 根据网卡取本机配置的IP + InetAddress inet = null; + try { + inet = InetAddress.getLocalHost(); + } catch (UnknownHostException e) { + e.printStackTrace(); + } + ip = inet.getHostAddress(); + } + } + // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割 + if (ip != null && ip.length() > 15) { // "***.***.***.***".length() + if (ip.indexOf(",") > 0) { + ip = ip.substring(0, ip.indexOf(",")); + } + } + return ip; + } +} diff --git a/boot-service/src/main/java/com/xwbing/util/ThreadLocalUtil.java b/boot-service/src/main/java/com/xwbing/util/ThreadLocalUtil.java deleted file mode 100644 index d5f9a03..0000000 --- a/boot-service/src/main/java/com/xwbing/util/ThreadLocalUtil.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.xwbing.util; - -public class ThreadLocalUtil { - - -} diff --git a/boot-web/src/main/java/com/xwbing/controller/UserControl.java b/boot-web/src/main/java/com/xwbing/controller/SysUserControl.java similarity index 69% rename from boot-web/src/main/java/com/xwbing/controller/UserControl.java rename to boot-web/src/main/java/com/xwbing/controller/SysUserControl.java index 34b0050..14c1c9a 100644 --- a/boot-web/src/main/java/com/xwbing/controller/UserControl.java +++ b/boot-web/src/main/java/com/xwbing/controller/SysUserControl.java @@ -3,13 +3,15 @@ package com.xwbing.controller; import com.alibaba.fastjson.JSONObject; import com.xwbing.annotation.LogInfo; import com.xwbing.entity.SysUser; -import com.xwbing.service.UserService; +import com.xwbing.service.SysUserLoginInOutService; +import com.xwbing.service.SysUserService; import com.xwbing.util.JSONObjResult; import com.xwbing.util.RestMessage; import org.apache.commons.lang3.StringUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import java.util.List; @@ -21,112 +23,77 @@ import java.util.List; */ @RestController @RequestMapping("/user/") -public class UserControl { +public class SysUserControl { @Resource - private UserService userService; + private SysUserService sysUserService; + @Resource + private SysUserLoginInOutService loginInOutService; - /** - * 添加用户 - * - * @param sysUser - * @return - */ @LogInfo("添加用户") @PostMapping("save") public JSONObject save(@RequestBody @Valid SysUser sysUser) { - RestMessage result = userService.save(sysUser); + RestMessage result = sysUserService.save(sysUser); return JSONObjResult.toJSONObj(result); } - /** - * 删除用户 - * - * @param id - * @return - */ @LogInfo("删除用户") @GetMapping("removeById") public JSONObject removeById(@RequestParam String id) { if (StringUtils.isEmpty(id)) { return JSONObjResult.toJSONObj("主键不能为空"); } - RestMessage result = userService.removeById(id); + RestMessage result = sysUserService.removeById(id); return JSONObjResult.toJSONObj(result); } - /** - * 修改用户信息 - * - * @param sysUser - * @return - */ @LogInfo("修改用户信息") @PostMapping("update") public JSONObject update(@RequestBody @Valid SysUser sysUser) { if (StringUtils.isEmpty(sysUser.getId())) { return JSONObjResult.toJSONObj("主键不能为空"); } - RestMessage result = userService.update(sysUser); + RestMessage result = sysUserService.update(sysUser); return JSONObjResult.toJSONObj(result); } - /** - * 获取用户详情 - * - * @param id - * @return - */ @LogInfo("获取用户详情") @GetMapping("findById") public JSONObject findById(@RequestParam String id) { if (StringUtils.isEmpty(id)) { return JSONObjResult.toJSONObj("主键不能为空"); } - SysUser sysUser = userService.findOne(id); + SysUser sysUser = sysUserService.findOne(id); if (sysUser == null) { return JSONObjResult.toJSONObj("未查到该对象"); } return JSONObjResult.toJSONObj(sysUser, true, ""); } - /** - * 列表查询所有用户 - * - * @return - */ @LogInfo("列表查询所有用户") @GetMapping("findList") public JSONObject findList() { - List list = userService.listAll(); + List list = sysUserService.listAll(); return JSONObjResult.toJSONObj(list, true, ""); } - /** - * 登录 - * - * @param userName - * @param passWord - * @param checkCode - * @return - */ @LogInfo("登录") @GetMapping("login") - public JSONObject login(@RequestParam String userName, @RequestParam String passWord, @RequestParam String checkCode) { + public JSONObject login(HttpServletRequest request, @RequestParam String userName, @RequestParam String passWord, @RequestParam String checkCode) { if (StringUtils.isEmpty(userName) || StringUtils.isEmpty(passWord)) return JSONObjResult.toJSONObj("用户名或密码不能为空"); if (StringUtils.isEmpty(checkCode)) return JSONObjResult.toJSONObj("请输入验证码"); - RestMessage login = userService.login(userName, passWord, checkCode); + RestMessage login = sysUserService.login(request, userName, passWord, checkCode); return JSONObjResult.toJSONObj(login); } - /** - * 修改密码 - * - * @param newPassWord - * @param oldPassWord - * @return - */ + @LogInfo("登出") + @GetMapping("logout") + public JSONObject logout(HttpServletRequest request) { + RestMessage logout = sysUserService.logout(request); + return JSONObjResult.toJSONObj(logout); + } + @LogInfo("修改密码") @GetMapping("updatePassWord") public JSONObject updatePassWord(@RequestParam String newPassWord, @RequestParam String oldPassWord, @RequestParam String id) { @@ -134,7 +101,7 @@ public class UserControl { return JSONObjResult.toJSONObj("原密码或新密码不能为空"); if (StringUtils.isEmpty(id)) return JSONObjResult.toJSONObj("主键不能为空"); - RestMessage restMessage = userService.updatePassWord(newPassWord, oldPassWord, id); + RestMessage restMessage = sysUserService.updatePassWord(newPassWord, oldPassWord, id); return JSONObjResult.toJSONObj(restMessage); } @@ -143,7 +110,7 @@ public class UserControl { public JSONObject resetPassWord(@RequestParam String id) { if (StringUtils.isEmpty(id)) return JSONObjResult.toJSONObj("主键不能为空"); - RestMessage restMessage = userService.resetPassWord(id); + RestMessage restMessage = sysUserService.resetPassWord(id); return JSONObjResult.toJSONObj(restMessage); } } diff --git a/boot-web/src/main/java/com/xwbing/controller/SysUserLoginInOutControl.java b/boot-web/src/main/java/com/xwbing/controller/SysUserLoginInOutControl.java new file mode 100644 index 0000000..0a034ee --- /dev/null +++ b/boot-web/src/main/java/com/xwbing/controller/SysUserLoginInOutControl.java @@ -0,0 +1,34 @@ +package com.xwbing.controller; + +import com.alibaba.fastjson.JSONObject; +import com.xwbing.annotation.LogInfo; +import com.xwbing.entity.SysUserLoginInOut; +import com.xwbing.service.SysUserLoginInOutService; +import com.xwbing.util.JSONObjResult; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 项目名称: boot-module-demo + * 创建时间: 2017/11/7 11:16 + * 作者: xiangwb + * 说明: + */ +@RestController +@RequestMapping("/inout/") +public class SysUserLoginInOutControl { + @Resource + private SysUserLoginInOutService inOutService; + + @LogInfo("获取登录或登出信息") + @GetMapping("listByType") + public JSONObject listByType(@RequestParam int inout) { + List sysUserLoginInOuts = inOutService.listByType(inout); + return JSONObjResult.toJSONObj(sysUserLoginInOuts, true, "获取列表成功"); + } +} diff --git a/boot-web/src/main/java/com/xwbing/handler/GlobalExceptionHandler.java b/boot-web/src/main/java/com/xwbing/handler/GlobalExceptionHandler.java index fb1430e..6c4027e 100644 --- a/boot-web/src/main/java/com/xwbing/handler/GlobalExceptionHandler.java +++ b/boot-web/src/main/java/com/xwbing/handler/GlobalExceptionHandler.java @@ -102,8 +102,7 @@ public class GlobalExceptionHandler { @ExceptionHandler(value = Exception.class) @ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR) @ResponseBody - public JSONObject handlerException(HttpServletRequest request, - Exception ex) { + public JSONObject handlerException(HttpServletRequest request, Exception ex) { logger.error(ex.getMessage()); return JSONObjResult.toJSONObj("系统异常,请联系管理员"); } diff --git a/boot-web/src/main/java/com/xwbing/handler/LoginInterceptor.java b/boot-web/src/main/java/com/xwbing/handler/LoginInterceptor.java index 8d9cd5a..2140133 100644 --- a/boot-web/src/main/java/com/xwbing/handler/LoginInterceptor.java +++ b/boot-web/src/main/java/com/xwbing/handler/LoginInterceptor.java @@ -1,14 +1,17 @@ package com.xwbing.handler; +import com.alibaba.fastjson.JSON; import com.xwbing.configuration.DispatcherServletConfig; import com.xwbing.constant.CommonConstant; import com.xwbing.util.CommonDataUtil; +import com.xwbing.util.RestMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.OutputStream; import java.util.HashSet; import java.util.Set; @@ -39,10 +42,14 @@ public class LoginInterceptor extends HandlerInterceptorAdapter { // return false; // } if (CommonDataUtil.getToken(CommonConstant.CURRENT_USER) != null) { - // TODO: 2017/10/3 return true; } else { - // TODO: 2017/10/3 + logger.info("用户未登录"); + OutputStream outputStream = response.getOutputStream(); + RestMessage restMessage = new RestMessage(); + restMessage.setMessage("请登录"); + outputStream.write(JSON.toJSONString(restMessage).getBytes("utf-8")); + outputStream.close(); return false; } }