Browse Source

增加根据机构查询用户可追加用户名称及登录账号为查询条件的方法

main
likunming 8 months ago
parent
commit
1c52b2a4c6
  1. 16
      io.sc.platform.system/src/main/java/io/sc/platform/system/user/controller/UserWebController.java
  2. 9
      io.sc.platform.system/src/main/java/io/sc/platform/system/user/service/UserService.java
  3. 49
      io.sc.platform.system/src/main/java/io/sc/platform/system/user/service/impl/UserServiceImpl.java

16
io.sc.platform.system/src/main/java/io/sc/platform/system/user/controller/UserWebController.java

@ -258,6 +258,22 @@ public class UserWebController extends RestCrudController<UserVo, UserEntity, St
return QueryResult.emptyPage();
}
/**
* 根据机构查询包含的用户可追加登录号及用户名为查询条件
* @param orgId 机构ID
* @param parameter 查询参数
* @return 机构包含的用户
* @throws Exception 违例
*/
@GetMapping("queryUsersByOrgAndQueryParameter")
public Page<UserVo> queryUsersByOrgAndQueryParameter(@RequestParam(name="orgId",required=false) String orgId,QueryParameter parameter) throws Exception{
if(StringUtils.hasText(orgId)){
Page<UserEntity> result =service.queryUsersByOrgAndQueryParameter(orgId,parameter);
return EntityVoUtil.toVo(result);
}
return QueryResult.emptyPage();
}
/**
* 给用户添加角色
* @param wrapper 一对多关系(ID关系)封装器, one: 代表用户登录名, many: 代表角色名称集合

9
io.sc.platform.system/src/main/java/io/sc/platform/system/user/service/UserService.java

@ -131,6 +131,15 @@ public interface UserService extends DaoService<UserEntity, String, UserReposito
*/
public Page<UserEntity> queryOtherUsersByCorporation(String corporationCode,QueryParameter queryParameter) throws Exception;
/**
* 根据机构查询包含的用户可追加登录号及用户名为查询条件
* @param orgId 机构ID
* @param queryParameter 查询参数
* @return 机构包含的用户
* @throws Exception 违例
*/
public Page<UserEntity> queryUsersByOrgAndQueryParameter(String orgId,QueryParameter queryParameter) throws Exception;
/**
* 给用户添加角色
* @param userId 用户ID

49
io.sc.platform.system/src/main/java/io/sc/platform/system/user/service/impl/UserServiceImpl.java

@ -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 {

Loading…
Cancel
Save