From 254dc4d9b8d903246483297ed0799290f856f0de Mon Sep 17 00:00:00 2001
From: zhanzhiqin <895896009@qq.com>
Date: 星期四, 28 七月 2022 17:28:43 +0800
Subject: [PATCH] 便捷登录
---
ximon-admin/src/main/java/com/sandu/ximon/admin/service/ClientService.java | 42 +++++++++++++++++++++
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AdminController.java | 10 +++++
ximon-admin/src/main/java/com/sandu/ximon/admin/controller/ClientController.java | 8 ++++
ximon-admin/src/main/java/com/sandu/ximon/admin/service/AdminService.java | 47 +++++++++++++++++++++--
dao/src/main/java/com/sandu/ximon/dao/enums/MenuEnum.java | 3 +
ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/AtmoFunctionCode.java | 1
6 files changed, 107 insertions(+), 4 deletions(-)
diff --git a/dao/src/main/java/com/sandu/ximon/dao/enums/MenuEnum.java b/dao/src/main/java/com/sandu/ximon/dao/enums/MenuEnum.java
index 1e892f7..6eb0fd9 100644
--- a/dao/src/main/java/com/sandu/ximon/dao/enums/MenuEnum.java
+++ b/dao/src/main/java/com/sandu/ximon/dao/enums/MenuEnum.java
@@ -195,6 +195,9 @@
INTER_PHONE_HOST_SUB_UNBIND("涓�閿眰鍔╀富瀛愯澶囪В缁�"),
LOG_RECORD("鏃ュ織璁板綍"),
+ //渚挎嵎鐧诲綍key
+ QUICK_LOGIN("渚挎嵎鐧诲綍"),
+
//娉ㄥ唽涓夊厓鐮佹潈闄�
BASE_DEVICE_01("baseDevice01"),
BASE_DEVICE_02("baseDevice02"),
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AdminController.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AdminController.java
index afa51f6..0b7aeba 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AdminController.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/AdminController.java
@@ -342,4 +342,14 @@
return ResponseUtil.success(userPermissionList);
}
+
+
+ @GetMapping("/creatUserKey")
+ public ResponseVO<Object> creatUserKey(@RequestParam(required = false, value = "userId") Long userId,
+ @RequestParam(required = false, value = "requstType") Integer type) {
+ if (!AdministratorEnums.ADMIN.getCode().equals(SecurityUtils.getAdministratorIdentity())) {
+ throw new BusinessException("闈炶秴绾х鐞嗗憳鏃犳硶鎿嶄綔锛�");
+ }
+ return ResponseUtil.success(adminService.creatUserKey(userId, type));
+ }
}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/ClientController.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/ClientController.java
index 3994e70..5c47824 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/ClientController.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/controller/ClientController.java
@@ -1,6 +1,7 @@
package com.sandu.ximon.admin.controller;
import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.map.MapUtil;
import cn.hutool.extra.servlet.ServletUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -28,6 +29,7 @@
import com.sandu.ximon.admin.service.RoleService;
import com.sandu.ximon.admin.utils.RedisUtils;
import com.sandu.ximon.admin.utils.StoreOperationRecordsUtils;
+import com.sandu.ximon.dao.domain.Admin;
import com.sandu.ximon.dao.domain.Client;
import com.sandu.ximon.dao.domain.ClientRoleRelation;
import com.sandu.ximon.dao.enums.AdministratorEnums;
@@ -260,4 +262,10 @@
StoreOperationRecordsUtils.storeOperationLoginData(client.getId(), client.getClientName(), "鐢ㄦ埛鐧诲綍", content);
return ResponseUtil.success(authInfo);
}
+
+ @GetMapping("/getTokenByKey")
+ public ResponseVO<Object> getLonginKey(@RequestParam(required = false,value = "keyValue") String keyValue) {
+
+ return ResponseUtil.success(clientService.creatKeyByLogin(keyValue));
+ }
}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/AtmoFunctionCode.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/AtmoFunctionCode.java
index 2698082..a1de561 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/AtmoFunctionCode.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/manager/iot/rrpc/enums/AtmoFunctionCode.java
@@ -19,6 +19,7 @@
AIR_HEARTBEAT("air_heartbeat:air_heartbeat"),
// 澶ф皵璁惧蹇冭烦鍖呭瓨鍌�(璁惧鐘舵��))
AIR_HEARTBEAT_STATE("air_heartbeat:air_heartbeat_state"),
+
// 澶ф皵璁惧蹇冭烦鍖呭瓨鍌� 鍐滆��
AIR_HEARTBEAT_NONG_GENG("air_heartbeat_nong_geng:air_heartbeat_nong_geng"),
// 澶ф皵璁惧蹇冭烦鍖呭瓨鍌�(璁惧鐘舵��))鍐滆��
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AdminService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AdminService.java
index 7213ec2..8a27dd5 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AdminService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/AdminService.java
@@ -1,8 +1,10 @@
package com.sandu.ximon.admin.service;
import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.map.MapUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
+import com.qcloud.cos.utils.Md5Utils;
import com.sandu.common.enums.RoleLevelStatus;
import com.sandu.common.execption.BusinessException;
import com.sandu.common.object.BaseConditionVO;
@@ -12,17 +14,16 @@
import com.sandu.ximon.admin.param.PwdParam;
import com.sandu.ximon.admin.param.UserPwsParm;
import com.sandu.ximon.admin.security.SecurityUtils;
+import com.sandu.ximon.admin.security.authcode.MD5Util;
import com.sandu.ximon.admin.utils.StoreOperationRecordsUtils;
import com.sandu.ximon.dao.bo.AdminBo;
import com.sandu.ximon.dao.bo.MenuNode;
-import com.sandu.ximon.dao.domain.Admin;
-import com.sandu.ximon.dao.domain.AdminRoleRelation;
-import com.sandu.ximon.dao.domain.Role;
-import com.sandu.ximon.dao.domain.RoleMenuRelation;
+import com.sandu.ximon.dao.domain.*;
import com.sandu.ximon.dao.enums.AdministratorEnums;
import com.sandu.ximon.dao.enums.OrderByEnums;
import com.sandu.ximon.dao.mapper.AdminMapper;
import lombok.AllArgsConstructor;
+import lombok.Data;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -299,4 +300,42 @@
return resultList;
}
+
+
+ /**
+ * 鐢熸垚key
+ *
+ * @param userId
+ * @return
+ */
+ public String creatUserKey(Long userId, Integer type) {
+ if (userId == null) {
+ throw new BusinessException("鐢ㄦ埛ID涓嶈兘涓虹┖锛�");
+ }
+ //0锛氬厖閲嶇疆key,1锛氳幏鍙杒ey
+ if (type == null || (type != 0 && type != 1)) {
+ type = 1;
+ }
+
+ ClientService clientService = SpringContextHolder.getBean(ClientService.class);
+ Client client = clientService.getOne(Wrappers.lambdaQuery(Client.class).eq(Client::getId, userId));
+ if (client == null) {
+ throw new BusinessException("鐢ㄦ埛涓嶅瓨鍦紝璇烽噸鏂扮‘璁わ紒");
+ }
+
+ //鑾峰彇
+ if (type == 1) {
+ return "鐢ㄦ埛鐨勪究鎹风櫥褰昸ey涓猴細" + client.getUserKey();
+ } else {
+ //鏇存柊
+ String md5 = MD5Util.md5("uesrId:" + userId + "_AdministratorType:" + 2 + "time:" + System.currentTimeMillis());
+ client.setUserKey(md5);
+ boolean flag = clientService.updateById(client);
+ if (flag) {
+ return "鐢熸垚渚挎嵎鐧诲綍key鎴愬姛锛岃鐢ㄦ埛key涓猴細" + md5 + "锛岃濡ュ杽淇濈锛�";
+ } else {
+ throw new BusinessException("鐢熸垚渚挎嵎鐧诲綍key澶辫触锛�");
+ }
+ }
+ }
}
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/ClientService.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/ClientService.java
index 3e9aecd..84f1cd8 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/service/ClientService.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/service/ClientService.java
@@ -5,7 +5,11 @@
import com.sandu.common.enums.RoleLevelStatus;
import com.sandu.common.execption.BusinessException;
import com.sandu.common.object.BaseConditionVO;
+import com.sandu.common.redis.RedisService;
+import com.sandu.common.security.LoginUserInfo;
+import com.sandu.common.security.token.TokenProvider;
import com.sandu.common.service.impl.BaseServiceImpl;
+import com.sandu.common.util.IpUtil;
import com.sandu.common.util.SpringContextHolder;
import com.sandu.ximon.admin.param.AddClientPrarm;
import com.sandu.ximon.admin.param.PwdParam;
@@ -13,17 +17,21 @@
import com.sandu.ximon.admin.param.UserPwsParm;
import com.sandu.ximon.admin.security.SecurityUtils;
import com.sandu.ximon.admin.utils.StoreOperationRecordsUtils;
+import com.sandu.ximon.admin.utils.StringUtil;
import com.sandu.ximon.dao.bo.MenuNode;
import com.sandu.ximon.dao.domain.*;
import com.sandu.ximon.dao.enums.AdministratorEnums;
import com.sandu.ximon.dao.mapper.ClientMapper;
import lombok.AllArgsConstructor;
+import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
+import java.util.stream.Collectors;
@Service
@AllArgsConstructor
@@ -33,6 +41,7 @@
private final PasswordEncoder passwordEncoder;
private final ClientRoleRelationService clientRoleRelationService;
private final RoleService roleService;
+ private final TokenProvider tokenProvider;
public boolean addClient(AddClientPrarm addClientPrarm) {
@@ -378,4 +387,37 @@
List<MenuNode> resultList = SpringContextHolder.getBean(MenuService.class).getUserPermissionListById(menuIds);
return resultList;
}
+
+ /**
+ * 鐢熸垚渚挎嵎鐧诲綍KEY
+ */
+ public String creatKeyByLogin(String keyValue) {
+ if (keyValue == null) {
+ throw new BusinessException("key涓嶈兘涓虹┖锛�");
+ }
+
+ Object object = SpringContextHolder.getBean(RedisService.class).get(keyValue);
+
+ if (object != null) {
+ return object.toString();
+ } else {
+ Client client = getOne(Wrappers.lambdaQuery(Client.class).eq(Client::getUserKey, keyValue));
+ if (client == null) {
+ throw new BusinessException("鐢ㄦ埛涓嶅瓨鍦紝鑾峰彇淇℃伅寮傚父锛�");
+ }
+
+ Collection<GrantedAuthority> grantedAuthorities = roleService.mapToGrantedAuthorities(client.getId(), false);
+
+ LoginUserInfo loginUserInfo = new LoginUserInfo();
+ loginUserInfo.setUserId(client.getId());
+ loginUserInfo.setAccount(client.getClientName());
+ loginUserInfo.setIp(IpUtil.getRealIp());
+ loginUserInfo.setAdministratorType(AdministratorEnums.NORMAL.getCode());
+ loginUserInfo.setPermission(grantedAuthorities.stream().map(GrantedAuthority::getAuthority).collect(Collectors.joining(",")));
+
+ // 鐢熸垚浠ょ墝
+ String token = tokenProvider.createToken(loginUserInfo);
+ return token;
+ }
+ }
}
--
Gitblit v1.9.3