forked from github/cool-admin-java
feat: 组织列表增加成员数列,成员管理支持按组织名筛选和昵称跳转用户列表
- AppOrgEntity 添加 memberCount 虚拟字段(@Column(ignore)) - AdminAppOrgController page查询通过transformValue实时计算成员数 - AppOrgUserService/Impl 新增 getMemberList(orgId, orgName, page, size) 支持按组织名模糊筛选 - AdminAppOrgUserController memberList 接口新增 orgName 参数
This commit is contained in:
@@ -5,7 +5,10 @@ import com.cool.core.annotation.CoolRestController;
|
||||
import com.cool.core.base.BaseController;
|
||||
import com.cool.core.request.R;
|
||||
import com.cool.modules.org.entity.AppOrgEntity;
|
||||
import com.cool.modules.org.entity.AppOrgUserEntity;
|
||||
import com.cool.modules.org.service.AppOrgService;
|
||||
import com.cool.modules.org.service.AppOrgUserService;
|
||||
import com.mybatisflex.core.query.QueryWrapper;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
@@ -20,10 +23,22 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||
public class AdminAppOrgController extends BaseController<AppOrgService, AppOrgEntity> {
|
||||
|
||||
private final AppOrgService appOrgService;
|
||||
private final AppOrgUserService appOrgUserService;
|
||||
|
||||
@Override
|
||||
protected void init(HttpServletRequest request, JSONObject requestParams) {
|
||||
setPageOption(createOp());
|
||||
setPageOption(
|
||||
createOp().transformValue(obj -> {
|
||||
if (obj instanceof AppOrgEntity entity) {
|
||||
long count = appOrgUserService.count(
|
||||
QueryWrapper.create()
|
||||
.eq(AppOrgUserEntity::getOrgId, entity.getId())
|
||||
.eq(AppOrgUserEntity::getStatus, 1)
|
||||
);
|
||||
entity.setMemberCount(count);
|
||||
}
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
@Operation(summary = "创建组织")
|
||||
|
||||
@@ -32,9 +32,10 @@ public class AdminAppOrgUserController extends BaseController<AppOrgUserService,
|
||||
@PostMapping("/memberList")
|
||||
public R memberList(@RequestAttribute JSONObject requestParams) {
|
||||
Long orgId = requestParams.getLong("orgId");
|
||||
String orgName = requestParams.getStr("orgName");
|
||||
Integer page = requestParams.getInt("page");
|
||||
Integer size = requestParams.getInt("size");
|
||||
Map<String, Object> result = appOrgUserService.getMemberList(orgId, page, size);
|
||||
Map<String, Object> result = appOrgUserService.getMemberList(orgId, orgName, page, size);
|
||||
return R.ok(result);
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.cool.modules.org.entity;
|
||||
|
||||
import com.cool.core.base.BaseEntity;
|
||||
import com.mybatisflex.annotation.Table;
|
||||
import com.mybatisflex.annotation.Column;
|
||||
import com.cool.core.annotation.ColumnDefine;
|
||||
import com.tangzc.mybatisflex.autotable.annotation.UniIndex;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
@@ -41,4 +42,7 @@ public class AppOrgEntity extends BaseEntity<AppOrgEntity> {
|
||||
|
||||
@ColumnDefine(comment = "组织级扩展配置", type = "text")
|
||||
private String config;
|
||||
|
||||
@Column(ignore = true)
|
||||
private Long memberCount;
|
||||
}
|
||||
|
||||
@@ -19,6 +19,8 @@ public interface AppOrgUserService extends BaseService<AppOrgUserEntity> {
|
||||
|
||||
Map<String, Object> getMemberList(Long orgId, Integer page, Integer size);
|
||||
|
||||
Map<String, Object> getMemberList(Long orgId, String orgName, Integer page, Integer size);
|
||||
|
||||
boolean isOrgAdmin(Long userId, Long orgId);
|
||||
|
||||
boolean isOrgMember(Long userId, Long orgId);
|
||||
|
||||
@@ -136,14 +136,34 @@ public class AppOrgUserServiceImpl extends BaseServiceImpl<AppOrgUserMapper, App
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getMemberList(Long orgId, Integer page, Integer size) {
|
||||
return getMemberList(orgId, null, page, size);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getMemberList(Long orgId, String orgName, Integer page, Integer size) {
|
||||
int pageNum = (page != null && page > 0) ? page : 1;
|
||||
int pageSize = (size != null && size > 0) ? size : 10;
|
||||
|
||||
QueryWrapper qw = QueryWrapper.create()
|
||||
.eq(AppOrgUserEntity::getStatus, 1);
|
||||
|
||||
if (orgId != null) {
|
||||
qw.eq(AppOrgUserEntity::getOrgId, orgId);
|
||||
} else if (StrUtil.isNotBlank(orgName)) {
|
||||
List<AppOrgEntity> orgs = appOrgMapper.selectListByQuery(
|
||||
QueryWrapper.create().like(AppOrgEntity::getName, orgName)
|
||||
);
|
||||
if (!orgs.isEmpty()) {
|
||||
List<Long> orgIds = orgs.stream().map(AppOrgEntity::getId).toList();
|
||||
qw.in(AppOrgUserEntity::getOrgId, orgIds);
|
||||
} else {
|
||||
Map<String, Object> result = new HashMap<>();
|
||||
result.put("list", new ArrayList<>());
|
||||
result.put("pagination", Map.of("total", 0, "page", pageNum, "size", pageSize));
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
qw.orderBy(AppOrgUserEntity::getJoinTime, false);
|
||||
|
||||
com.mybatisflex.core.paginate.Page<AppOrgUserEntity> pg = page(
|
||||
|
||||
Reference in New Issue
Block a user