WANG il y a 5 ans
Parent
commit
d0f5a84de5

+ 5 - 10
examcloud-core-basic-api-provider/src/main/java/cn/com/qmth/examcloud/core/basic/api/provider/AuthCloudServiceProvider.java

@@ -7,11 +7,11 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import cn.com.qmth.examcloud.api.commons.security.bean.User;
+import cn.com.qmth.examcloud.api.commons.security.bean.UserType;
 import cn.com.qmth.examcloud.core.basic.api.AuthCloudService;
 import cn.com.qmth.examcloud.core.basic.api.request.LoginReq;
 import cn.com.qmth.examcloud.core.basic.api.response.LoginResp;
 import cn.com.qmth.examcloud.core.basic.service.AuthService;
-import cn.com.qmth.examcloud.core.basic.service.bean.LoginInfo;
 import cn.com.qmth.examcloud.web.support.ControllerSupport;
 import io.swagger.annotations.ApiOperation;
 
@@ -28,15 +28,10 @@ public class AuthCloudServiceProvider extends ControllerSupport implements AuthC
 	@PostMapping("login")
 	@Override
 	public LoginResp login(@RequestBody LoginReq req) {
-		LoginInfo loginInfo = new LoginInfo();
-		loginInfo.setAccountType(req.getAccountType());
-		loginInfo.setAccountValue(req.getAccountValue());
-		loginInfo.setClientIp(req.getClientIp());
-		loginInfo.setDomain(req.getDomain());
-		loginInfo.setPassword(req.getPassword());
-		loginInfo.setRootOrgId(req.getRootOrgId());
-
-		User user = authService.login(loginInfo);
+		Long userId = req.getUserId();
+		UserType userType = req.getUserType();
+
+		User user = authService.login(userType, userId);
 
 		LoginResp resp = new LoginResp();
 		resp.setUser(user);

+ 11 - 0
examcloud-core-basic-service/src/main/java/cn/com/qmth/examcloud/core/basic/service/AuthService.java

@@ -1,6 +1,7 @@
 package cn.com.qmth.examcloud.core.basic.service;
 
 import cn.com.qmth.examcloud.api.commons.security.bean.User;
+import cn.com.qmth.examcloud.api.commons.security.bean.UserType;
 import cn.com.qmth.examcloud.commons.exception.StatusException;
 import cn.com.qmth.examcloud.core.basic.service.bean.LoginInfo;
 
@@ -22,6 +23,16 @@ public interface AuthService {
 	 */
 	User login(LoginInfo loginInfo);
 
+	/**
+	 * 用户登录
+	 *
+	 * @author WANGWEI
+	 * @param userType
+	 * @param userId
+	 * @return
+	 */
+	User login(UserType userType, Long userId);
+
 	/**
 	 * 登出
 	 *

+ 39 - 0
examcloud-core-basic-service/src/main/java/cn/com/qmth/examcloud/core/basic/service/impl/AuthServiceImpl.java

@@ -51,6 +51,7 @@ import cn.com.qmth.examcloud.core.basic.service.bean.LoginInfo;
 import cn.com.qmth.examcloud.support.cache.CacheHelper;
 import cn.com.qmth.examcloud.support.cache.bean.OrgCacheBean;
 import cn.com.qmth.examcloud.support.cache.bean.RootOrgCacheBean;
+import cn.com.qmth.examcloud.support.cache.bean.StudentCacheBean;
 import cn.com.qmth.examcloud.web.bootstrap.PropertyHolder;
 import cn.com.qmth.examcloud.web.helpers.GlobalHelper;
 import cn.com.qmth.examcloud.web.redis.RedisClient;
@@ -722,4 +723,42 @@ public class AuthServiceImpl implements AuthService {
 		return login(loginInfo);
 	}
 
+	@Override
+	public User login(UserType userType, Long userId) {
+
+		User user = new User();
+
+		Long rootOrgId = null;
+
+		if (userType.equals(UserType.STUDENT)) {
+
+			StudentCacheBean student = CacheHelper.getStudent(userId);
+
+			user.setUserId(student.getId());
+			user.setUserType(UserType.STUDENT);
+			user.setDisplayName(student.getName());
+
+		} else {
+
+			UserEntity userEntity = GlobalHelper.getEntity(userRepo, userId, UserEntity.class);
+			rootOrgId = userEntity.getRootOrgId();
+
+			user.setUserId(userEntity.getId());
+			user.setUserType(UserType.COMMON);
+			user.setDisplayName(userEntity.getLoginName() + " (" + userEntity.getName() + ")");
+
+			List<Role> roleList = getUserRoles(userEntity.getId());
+			user.setRoleList(roleList);
+		}
+
+		user.setRootOrgId(rootOrgId);
+		OrgCacheBean orgCacheBean = CacheHelper.getOrg(rootOrgId);
+		user.setRootOrgName(orgCacheBean.getName());
+		user.setRootOrgDomain(orgCacheBean.getDomainName());
+
+		setSession(user);
+
+		return user;
+	}
+
 }