修复数据大屏报错
This commit is contained in:
parent
ff9b790de5
commit
8e4e8f5db2
@ -30,7 +30,9 @@ import java.time.ZonedDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
@ -98,6 +100,10 @@ public class ResidentInviteActivityServiceImpl implements ResidentInviteActivity
|
||||
public void saveConfig(InviteCampaignConfigSaveCmd cmd) {
|
||||
String normalizedSysOrigin = normalizeSysOrigin(cmd.getSysOrigin());
|
||||
validateConfig(cmd);
|
||||
List<InviteCampaignRewardRule> existingRules = inviteCampaignRewardRuleService.query()
|
||||
.eq(InviteCampaignRewardRule::getSysOrigin, normalizedSysOrigin)
|
||||
.list();
|
||||
validateReusableRuleIds(existingRules, cmd);
|
||||
|
||||
InviteCampaignConfig config = inviteCampaignConfigService.query()
|
||||
.eq(InviteCampaignConfig::getSysOrigin, normalizedSysOrigin)
|
||||
@ -124,9 +130,6 @@ public class ResidentInviteActivityServiceImpl implements ResidentInviteActivity
|
||||
ResponseAssert.isTrue(CommonErrorCode.SAVE_FAILURE, inviteCampaignConfigService.save(config));
|
||||
}
|
||||
|
||||
List<InviteCampaignRewardRule> existingRules = inviteCampaignRewardRuleService.query()
|
||||
.eq(InviteCampaignRewardRule::getSysOrigin, normalizedSysOrigin)
|
||||
.list();
|
||||
if (CollectionUtils.isNotEmpty(existingRules)) {
|
||||
inviteCampaignRewardRuleService.removeByIds(
|
||||
existingRules.stream().map(InviteCampaignRewardRule::getId).collect(Collectors.toSet()));
|
||||
@ -212,6 +215,7 @@ public class ResidentInviteActivityServiceImpl implements ResidentInviteActivity
|
||||
|
||||
private InviteCampaignConfigCO.RewardItemCO toRewardItem(InviteCampaignRewardRule rule) {
|
||||
return new InviteCampaignConfigCO.RewardItemCO()
|
||||
.setId(rule.getId())
|
||||
.setGoldAmount(Optional.ofNullable(rule.getGoldAmount()).orElse(0L))
|
||||
.setRewardGroupId(rule.getRewardGroupId())
|
||||
.setRewardGroupName(getRewardGroupName(rule.getRewardGroupId()));
|
||||
@ -263,7 +267,7 @@ public class ResidentInviteActivityServiceImpl implements ResidentInviteActivity
|
||||
for (int i = 0; i < sortedItems.size(); i++) {
|
||||
InviteCampaignConfigSaveCmd.RuleItemCmd item = sortedItems.get(i);
|
||||
rules.add(new InviteCampaignRewardRule()
|
||||
.setId(IdWorkerUtils.getId())
|
||||
.setId(resolveRuleId(item))
|
||||
.setSysOrigin(sysOrigin)
|
||||
.setRuleType(ruleType)
|
||||
.setThresholdValue(Optional.ofNullable(item.getThreshold()).orElse(0L))
|
||||
@ -277,7 +281,7 @@ public class ResidentInviteActivityServiceImpl implements ResidentInviteActivity
|
||||
private InviteCampaignRewardRule buildRewardRule(String sysOrigin, String ruleType, Long threshold,
|
||||
Integer sort, InviteCampaignConfigSaveCmd.RewardItemCmd item) {
|
||||
return new InviteCampaignRewardRule()
|
||||
.setId(IdWorkerUtils.getId())
|
||||
.setId(resolveRuleId(item))
|
||||
.setSysOrigin(sysOrigin)
|
||||
.setRuleType(ruleType)
|
||||
.setThresholdValue(threshold)
|
||||
@ -287,6 +291,10 @@ public class ResidentInviteActivityServiceImpl implements ResidentInviteActivity
|
||||
.setSort(sort);
|
||||
}
|
||||
|
||||
private Long resolveRuleId(InviteCampaignConfigSaveCmd.RewardItemCmd item) {
|
||||
return item.getId() == null ? IdWorkerUtils.getId() : item.getId();
|
||||
}
|
||||
|
||||
private void validateConfig(InviteCampaignConfigSaveCmd cmd) {
|
||||
ResponseAssert.notNull(CommonErrorCode.DATA_ERROR, cmd.getAntiCheat());
|
||||
validateRewardItem("inviterBindReward", cmd.getInviterBindReward());
|
||||
@ -326,6 +334,43 @@ public class ResidentInviteActivityServiceImpl implements ResidentInviteActivity
|
||||
goldAmount > 0 || item.getRewardGroupId() != null);
|
||||
}
|
||||
|
||||
private void validateReusableRuleIds(List<InviteCampaignRewardRule> existingRules,
|
||||
InviteCampaignConfigSaveCmd cmd) {
|
||||
Map<Long, InviteCampaignRewardRule> existingRuleMap = existingRules.stream()
|
||||
.collect(Collectors.toMap(InviteCampaignRewardRule::getId, item -> item));
|
||||
Set<Long> submittedIds = new HashSet<>();
|
||||
validateReusableRuleId(existingRuleMap, submittedIds, RULE_TYPE_INVITER_BIND,
|
||||
cmd.getInviterBindReward());
|
||||
validateReusableRuleId(existingRuleMap, submittedIds, RULE_TYPE_INVITEE_BIND,
|
||||
cmd.getInviteeBindReward());
|
||||
validateReusableRuleIds(existingRuleMap, submittedIds, RULE_TYPE_INVITEE_RECHARGE,
|
||||
cmd.getInviteeRechargeRules());
|
||||
validateReusableRuleIds(existingRuleMap, submittedIds, RULE_TYPE_INVITER_VALID_COUNT,
|
||||
cmd.getInviterValidCountRules());
|
||||
validateReusableRuleIds(existingRuleMap, submittedIds, RULE_TYPE_INVITER_TOTAL_RECHARGE,
|
||||
cmd.getInviterTotalRechargeRules());
|
||||
}
|
||||
|
||||
private void validateReusableRuleIds(Map<Long, InviteCampaignRewardRule> existingRuleMap,
|
||||
Set<Long> submittedIds, String ruleType, List<InviteCampaignConfigSaveCmd.RuleItemCmd> items) {
|
||||
if (CollectionUtils.isEmpty(items)) {
|
||||
return;
|
||||
}
|
||||
items.forEach(item -> validateReusableRuleId(existingRuleMap, submittedIds, ruleType, item));
|
||||
}
|
||||
|
||||
private void validateReusableRuleId(Map<Long, InviteCampaignRewardRule> existingRuleMap,
|
||||
Set<Long> submittedIds, String ruleType, InviteCampaignConfigSaveCmd.RewardItemCmd item) {
|
||||
if (item == null || item.getId() == null) {
|
||||
return;
|
||||
}
|
||||
ResponseAssert.isTrue(CommonErrorCode.DATA_ERROR, item.getId() > 0);
|
||||
ResponseAssert.isTrue(CommonErrorCode.DATA_ERROR, submittedIds.add(item.getId()));
|
||||
InviteCampaignRewardRule existingRule = existingRuleMap.get(item.getId());
|
||||
ResponseAssert.isTrue(CommonErrorCode.DATA_ERROR,
|
||||
existingRule != null && Objects.equals(existingRule.getRuleType(), ruleType));
|
||||
}
|
||||
|
||||
private String normalizeSysOrigin(String sysOrigin) {
|
||||
String value = trimToNull(sysOrigin);
|
||||
ResponseAssert.notNull(CommonErrorCode.DATA_ERROR, value);
|
||||
|
||||
@ -65,6 +65,8 @@ public class InviteCampaignConfigCO extends ClientObject {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long id;
|
||||
|
||||
private Long goldAmount;
|
||||
|
||||
private Long rewardGroupId;
|
||||
@ -79,8 +81,6 @@ public class InviteCampaignConfigCO extends ClientObject {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long id;
|
||||
|
||||
private Long threshold;
|
||||
|
||||
private Boolean enabled;
|
||||
|
||||
@ -69,6 +69,8 @@ public class InviteCampaignConfigSaveCmd implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long id;
|
||||
|
||||
private Long goldAmount;
|
||||
|
||||
private Long rewardGroupId;
|
||||
|
||||
@ -303,20 +303,26 @@
|
||||
<include refid="PeriodColumnsT"/>,
|
||||
COUNT(DISTINCT t.user_id) AS gameUser
|
||||
FROM (
|
||||
SELECT t.user_id, t.sys_origin, t.create_time
|
||||
SELECT t.user_id, t.create_time
|
||||
FROM (
|
||||
<include refid="WalletGoldAssetRecordSource"/>
|
||||
) t
|
||||
WHERE <include refid="WalletGameEventWhere"/>
|
||||
<if test="sysOrigin != null and sysOrigin != ''">
|
||||
AND t.sys_origin = #{sysOrigin}
|
||||
</if>
|
||||
UNION ALL
|
||||
SELECT user_id, sys_origin, create_time
|
||||
FROM game_lucky_box_count
|
||||
SELECT t.user_id, t.create_time
|
||||
FROM game_lucky_box_count t
|
||||
WHERE 1 = 1
|
||||
<if test="sysOrigin != null and sysOrigin != ''">
|
||||
AND t.sys_origin = #{sysOrigin}
|
||||
</if>
|
||||
) t
|
||||
INNER JOIN user_base_info u ON u.id = t.user_id
|
||||
WHERE 1 = 1
|
||||
<include refid="UserWhere"/>
|
||||
<include refid="SourceTimeWhere"/>
|
||||
<include refid="SourceSysOriginWhere"/>
|
||||
GROUP BY countryCode, countryName, periodKey, periodName
|
||||
</select>
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user