REQ-3201: 幂等控制

This commit is contained in:
yanglin 2024-12-16 17:36:48 +08:00
parent 466a1b2f74
commit 5aeb6a56b1
2 changed files with 35 additions and 0 deletions

View File

@ -12,6 +12,7 @@ import cn.axzo.msg.center.service.pending.request.CardStateInfo;
import cn.axzo.msg.center.service.pending.request.CardUpdatePresetButtonRequest;
import cn.axzo.msg.center.service.pending.request.CardUpdateStateRequest;
import cn.axzo.msg.center.service.pending.request.PresetButtonPressedRequest;
import cn.axzo.msg.center.service.util.IdempotentCodeBuilder;
import com.alibaba.excel.util.StringUtils;
import com.alibaba.fastjson.JSON;
import com.google.common.collect.Sets;
@ -185,6 +186,11 @@ public class TodoWithCardWrapper {
}
sendRequest.setStateInfo(CardStateInfo.buildCardStateInfo(CardBizState.PENDING.getCode(), CardState.CREATED));
sendRequest.setIdempotentCode(new IdempotentCodeBuilder(false)
.append(param.getBizCode())
.append(param.getSubBizCode())
.build());
return sendRequest;
}

View File

@ -0,0 +1,29 @@
package cn.axzo.msg.center.service.util;
import lombok.RequiredArgsConstructor;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author yanglin
*/
@RequiredArgsConstructor
public class IdempotentCodeBuilder {
private final List<Object> buf = new ArrayList<>();
private final boolean appendNull;
public IdempotentCodeBuilder append(Object value) {
if (value == null && !appendNull)
return this;
buf.add(value);
return this;
}
public String build() {
return buf.stream().map(String::valueOf).collect(Collectors.joining(":"));
}
}