|  | @ -1,5 +1,6 @@ | 
			
		
	
		
		
			
				
					|  |  | package io.sc.platform.system.user.service.impl; |  |  | package io.sc.platform.system.user.service.impl; | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  | import com.fasterxml.jackson.databind.ObjectMapper; | 
			
		
	
		
		
			
				
					|  |  | import io.sc.platform.jdbc.util.SqlBatcher; |  |  | import io.sc.platform.jdbc.util.SqlBatcher; | 
			
		
	
		
		
			
				
					|  |  | import io.sc.platform.mvc.plugins.PluginManager; |  |  | import io.sc.platform.mvc.plugins.PluginManager; | 
			
		
	
		
		
			
				
					|  |  | import io.sc.platform.mvc.plugins.item.FrontEndRoute; |  |  | import io.sc.platform.mvc.plugins.item.FrontEndRoute; | 
			
		
	
	
		
		
			
				
					|  | @ -47,6 +48,7 @@ import java.sql.PreparedStatement; | 
			
		
	
		
		
			
				
					|  |  | import java.sql.ResultSet; |  |  | import java.sql.ResultSet; | 
			
		
	
		
		
			
				
					|  |  | import java.sql.SQLException; |  |  | import java.sql.SQLException; | 
			
		
	
		
		
			
				
					|  |  | import java.util.*; |  |  | import java.util.*; | 
			
		
	
		
		
			
				
					|  |  |  |  |  | import java.util.stream.Collectors; | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  | @Service |  |  | @Service | 
			
		
	
		
		
			
				
					|  |  | public class UserServiceImpl extends DaoServiceImpl<UserEntity, String, UserRepository> implements UserService { |  |  | public class UserServiceImpl extends DaoServiceImpl<UserEntity, String, UserRepository> implements UserService { | 
			
		
	
	
		
		
			
				
					|  | @ -60,6 +62,7 @@ public class UserServiceImpl extends DaoServiceImpl<UserEntity, String, UserRepo | 
			
		
	
		
		
			
				
					|  |  |     @Autowired private RoleService roleService; |  |  |     @Autowired private RoleService roleService; | 
			
		
	
		
		
			
				
					|  |  |     @Autowired private OrgService orgService; |  |  |     @Autowired private OrgService orgService; | 
			
		
	
		
		
			
				
					|  |  |     @Autowired private SystemParameterService systemParameterService; |  |  |     @Autowired private SystemParameterService systemParameterService; | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     @Autowired  private ObjectMapper objectMapper; | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |     @Override |  |  |     @Override | 
			
		
	
		
		
			
				
					|  |  |     public UserSession getUserSession(HttpServletRequest request) throws Exception { |  |  |     public UserSession getUserSession(HttpServletRequest request) throws Exception { | 
			
		
	
	
		
		
			
				
					|  | @ -328,6 +331,52 @@ public class UserServiceImpl extends DaoServiceImpl<UserEntity, String, UserRepo | 
			
		
	
		
		
			
				
					|  |  |         return QueryResult.emptyPage(); |  |  |         return QueryResult.emptyPage(); | 
			
		
	
		
		
			
				
					|  |  |     } |  |  |     } | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     @Override | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     public Page<UserEntity> queryUsersByOrgAndQueryParameter(String orgId, QueryParameter queryParameter) throws Exception { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         if(StringUtils.hasText(orgId)) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             Specification<UserEntity> specification = (root, query, criteriaBuilder) -> { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 Subquery<Integer> subquery =query.subquery(Integer.class); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 Join<UserEntity, OrgEntity> join = subquery.correlate(root).join("orgs"); | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 subquery.select(criteriaBuilder.literal(1)); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 subquery.where(criteriaBuilder.equal(join.get("id"), orgId)); | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 return criteriaBuilder.exists(subquery); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             }; | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             Specification<UserEntity> loginName = null; | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             Specification<UserEntity> userName = null; | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             if (StringUtils.hasText(queryParameter.getCriteria())) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 List<Map> criterias = objectMapper.readValue("["+queryParameter.getCriteria()+"]", List.class); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 List<Map> loginNameList = criterias.stream().filter((map) -> {return map.get("fieldName").equals("loginName");}).collect(Collectors.toList()); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 if (loginNameList!=null && loginNameList.size()>0) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                     Map<String, String> map = loginNameList.get(0); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                     loginName = (root, query, criteriaBuilder) -> { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                         return criteriaBuilder.like(root.get("loginName"), "%"+map.get("value")+"%"); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                     }; | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 } | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 List<Map> userNameList = criterias.stream().filter((map) -> {return map.get("fieldName").equals("userName");}).collect(Collectors.toList()); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 if (userNameList!=null && userNameList.size()>0) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                     Map<String, String> map = userNameList.get(0); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                     userName = (root, query, criteriaBuilder) -> { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                         return criteriaBuilder.like(root.get("userName"), "%"+map.get("value")+"%"); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                     }; | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 } | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             } | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             if (loginName!=null && userName!=null) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 return super.query(queryParameter,specification.and(loginName).and(userName)); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             } else if (loginName!=null) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 return super.query(queryParameter,specification.and(loginName)); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             } else if (userName!=null) { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 return super.query(queryParameter,specification.and(userName)); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             } else { | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 return super.query(queryParameter,specification); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             } | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         return QueryResult.emptyPage(); | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |     @Override |  |  |     @Override | 
			
		
	
		
		
			
				
					|  |  |     @Transactional |  |  |     @Transactional | 
			
		
	
		
		
			
				
					|  |  |     public void addRoles(String userId, Set<String> roleIds) throws Exception { |  |  |     public void addRoles(String userId, Set<String> roleIds) throws Exception { | 
			
		
	
	
		
		
			
				
					|  | 
 |