| 
					
				 | 
			
			
				@@ -1,7 +1,15 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.ym.mec.auth.service.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.Date; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.apache.commons.lang3.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.beans.factory.annotation.Value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.auth.api.dto.SysUserInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.ym.mec.auth.api.entity.LoginEntity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.auth.api.entity.SysUser; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.auth.api.enums.YesOrNoEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.auth.dal.dao.SysUserDao; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -16,18 +24,6 @@ import com.ym.mec.common.service.IdGeneratorService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.common.service.impl.BaseServiceImpl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.im.ImFeignService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.ym.mec.im.WebFeignService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.apache.commons.lang3.StringUtils; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.beans.factory.annotation.Autowired; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.beans.factory.annotation.Value; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.security.authentication.BadCredentialsException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.security.authentication.LockedException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.security.core.Authentication; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.security.core.userdetails.UsernameNotFoundException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.stereotype.Service; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import org.springframework.transaction.annotation.Transactional; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.Date; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import java.util.List; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 @Service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implements SysUserService { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -49,8 +45,6 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private IdGeneratorService smsCodeService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Value("${message.autoRegister}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	private boolean autoRegister; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Value("${auth.sysconfig.tenantId}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	private Integer lesseeOrganId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -155,59 +149,33 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public SysUserInfo initUser(String phone, String clientId,String isRegister,String isLessee) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if("register".equals(isRegister)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			throw new UsernameNotFoundException("404.9"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if(StringUtils.isNotEmpty(isLessee) || autoRegister){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			if(StringUtils.isNotEmpty(isLessee) && StringUtils.equalsIgnoreCase(clientId,"TEACHER")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				SysUser sysUser = new SysUser(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				sysUser.setPhone(phone); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				sysUser.setUserType("TEACHER"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				sysUserDao.insert(sysUser); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				//添加用户现金账户 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				imFeignService.register(new ImUserModel(sysUser.getId().toString(),phone,null)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				userFeignService.createCashAccount(sysUser.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				//sysTenantAccount 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				sysUserDao.insertSysTenantAccount(sysUser.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				//创建teacher表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				sysUserDao.insertTeacher(sysUser.getId(),lesseeOrganId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				return queryUserInfoByPhone(phone); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			}else if(StringUtils.isNotEmpty(isLessee) && StringUtils.equalsIgnoreCase(clientId,"STUDENT")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				SysUser sysUser = new SysUser(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				sysUser.setPhone(phone); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				sysUser.setUserType("STUDENT"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				sysUser.setOrganId(lesseeOrganId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				sysUserDao.insert(sysUser); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				sysUserService.saveStudent(sysUser.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				//添加用户现金账户 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				imFeignService.register(new ImUserModel(sysUser.getId().toString(),phone,null)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				userFeignService.createCashAccount(sysUser.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-				return queryUserInfoByPhone(phone); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public SysUserInfo initUser(String phone, String clientId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if(StringUtils.equalsIgnoreCase(clientId,"TEACHER")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			SysUser sysUser = new SysUser(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sysUser.setPhone(phone); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sysUser.setUserType("TEACHER"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sysUserDao.insert(sysUser); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//添加用户现金账户 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			imFeignService.register(new ImUserModel(sysUser.getId().toString(),phone,null)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			userFeignService.createCashAccount(sysUser.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//sysTenantAccount 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sysUserDao.insertSysTenantAccount(sysUser.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//创建teacher表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sysUserDao.insertTeacher(sysUser.getId(),lesseeOrganId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return queryUserInfoByPhone(phone); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}else if(StringUtils.equalsIgnoreCase(clientId,"STUDENT")){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			SysUser sysUser = new SysUser(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sysUser.setPhone(phone); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sysUser.setUserType("STUDENT"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sysUser.setOrganId(lesseeOrganId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sysUserDao.insert(sysUser); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			sysUserService.saveStudent(sysUser.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			//添加用户现金账户 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			imFeignService.register(new ImUserModel(sysUser.getId().toString(),phone,null)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			userFeignService.createCashAccount(sysUser.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			return queryUserInfoByPhone(phone); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		throw new UsernameNotFoundException("404.9"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	@Transactional(rollbackFor = Exception.class) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	public void retrieveUser(String phone, Authentication authentication) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		LoginEntity loginEntity = (LoginEntity) authentication.getCredentials(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		SysUserInfo userInfo = sysUserService.queryUserInfoByPhone(loginEntity.getPhone()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (userInfo == null) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			userInfo = sysUserService.initUser(loginEntity.getPhone(),loginEntity.getClientId(),loginEntity.getIsRegister(),loginEntity.getIsLessee()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		}else if(StringUtils.isNotEmpty(loginEntity.getIsLessee())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			throw new LockedException("用户已存在"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if("EDUCATION".equals(loginEntity.getClientId())){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			loginEntity.setClientId("SYSTEM"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if (!userInfo.getSysUser().getUserType().contains(loginEntity.getClientId())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			throw new LockedException("用户不存在,请联系教务老师"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-//			 验证码验证 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		boolean b = smsCodeService.verifyValidCode(loginEntity.getPhone(), loginEntity.getSmsCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		if(!b) throw new BadCredentialsException("验证码校验失败"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	@Override 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -221,4 +189,14 @@ public class SysUserServiceImpl extends BaseServiceImpl<Integer, SysUser> implem 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		sysUserDao.saveStudent(userId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public void saveTeacher(Integer userId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		sysUserDao.insertTeacher(userId, lesseeOrganId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	@Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	public Integer getLesseeOrganId() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		return lesseeOrganId; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |