For agentic workers: REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: Keep partner user-list data limited to users who charged at the partner's sites while allowing all user-management actions strictly according to configured permission keys.
Architecture: Retain PartnerAppUserAccessService.getVisibleUserIdsForCurrentPartner() for list filtering and assertUserVisible() for object-level authorization. Remove the blanket partner read-only rule, apply visibility checks to every mutation targeting existing users, and remove frontend isPartner overrides so Access is the sole button-control mechanism.
Tech Stack: Java 8, Spring Boot, MyBatis-Plus, React, Umi Access, JUnit 5, Mockito
Files:
- Modify: ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/service/PartnerAppUserAccessService.java
- Modify: ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java
- Test: ruoyi-service/ruoyi-account/src/test/java/com/ruoyi/account/service/PartnerAppUserAccessServiceTest.java
Interfaces:
- Consumes: getVisibleUserIdsForCurrentPartner().
- Produces: assertUsersVisible(Collection<Long> userIds) for safe bulk mutations.
assertWritable().Files:
- Modify: chargingPile_management/src/pages/person/list/index.jsx
Interfaces:
- Consumes: existing Umi access keys such as /appUser/select, /appUser/update, /appUser/freeze, /appUser/del, /appUser/giftVip, and /appUser/updateCompany.
- Produces: buttons and row selection controlled only by configured permissions.
isPartner overrides around row actions, row selection, and toolbar rendering.Access permission check.