From ddd5c2a4e25914e01cb8e5b596a1865c27a5a3bc Mon Sep 17 00:00:00 2001 From: dzl <863620989@qq.com> Date: Fri, 9 May 2025 16:36:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=A7=92=E8=89=B2=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PermissionsController.java | 1 + .../cdzy/user/controller/RolesController.java | 74 ++++++++++++++++++- .../com/cdzy/user/model/dto/PageParamDto.java | 31 ++++++++ .../com/cdzy/user/model/dto/ResRolesDto.java | 39 ++++++++++ .../cdzy/user/model/entity/Permissions.java | 2 + .../com/cdzy/user/model/entity/Roles.java | 4 +- 6 files changed, 149 insertions(+), 2 deletions(-) create mode 100644 ebike-user/src/main/java/com/cdzy/user/model/dto/PageParamDto.java create mode 100644 ebike-user/src/main/java/com/cdzy/user/model/dto/ResRolesDto.java diff --git a/ebike-user/src/main/java/com/cdzy/user/controller/PermissionsController.java b/ebike-user/src/main/java/com/cdzy/user/controller/PermissionsController.java index 19ac6e87..b5d4d43e 100644 --- a/ebike-user/src/main/java/com/cdzy/user/controller/PermissionsController.java +++ b/ebike-user/src/main/java/com/cdzy/user/controller/PermissionsController.java @@ -68,6 +68,7 @@ public class PermissionsController { * 查询所有。 * * @return 所有数据 + * @return 所有数据 */ @GetMapping("list") public JsonResult list() { diff --git a/ebike-user/src/main/java/com/cdzy/user/controller/RolesController.java b/ebike-user/src/main/java/com/cdzy/user/controller/RolesController.java index e84053d6..4794dd9c 100644 --- a/ebike-user/src/main/java/com/cdzy/user/controller/RolesController.java +++ b/ebike-user/src/main/java/com/cdzy/user/controller/RolesController.java @@ -1,19 +1,32 @@ package com.cdzy.user.controller; +import cn.dev33.satoken.stp.StpUtil; import com.cdzy.common.model.JsonResult; import com.cdzy.common.model.PageParam; +import com.cdzy.common.model.StaffDto; +import com.cdzy.user.model.dto.PageParamDto; +import com.cdzy.user.model.dto.ResRolesDto; import com.cdzy.user.model.entity.Roles; +import com.cdzy.user.service.PermissionsService; import com.cdzy.user.service.RolesService; +import com.cdzy.user.service.StaffService; import com.mybatisflex.core.paginate.Page; +import com.mybatisflex.core.query.QueryColumn; +import com.mybatisflex.core.query.QueryMethods; import com.mybatisflex.core.query.QueryWrapper; import jakarta.annotation.Resource; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; +import static com.cdzy.user.model.entity.table.OrganizationsTableDef.ORGANIZATIONS; +import static com.cdzy.user.model.entity.table.PermissionsTableDef.PERMISSIONS; +import static com.cdzy.user.model.entity.table.RolePermissionsTableDef.ROLE_PERMISSIONS; import static com.cdzy.user.model.entity.table.RolesTableDef.ROLES; import static com.cdzy.user.model.entity.table.StaffRolesTableDef.STAFF_ROLES; +import static com.cdzy.user.model.entity.table.StaffTableDef.STAFF; /** * 角色控制层。 @@ -28,6 +41,11 @@ public class RolesController { @Resource private RolesService rolesService; + @Autowired + private PermissionsService permissionsService; + @Resource + private StaffService staffService; + /** * 添加。 * @@ -93,7 +111,7 @@ public class RolesController { * @param pageParam 分页对象 * @return 分页对象 */ - @GetMapping("page") + @PostMapping("page") public JsonResult page(@Validated PageParam pageParam) { Page page = rolesService.page(pageParam.getPage()); return JsonResult.success(page); @@ -114,4 +132,58 @@ public class RolesController { return JsonResult.success(list); } + /** + * 分页查询角色列表 + * + * @param pageParam + * @return + */ + @PostMapping("pageQueryRoles") + public JsonResult pageQueryRoles(@RequestBody @Validated PageParamDto pageParam) { + + String tokenValue = StpUtil.getTokenValue(); + Object loginId = StpUtil.getLoginIdByToken(tokenValue); + QueryWrapper queryStaff = QueryWrapper.create() + .where(STAFF.STAFF_ID.eq(loginId)); + StaffDto staff = staffService.getOneAs(queryStaff, StaffDto.class); + + QueryWrapper queryWrapper = QueryWrapper.create() + .from(STAFF) + .select(STAFF.STAFF_ID, ROLES.ALL_COLUMNS, ORGANIZATIONS.ORG_NAME) + .innerJoin(STAFF_ROLES).on(STAFF_ROLES.STAFF_ID.eq(STAFF.STAFF_ID)) + .innerJoin(ORGANIZATIONS).on(STAFF.ORG_ID.eq(ORGANIZATIONS.ORG_ID)) + .innerJoin(ROLES).on(STAFF_ROLES.ROLE_ID.eq(ROLES.ROLE_ID)) + .where(STAFF.ORG_ID.eq(staff.getOrgId())); + + QueryWrapper countQuery = QueryWrapper.create() + .select(QueryMethods.count(STAFF.STAFF_ID.getName()).as("staff_count")) + .select(ROLES.ROLE_NAME.getName(), ROLES.ROLE_ID.getName(), + ROLES.ROLE_DESCRIPTION.getName(), ROLES.ROLE_CODE.getName(), + ORGANIZATIONS.ORG_NAME.getName()) + .groupBy(ORGANIZATIONS.ORG_NAME, ROLES.ROLE_NAME) + .from(queryWrapper).as("a"); + + Page page = Page.of(pageParam.getPage().getPageNumber(), pageParam.getPageSize()); + Page resRolesDtoPage = rolesService.pageAs(page, countQuery, ResRolesDto.class); + List records = resRolesDtoPage.getRecords(); + //统计pc权限数量和小程序权限数量 + for (ResRolesDto record : records) { + QueryWrapper caseQuery = QueryWrapper.create() + .select(QueryMethods.sum(QueryMethods.case_() + .when(PERMISSIONS.PERM_TYPE.eq(1)).then(1) + .else_(0).end()).as("web_count"), + QueryMethods.sum(QueryMethods.case_() + .when(PERMISSIONS.PERM_TYPE.eq(2)).then(1) + .else_(0).end()).as("applet_count")) + .innerJoin(ROLE_PERMISSIONS).on(PERMISSIONS.PERM_ID.eq(ROLE_PERMISSIONS.PERM_ID)) + .where(ROLE_PERMISSIONS.ROLE_ID.eq(record.getRoleId())) + .where(PERMISSIONS.PERM_TYPE.ne("0")); + ResRolesDto oneAs = permissionsService.getOneAs(caseQuery, ResRolesDto.class); + if (oneAs == null) continue; + record.setWebCount(oneAs.getWebCount()); + record.setAppletCount(oneAs.getAppletCount()); + } + return JsonResult.success(resRolesDtoPage); + } + } diff --git a/ebike-user/src/main/java/com/cdzy/user/model/dto/PageParamDto.java b/ebike-user/src/main/java/com/cdzy/user/model/dto/PageParamDto.java new file mode 100644 index 00000000..a39963b4 --- /dev/null +++ b/ebike-user/src/main/java/com/cdzy/user/model/dto/PageParamDto.java @@ -0,0 +1,31 @@ +package com.cdzy.user.model.dto; + +import com.mybatisflex.core.paginate.Page; +import jakarta.validation.constraints.Max; +import jakarta.validation.constraints.Min; +import lombok.Data; + +/** + * @author attiya + * @since 2025-03-14 + */ +@Data +public class PageParamDto { + @Min(value = 1, message = "页码必须大于0") + private Integer pageNum; // 默认第1页 + + @Min(value = 1, message = "每页数量必须大于0") + @Max(value = 100, message = "每页数量不能超过100") + private Integer pageSize; + + private String roleName; + + public Page getPage() { + if (pageNum == null || pageSize == null) { + pageNum = 1; + pageSize = 10; + } + return new Page<>(pageNum, pageSize); + } + +} diff --git a/ebike-user/src/main/java/com/cdzy/user/model/dto/ResRolesDto.java b/ebike-user/src/main/java/com/cdzy/user/model/dto/ResRolesDto.java new file mode 100644 index 00000000..5837a943 --- /dev/null +++ b/ebike-user/src/main/java/com/cdzy/user/model/dto/ResRolesDto.java @@ -0,0 +1,39 @@ +package com.cdzy.user.model.dto; + +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.Table; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serial; +import java.io.Serializable; + +/** + * 实体类。 + * + * @author attiya + * @since 2025-03-14 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("ebike_roles") +public class ResRolesDto implements Serializable { + + private Long roleId; + + private String roleName; + + private String roleDescription; + + private String orgName; + + private Integer staffCount; + + private Integer webCount; + + private Integer appletCount; +} diff --git a/ebike-user/src/main/java/com/cdzy/user/model/entity/Permissions.java b/ebike-user/src/main/java/com/cdzy/user/model/entity/Permissions.java index 0ebb26fa..95616340 100644 --- a/ebike-user/src/main/java/com/cdzy/user/model/entity/Permissions.java +++ b/ebike-user/src/main/java/com/cdzy/user/model/entity/Permissions.java @@ -39,4 +39,6 @@ public class Permissions implements Serializable { private Integer type; + private Integer permType; + } diff --git a/ebike-user/src/main/java/com/cdzy/user/model/entity/Roles.java b/ebike-user/src/main/java/com/cdzy/user/model/entity/Roles.java index 50ed0589..2e1e6a11 100644 --- a/ebike-user/src/main/java/com/cdzy/user/model/entity/Roles.java +++ b/ebike-user/src/main/java/com/cdzy/user/model/entity/Roles.java @@ -11,7 +11,7 @@ import java.io.Serial; import java.io.Serializable; /** - * 实体类。 + * 实体类。 * * @author attiya * @since 2025-03-14 @@ -39,4 +39,6 @@ public class Roles implements Serializable { private Long createdStaff; + private String roleDescription; + }