|
|
@ -1,5 +1,6 @@ |
|
|
|
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.mvc.plugins.PluginManager; |
|
|
|
import io.sc.platform.mvc.plugins.item.FrontEndRoute; |
|
|
@ -47,6 +48,7 @@ import java.sql.PreparedStatement; |
|
|
|
import java.sql.ResultSet; |
|
|
|
import java.sql.SQLException; |
|
|
|
import java.util.*; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
@Service |
|
|
|
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 OrgService orgService; |
|
|
|
@Autowired private SystemParameterService systemParameterService; |
|
|
|
@Autowired private ObjectMapper objectMapper; |
|
|
|
|
|
|
|
@Override |
|
|
|
public UserSession getUserSession(HttpServletRequest request) throws Exception { |
|
|
@ -328,6 +331,52 @@ public class UserServiceImpl extends DaoServiceImpl<UserEntity, String, UserRepo |
|
|
|
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 |
|
|
|
@Transactional |
|
|
|
public void addRoles(String userId, Set<String> roleIds) throws Exception { |
|
|
|