zouxuan 5 år sedan
förälder
incheckning
48e802a042

+ 4 - 0
mec-auth/mec-auth-api/src/main/java/com/ym/mec/auth/api/client/SysUserFeignService.java

@@ -1,5 +1,6 @@
 package com.ym.mec.auth.api.client;
 
+import com.ym.mec.auth.api.entity.SysUser;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
@@ -15,4 +16,7 @@ public interface SysUserFeignService {
 
 	@GetMapping(value = "task/test")
 	public Object test();
+
+	@GetMapping(value = "queryUserInfo")
+	SysUser queryUserInfo(@PathVariable("access_token") String access_token);
 }

+ 2 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/web/controller/TokenController.java

@@ -16,6 +16,7 @@ import org.springframework.security.oauth2.common.OAuth2AccessToken;
 import org.springframework.security.oauth2.provider.token.DefaultTokenServices;
 import org.springframework.util.LinkedMultiValueMap;
 import org.springframework.util.MultiValueMap;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RestController;
@@ -57,7 +58,7 @@ public class TokenController extends BaseController {
         return succeed(accessTokenService.getAccessToken(clientId, clientSecret, authentication));
     }
 
-    @PostMapping("/queryUserInfo")
+    @GetMapping("/queryUserInfo")
     public SysUser queryUserInfo() {
 		AuthUser authUser = SecurityUtils.getUser();
 		if(authUser != null){

+ 9 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/security/SecurityUtils.java

@@ -1,8 +1,12 @@
 package com.ym.mec.common.security;
 
+import com.alibaba.fastjson.JSON;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.context.SecurityContextHolder;
 
+import java.util.HashMap;
+import java.util.Map;
+
 public class SecurityUtils {
 	/**
 	 * 获取Authentication
@@ -38,9 +42,14 @@ public class SecurityUtils {
 	 */
 	public static AuthUser getUser() {
 		Authentication authentication = getAuthentication();
+		Object tokenValue = JSON.parseObject(JSON.toJSONString(authentication.getDetails()), Map.class).get("tokenValue");
 		if (authentication == null) {
 			return null;
 		}
 		return getUser(authentication);
 	}
+
+	public static String getToken(){
+		return JSON.parseObject(JSON.toJSONString(getAuthentication().getDetails()), Map.class).get("tokenValue").toString();
+	}
 }

+ 4 - 0
mec-im/pom.xml

@@ -63,6 +63,10 @@
       <artifactId>common-core</artifactId>
     </dependency>
     <dependency>
+      <groupId>com.ym</groupId>
+      <artifactId>mec-auth-api</artifactId>
+    </dependency>
+    <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>fastjson</artifactId>
       <version>1.2.46</version>

+ 11 - 0
mec-im/src/main/java/com/ym/SealClassApplication.java

@@ -4,13 +4,18 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.client.loadbalancer.LoadBalanced;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.EnableAspectJAutoProxy;
 import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.web.client.RestTemplate;
 
 @EnableAspectJAutoProxy
 @Slf4j
 @SpringBootApplication
+@EnableFeignClients("com.ym")
 @EnableScheduling
 @EnableDiscoveryClient
 @Configuration
@@ -21,4 +26,10 @@ public class SealClassApplication {
 		log.info("SealClassApplication started");
 	}
 
+	@Bean
+	@LoadBalanced
+	public RestTemplate restTemplate(){
+		return new RestTemplate();
+	}
+
 }

+ 57 - 39
mec-im/src/main/java/com/ym/service/Impl/RoomServiceImpl.java

@@ -1,6 +1,5 @@
 package com.ym.service.Impl;
 
-import com.alibaba.fastjson.JSON;
 import com.ym.common.ApiException;
 import com.ym.common.DisplayEnum;
 import com.ym.common.ErrorEnum;
@@ -13,7 +12,8 @@ import com.ym.dao.WhiteboardDao;
 import com.ym.im.IMHelper;
 import com.ym.im.message.*;
 import com.ym.job.ScheduleManager;
-import com.ym.mec.common.security.AuthUser;
+import com.ym.mec.auth.api.client.SysUserFeignService;
+import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.common.security.SecurityUtils;
 import com.ym.pojo.*;
 import com.ym.service.RoomService;
@@ -23,9 +23,7 @@ import com.ym.utils.DateTimeUtils;
 import com.ym.utils.IdentifierUtils;
 import com.ym.whiteboard.WhiteBoardHelper;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.collections.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -67,22 +65,26 @@ public class RoomServiceImpl implements RoomService {
     private IMProperties imProperties;
 
     @Autowired
-    private RedisTemplate<String,String> redisTemplate;
+    private SysUserFeignService sysUserFeignService;
 
-    private AuthUser getUser(){
+    /*private AuthUser getUser(){
+        String token = SecurityUtils.getToken();
         String principal = SecurityUtils.getPrincipal().toString();
         String json = redisTemplate.opsForValue().get(principal);
         return JSON.parseObject(json,AuthUser.class);
-    }
+    }*/
 
     @Transactional
     @Override
     public RoomResult joinRoom(String userName, String roomId, boolean isAudience, boolean isDisableCamera) throws ApiException, Exception {
+        String token = SecurityUtils.getToken();
+
         CheckUtils.checkArgument(userName != null, "userName must't be null");
         CheckUtils.checkArgument(roomId != null, "roomId must't be null");
 
         log.info("joinRoom: roomId={}, userName={}, isAudience={}, isDisableCamera={}", roomId, userName, isAudience, isDisableCamera);
-        String userId = getUser().getUserId().toString();
+//        String userId = getUser().getUserId().toString();
+        String userId = sysUserFeignService.queryUserInfo(token).getId().toString();
 
         String display = "";
         Date curTime = DateTimeUtils.currentUTC();
@@ -218,11 +220,12 @@ public class RoomServiceImpl implements RoomService {
     @Transactional
     @Override
     public Boolean leaveRoom(String roomId) throws Exception {
-        AuthUser user = getUser();
+        String token = SecurityUtils.getToken();
+        SysUser user = sysUserFeignService.queryUserInfo(token);
+        String userId = user.getId().toString();
         
         CheckUtils.checkArgument(user != null, "user must't be null");
         CheckUtils.checkArgument(roomId != null, "roomId must't be null");
-        String userId = user.getUserId().toString();
         List<Room> roomList = roomDao.findByRid(roomId);
         if (roomList.size() == 0) {
             log.error("room : {} not exist ", roomId);
@@ -322,10 +325,11 @@ public class RoomServiceImpl implements RoomService {
     @Transactional
     @Override
     public Boolean downgrade(String roomId, List<ReqChangeUserRoleData.ChangedUser> users) throws ApiException, Exception {
-        AuthUser authUser = getUser();
         CheckUtils.checkArgument(roomId != null, "roomId must't be null");
         CheckUtils.checkArgument(users.size() > 0, "the changed user list must't be null");
-        String userId = authUser.getUserId().toString();
+        String token = SecurityUtils.getToken();
+        SysUser authUser = sysUserFeignService.queryUserInfo(token);
+        String userId = authUser.getId().toString();
         List<Room> roomList = roomDao.findByRid(roomId);
         if (roomList.isEmpty()) {
             throw new ApiException(ErrorEnum.ERR_ROOM_NOT_EXIST);
@@ -472,8 +476,9 @@ public class RoomServiceImpl implements RoomService {
     public String createWhiteBoard(String roomId) throws ApiException, Exception {
         CheckUtils.checkArgument(roomId != null, "roomId must't be null");
         CheckUtils.checkArgument(roomDao.existsByRid(roomId), "room not exist");
-        AuthUser authUser = getUser();
-        String userId = authUser.getUserId().toString();
+        String token = SecurityUtils.getToken();
+        SysUser authUser = sysUserFeignService.queryUserInfo(token);
+        String userId = authUser.getId().toString();
         CheckUtils.checkArgument(roomMemberDao.existsByRidAndUid(roomId, userId), "room member not exist");
 
         log.info("createWhiteBoard: roomId = {}", roomId);
@@ -515,8 +520,9 @@ public class RoomServiceImpl implements RoomService {
     public Boolean deleteWhiteboard(String roomId, String whiteBoardId) throws ApiException, Exception {
         CheckUtils.checkArgument(roomId != null, "roomId must't be null");
         CheckUtils.checkArgument(whiteBoardId != null, "whiteBoardId must't be null");
-        AuthUser authUser = getUser();
-        String userId = authUser.getUserId().toString();
+        String token = SecurityUtils.getToken();
+        SysUser authUser = sysUserFeignService.queryUserInfo(token);
+        String userId = authUser.getId().toString();
 
         List<Whiteboard> whiteboardList = whiteboardDao.findByRidAndWbid(roomId, whiteBoardId);
         CheckUtils.checkArgument(whiteboardList.size() > 0, "whiteboard not exist");
@@ -571,8 +577,9 @@ public class RoomServiceImpl implements RoomService {
     public Boolean turnWhiteBoardPage(String roomId, String whiteBoardId, int page) throws ApiException, Exception {
         CheckUtils.checkArgument(roomId != null, "roomId must't be null");
         CheckUtils.checkArgument(whiteBoardId != null, "whiteBoardId must't be null");
-        AuthUser authUser = getUser();
-        String userId = authUser.getUserId().toString();
+        String token = SecurityUtils.getToken();
+        SysUser authUser = sysUserFeignService.queryUserInfo(token);
+        String userId = authUser.getId().toString();
         List<Room> roomList = roomDao.findByRid(roomId);
         CheckUtils.checkArgument(!roomList.isEmpty(), "room not exist");
 
@@ -590,7 +597,8 @@ public class RoomServiceImpl implements RoomService {
         CheckUtils.checkArgument(userId != null, "userId must't be null");
         CheckUtils.checkArgument(roomDao.existsByRid(roomId), "room not exist");
         CheckUtils.checkArgument(roomMemberDao.existsByRidAndUid(roomId, userId), "room member not exist");
-        AuthUser authUser = getUser();
+        String token = SecurityUtils.getToken();
+        SysUser authUser = sysUserFeignService.queryUserInfo(token);
 
         log.info("controlDevice: userId={}, typeEnum={}, onOff={}", userId, typeEnum, enable);
 
@@ -630,8 +638,9 @@ public class RoomServiceImpl implements RoomService {
     @Override
     public Boolean approveControlDevice(String roomId, String ticket) throws ApiException, Exception {
         CheckUtils.checkArgument(ticket != null, "ticket must't be null");
-        AuthUser authUser = getUser();
-        String userId = authUser.getUserId().toString();
+        String token = SecurityUtils.getToken();
+        SysUser authUser = sysUserFeignService.queryUserInfo(token);
+        String userId = authUser.getId().toString();
         log.info("approveControlDevice: ticket={}", ticket);
         ControlDeviceTaskInfo taskInfo = (ControlDeviceTaskInfo) scheduleManager.executeTask(ticket);
         if (taskInfo.getTypeEnum().equals(DeviceTypeEnum.Camera)) {
@@ -654,8 +663,9 @@ public class RoomServiceImpl implements RoomService {
     @Override
     public Boolean rejectControlDevice(String roomId, String ticket) throws ApiException, Exception {
         CheckUtils.checkArgument(ticket != null, "ticket must't be null");
-        AuthUser authUser = getUser();
-        String userId = authUser.getUserId().toString();
+        String token = SecurityUtils.getToken();
+        SysUser authUser = sysUserFeignService.queryUserInfo(token);
+        String userId = authUser.getId().toString();
 
         log.info("rejectControlDevice: ticket={}", ticket);
         ControlDeviceTaskInfo taskInfo = (ControlDeviceTaskInfo) scheduleManager.executeTask(ticket);
@@ -671,8 +681,9 @@ public class RoomServiceImpl implements RoomService {
     public Boolean syncDeviceState(String roomId, DeviceTypeEnum type, boolean enable) throws ApiException, Exception {
         CheckUtils.checkArgument(roomId != null, "roomId must't be null");
         CheckUtils.checkArgument(roomDao.existsByRid(roomId), "room not exist");
-        AuthUser authUser = getUser();
-        String userId = authUser.getUserId().toString();
+        String token = SecurityUtils.getToken();
+        SysUser authUser = sysUserFeignService.queryUserInfo(token);
+        String userId = authUser.getId().toString();
 
         int result;
         DeviceStateChangedMessage deviceResourceMessage;
@@ -703,8 +714,9 @@ public class RoomServiceImpl implements RoomService {
     public Boolean applySpeech(String roomId) throws ApiException, Exception {
         CheckUtils.checkArgument(roomId != null, "roomId must't be null");
         CheckUtils.checkArgument(roomDao.existsByRid(roomId), "room not exist");
-        AuthUser authUser = getUser();
-        String userId = authUser.getUserId().toString();
+        String token = SecurityUtils.getToken();
+        SysUser authUser = sysUserFeignService.queryUserInfo(token);
+        String userId = authUser.getId().toString();
         List<RoomMember> assistants = roomMemberDao.findByRidAndRole(roomId, RoleEnum.RoleAssistant.getValue());
         if (assistants.isEmpty()) {
             throw new ApiException(ErrorEnum.ERR_ASSISTANT_NOT_EXIST_IN_ROOM);
@@ -737,8 +749,9 @@ public class RoomServiceImpl implements RoomService {
     public Boolean approveSpeech(String roomId, String ticket) throws ApiException, Exception {
         CheckUtils.checkArgument(roomId != null, "roomId must't be null");
         CheckUtils.checkArgument(roomDao.existsByRid(roomId), "room not exist");
-        AuthUser authUser = getUser();
-        String userId = authUser.getUserId().toString();
+        String token = SecurityUtils.getToken();
+        SysUser authUser = sysUserFeignService.queryUserInfo(token);
+        String userId = authUser.getId().toString();
 
         int count = roomMemberDao.countByRidAndExcludeRole(roomId, RoleEnum.RoleAudience.getValue());
         if (count == roomProperties.getMaxCount()) {
@@ -781,8 +794,9 @@ public class RoomServiceImpl implements RoomService {
     public Boolean rejectSpeech(String roomId, String ticket) throws ApiException, Exception {
         CheckUtils.checkArgument(roomId != null, "roomId must't be null");
         CheckUtils.checkArgument(roomDao.existsByRid(roomId), "room not exist");
-        AuthUser authUser = getUser();
-        String userId = authUser.getUserId().toString();
+        String token = SecurityUtils.getToken();
+        SysUser authUser = sysUserFeignService.queryUserInfo(token);
+        String userId = authUser.getId().toString();
         ScheduledTaskInfo taskInfo = scheduleManager.executeTask(ticket);
 
         log.info("rejectSpeech: task = {}", taskInfo);
@@ -854,8 +868,9 @@ public class RoomServiceImpl implements RoomService {
         CheckUtils.checkArgument(roomId != null, "roomId must't be null");
         CheckUtils.checkArgument(targetUserId != null, "userId must't be null");
         CheckUtils.checkArgument(roomMemberDao.existsByRidAndUid(roomId, targetUserId), "room member not exist");
-        AuthUser authUser = getUser();
-        String userId = authUser.getUserId().toString();
+        String token = SecurityUtils.getToken();
+        SysUser authUser = sysUserFeignService.queryUserInfo(token);
+        String userId = authUser.getId().toString();
         log.info("inviteUpgradeRole roomId = {}, targetUserId = {}, targetRole = {}", roomId, targetUserId, targetRole);
 
         List<RoomMember> targetUser = roomMemberDao.findByRidAndUid(roomId, targetUserId);
@@ -893,8 +908,9 @@ public class RoomServiceImpl implements RoomService {
         CheckUtils.checkArgument(roomId != null, "roomId must't be null");
         CheckUtils.checkArgument(ticket != null, "ticket must't be null");
         CheckUtils.checkArgument(roomDao.existsByRid(roomId), "room not exist");
-        AuthUser authUser = getUser();
-        String userId = authUser.getUserId().toString();
+        String token = SecurityUtils.getToken();
+        SysUser authUser = sysUserFeignService.queryUserInfo(token);
+        String userId = authUser.getId().toString();
         UpgradeRoleTaskInfo taskInfo = (UpgradeRoleTaskInfo) scheduleManager.executeTask(ticket);
         log.info("approveUpgradeRole roomId = {}, task={}", roomId, taskInfo);
 
@@ -935,8 +951,9 @@ public class RoomServiceImpl implements RoomService {
         CheckUtils.checkArgument(roomId != null, "roomId must't be null");
         CheckUtils.checkArgument(ticket != null, "ticket must't be null");
         CheckUtils.checkArgument(roomDao.existsByRid(roomId), "room not exist");
-        AuthUser authUser = getUser();
-        String userId = authUser.getUserId().toString();
+        String token = SecurityUtils.getToken();
+        SysUser authUser = sysUserFeignService.queryUserInfo(token);
+        String userId = authUser.getId().toString();
         UpgradeRoleTaskInfo taskInfo = (UpgradeRoleTaskInfo) scheduleManager.executeTask(ticket);
         UpgradeRoleMessage msg = new UpgradeRoleMessage(ActionEnum.Reject.ordinal());
         msg.setOpUserName(authUser.getUsername());
@@ -957,8 +974,9 @@ public class RoomServiceImpl implements RoomService {
         CheckUtils.checkArgument(roomDao.existsByRid(roomId), "room not exist");
         CheckUtils.checkArgument(RoleEnum.getEnumByValue(targetRole).equals(RoleEnum.RoleTeacher), "only set to teacher");
         CheckUtils.checkArgument(roomMemberDao.existsByRidAndUid(roomId, targetUserId), "room member not exist");
-        AuthUser authUser = getUser();
-        String userId = authUser.getUserId().toString();
+        String token = SecurityUtils.getToken();
+        SysUser authUser = sysUserFeignService.queryUserInfo(token);
+        String userId = authUser.getId().toString();
 
         List<RoomMember> targetUser = roomMemberDao.findByRidAndUid(roomId, targetUserId);
         if (targetUser.isEmpty()) {