REQ-3201: 引入业务状态
This commit is contained in:
parent
b27928f8e2
commit
9cac9161b7
@ -83,7 +83,7 @@ public class CardManager {
|
||||
MessageTaskResp imResponse = BizAssertions.assertResponse(
|
||||
messageApi.sendTemplateMessageAsync(imRequest));
|
||||
execTransactional(() -> {
|
||||
cardDao.setSendSuccess(sendModel.getCards(), imResponse);
|
||||
cardDao.setSendSuccess(group.getCards(), imResponse);
|
||||
groupCardLogger.reloadAndLogCards("send:success");
|
||||
});
|
||||
} catch (Exception e) {
|
||||
|
||||
@ -45,27 +45,31 @@ class CardParser {
|
||||
|
||||
GeneralMessagePushVO parseCardContent(CardTemplate cardTemplate, CardContent card) {
|
||||
ParsedTemplateV3 template = cardTemplate.getTemplate();
|
||||
GeneralMessagePushVO im = new GeneralMessagePushVO();
|
||||
GeneralMessagePushVO content = new GeneralMessagePushVO();
|
||||
// 这个字段好像没有业务含义
|
||||
im.setIdentityCode("");
|
||||
im.setCardStyleCode(template.getCardStyleCode());
|
||||
im.setBizCode("");
|
||||
im.setTemplateCode(template.getCode());
|
||||
im.setCardBannerUrl(template.getIcon());
|
||||
im.setCardTitle(template.getTitle());
|
||||
im.setCardContent(template.getContent());
|
||||
im.setSendTimestamp(new Date().getTime());
|
||||
content.setIdentityCode("");
|
||||
content.setCardStyleCode(template.getCardStyleCode());
|
||||
content.setBizCode("");
|
||||
content.setTemplateCode(template.getCode());
|
||||
content.setCardBannerUrl(template.getIcon());
|
||||
content.setCardTitle(template.getTitle());
|
||||
content.setCardContent(template.getContent());
|
||||
content.setSendTimestamp(new Date().getTime());
|
||||
// 取当前时间即可, 数据库存的更新时间肯定晚于等于这个时间, 因此不会存在更新丢失
|
||||
im.setUpdateTime(System.currentTimeMillis());
|
||||
content.setUpdateTime(System.currentTimeMillis());
|
||||
CardStateInfo stateInfo = card.getStateInfo();
|
||||
if (cardTemplate.isUpdatable())
|
||||
im.setCardState(stateInfo.getCardState());
|
||||
im.setStateImage(cardTemplate.determineStateImage(stateInfo.getBizStateCode()));
|
||||
if (cardTemplate.isUpdatable()) {
|
||||
content.setCardState(stateInfo.getCardState());
|
||||
content.setBizState(stateInfo.getBizStateCode());
|
||||
}
|
||||
content.setStateImage(CardStateImageConfigs
|
||||
.create(template.getStateImageConfigs())
|
||||
.determineStateImage(stateInfo.getBizStateCode()));
|
||||
if (StringUtils.isNotBlank(card.getSubtitle())) {
|
||||
GeneralMessagePushVO.Subtitle subtitle = new GeneralMessagePushVO.Subtitle();
|
||||
subtitle.setIconUrl(messageSystemConfig.getOrgIcon());
|
||||
subtitle.setTitle(card.getSubtitle());
|
||||
im.setSubtitles(Collections.singletonList(subtitle));
|
||||
content.setSubtitles(Collections.singletonList(subtitle));
|
||||
}
|
||||
ParsedModelV3Walker.walkDown(cardTemplate.getParsedModel(), new ParsedModel3Visitor() {
|
||||
@Override
|
||||
@ -77,7 +81,7 @@ class CardParser {
|
||||
cardDetailButton.setIsHighlight(false);
|
||||
cardDetailButton.setActionPaths(getNativeAppLinks(urlConfig));
|
||||
cardDetailButton.setUrlConfig(urlConfig);
|
||||
im.setCardDetailButton(cardDetailButton);
|
||||
content.setCardDetailButton(cardDetailButton);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -93,9 +97,9 @@ class CardParser {
|
||||
item = new CardExtensionItem(kv.getKey(), person.getPlainPersonInfo());
|
||||
}
|
||||
}
|
||||
if (im.getCardExtension() == null)
|
||||
im.setCardExtension(new ArrayList<>());
|
||||
im.getCardExtension().add(item);
|
||||
if (content.getCardExtension() == null)
|
||||
content.setCardExtension(new ArrayList<>());
|
||||
content.getCardExtension().add(item);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -106,10 +110,10 @@ class CardParser {
|
||||
if (stateInfo.getCardState() == CardState.COMPLETED
|
||||
&& button.determinePendingShow())
|
||||
return;
|
||||
if (im.getCardButtons() == null)
|
||||
im.setCardButtons(new ArrayList<>());
|
||||
if (content.getCardButtons() == null)
|
||||
content.setCardButtons(new ArrayList<>());
|
||||
CardButton imButton = new CardButton();
|
||||
im.getCardButtons().add(imButton);
|
||||
content.getCardButtons().add(imButton);
|
||||
|
||||
boolean isActionPerformed = card.isButtonActionPerformed(button.getCode());
|
||||
imButton.setTitle(isActionPerformed ? button.getActionPerformedName() : button.getName());
|
||||
@ -118,7 +122,8 @@ class CardParser {
|
||||
imButton.setIsOverCard(styles.contains(ButtonStyleEnum.OVER_CARD));
|
||||
imButton.setExecutorShow(button.getExecutorShow());
|
||||
imButton.setActionPerformed(isActionPerformed);
|
||||
imButton.setUrlConfig(button.getUrlConfig());
|
||||
if (button.getUrlConfig().hasUrl())
|
||||
imButton.setUrlConfig(button.getUrlConfig());
|
||||
imButton.setButtonCode(button.getCode());
|
||||
imButton.setPresetButtonType(button.getPresetButtonType());
|
||||
imButton.setApiUrl(button.getApiUrl());
|
||||
@ -140,13 +145,13 @@ class CardParser {
|
||||
public void visitCardExtField(CardElementConfig cfg) {
|
||||
if (StringUtils.isBlank(cfg.getValue()))
|
||||
return;
|
||||
if (im.getCardElements() == null)
|
||||
im.setCardElements(new ArrayList<>());
|
||||
im.getCardElements().add(cfg);
|
||||
if (content.getCardElements() == null)
|
||||
content.setCardElements(new ArrayList<>());
|
||||
content.getCardElements().add(cfg);
|
||||
}
|
||||
|
||||
});
|
||||
return im;
|
||||
return content;
|
||||
}
|
||||
|
||||
private List<AppLink> getNativeAppLinks(UrlConfig urlConfig) {
|
||||
|
||||
@ -0,0 +1,30 @@
|
||||
package cn.axzo.msg.center.message.service.card;
|
||||
|
||||
import cn.axzo.msg.center.service.domain.card.StateImageConfig;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public class CardStateImageConfigs {
|
||||
|
||||
private final List<StateImageConfig> configs;
|
||||
|
||||
public static CardStateImageConfigs create(List<StateImageConfig> images) {
|
||||
return new CardStateImageConfigs(images);
|
||||
}
|
||||
|
||||
public String determineStateImage(String bizStateCode) {
|
||||
if (configs == null) return "";
|
||||
return configs.stream()
|
||||
.filter(StateImageConfig::isEnabled)
|
||||
.filter(cfg -> cfg.getStateCode().equals(bizStateCode))
|
||||
.findFirst()
|
||||
.map(StateImageConfig::determineImageUrl)
|
||||
.orElse(null);
|
||||
}
|
||||
}
|
||||
@ -77,7 +77,6 @@ public class CardSupport {
|
||||
card.setTemplateCode(sendModel.getRequest().getTemplateCode());
|
||||
CardStateInfo stateInfo = sendModel.getRequest().getStateInfo();
|
||||
card.setBizState(stateInfo.getBizStateCode());
|
||||
card.setBizStateImage(stateInfo.getBizStateImage());
|
||||
card.setCardState(stateInfo.getCardState());
|
||||
card.setTitle(sendModel.getTemplate().getTitle());
|
||||
card.setContent(sendModel.getTemplate().getContent());
|
||||
|
||||
@ -2,7 +2,6 @@ package cn.axzo.msg.center.message.service.card;
|
||||
|
||||
import cn.axzo.im.center.common.enums.AppTypeEnum;
|
||||
import cn.axzo.msg.center.common.utils.BizAssertions;
|
||||
import cn.axzo.msg.center.service.domain.card.StateImageConfig;
|
||||
import cn.axzo.msg.center.service.enums.MessageCategoryEnum;
|
||||
import cn.axzo.msg.center.service.pending.response.v3.model.ParsedModelV3;
|
||||
import cn.axzo.msg.center.service.pending.response.v3.model.ParsedTemplateV3;
|
||||
@ -36,16 +35,6 @@ public class CardTemplate {
|
||||
return getTemplate().getMsgCategory() != MessageCategoryEnum.GENERAL_MESSAGE;
|
||||
}
|
||||
|
||||
public String determineStateImage(String bizStateCode) {
|
||||
List<StateImageConfig> images = getTemplate().getStateImageConfigs();
|
||||
if (images == null) return null;
|
||||
return images.stream()
|
||||
.filter(config -> config.getStateCode().equals(bizStateCode))
|
||||
.findFirst()
|
||||
.map(StateImageConfig::determineImageUrl)
|
||||
.orElse(null);
|
||||
}
|
||||
|
||||
public ParsedTemplateV3 getTemplate() {
|
||||
return parsedModel.getTemplate();
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package cn.axzo.msg.center.message.service.card.domain;
|
||||
|
||||
import cn.axzo.im.center.common.enums.AppTypeEnum;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@ -15,4 +16,9 @@ public class CardGroupKey {
|
||||
private final Long ouId;
|
||||
private final Long workspaceId;
|
||||
private final AppTypeEnum appType;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
}
|
||||
}
|
||||
@ -104,7 +104,7 @@ public class ModelV3Parser {
|
||||
|
||||
@Override
|
||||
public void visitTemplate(ParsedTemplateV3 template) {
|
||||
template.setTitle(resolveBizParam(template.getTitle()));
|
||||
template.setTitle(resolveBizParam(template.getTitle()));
|
||||
template.setContent(resolveBizParam(template.getContent()));
|
||||
}
|
||||
|
||||
@ -182,11 +182,16 @@ public class ModelV3Parser {
|
||||
|
||||
@Override
|
||||
public void visitCardExtField(CardElementConfig cfg) {
|
||||
cfg.setValue(resolveBizParam(cfg.getValue()));
|
||||
resolveCardElement(cfg);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitCardStyleElement(CardElementConfig cfg) {
|
||||
resolveCardElement(cfg);
|
||||
}
|
||||
|
||||
private void resolveCardElement(CardElementConfig cfg) {
|
||||
cfg.setName(resolveBizParam(cfg.getName()));
|
||||
cfg.setValue(resolveBizParam(cfg.getValue()));
|
||||
}
|
||||
|
||||
|
||||
@ -16,11 +16,6 @@ public class CardStateInfo {
|
||||
*/
|
||||
private String bizStateCode;
|
||||
|
||||
/**
|
||||
* 业务状态图片地址
|
||||
*/
|
||||
private String bizStateImage;
|
||||
|
||||
/**
|
||||
* 卡片状态
|
||||
*/
|
||||
|
||||
@ -19,7 +19,6 @@ public class CardUpdateStateRequest extends CardUpdateRequest {
|
||||
@NotNull(message = "状态不能为空")
|
||||
private CardStateInfo stateInfo;
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return JSON.toJSONString(this);
|
||||
|
||||
@ -34,7 +34,6 @@ public class CardDao extends ServiceImpl<CardMapper, Card> {
|
||||
lambdaUpdate()
|
||||
.in(Card::getId, cardIds)
|
||||
.set(stateInfo.getBizStateCode() != null, Card::getBizState, stateInfo.getBizStateCode())
|
||||
.set(stateInfo.getBizStateImage() != null, Card::getBizStateImage, stateInfo.getBizStateImage())
|
||||
.set(stateInfo.getCardState() != null, Card::getCardState, stateInfo.getCardState())
|
||||
.update();
|
||||
}
|
||||
|
||||
@ -79,11 +79,6 @@ public class Card extends BaseEntityExt<Card> implements CardContent {
|
||||
*/
|
||||
private CardState cardState;
|
||||
|
||||
/**
|
||||
* 业务状态图片
|
||||
*/
|
||||
private String bizStateImage;
|
||||
|
||||
/**
|
||||
* 标题
|
||||
*/
|
||||
@ -97,7 +92,7 @@ public class Card extends BaseEntityExt<Card> implements CardContent {
|
||||
/**
|
||||
* IM卡片信息 (解析后)
|
||||
*/
|
||||
@TableField(typeHandler = FastjsonTypeHandler.class)
|
||||
@TableField(typeHandler = IgnorePropsJsonTypeHandler.class)
|
||||
private Object cardContent;
|
||||
|
||||
/**
|
||||
@ -183,7 +178,6 @@ public class Card extends BaseEntityExt<Card> implements CardContent {
|
||||
public CardStateInfo getStateInfo() {
|
||||
CardStateInfo cardStateInfo = new CardStateInfo();
|
||||
cardStateInfo.setBizStateCode(bizState);
|
||||
cardStateInfo.setBizStateImage(bizStateImage);
|
||||
cardStateInfo.setCardState(cardState);
|
||||
return cardStateInfo;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user