yonge преди 3 години
родител
ревизия
bd70c563be

+ 1 - 34
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/filter/UsernameAuthenticationFilter.java

@@ -1,10 +1,6 @@
 package com.ym.mec.auth.core.filter;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.stream.Collectors;
 
 import javax.servlet.FilterChain;
 import javax.servlet.ServletException;
@@ -13,7 +9,6 @@ import javax.servlet.http.HttpServletResponse;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.security.authentication.AuthenticationServiceException;
-import org.springframework.security.authentication.BadCredentialsException;
 import org.springframework.security.authentication.LockedException;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
 import org.springframework.security.core.Authentication;
@@ -24,7 +19,6 @@ import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
 import org.springframework.util.Assert;
 
 import com.ym.mec.auth.api.dto.SysUserInfo;
-import com.ym.mec.auth.api.entity.SysUserDevice;
 import com.ym.mec.auth.service.SysUserDeviceService;
 import com.ym.mec.auth.service.SysUserService;
 import com.ym.mec.common.security.SecurityConstants;
@@ -101,34 +95,7 @@ public class UsernameAuthenticationFilter extends AbstractAuthenticationProcessi
 		String deviceNum = request.getParameter(deviceNumParameter);
 		if (StringUtils.isNotBlank(deviceNum)) {
 			// 检查设备
-			if (StringUtils.equals("STUDENT", clientId)) {
-				// 检查学生是否绑定了多个设备号
-				List<SysUserDevice> sysUserDeviceList = sysUserDeviceService.queryByUserId(clientId, userInfo.getSysUser().getId());
-
-				if (sysUserDeviceList == null) {
-					sysUserDeviceList = new ArrayList<SysUserDevice>();
-				}
-
-				List<String> deviceList = sysUserDeviceList.stream().map(t -> t.getDeviceNum()).collect(Collectors.toList());
-
-				if (!deviceList.contains(deviceNum)) {
-					if (deviceList.size() >= 5) {
-						throw new BadCredentialsException("当前账号绑定设备过多,请联系主教老师");
-					}
-					SysUserDevice sysUserDevice = new SysUserDevice();
-					sysUserDevice.setUserId(userInfo.getSysUser().getId());
-					sysUserDevice.setDeviceNum(deviceNum);
-					sysUserDevice.setBindTime(new Date());
-					sysUserDevice.setClientId(clientId);
-					sysUserDeviceService.insert(sysUserDevice);
-				}
-			} else {
-				try {
-					sysUserDeviceService.bindDevice(clientId, userInfo.getSysUser().getId(), deviceNum);
-				} catch (Exception e) {
-					throw new BadCredentialsException("当前设备已绑定账号,请更换设备");
-				}
-			}
+			sysUserDeviceService.bindDevice(clientId, userInfo.getSysUser().getId(), deviceNum);
 		}
 
 		return authentication;

+ 1 - 32
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/core/provider/PhoneAuthenticationProvider.java

@@ -1,9 +1,7 @@
 package com.ym.mec.auth.core.provider;
 
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
-import java.util.stream.Collectors;
 
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.security.authentication.BadCredentialsException;
@@ -104,36 +102,7 @@ public class PhoneAuthenticationProvider extends AbstractAuthenticationProvider
 			}
 			
 			if (StringUtils.isNotBlank(deviceNum)) {
-				if (StringUtils.equals("STUDENT", clientId)) {
-					// 检查学生是否绑定了多个设备号
-					List<SysUserDevice> sysUserDeviceList = sysUserDeviceService.queryByUserId(clientId, user.getId());
-
-					if (sysUserDeviceList == null) {
-						sysUserDeviceList = new ArrayList<SysUserDevice>();
-					}
-
-					List<String> deviceList = sysUserDeviceList.stream().map(t -> t.getDeviceNum()).collect(Collectors.toList());
-
-					if (!deviceList.contains(deviceNum)) {
-						if (deviceList.size() >= 5) {
-							throw new BadCredentialsException("当前账号绑定设备过多,请联系主教老师");
-						}
-						SysUserDevice sysUserDevice = new SysUserDevice();
-						sysUserDevice.setUserId(userInfo.getSysUser().getId());
-						sysUserDevice.setDeviceNum(deviceNum);
-						sysUserDevice.setBindTime(new Date());
-						sysUserDevice.setClientId(clientId);
-						sysUserDeviceService.insert(sysUserDevice);
-					}
-
-				} else {
-					// 检查老师端、教务端设备号
-					try {
-						sysUserDeviceService.bindDevice(clientId, user.getId(), deviceNum);
-					} catch (Exception e) {
-						throw new BadCredentialsException("当前设备已绑定账号,请更换设备");
-					}
-				}
+				sysUserDeviceService.bindDevice(clientId, user.getId(), deviceNum);
 			}
 			
 			if (!userInfo.getSysUser().getUserType().contains(clientId)) {

+ 1 - 1
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/SysUserDeviceService.java

@@ -18,7 +18,7 @@ public interface SysUserDeviceService extends BaseService<Integer, SysUserDevice
 	 * @param deviceNum
 	 * @return
 	 */
-	boolean bindDevice(String clientId, Integer userId, String deviceNum) throws Exception;
+	boolean bindDevice(String clientId, Integer userId, String deviceNum);
 
 	/**
 	 * 逻辑删除

+ 45 - 13
mec-auth/mec-auth-server/src/main/java/com/ym/mec/auth/service/impl/SysUserDeviceServiceImpl.java

@@ -1,9 +1,13 @@
 package com.ym.mec.auth.service.impl;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.stream.Collectors;
 
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.authentication.BadCredentialsException;
 import org.springframework.stereotype.Service;
 
 import com.ym.mec.auth.api.entity.SysUserDevice;
@@ -34,25 +38,53 @@ public class SysUserDeviceServiceImpl extends BaseServiceImpl<Integer, SysUserDe
 	}
 
 	@Override
-	public boolean bindDevice(String clientId, Integer userId, String deviceNum) throws Exception {
-		//查询设备号是否已存在
-		List<SysUserDevice> sysUserDeviceList = sysUserDeviceDao.queryByDeviceNum(clientId, deviceNum);
-		
+	public boolean bindDevice(String clientId, Integer userId, String deviceNum) {
+		// 查询设备号是否已存在
+		List<SysUserDevice> sysUserDeviceList = sysUserDeviceDao.queryByDeviceNum(null, deviceNum);
+
 		if (sysUserDeviceList != null && sysUserDeviceList.size() > 0) {
 			if (sysUserDeviceList.stream().filter(sud -> sud.getUserId().equals(userId)).count() > 0) {
 				return true;
-			} else {
-				throw new Exception("当前设备已绑定账号,请更换设备");
+			}
+
+			if (!StringUtils.equals(clientId, "STUDENT")) {
+				if (sysUserDeviceList.stream().filter(sud -> !StringUtils.equalsIgnoreCase(sud.getClientId(), "STUDENT")).count() > 0) {
+					throw new BadCredentialsException("当前设备已绑定账号,请更换设备");
+				}
+
+				SysUserDevice sysUserDevice = new SysUserDevice();
+				sysUserDevice.setUserId(userId);
+				sysUserDevice.setDeviceNum(deviceNum);
+				sysUserDevice.setBindTime(new Date());
+				sysUserDevice.setClientId(clientId);
+				sysUserDeviceDao.insert(sysUserDevice);
 			}
 		}
 		
-		SysUserDevice sysUserDevice = new SysUserDevice();
-		sysUserDevice.setUserId(userId);
-		sysUserDevice.setDeviceNum(deviceNum);
-		sysUserDevice.setBindTime(new Date());
-		sysUserDevice.setClientId(clientId);
-		sysUserDeviceDao.insert(sysUserDevice);
-		
+		if (StringUtils.equals(clientId, "STUDENT")) {
+			// 检查学生是否绑定了多个设备号
+			List<SysUserDevice> studentDeviceList = queryByUserId(clientId, userId);
+
+			if (studentDeviceList == null) {
+				studentDeviceList = new ArrayList<SysUserDevice>();
+			}
+
+			List<String> deviceList = studentDeviceList.stream().map(t -> t.getDeviceNum()).collect(Collectors.toList());
+
+			if (!deviceList.contains(deviceNum)) {
+				if (deviceList.size() >= 5) {
+					throw new BadCredentialsException("当前账号绑定设备过多,请联系主教老师");
+				}
+
+				SysUserDevice sysUserDevice = new SysUserDevice();
+				sysUserDevice.setUserId(userId);
+				sysUserDevice.setDeviceNum(deviceNum);
+				sysUserDevice.setBindTime(new Date());
+				sysUserDevice.setClientId(clientId);
+				sysUserDeviceDao.insert(sysUserDevice);
+			}
+		}
+
 		return true;
 	}