From af1fb4604a04295e9f8c87328e17e15a1e9fb109 Mon Sep 17 00:00:00 2001 From: tianfeng <769204422@qq.com> Date: Thu, 30 Oct 2025 17:46:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E8=B5=A0=E9=80=81=E9=81=93?= =?UTF-8?q?=E5=85=B7=E6=96=B0=E5=A2=9E=E6=9D=83=E9=99=90=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../console/inner/error/ConsoleErrorCode.java | 9 ++++++++- .../query/AccountButtonsAliasesQryExe.java | 3 +++ .../service/admin/UserAccountServiceImpl.java | 5 +++++ .../app/props/PropsGiveServiceImpl.java | 15 ++++++++++++++ .../app/service/admin/UserAccountService.java | 5 +++++ .../infra/database/rds/dao/admin/MenuDAO.java | 1 + .../rds/service/admin/MenuService.java | 5 +++++ .../service/admin/impl/MenuServiceImpl.java | 11 ++++++++++ .../src/main/resources/dao/admin/MenuDAO.xml | 20 +++++++++++++++++++ 9 files changed, 73 insertions(+), 1 deletion(-) diff --git a/rc-service/rc-inner-api/console-inner-api/src/main/java/com/red/circle/console/inner/error/ConsoleErrorCode.java b/rc-service/rc-inner-api/console-inner-api/src/main/java/com/red/circle/console/inner/error/ConsoleErrorCode.java index ac4e8ff1..6ed4e1bb 100644 --- a/rc-service/rc-inner-api/console-inner-api/src/main/java/com/red/circle/console/inner/error/ConsoleErrorCode.java +++ b/rc-service/rc-inner-api/console-inner-api/src/main/java/com/red/circle/console/inner/error/ConsoleErrorCode.java @@ -184,7 +184,14 @@ public enum ConsoleErrorCode implements IResponseErrorCode { /** * 用户动态不能重复插入 */ - USER_DYNAMICS_CANNOT_BE_INSERTED_REPEATEDLY(10034, "User dynamics cannot be inserted repeatedly"); + USER_DYNAMICS_CANNOT_BE_INSERTED_REPEATEDLY(10034, "User dynamics cannot be inserted repeatedly"), + + /** + * 账号无权限 + */ + ACCOUNT_NOT_PERMISSIONS(10035,"The account has no permissions."), + + ; private final Integer code; diff --git a/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/command/admin/query/AccountButtonsAliasesQryExe.java b/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/command/admin/query/AccountButtonsAliasesQryExe.java index 48a93a60..b15f19ff 100644 --- a/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/command/admin/query/AccountButtonsAliasesQryExe.java +++ b/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/command/admin/query/AccountButtonsAliasesQryExe.java @@ -21,4 +21,7 @@ public class AccountButtonsAliasesQryExe { return menuService.getUserPermButtonAliases(cmd.requiredReqUserId().intValue()); } + public boolean hasButtonAlias(Integer userId, String alias) { + return menuService.hasUserButtonAlias(userId, alias); + } } diff --git a/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/service/admin/UserAccountServiceImpl.java b/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/service/admin/UserAccountServiceImpl.java index 878b94fa..2a979c8e 100644 --- a/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/service/admin/UserAccountServiceImpl.java +++ b/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/service/admin/UserAccountServiceImpl.java @@ -89,6 +89,11 @@ public class UserAccountServiceImpl implements UserAccountService { } @Override + public boolean hasButtonsAlias(Integer userId, String alias) { + return accountButtonsAliasesQryExe.hasButtonAlias(userId, alias); + } + + @Override public PageResult pageUser(UserPageQryCmd cmd) { return userPageQryExe.execute(cmd); } diff --git a/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/service/app/props/PropsGiveServiceImpl.java b/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/service/app/props/PropsGiveServiceImpl.java index 8e7293a7..0bbc912a 100644 --- a/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/service/app/props/PropsGiveServiceImpl.java +++ b/rc-service/rc-service-console/console-application/src/main/java/com/red/circle/console/app/service/app/props/PropsGiveServiceImpl.java @@ -6,6 +6,7 @@ import com.red.circle.common.business.enums.DiamondOrigin; import com.red.circle.common.business.enums.PropsActivityRewardEnum; import com.red.circle.common.business.enums.SendPropsOrigin; import com.red.circle.console.app.dto.cmd.app.props.PropsGiveUserCmd; +import com.red.circle.console.app.service.admin.UserAccountService; import com.red.circle.console.inner.error.ConsoleErrorCode; import com.red.circle.framework.core.asserts.ResponseAssert; import com.red.circle.other.inner.endpoint.live.RoomManagerClient; @@ -15,6 +16,7 @@ import com.red.circle.other.inner.endpoint.material.props.PropsCommodityStoreCli import com.red.circle.other.inner.endpoint.material.props.PropsNobleVipClient; import com.red.circle.other.inner.endpoint.material.props.PropsSourceClient; import com.red.circle.other.inner.endpoint.material.props.RoomThemeBackpackClient; +import com.red.circle.other.inner.endpoint.user.user.SysUserProfileClient; import com.red.circle.other.inner.enums.material.BadgeBackpackExpireTypeEnum; import com.red.circle.other.inner.enums.material.ConsolePropsTypeEnum; import com.red.circle.other.inner.enums.material.SysNobleVipTypeEnum; @@ -71,6 +73,7 @@ public class PropsGiveServiceImpl implements PropsGiveService { private final PropsNobleVipClient propsNobleVipClient; private final RoomThemeBackpackClient roomThemeBackpackClient; private final PropsCommodityStoreClient propsCommodityStoreClient; + private final UserAccountService userAccountService; @Override public String give(PropsGiveUserCmd cmd) { @@ -121,6 +124,9 @@ public class PropsGiveServiceImpl implements PropsGiveService { String sysOrigin = getUserSysOrigin(cmd.getReceiverId()); ResponseAssert.isFalse(UserErrorCode.USER_INFO_NOT_FOUND, StringUtils.isBlank(sysOrigin)); + // 后台赠送道具校验权限 + checkUserAccountAlias(cmd); + if (Objects.equals(cmd.getType(), PropsActivityRewardEnum.PROPS.name())) { isNullStr(cmd.getSecondaryType()); @@ -167,6 +173,15 @@ public class PropsGiveServiceImpl implements PropsGiveService { ResponseAssert.failure(ConsoleErrorCode.NOT_DATA); } + private void checkUserAccountAlias(PropsGiveUserCmd cmd) { + + boolean hassed = userAccountService.hasButtonsAlias(cmd.getOpsUser().intValue(), "send:props:" + cmd.getSecondaryType()); + if (!hassed) { + ResponseAssert.failure(ConsoleErrorCode.ACCOUNT_NOT_PERMISSIONS); + } + + } + private StringBuilder getErrorAccounts(Set accounts, List users) { StringBuilder errorAccounts = new StringBuilder(); diff --git a/rc-service/rc-service-console/console-client/src/main/java/com/red/circle/console/app/service/admin/UserAccountService.java b/rc-service/rc-service-console/console-client/src/main/java/com/red/circle/console/app/service/admin/UserAccountService.java index 84b007b4..38597c40 100644 --- a/rc-service/rc-service-console/console-client/src/main/java/com/red/circle/console/app/service/admin/UserAccountService.java +++ b/rc-service/rc-service-console/console-client/src/main/java/com/red/circle/console/app/service/admin/UserAccountService.java @@ -55,6 +55,11 @@ public interface UserAccountService { */ Set listAccountButtonsAliases(CommonCommand cmd); + /** + * 是否有指定按钮的权限 + */ + boolean hasButtonsAlias(Integer userId, String alias); + /** * 查询所有用户(分页. */ diff --git a/rc-service/rc-service-console/console-infrastructure/src/main/java/com/red/circle/console/infra/database/rds/dao/admin/MenuDAO.java b/rc-service/rc-service-console/console-infrastructure/src/main/java/com/red/circle/console/infra/database/rds/dao/admin/MenuDAO.java index b412dd68..5ac7b841 100644 --- a/rc-service/rc-service-console/console-infrastructure/src/main/java/com/red/circle/console/infra/database/rds/dao/admin/MenuDAO.java +++ b/rc-service/rc-service-console/console-infrastructure/src/main/java/com/red/circle/console/infra/database/rds/dao/admin/MenuDAO.java @@ -24,4 +24,5 @@ public interface MenuDAO extends BaseDAO { @Param("statusType") StatusEnum statusType, @Param("menuTypes") List menuTypes); + MenuTreeDTO findUserPermMenu(@Param("uid") Integer uid, @Param("alias") String alias); } diff --git a/rc-service/rc-service-console/console-infrastructure/src/main/java/com/red/circle/console/infra/database/rds/service/admin/MenuService.java b/rc-service/rc-service-console/console-infrastructure/src/main/java/com/red/circle/console/infra/database/rds/service/admin/MenuService.java index 3a64af3f..242109b3 100644 --- a/rc-service/rc-service-console/console-infrastructure/src/main/java/com/red/circle/console/infra/database/rds/service/admin/MenuService.java +++ b/rc-service/rc-service-console/console-infrastructure/src/main/java/com/red/circle/console/infra/database/rds/service/admin/MenuService.java @@ -51,4 +51,9 @@ public interface MenuService extends BaseService { */ Set getUserPermButtonAliases(Integer uid); + /** + * 是否有指定的权限 + */ + boolean hasUserButtonAlias(Integer userId, String alias); + } diff --git a/rc-service/rc-service-console/console-infrastructure/src/main/java/com/red/circle/console/infra/database/rds/service/admin/impl/MenuServiceImpl.java b/rc-service/rc-service-console/console-infrastructure/src/main/java/com/red/circle/console/infra/database/rds/service/admin/impl/MenuServiceImpl.java index f2c30c3f..0268e0bb 100644 --- a/rc-service/rc-service-console/console-infrastructure/src/main/java/com/red/circle/console/infra/database/rds/service/admin/impl/MenuServiceImpl.java +++ b/rc-service/rc-service-console/console-infrastructure/src/main/java/com/red/circle/console/infra/database/rds/service/admin/impl/MenuServiceImpl.java @@ -1,5 +1,6 @@ package com.red.circle.console.infra.database.rds.service.admin.impl; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.red.circle.console.infra.database.rds.dao.admin.MenuDAO; import com.red.circle.console.infra.database.rds.dto.admin.MenuTreeDTO; import com.red.circle.console.infra.database.rds.entity.admin.Menu; @@ -114,4 +115,14 @@ public class MenuServiceImpl extends BaseServiceImpl implements M .map(MenuTreeDTO::getAlias) .collect(Collectors.toSet()); } + + @Override + public boolean hasUserButtonAlias(Integer userId, String alias) { + if (userId == null || StringUtils.isEmpty(alias)) { + return false; + } + + MenuTreeDTO userPermMenu = baseDAO.findUserPermMenu(userId, alias); + return userPermMenu != null && alias.equals(userPermMenu.getAlias()); + } } diff --git a/rc-service/rc-service-console/console-infrastructure/src/main/resources/dao/admin/MenuDAO.xml b/rc-service/rc-service-console/console-infrastructure/src/main/resources/dao/admin/MenuDAO.xml index afaded21..ba0662d9 100644 --- a/rc-service/rc-service-console/console-infrastructure/src/main/resources/dao/admin/MenuDAO.xml +++ b/rc-service/rc-service-console/console-infrastructure/src/main/resources/dao/admin/MenuDAO.xml @@ -33,4 +33,24 @@ ) tmp ORDER BY tmp.sort DESC + +