From 1b8231b0d3723f6d158b20bfbb0947a56757b83b Mon Sep 17 00:00:00 2001
From: haozq <123456>
Date: Tue, 20 Feb 2024 18:11:48 +0800
Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=99=BB=E5=BD=95=E4=BF=AE?=
=?UTF-8?q?=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.idea/workspace.xml | 184 +++++++++++++++---
.../system/api/RemoteUserService.java | 12 +-
.../system/api/domain/SysUser.java | 61 +++++-
.../factory/RemoteUserFallbackFactory.java | 3 +
.../auth/controller/TokenController.java | 11 +-
.../auth/service/SysLoginService.java | 10 +-
.../auth/service/SysPasswordService.java | 15 +-
.../core/constant/ServiceNameConstants.java | 10 +-
.../common/core/enums/UserStatus.java | 2 +-
.../common/security/service/TokenService.java | 4 +-
.../securitycontrol-system.iml | 42 ++--
.../system/controller/LoginController.java | 98 ++++++++++
.../system/mapper/LoginMapper.java | 46 +++++
.../system/service/LoginService.java | 37 ++++
.../system/service/LoginServiceImpl.java | 83 ++++++++
.../src/main/resources/mapper/LoginMapper.xml | 36 ++++
16 files changed, 562 insertions(+), 92 deletions(-)
create mode 100644 securitycontrol-model/securitycontrol-system/src/main/java/com/securitycontrol/system/controller/LoginController.java
create mode 100644 securitycontrol-model/securitycontrol-system/src/main/java/com/securitycontrol/system/mapper/LoginMapper.java
create mode 100644 securitycontrol-model/securitycontrol-system/src/main/java/com/securitycontrol/system/service/LoginService.java
create mode 100644 securitycontrol-model/securitycontrol-system/src/main/java/com/securitycontrol/system/service/LoginServiceImpl.java
create mode 100644 securitycontrol-model/securitycontrol-system/src/main/resources/mapper/LoginMapper.xml
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 7bf513f..8a3124c 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -23,15 +23,32 @@
-
-
-
-
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
@@ -39,6 +56,14 @@
+
+
+
+
@@ -66,11 +92,15 @@
-
+
+
+
+
+
@@ -81,6 +111,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -102,6 +145,11 @@
+
+
+
+
+
@@ -113,7 +161,7 @@
1708406443341
-
+
1708408927745
@@ -122,7 +170,21 @@
1708408927745
-
+
+ 1708409760396
+
+
+
+ 1708409760396
+
+
+ 1708412455493
+
+
+
+ 1708412455494
+
+
@@ -142,52 +204,110 @@
-
+
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ file://$PROJECT_DIR$/securitycontrol-auth/src/main/java/com/securitycontrol/auth/service/SysLoginService.java
+ 46
+
+
+
+ file://$PROJECT_DIR$/securitycontrol-auth/src/main/java/com/securitycontrol/auth/service/SysLoginService.java
+ 65
+
+
+
+ file://$PROJECT_DIR$/securitycontrol-model/securitycontrol-system/src/main/java/com/securitycontrol/system/controller/LoginController.java
+ 75
+
+
+
+
\ No newline at end of file
diff --git a/securitycontrol-api/securitycontrol-api-system/src/main/java/com/securitycontrol/system/api/RemoteUserService.java b/securitycontrol-api/securitycontrol-api-system/src/main/java/com/securitycontrol/system/api/RemoteUserService.java
index 424c019..c26f617 100644
--- a/securitycontrol-api/securitycontrol-api-system/src/main/java/com/securitycontrol/system/api/RemoteUserService.java
+++ b/securitycontrol-api/securitycontrol-api-system/src/main/java/com/securitycontrol/system/api/RemoteUserService.java
@@ -30,7 +30,7 @@ public interface RemoteUserService {
* @param source 请求来源
* @return 结果
*/
- @GetMapping("/userManage/info/{username}")
+ @GetMapping("/userLogin/login/{username}")
Result getUserInfo(@PathVariable("username") String username, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
/**
@@ -50,7 +50,7 @@ public interface RemoteUserService {
* @param source 来源
* @return
*/
- @PostMapping("/sys/menu/getAllMenuList")
+ @PostMapping("/userLogin/getAllMenuList")
Result> getAllMenuList(@RequestBody String userId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
/**
@@ -61,4 +61,12 @@ public interface RemoteUserService {
*/
@PostMapping("/userManage/getUserById/{userId}")
Result getUserById(@PathVariable("userId") String userId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
+ /**
+ * 修改登录信息
+ * @param userId
+ * @param source
+ */
+ @PostMapping("/userLogin/updateUserLogin")
+ void updateUserLogin(@RequestBody Long userId,@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
}
diff --git a/securitycontrol-api/securitycontrol-api-system/src/main/java/com/securitycontrol/system/api/domain/SysUser.java b/securitycontrol-api/securitycontrol-api-system/src/main/java/com/securitycontrol/system/api/domain/SysUser.java
index 1383404..ac8362c 100644
--- a/securitycontrol-api/securitycontrol-api-system/src/main/java/com/securitycontrol/system/api/domain/SysUser.java
+++ b/securitycontrol-api/securitycontrol-api-system/src/main/java/com/securitycontrol/system/api/domain/SysUser.java
@@ -36,7 +36,7 @@ public class SysUser extends BaseEntity {
private String email;
/** 手机号码 */
- private String phonenumber;
+ private String phone;
/** 用户性别 */
private String sex;
@@ -82,12 +82,61 @@ public class SysUser extends BaseEntity {
private String unitName;
private String isSup;
+ /**
+ * 是否是超级管理员
+ */
+ private String isAdmin;
+ /**
+ * 账号类型
+ */
+ private String userType;
+ /**
+ * 登录类型
+ */
+ private int loginType;
+ /**
+ * 部门
+ */
+ private String deptName;
/**
* 统一权限登录用户id
* */
private String iscUserId;
+
+ public String getIsAdmin() {
+ return isAdmin;
+ }
+
+ public void setIsAdmin(String isAdmin) {
+ this.isAdmin = isAdmin;
+ }
+
+ public String getUserType() {
+ return userType;
+ }
+
+ public void setUserType(String userType) {
+ this.userType = userType;
+ }
+
+ public int getLoginType() {
+ return loginType;
+ }
+
+ public void setLoginType(int loginType) {
+ this.loginType = loginType;
+ }
+
+ public String getDeptName() {
+ return deptName;
+ }
+
+ public void setDeptName(String deptName) {
+ this.deptName = deptName;
+ }
+
public String getUnitName() {
return unitName;
}
@@ -231,14 +280,14 @@ public class SysUser extends BaseEntity {
}
@Size(min = 0, max = 11, message = "手机号码长度不能超过11个字符")
- public String getPhonenumber()
+ public String getPhone()
{
- return phonenumber;
+ return phone;
}
- public void setPhonenumber(String phonenumber)
+ public void setPhone(String phone)
{
- this.phonenumber = phonenumber;
+ this.phone = phone;
}
public String getSex()
@@ -377,7 +426,7 @@ public class SysUser extends BaseEntity {
.append("userName", getUserName())
.append("nickName", getNickName())
.append("email", getEmail())
- .append("phonenumber", getPhonenumber())
+ .append("phonenumber", getPhone())
.append("sex", getSex())
.append("avatar", getAvatar())
.append("password", getPassword())
diff --git a/securitycontrol-api/securitycontrol-api-system/src/main/java/com/securitycontrol/system/api/factory/RemoteUserFallbackFactory.java b/securitycontrol-api/securitycontrol-api-system/src/main/java/com/securitycontrol/system/api/factory/RemoteUserFallbackFactory.java
index d630313..a5ef25d 100644
--- a/securitycontrol-api/securitycontrol-api-system/src/main/java/com/securitycontrol/system/api/factory/RemoteUserFallbackFactory.java
+++ b/securitycontrol-api/securitycontrol-api-system/src/main/java/com/securitycontrol/system/api/factory/RemoteUserFallbackFactory.java
@@ -46,6 +46,9 @@ public class RemoteUserFallbackFactory implements FallbackFactory getUserById(String userId, String source) {
return Result.fail("获取用户失败:" + throwable.getMessage());
}
+ @Override
+ public void updateUserLogin(Long userId, String source) {
+ }
};
}
diff --git a/securitycontrol-auth/src/main/java/com/securitycontrol/auth/controller/TokenController.java b/securitycontrol-auth/src/main/java/com/securitycontrol/auth/controller/TokenController.java
index 9eadc9d..9dababb 100644
--- a/securitycontrol-auth/src/main/java/com/securitycontrol/auth/controller/TokenController.java
+++ b/securitycontrol-auth/src/main/java/com/securitycontrol/auth/controller/TokenController.java
@@ -9,6 +9,7 @@ import com.securitycontrol.common.core.utils.JwtUtils;
import com.securitycontrol.common.redis.service.RedisService;
import com.securitycontrol.common.security.service.TokenService;
import com.securitycontrol.common.security.utils.SecurityUtils;
+import com.securitycontrol.system.api.domain.SysUser;
import com.securitycontrol.system.api.domain.decision.SysMenu;
import com.securitycontrol.system.api.model.LoginUser;
import io.jsonwebtoken.Claims;
@@ -18,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
+import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@@ -30,9 +32,9 @@ import java.util.List;
@RestController
@Slf4j
public class TokenController {
- @Autowired
+ @Resource
private TokenService tokenService;
- @Autowired
+ @Resource
private RedisService redisUtil;
@Autowired
@@ -43,10 +45,9 @@ public class TokenController {
@PostMapping("login")
public Result> login(LoginBody form) {
- List menu=null;
- LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword(),menu);
+ LoginUser userInfo = sysLoginService.login(form.getUsername(), form.getPassword(),null);
// 获取登录token
- return Result.ok(tokenService.createToken(userInfo));
+ return Result.ok(tokenService.createToken(userInfo),"登录成功");
}
diff --git a/securitycontrol-auth/src/main/java/com/securitycontrol/auth/service/SysLoginService.java b/securitycontrol-auth/src/main/java/com/securitycontrol/auth/service/SysLoginService.java
index 8b69948..b1e594b 100644
--- a/securitycontrol-auth/src/main/java/com/securitycontrol/auth/service/SysLoginService.java
+++ b/securitycontrol-auth/src/main/java/com/securitycontrol/auth/service/SysLoginService.java
@@ -39,9 +39,8 @@ public class SysLoginService
// 用户名或密码为空 错误
if (StringUtils.isAnyBlank(username, password))
{
- throw new ServiceException("用户/密码必须填写",201);
+ throw new ServiceException("用户/密码不能为空",201);
}
-
// 查询用户信息
Result userResult = remoteUserService.getUserInfo(username, SecurityConstants.INNER);
@@ -54,7 +53,6 @@ public class SysLoginService
{
throw new ServiceException(userResult.getMsg());
}
-
LoginUser userInfo = userResult.getData();
SysUser user = userResult.getData().getSysUser();
if (UserStatus.DELETED.getCode().equals(user.getDelFlag()))
@@ -66,13 +64,11 @@ public class SysLoginService
throw new ServiceException("对不起,您的账号:" + username + " 已锁定",201);
}
passwordService.validate(user, password);
- if(list==null){
- Result> menu = remoteUserService.getAllMenuList(user.getUserId()+"", SecurityConstants.INNER);
- list=menu.getData();
- }
Result> menu = remoteUserService.getAllMenuList(user.getUserId()+"", SecurityConstants.INNER);
+ list=menu.getData();
userInfo.getSysUser().setMenus(list);
recordLogService.recordLogininfor(username, "用户登录", "系统登录");
+ remoteUserService.updateUserLogin(user.getUserId(),SecurityConstants.INNER);
return userInfo;
}
diff --git a/securitycontrol-auth/src/main/java/com/securitycontrol/auth/service/SysPasswordService.java b/securitycontrol-auth/src/main/java/com/securitycontrol/auth/service/SysPasswordService.java
index ab3e6f4..0e54a64 100644
--- a/securitycontrol-auth/src/main/java/com/securitycontrol/auth/service/SysPasswordService.java
+++ b/securitycontrol-auth/src/main/java/com/securitycontrol/auth/service/SysPasswordService.java
@@ -42,22 +42,16 @@ public class SysPasswordService
public void validate(SysUser user, String password)
{
String username = user.getUserName();
-
Integer retryCount = redisService.getCacheObject(getCacheKey(username));
-
- if (retryCount == null)
- {
+ if (retryCount == null) {
retryCount = 0;
}
- if (!matches(user, password))
- {
+ if (!matches(user, password)) {
retryCount = retryCount + 1;
recordLogService.recordLogininfor(username, Constants.LOGIN_FAIL, String.format("密码输入错误%s次", retryCount));
redisService.setCacheObject(getCacheKey(username), retryCount, lockTime, TimeUnit.MINUTES);
throw new ServiceException("用户不存在/密码错误",201);
- }
- else
- {
+ } else {
clearLoginRecordCache(username);
}
}
@@ -67,8 +61,7 @@ public class SysPasswordService
return SecurityUtils.matchesPassword(rawPassword, user.getPassword());
}
- public void clearLoginRecordCache(String loginName)
- {
+ public void clearLoginRecordCache(String loginName) {
if (redisService.hasKey(getCacheKey(loginName)))
{
redisService.deleteObject(getCacheKey(loginName));
diff --git a/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/constant/ServiceNameConstants.java b/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/constant/ServiceNameConstants.java
index a50820a..ab7e454 100644
--- a/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/constant/ServiceNameConstants.java
+++ b/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/constant/ServiceNameConstants.java
@@ -9,26 +9,26 @@ public class ServiceNameConstants {
/**
* 认证服务的serviceid
*/
- public static final String AUTH_SERVICE = "securitycontrol-auth";
+ public static final String AUTH_SERVICE = "securityControl-auth";
/**
* 系统模块的serviceid
*/
- public static final String SYSTEM_SERVICE = "securitycontrol-system";
+ public static final String SYSTEM_SERVICE = "securityControl-system";
/**
* 文件服务的serviceid
*/
- public static final String FILE_SERVICE = "securitycontrol-file";
+ public static final String FILE_SERVICE = "securityControl-file";
/**
* 分析决策的serviceid
*/
- public static final String DECISION_SERVICE = "securitycontrol-decision";
+ public static final String DECISION_SERVICE = "securityControl-decision";
/**
* proteam的serviceid
*/
- public static final String PROTEAM_SERVICE = "securitycontrol-proteam";
+ public static final String PROTEAM_SERVICE = "securityControl-proteam";
}
diff --git a/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/enums/UserStatus.java b/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/enums/UserStatus.java
index 0fbcf4c..1ded0c4 100644
--- a/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/enums/UserStatus.java
+++ b/securitycontrol-commons/securitycontrol-commons-core/src/main/java/com/securitycontrol/common/core/enums/UserStatus.java
@@ -8,7 +8,7 @@ package com.securitycontrol.common.core.enums;
public enum UserStatus
{
//注释
- OK("0", "正常"), DISABLE("2", "锁定"), DELETED("1", "删除");
+ OK("0", "正常"), DISABLE("1", "锁定"), DELETED("2", "停用");
private final String code;
private final String info;
diff --git a/securitycontrol-commons/securitycontrol-commons-security/src/main/java/com/securitycontrol/common/security/service/TokenService.java b/securitycontrol-commons/securitycontrol-commons-security/src/main/java/com/securitycontrol/common/security/service/TokenService.java
index f1d4d93..77b3f7b 100644
--- a/securitycontrol-commons/securitycontrol-commons-security/src/main/java/com/securitycontrol/common/security/service/TokenService.java
+++ b/securitycontrol-commons/securitycontrol-commons-security/src/main/java/com/securitycontrol/common/security/service/TokenService.java
@@ -55,20 +55,18 @@ public class TokenService {
loginUser.setUsername(userName);
loginUser.setIpaddr(IpUtils.getIpAddr(ServletUtils.getRequest()));
refreshToken(loginUser);
-
// Jwt存储信息
Map claimsMap = new HashMap(50);
claimsMap.put(SecurityConstants.USER_KEY, token);
claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId);
claimsMap.put(SecurityConstants.DETAILS_ISC_USER_ID, loginUser.getSysUser().getIscUserId());
claimsMap.put(SecurityConstants.DETAILS_USERNAME, userName);
-
// 接口返回信息
Map rspMap = new HashMap(50);
String jwtToken=JwtUtils.createToken(claimsMap);
rspMap.put("access_token", jwtToken);
rspMap.put("us", JSON.toJSONString(loginUser.getSysUser()));
- Integer time=60*30;
+ int time=60*30;
redisService.set("token:"+jwtToken,jwtToken,time);
redisService.set("userId::"+userId,jwtToken,time);
redisService.set("ISCUserId:"+jwtToken,loginUser.getSysUser().getIscUserId(),time);
diff --git a/securitycontrol-model/securitycontrol-system/securitycontrol-system.iml b/securitycontrol-model/securitycontrol-system/securitycontrol-system.iml
index b395041..758e0a0 100644
--- a/securitycontrol-model/securitycontrol-system/securitycontrol-system.iml
+++ b/securitycontrol-model/securitycontrol-system/securitycontrol-system.iml
@@ -20,6 +20,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -113,26 +134,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -199,6 +200,7 @@
+
diff --git a/securitycontrol-model/securitycontrol-system/src/main/java/com/securitycontrol/system/controller/LoginController.java b/securitycontrol-model/securitycontrol-system/src/main/java/com/securitycontrol/system/controller/LoginController.java
new file mode 100644
index 0000000..4ccad0a
--- /dev/null
+++ b/securitycontrol-model/securitycontrol-system/src/main/java/com/securitycontrol/system/controller/LoginController.java
@@ -0,0 +1,98 @@
+package com.securitycontrol.system.controller;
+
+import com.securitycontrol.common.core.domain.Result;
+import com.securitycontrol.common.core.utils.ServletUtils;
+import com.securitycontrol.common.core.utils.StringUtils;
+import com.securitycontrol.common.core.utils.ip.IpUtils;
+import com.securitycontrol.common.security.annotation.InnerAuth;
+import com.securitycontrol.system.api.domain.SysUser;
+import com.securitycontrol.system.api.domain.decision.SysMenu;
+import com.securitycontrol.system.api.model.LoginUser;
+import com.securitycontrol.system.service.LoginService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * 系统用户登录
+ * 业务控制中心
+ * @author HeiZi
+ */
+@RestController
+@RequestMapping(value = "/userLogin/")
+public class LoginController {
+
+
+ @Autowired
+ private LoginService service;
+ private static final String ZIOE="0";
+ private static final int ONE=1;
+
+ /**
+ * 系统用户登录获取用户信息
+ */
+ @InnerAuth
+ @GetMapping("login/{username}")
+ public Result login(@PathVariable("username") String username) {
+ SysUser sysUser = service.selectUserByUserName(username);
+ if (StringUtils.isNull(sysUser)) {
+ return Result.fail("用户名或密码错误");
+ }
+ // 角色集合
+ Set roles = new HashSet();
+ roles.add(sysUser.getRoleId().toString());
+ // 权限集合
+ Set permissions = service.getMenuPermission(sysUser);
+ LoginUser sysUserVo = new LoginUser();
+ sysUserVo.setSysUser(sysUser);
+ sysUserVo.setRoles(roles);
+ sysUserVo.setPermissions(permissions);
+ return Result.ok(sysUserVo);
+ }
+
+ /**
+ * 获取用户当前菜单数据
+ * @param userId
+ * @return
+ */
+ @PostMapping("getAllMenuList")
+ public Result> getAllMenuList(@RequestBody String userId) {
+ List list = new ArrayList();
+ list = service.getAllMenuList(userId);
+ return Result.ok(list);
+ }
+
+ /**
+ * 获取用户当前菜单数据
+ * @param userId
+ * @return
+ */
+ @PostMapping("updateUserLogin")
+ public void updateUserLogin(@RequestBody String userId) {
+ String ip= IpUtils.getIpAddr(ServletUtils.getRequest());
+ service.updateUserLogin(userId,ip);
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
diff --git a/securitycontrol-model/securitycontrol-system/src/main/java/com/securitycontrol/system/mapper/LoginMapper.java b/securitycontrol-model/securitycontrol-system/src/main/java/com/securitycontrol/system/mapper/LoginMapper.java
new file mode 100644
index 0000000..c8f0adb
--- /dev/null
+++ b/securitycontrol-model/securitycontrol-system/src/main/java/com/securitycontrol/system/mapper/LoginMapper.java
@@ -0,0 +1,46 @@
+package com.securitycontrol.system.mapper;
+
+import com.securitycontrol.system.api.domain.SysUser;
+import com.securitycontrol.system.api.domain.decision.SysMenu;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * 数据接口层
+ * @author HeiZi
+ */
+@Repository
+public interface LoginMapper {
+
+ /**
+ * 查询用户信息
+ * @param username
+ * @return
+ */
+ SysUser selectUserByUserName(String username);
+
+ /**
+ * 查询用户权限
+ * @param sysUser
+ * @return
+ */
+ Set getMenuPermission(SysUser sysUser);
+
+ /**
+ * 查询菜单集合
+ * @param userId
+ * @param pid
+ * @return
+ */
+ List getAllMenuList(@Param("userId")String userId,@Param("pid") String pid);
+
+ /**
+ * 更新用户信息
+ * @param userId
+ * @param ip
+ */
+ void updateUserLogin(@Param("userId") String userId,@Param("ip") String ip);
+}
diff --git a/securitycontrol-model/securitycontrol-system/src/main/java/com/securitycontrol/system/service/LoginService.java b/securitycontrol-model/securitycontrol-system/src/main/java/com/securitycontrol/system/service/LoginService.java
new file mode 100644
index 0000000..fc5ac33
--- /dev/null
+++ b/securitycontrol-model/securitycontrol-system/src/main/java/com/securitycontrol/system/service/LoginService.java
@@ -0,0 +1,37 @@
+package com.securitycontrol.system.service;
+
+import com.securitycontrol.system.api.domain.SysUser;
+import com.securitycontrol.system.api.domain.decision.SysMenu;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * 用户登录 接口处理层
+ * @author HeiZi
+ */
+public interface LoginService {
+
+ /**
+ * 用户登录验证
+ * @param username 用户名
+ * @return
+ */
+ SysUser selectUserByUserName(String username);
+
+ /**
+ * 获取用户登录权限
+ * @param sysUser
+ * @return
+ */
+ Set getMenuPermission(SysUser sysUser);
+
+ /**
+ * 查询全部的菜单列表
+ * @param userId
+ * @return
+ */
+ List getAllMenuList(String userId);
+
+ void updateUserLogin(String userId, String ip);
+}
diff --git a/securitycontrol-model/securitycontrol-system/src/main/java/com/securitycontrol/system/service/LoginServiceImpl.java b/securitycontrol-model/securitycontrol-system/src/main/java/com/securitycontrol/system/service/LoginServiceImpl.java
new file mode 100644
index 0000000..3577b2a
--- /dev/null
+++ b/securitycontrol-model/securitycontrol-system/src/main/java/com/securitycontrol/system/service/LoginServiceImpl.java
@@ -0,0 +1,83 @@
+package com.securitycontrol.system.service;
+
+import com.securitycontrol.system.api.domain.SysUser;
+import com.securitycontrol.system.api.domain.decision.SysMenu;
+import com.securitycontrol.system.mapper.LoginMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * 系统 用户
+ * @author HeiZi
+ */
+@Service
+@Slf4j
+public class LoginServiceImpl implements LoginService {
+
+
+ @Autowired
+ private LoginMapper mapper;
+
+ /**
+ * 查询用户信息
+ * @param username 用户名
+ * @return
+ */
+ @Override
+ public SysUser selectUserByUserName(String username) {
+ return mapper.selectUserByUserName(username);
+ }
+
+ /**
+ * 查询用户登录权限
+ * @param sysUser
+ * @return
+ */
+ @Override
+ public Set getMenuPermission(SysUser sysUser) {
+ return mapper.getMenuPermission(sysUser);
+ }
+
+ /**
+ * 获取菜单列表的集合
+ * @param userId
+ * @return
+ */
+ @Override
+ public List getAllMenuList(String userId) {
+ List parent=mapper.getAllMenuList(userId,"0");
+ getChilder(parent,userId);
+ return parent;
+ }
+
+ @Override
+ public void updateUserLogin(String userId, String ip) {
+ try{
+ mapper.updateUserLogin(userId,ip);
+ }catch (Exception e){
+ log.error(e.toString(),e);
+ }
+ }
+
+ /**
+ * 子菜单查询
+ * @param menuList
+ */
+ private void getChilder(List menuList, String userId) {
+ for (SysMenu menu : menuList) {
+ List list=mapper.getAllMenuList(userId, menu.getMenuId());
+ if(list!=null &&list.size()>0){
+ menu.setChilder(list);
+ menu.setLast(false);
+ }else{
+ menu.setChilder(new ArrayList());
+ menu.setLast(true);
+ }
+ }
+ }
+}
diff --git a/securitycontrol-model/securitycontrol-system/src/main/resources/mapper/LoginMapper.xml b/securitycontrol-model/securitycontrol-system/src/main/resources/mapper/LoginMapper.xml
new file mode 100644
index 0000000..971836d
--- /dev/null
+++ b/securitycontrol-model/securitycontrol-system/src/main/resources/mapper/LoginMapper.xml
@@ -0,0 +1,36 @@
+
+
+
+
+ update sys_user set
+ login_ip=#{ip},login_time=now() where user_id=#{userId}
+
+
+
+
+
+
+
+
+
\ No newline at end of file