From f4071abcdc006cbf7fdda5ab1879b17d9be376ff Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Wed, 21 Aug 2024 15:14:27 +0800 Subject: [PATCH] =?UTF-8?q?APP=E7=99=BB=E5=BD=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bonus/system/api/RemoteUserService.java | 20 ++++++++ .../factory/RemoteUserFallbackFactory.java | 10 ++++ .../auth/controller/TokenController.java | 34 +++++++++++++ .../bonus/auth/service/SysLoginService.java | 48 +++++++++++++++++++ .../core/constant/SecurityConstants.java | 8 ++++ .../common/core/constant/UserConstants.java | 5 ++ .../service/impl/CraneMonitorServiceImpl.java | 3 ++ .../service/impl/ConsControlServiceImpl.java | 6 +++ .../system/controller/SysMenuController.java | 23 +++++++++ .../system/controller/SysUserController.java | 30 ++++++++++-- 10 files changed, 183 insertions(+), 4 deletions(-) diff --git a/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/RemoteUserService.java b/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/RemoteUserService.java index 5c19cec..3a53bdd 100644 --- a/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/RemoteUserService.java +++ b/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/RemoteUserService.java @@ -40,4 +40,24 @@ public interface RemoteUserService */ @PostMapping("/user/register") public R registerUserInfo(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + /** + * 注册用户信息 + * + * @param userId 用户id + * @param source 请求来源 + * @return 结果 + */ + @PostMapping("/menu/getAppRouters") + public R getAppRouters(@RequestBody Long userId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); + + /** + * 获取APP用户信息 + * + * @param userId 用户id + * @param source 请求来源 + * @return 结果 + */ + @PostMapping("/user/getAppUserInfo") + public R getAppUserInfo(@RequestBody Long userId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); } diff --git a/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/factory/RemoteUserFallbackFactory.java b/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/factory/RemoteUserFallbackFactory.java index be1fdc3..882ba2b 100644 --- a/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/factory/RemoteUserFallbackFactory.java +++ b/bonus-api/bonus-api-system/src/main/java/com/bonus/system/api/factory/RemoteUserFallbackFactory.java @@ -36,6 +36,16 @@ public class RemoteUserFallbackFactory implements FallbackFactory login(@RequestBody LoginBody form) { // 用户登录 @@ -43,6 +52,31 @@ public class TokenController return R.ok(tokenService.createToken(userInfo)); } + @PostMapping("appLogin") + public R appLogin(@RequestBody LoginBody form) { + Map map = new HashMap<>(3); + // APP用户登录 + LoginUser userInfo = sysLoginService.appLogin(form.getUsername(), form.getPassword()); + Map tokenMap = tokenService.createToken(userInfo); + map.put("access_token",tokenMap.get("access_token")); + map.put("expires_in",tokenMap.get("expires_in")); + // 获取app菜单 + R result = remoteUserService.getAppRouters(userInfo.getSysUser().getUserId(), SecurityConstants.INNER); + if(result.getCode() == BusinessConstants.SUCCESS_CODE){ + map.put("menuList",result.getData()); + } + // 获取APP用户信息 + R result2 = remoteUserService.getAppUserInfo(userInfo.getSysUser().getUserId(), SecurityConstants.INNER); + if(result2.getCode() == BusinessConstants.SUCCESS_CODE){ + Map userMap = (Map) result2.getData(); + map.put("user",userMap.get("user")); + map.put("roles",userMap.get("roles")); + map.put("permissions",userMap.get("permissions")); + } + // 获取登录token + return R.ok(map); + } + @DeleteMapping("logout") public R logout(HttpServletRequest request) { try{ diff --git a/bonus-auth/src/main/java/com/bonus/auth/service/SysLoginService.java b/bonus-auth/src/main/java/com/bonus/auth/service/SysLoginService.java index a73e7ec..a8e1aaa 100644 --- a/bonus-auth/src/main/java/com/bonus/auth/service/SysLoginService.java +++ b/bonus-auth/src/main/java/com/bonus/auth/service/SysLoginService.java @@ -139,4 +139,52 @@ public class SysLoginService } recordLogService.recordLogininfor(username, Constants.REGISTER, "注册成功"); } + + public LoginUser appLogin(String username, String password) { + // 用户名或密码为空 错误 + long startTime = System.currentTimeMillis(); + if (StringUtils.isAnyBlank(username, password)) { + recordLogService.saveLogs(username, startTime, "用户名/密码为空","用户名/密码必须填写",null,null); + throw new ServiceException("用户名/密码必须填写"); + } + // 密码如果不在指定范围内 错误 + if (password.length() < ValidateUtils.MIN_LENGTH + || password.length() > ValidateUtils.MAX_LENGTH) { + recordLogService.saveLogs(username,startTime, "密码格式不正确","用户名/密码格式不正确",null,null); + throw new ServiceException("用户名/密码格式不正确"); + } + // 用户名不在指定范围内 错误 + if (username.length() < UserConstants.USERNAME_MIN_LENGTH + || username.length() > UserConstants.USERNAME_MAX_LENGTH) { + recordLogService.saveLogs(username, startTime, "用户名格式不正确","用户名/密码格式不正确",null,null); + throw new ServiceException("用户名/密码格式不正确"); + } + // 查询用户信息 + R userResult = remoteUserService.getUserInfo(username, SecurityConstants.INNER); + if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData())) { + recordLogService.saveLogs(username,startTime, "登录用户不存在","用户名/密码错误",null,null); + throw new ServiceException("用户名/密码错误"); + } + if (R.FAIL == userResult.getCode()) { + recordLogService.saveLogs(username, startTime, "系统错误",userResult.getMsg(),null,null); + throw new ServiceException(userResult.getMsg()); + } + LoginUser userInfo = userResult.getData(); + SysUser user = userResult.getData().getSysUser(); + if (UserStatus.DELETED.getCode().equals(user.getDelFlag())) { + recordLogService.saveLogs(username, startTime, "账号已被删除","用户不存在",null,null); + throw new ServiceException("用户不存在"); + } + if (UserStatus.DISABLE.getCode().equals(user.getStatus())) { + recordLogService.saveLogs(username, startTime, "用户已停用","用户不存在",null,null); + throw new ServiceException("用户不存在"); + } + if(StringUtils.isEmpty(user.getLoginType()) || !user.getLoginType().contains(SecurityConstants.LOGIN_APP)){ + recordLogService.saveLogs(username, startTime, "当前账号无登录APP权限","当前账号无登录APP权限",null,null); + throw new ServiceException("当前账号无登录APP权限"); + } + passwordService.validate(user, password,startTime); + recordLogService.saveLogs(username, startTime, "APP登陆成功","APP登陆成功",user.getUserId().toString(),"APP登陆成功"); + return userInfo; + } } diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/SecurityConstants.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/SecurityConstants.java index 7bc2e40..94e8713 100644 --- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/SecurityConstants.java +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/SecurityConstants.java @@ -46,4 +46,12 @@ public class SecurityConstants * 角色权限 */ public static final String ROLE_PERMISSION = "role_permission"; + /** + * APP登录权限 + */ + public static final String LOGIN_APP = "2"; + /** + * 后台登录权限 + */ + public static final String LOGIN_BACKSTAGE = "1"; } diff --git a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/UserConstants.java b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/UserConstants.java index 281b14c..51e151a 100644 --- a/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/UserConstants.java +++ b/bonus-common/bonus-common-core/src/main/java/com/bonus/common/core/constant/UserConstants.java @@ -76,4 +76,9 @@ public class UserConstants { public static final int PASSWORD_MIN_LENGTH = 5; public static final int PASSWORD_MAX_LENGTH = 20; + + /** + * APP菜单表示 + */ + public static final String APP_NAME = "App子系统"; } diff --git a/bonus-modules/bonus-app/src/main/java/com/bonus/app/service/impl/CraneMonitorServiceImpl.java b/bonus-modules/bonus-app/src/main/java/com/bonus/app/service/impl/CraneMonitorServiceImpl.java index e8188dc..2a7f68b 100644 --- a/bonus-modules/bonus-app/src/main/java/com/bonus/app/service/impl/CraneMonitorServiceImpl.java +++ b/bonus-modules/bonus-app/src/main/java/com/bonus/app/service/impl/CraneMonitorServiceImpl.java @@ -92,6 +92,9 @@ public class CraneMonitorServiceImpl implements ICraneMonitorService { if (CollectionUtils.isEmpty(configItems)) { return AjaxResult.error("配置项不能为空"); } + if(configItems.size() > 10){ + return AjaxResult.error("设备配置项不能超过十个"); + } Set itemsHashSet = new HashSet<>(configItems); if (itemsHashSet.size() != configItems.size()) { return AjaxResult.error("配置项存在相同数据"); diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/ConsControlServiceImpl.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/ConsControlServiceImpl.java index c471b8f..518966d 100644 --- a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/ConsControlServiceImpl.java +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/ConsControlServiceImpl.java @@ -273,6 +273,9 @@ public class ConsControlServiceImpl implements IConsControlService { return AjaxResult.error("时间格式错误(HH:MM)"); } } + if(timeArr.length > 0){ + return AjaxResult.error("固定时间验证不能超过时间配置项"); + } } else if (Objects.equals(vo.getConfigType(), BusinessConstants.CONFIG_TYPE2)) { // 间隔时间验证 if (!TimeValidator.isValidTime2(vo.getTime())) { @@ -475,6 +478,9 @@ public class ConsControlServiceImpl implements IConsControlService { if (CollectionUtils.isEmpty(configItems)) { return AjaxResult.error("配置项不能为空"); } + if(configItems.size() > 10){ + return AjaxResult.error("设备配置项不能超过十个"); + } Set itemsHashSet = new HashSet<>(configItems); if (itemsHashSet.size() != configItems.size()) { return AjaxResult.error("配置项存在相同数据"); diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysMenuController.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysMenuController.java index 2d6be61..1a71dbe 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysMenuController.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysMenuController.java @@ -1,9 +1,11 @@ package com.bonus.system.controller; import java.util.List; +import java.util.Objects; import com.bonus.common.log.annotation.SysLog; import com.bonus.common.log.enums.OperaType; +import com.bonus.common.security.annotation.InnerAuth; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; @@ -181,6 +183,27 @@ public class SysMenuController extends BaseController try{ Long userId = SecurityUtils.getUserId(); List menus = menuService.selectMenuTreeByUserId(userId); + // 去除app菜单 + menus.removeIf(menu -> Objects.equals(menu.getMenuName(),UserConstants.APP_NAME)); + return success(menuService.buildMenus(menus)); + }catch (Exception e){ + log.error(e.toString(),e); + } + return error("系统异常"); + } + + /** + * 获取App路由信息 + * + * @return 路由信息 + */ + @PostMapping("getAppRouters") + @InnerAuth + public AjaxResult getAppRouters(@RequestBody Long userId) { + try{ + List menus = menuService.selectMenuTreeByUserId(userId); + // 去除后台菜单 + menus.removeIf(menu -> !Objects.equals(menu.getMenuName(),UserConstants.APP_NAME)); return success(menuService.buildMenus(menus)); }catch (Exception e){ log.error(e.toString(),e); diff --git a/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysUserController.java b/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysUserController.java index ef012ff..b240c43 100644 --- a/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysUserController.java +++ b/bonus-modules/bonus-system/src/main/java/com/bonus/system/controller/SysUserController.java @@ -1,10 +1,7 @@ package com.bonus.system.controller; import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; import javax.servlet.http.HttpServletResponse; @@ -186,6 +183,31 @@ public class SysUserController extends BaseController { return error("系统异常,请联系管理员"); } + /** + * 获取APP用户信息 + * + * @return 用户信息 + */ + @PostMapping("getAppUserInfo") + @InnerAuth + public AjaxResult getAppUserInfo(@RequestBody Long userId) { + try { + Map map = new HashMap<>(3); + SysUser user = userService.selectUserById(userId); + // 角色集合 + Set roles = permissionService.getRolePermission(user); + // 权限集合 + Set permissions = permissionService.getMenuPermission(user); + map.put("user",user); + map.put("roles",roles); + map.put("permissions",permissions); + return AjaxResult.success(map); + } catch (Exception e) { + logger.error(e.toString(), e); + } + return error("系统异常,请联系管理员"); + } + /** * 根据用户编号获取详细信息 */