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