diff --git a/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/constant/RoleConstants.java b/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/constant/RoleConstants.java index 413b074..eebf874 100644 --- a/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/constant/RoleConstants.java +++ b/common-ruoyi/ruoyi-common/src/main/java/com/ruoyi/common/constant/RoleConstants.java @@ -14,5 +14,7 @@ public class RoleConstants { public static final String MCH = "mch"; // 运维人员 public static final String STAFF = "staff"; + // APP 管理员 + public static final String APP_ADMIN = "app_admin"; } diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/app/service/impl/AppServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/app/service/impl/AppServiceImpl.java index cc67381..04b8606 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/app/service/impl/AppServiceImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/app/service/impl/AppServiceImpl.java @@ -7,9 +7,14 @@ import com.ruoyi.bst.app.domain.vo.AppAllVO; import com.ruoyi.bst.app.mapper.AppMapper; import com.ruoyi.bst.app.service.AppService; import com.ruoyi.common.constant.CacheConstants; +import com.ruoyi.common.constant.RoleConstants; +import com.ruoyi.common.core.domain.entity.Role; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.collection.CollectionUtils; +import com.ruoyi.system.role.mapper.RoleMapper; +import com.ruoyi.system.role.service.RoleService; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.support.TransactionTemplate; @@ -24,8 +29,8 @@ import java.util.List; * @date 2025-01-08 */ @Service -public class AppServiceImpl implements AppService -{ +@Slf4j +public class AppServiceImpl implements AppService { @Autowired private AppMapper appMapper; @@ -34,6 +39,12 @@ public class AppServiceImpl implements AppService @Autowired private TransactionTemplate transactionTemplate; + @Autowired + private RoleService roleService; + @Autowired + private RoleMapper roleMapper; + @Autowired + private AppService appService; /** * 查询APP信息 @@ -42,8 +53,7 @@ public class AppServiceImpl implements AppService * @return APP信息 */ @Override - public AppVO selectAppById(Long id) - { + public AppVO selectAppById(Long id) { return appMapper.selectAppById(id); } @@ -54,8 +64,7 @@ public class AppServiceImpl implements AppService * @return APP信息 */ @Override - public List selectAppList(AppQuery app) - { + public List selectAppList(AppQuery app) { return appMapper.selectAppList(app); } @@ -66,12 +75,14 @@ public class AppServiceImpl implements AppService * @return 结果 */ @Override - public int insertApp(App app) - { + public int insertApp(App app) { Integer result = transactionTemplate.execute(status -> { app.setCreateTime(DateUtils.getNowDate()); int insert = appMapper.insertApp(app); if (insert > 0) { + // 尝试修改用户角色 + this.tryUpdateUserRole(app); + clearCache(); } return insert; @@ -79,6 +90,19 @@ public class AppServiceImpl implements AppService return result; } + /** + * 尝试修改用户角色 + * + * @param app + */ + private void tryUpdateUserRole(App app) { + try { + roleService.insertAuthUsers(RoleConstants.APP_ADMIN, app.getOwnerIds()); + } catch (Exception e) { + log.warn("尝试修改ID为{}的用户角色失败:{}", app.getOwnerIds(), e); + } + } + /** * 修改APP信息 * @@ -86,11 +110,20 @@ public class AppServiceImpl implements AppService * @return 结果 */ @Override - public int updateApp(App app) - { + public int updateApp(App app) { Integer result = transactionTemplate.execute(status -> { + + // 清空当前APP管理员角色信息 + Role role = roleMapper.selectRoleByKey(RoleConstants.APP_ADMIN); + AppVO vo = appService.selectAppById(app.getId()); + roleService.deleteAuthUsers(role.getRoleId(), vo.getOwnerIds()); + + // 更新APP信息 int update = appMapper.updateApp(app); + if (update > 0) { + // 尝试修改用户角色 + this.tryUpdateUserRole(app); clearCache(); } return update; @@ -105,8 +138,7 @@ public class AppServiceImpl implements AppService * @return 结果 */ @Override - public int deleteAppByIds(Long[] ids) - { + public int deleteAppByIds(Long[] ids) { Integer result = transactionTemplate.execute(status -> { int delete = appMapper.deleteAppByIds(ids); if (delete > 0) { @@ -124,8 +156,7 @@ public class AppServiceImpl implements AppService * @return 结果 */ @Override - public int deleteAppById(Long id) - { + public int deleteAppById(Long id) { Integer result = transactionTemplate.execute(status -> { int delete = appMapper.deleteAppById(id); if (delete > 0) { diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/storeStaff/service/impl/StoreStaffServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/storeStaff/service/impl/StoreStaffServiceImpl.java index 84adc82..17b020b 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/storeStaff/service/impl/StoreStaffServiceImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/storeStaff/service/impl/StoreStaffServiceImpl.java @@ -27,8 +27,7 @@ import org.springframework.transaction.support.TransactionTemplate; */ @Service @Slf4j -public class StoreStaffServiceImpl implements StoreStaffService -{ +public class StoreStaffServiceImpl implements StoreStaffService { @Autowired private StoreStaffMapper storeStaffMapper; @Autowired @@ -45,8 +44,7 @@ public class StoreStaffServiceImpl implements StoreStaffService * @return 员工运维 */ @Override - public StoreStaffVO selectStoreStaffById(Long id,boolean scope) - { + public StoreStaffVO selectStoreStaffById(Long id, boolean scope) { if (id == null) { return null; } @@ -70,8 +68,7 @@ public class StoreStaffServiceImpl implements StoreStaffService * @return 员工运维 */ @Override - public List selectStoreStaffList(StoreStaffQuery storeStaff) - { + public List selectStoreStaffList(StoreStaffQuery storeStaff) { return storeStaffMapper.selectStoreStaffList(storeStaff); } @@ -82,8 +79,7 @@ public class StoreStaffServiceImpl implements StoreStaffService * @return 结果 */ @Override - public int insertStoreStaff(StoreStaff storeStaff) - { + public int insertStoreStaff(StoreStaff storeStaff) { storeStaff.setCreateTime(DateUtils.getNowDate()); Integer result = transactionTemplate.execute(status -> { int rows = storeStaffMapper.insertStoreStaff(storeStaff); @@ -93,7 +89,7 @@ public class StoreStaffServiceImpl implements StoreStaffService this.tryUpdateUserRole(storeStaff); // 后校验 - // storeStaffValidator.afterCheck(storeStaff.getId()); + storeStaffValidator.afterCheck(storeStaff.getId()); } return rows; @@ -122,9 +118,22 @@ public class StoreStaffServiceImpl implements StoreStaffService * @return 结果 */ @Override - public int updateStoreStaff(StoreStaff storeStaff) - { - return storeStaffMapper.updateStoreStaff(storeStaff); + public int updateStoreStaff(StoreStaff storeStaff) { + Integer result = transactionTemplate.execute(status -> { + int rows = storeStaffMapper.updateStoreStaff(storeStaff); + + if (rows > 0) { + // 尝试修改用户角色 + this.tryUpdateUserRole(storeStaff); + + // 后校验 + storeStaffValidator.afterCheck(storeStaff.getId()); + } + + return rows; + }); + + return result == null ? 0 : result; } /** @@ -134,8 +143,7 @@ public class StoreStaffServiceImpl implements StoreStaffService * @return 结果 */ @Override - public int deleteStoreStaffByIds(Long[] ids) - { + public int deleteStoreStaffByIds(Long[] ids) { return storeStaffMapper.deleteStoreStaffByIds(ids); } @@ -146,8 +154,7 @@ public class StoreStaffServiceImpl implements StoreStaffService * @return 结果 */ @Override - public int deleteStoreStaffById(Long id) - { + public int deleteStoreStaffById(Long id) { return storeStaffMapper.deleteStoreStaffById(id); } } diff --git a/ruoyi-service/src/main/java/com/ruoyi/bst/storeStaff/service/impl/StoreStaffValidatorImpl.java b/ruoyi-service/src/main/java/com/ruoyi/bst/storeStaff/service/impl/StoreStaffValidatorImpl.java index 2885fda..c4165b2 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/bst/storeStaff/service/impl/StoreStaffValidatorImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/bst/storeStaff/service/impl/StoreStaffValidatorImpl.java @@ -40,7 +40,7 @@ public class StoreStaffValidatorImpl implements StoreStaffValidator { StoreStaffVO vo = storeStaffMapper.selectStoreStaffById(id); ServiceUtil.assertion(vo == null, "ID为%s的运维员工数据不存在", id); - // 校验用户是否重复绑定到一个运营区上 + // 校验用户是否重复绑定到一个店铺上 this.checkRepeat(vo); } @@ -53,7 +53,7 @@ public class StoreStaffValidatorImpl implements StoreStaffValidator { query.setStoreId(vo.getStoreId()); query.setExcludeId(vo.getId()); int count = storeStaffMapper.selectCount(query); - ServiceUtil.assertion(count > 0, "用户%s已是%s的运维人员,请勿重复操作", vo.getUserId(), vo.getStoreId()); + ServiceUtil.assertion(count > 0, "用户%s已是ID为%s的店铺运维人员,请勿重复操作", vo.getUserId(), vo.getStoreId()); } private boolean canView(List ids) { diff --git a/ruoyi-service/src/main/java/com/ruoyi/system/role/service/RoleService.java b/ruoyi-service/src/main/java/com/ruoyi/system/role/service/RoleService.java index 3d038c1..b4c1d22 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/system/role/service/RoleService.java +++ b/ruoyi-service/src/main/java/com/ruoyi/system/role/service/RoleService.java @@ -161,7 +161,7 @@ public interface RoleService * @param userIds 需要取消授权的用户数据ID * @return 结果 */ - public int deleteAuthUsers(Long roleId, Long[] userIds); + public int deleteAuthUsers(Long roleId,List userIds); /** * 批量选择授权用户角色 diff --git a/ruoyi-service/src/main/java/com/ruoyi/system/role/service/impl/RoleServiceImpl.java b/ruoyi-service/src/main/java/com/ruoyi/system/role/service/impl/RoleServiceImpl.java index 0f00281..ec23169 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/system/role/service/impl/RoleServiceImpl.java +++ b/ruoyi-service/src/main/java/com/ruoyi/system/role/service/impl/RoleServiceImpl.java @@ -397,7 +397,7 @@ public class RoleServiceImpl implements RoleService * @return 结果 */ @Override - public int deleteAuthUsers(Long roleId, Long[] userIds) + public int deleteAuthUsers(Long roleId, List userIds) { return userRoleMapper.deleteUserRoleInfos(roleId, userIds); } diff --git a/ruoyi-service/src/main/java/com/ruoyi/system/userRole/mapper/UserRoleMapper.java b/ruoyi-service/src/main/java/com/ruoyi/system/userRole/mapper/UserRoleMapper.java index 4aab398..28e27b1 100644 --- a/ruoyi-service/src/main/java/com/ruoyi/system/userRole/mapper/UserRoleMapper.java +++ b/ruoyi-service/src/main/java/com/ruoyi/system/userRole/mapper/UserRoleMapper.java @@ -58,5 +58,5 @@ public interface UserRoleMapper * @param userIds 需要删除的用户数据ID * @return 结果 */ - public int deleteUserRoleInfos(@Param("roleId") Long roleId, @Param("userIds") Long[] userIds); + public int deleteUserRoleInfos(@Param("roleId") Long roleId, @Param("userIds") List userIds); } diff --git a/ruoyi-web/src/main/java/com/ruoyi/web/system/SysRoleController.java b/ruoyi-web/src/main/java/com/ruoyi/web/system/SysRoleController.java index 14cc437..633d9f5 100644 --- a/ruoyi-web/src/main/java/com/ruoyi/web/system/SysRoleController.java +++ b/ruoyi-web/src/main/java/com/ruoyi/web/system/SysRoleController.java @@ -234,7 +234,7 @@ public class SysRoleController extends BaseController @PreAuthorize("@ss.hasPermi('system:role:edit')") @Log(title = "角色管理", businessType = BusinessType.GRANT) @PutMapping("/authUser/cancelAll") - public AjaxResult cancelAuthUserAll(Long roleId, Long[] userIds) + public AjaxResult cancelAuthUserAll(Long roleId, List userIds) { return toAjax(roleService.deleteAuthUsers(roleId, userIds)); }