角标配置入口-财富等级限制生效范围

This commit is contained in:
2025-10-11 13:54:39 +08:00
parent c19589c674
commit a788956f90
2 changed files with 21 additions and 6 deletions

View File

@@ -28,6 +28,9 @@ public enum RuleCodeEnum {
//用户等级 //用户等级
USER_LEVEL, USER_LEVEL,
//用户等级限制身份,1-全部用户2非主播身份
USER_LEVEL_LIMIT_ROLE,
//备用字段 //备用字段
RESERVE,; RESERVE,;

View File

@@ -6,10 +6,12 @@ import com.accompany.business.dto.resource.ResourceContext;
import com.accompany.business.enums.resource.ResourceTypeEnum; import com.accompany.business.enums.resource.ResourceTypeEnum;
import com.accompany.business.enums.resource.RuleCodeEnum; import com.accompany.business.enums.resource.RuleCodeEnum;
import com.accompany.business.model.UserLevelExperience; import com.accompany.business.model.UserLevelExperience;
import com.accompany.business.model.guild.GuildMember;
import com.accompany.business.model.resource.Resource; import com.accompany.business.model.resource.Resource;
import com.accompany.business.model.resource.ResourceRule; import com.accompany.business.model.resource.ResourceRule;
import com.accompany.business.mybatismapper.resource.ResourceMapper; import com.accompany.business.mybatismapper.resource.ResourceMapper;
import com.accompany.business.service.fillstrategy.strategy.FillFactory; import com.accompany.business.service.fillstrategy.strategy.FillFactory;
import com.accompany.business.service.guild.GuildMemberService;
import com.accompany.business.service.level.LevelService; import com.accompany.business.service.level.LevelService;
import com.accompany.business.service.resource.ResourceRuleService; import com.accompany.business.service.resource.ResourceRuleService;
import com.accompany.business.service.resource.ResourceService; import com.accompany.business.service.resource.ResourceService;
@@ -64,6 +66,9 @@ public class ResourceServiceImpl extends ServiceImpl<ResourceMapper, Resource> i
@Autowired @Autowired
private HighRechargeUserService highRechargeUserService; private HighRechargeUserService highRechargeUserService;
@Autowired
private GuildMemberService guildMemberService;
@Override @Override
public boolean isOpen(String code) { public boolean isOpen(String code) {
return getResource(code) != null; return getResource(code) != null;
@@ -96,6 +101,7 @@ public class ResourceServiceImpl extends ServiceImpl<ResourceMapper, Resource> i
} }
context.setNotChannels(channel); context.setNotChannels(channel);
Integer partitionId = null; Integer partitionId = null;
GuildMember guildMember = null;
if (uid != null) { if (uid != null) {
UserLevelExperience userExperience = levelService.getUserExper(uid); UserLevelExperience userExperience = levelService.getUserExper(uid);
if (userExperience != null && userExperience.getLevelExperience() != null) { if (userExperience != null && userExperience.getLevelExperience() != null) {
@@ -109,6 +115,7 @@ public class ResourceServiceImpl extends ServiceImpl<ResourceMapper, Resource> i
} }
partitionId = users.getPartitionId(); partitionId = users.getPartitionId();
} }
guildMember = guildMemberService.getVaildGuildMemberByUid(uid);
boolean isHighRechargeUser = highRechargeUserService.isHighRechargeUser(uid); boolean isHighRechargeUser = highRechargeUserService.isHighRechargeUser(uid);
context.setHighRechargeUser(isHighRechargeUser? "大R": "普通"); context.setHighRechargeUser(isHighRechargeUser? "大R": "普通");
} }
@@ -156,10 +163,13 @@ public class ResourceServiceImpl extends ServiceImpl<ResourceMapper, Resource> i
} }
//动态校验规则 //动态校验规则
JSONObject jsonObject = JSONObject.parseObject(ruleValueJson); JSONObject jsonObject = JSONObject.parseObject(ruleValueJson);
boolean limitUserLevel = !(guildMember != null
&& jsonObject.containsKey(RuleCodeEnum.USER_LEVEL_LIMIT_ROLE.name())
&& "2".equals(jsonObject.getString(RuleCodeEnum.USER_LEVEL_LIMIT_ROLE.name())));
for (Map.Entry<String, Object> entry : jsonObject.entrySet()) { for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {
String key = entry.getKey(); String key = entry.getKey();
Object ruleValue = entry.getValue(); Object ruleValue = entry.getValue();
if (CollectionUtil.isEmpty(rules)) { if (CollectionUtil.isEmpty(rules) || RuleCodeEnum.USER_LEVEL_LIMIT_ROLE.name().equals(key)) {
continue; continue;
} }
if (ruleValue == null || StrUtil.isEmpty(ruleValue.toString())) { if (ruleValue == null || StrUtil.isEmpty(ruleValue.toString())) {
@@ -198,11 +208,13 @@ public class ResourceServiceImpl extends ServiceImpl<ResourceMapper, Resource> i
isSkip = Integer.parseInt(val1) > Integer.parseInt(val2); isSkip = Integer.parseInt(val1) > Integer.parseInt(val2);
} }
} else if (OperateType.GE.name().equals(kind)) { } else if (OperateType.GE.name().equals(kind)) {
//版本号 limitUserLevel = RuleCodeEnum.USER_LEVEL.name().equals(key) && limitUserLevel;
if (targetValue.toString().contains(StrUtil.DOT) && !targetValue.toString().startsWith(StrUtil.DELIM_START) && !targetValue.toString().startsWith(StrUtil.DELIM_END)){ if (!limitUserLevel) {
isSkip = AppVersionUtil.compareVersion(val1, val2) < 0; if (targetValue.toString().contains(StrUtil.DOT) && !targetValue.toString().startsWith(StrUtil.DELIM_START) && !targetValue.toString().startsWith(StrUtil.DELIM_END)){
} else { isSkip = AppVersionUtil.compareVersion(val1, val2) < 0;
isSkip = Integer.parseInt(val1) < Integer.parseInt(val2); } else {
isSkip = Integer.parseInt(val1) < Integer.parseInt(val2);
}
} }
} else if (OperateType.LEFT_LIKE.name().equals(kind)) { } else if (OperateType.LEFT_LIKE.name().equals(kind)) {
if (StrUtil.isNotEmpty(val1) && StrUtil.isNotEmpty(description) && val2.equals(YES_ZH)) { if (StrUtil.isNotEmpty(val1) && StrUtil.isNotEmpty(description) && val2.equals(YES_ZH)) {