REQ-3046: a lot of staff

This commit is contained in:
yanglin 2024-10-16 20:00:33 +08:00
parent a922791bb8
commit cf66d98fe4
11 changed files with 57 additions and 37 deletions

View File

@ -0,0 +1,15 @@
package cn.axzo.msg.center.service.pending;
import cn.axzo.msg.center.service.enums.AppTerminalTypeEnum;
import cn.axzo.msg.center.service.enums.TerminalTypeEnum;
/**
* @author yanglin
*/
public interface TerminalProvider {
TerminalTypeEnum getTerminalType();
AppTerminalTypeEnum getAppTerminalType();
}

View File

@ -2,6 +2,7 @@ package cn.axzo.msg.center.service.pending.request;
import cn.axzo.msg.center.service.enums.AppTerminalTypeEnum;
import cn.axzo.msg.center.service.enums.TerminalTypeEnum;
import cn.axzo.msg.center.service.pending.TerminalProvider;
import lombok.Getter;
import lombok.Setter;
@ -13,7 +14,7 @@ import java.util.Set;
*/
@Setter
@Getter
public class GetPendingTodosRequest {
public class GetPendingTodosRequest implements TerminalProvider {
/**
* 待办执行人id
*/

View File

@ -3,6 +3,7 @@ package cn.axzo.msg.center.service.pending.request;
import cn.axzo.msg.center.service.enums.AppTerminalTypeEnum;
import cn.axzo.msg.center.service.enums.TerminalTypeEnum;
import cn.axzo.msg.center.service.enums.TodoQueryType;
import cn.axzo.msg.center.service.pending.TerminalProvider;
import lombok.Getter;
import lombok.Setter;
@ -11,7 +12,7 @@ import lombok.Setter;
*/
@Setter
@Getter
public class PendingMessageDetailRequestV3 {
public class PendingMessageDetailRequestV3 implements TerminalProvider {
private String msgIdentityCode;
private TerminalTypeEnum terminalType;
private AppTerminalTypeEnum appTerminalType;

View File

@ -4,6 +4,7 @@ import cn.axzo.basics.common.page.PageRequest;
import cn.axzo.msg.center.service.enums.AppTerminalTypeEnum;
import cn.axzo.msg.center.service.enums.IdentityTypeEnum;
import cn.axzo.msg.center.service.enums.TerminalTypeEnum;
import cn.axzo.msg.center.service.pending.TerminalProvider;
import com.alibaba.fastjson.JSON;
import lombok.Getter;
import lombok.Setter;
@ -21,7 +22,7 @@ import java.util.Date;
*/
@Setter
@Getter
public class PendingMessageFixedTemplatePageRequest implements Serializable {
public class PendingMessageFixedTemplatePageRequest implements TerminalProvider, Serializable {
private static final long serialVersionUID = 7172093131252325437L;
/**

View File

@ -11,6 +11,7 @@ import cn.axzo.msg.center.service.enums.TerminalTypeEnum;
import cn.axzo.msg.center.service.enums.TodoQueryType;
import cn.axzo.msg.center.service.enums.TodoType;
import cn.axzo.msg.center.service.enums.YesOrNo;
import cn.axzo.msg.center.service.pending.TerminalProvider;
import com.alibaba.fastjson.JSON;
import lombok.Data;
import lombok.Getter;
@ -32,7 +33,7 @@ import java.util.Collections;
*/
@Setter
@Getter
public class PendingMessagePageRequest extends PageRequest implements Serializable {
public class PendingMessagePageRequest extends PageRequest implements TerminalProvider, Serializable {
private static final long serialVersionUID = 7172093131252325437L;

View File

@ -5,6 +5,7 @@ import cn.axzo.msg.center.service.enums.BizFinalStateEnum;
import cn.axzo.msg.center.service.enums.PendingMessageStateEnum;
import cn.axzo.msg.center.service.enums.TerminalTypeEnum;
import cn.axzo.msg.center.service.enums.TodoQueryType;
import cn.axzo.msg.center.service.pending.TerminalProvider;
import com.alibaba.fastjson.JSON;
import lombok.Getter;
import lombok.Setter;
@ -21,7 +22,7 @@ import java.io.Serializable;
*/
@Setter
@Getter
public class PendingMessageQueryRequest implements Serializable {
public class PendingMessageQueryRequest implements TerminalProvider, Serializable {
private static final long serialVersionUID = 3981382821433771344L;

View File

@ -2,6 +2,7 @@ package cn.axzo.msg.center.service.pending.request;
import cn.axzo.msg.center.service.enums.AppTerminalTypeEnum;
import cn.axzo.msg.center.service.enums.TerminalTypeEnum;
import cn.axzo.msg.center.service.pending.TerminalProvider;
import com.alibaba.fastjson.JSON;
import lombok.Getter;
import lombok.Setter;
@ -18,7 +19,7 @@ import java.util.Collection;
*/
@Setter
@Getter
public class PendingMessageStatisticForWorkerRequest implements Serializable {
public class PendingMessageStatisticForWorkerRequest implements TerminalProvider, Serializable {
private static final long serialVersionUID = 9160942889637654608L;

View File

@ -14,9 +14,9 @@ import cn.axzo.msg.center.service.enums.CardUrlOpenStrategy;
import cn.axzo.msg.center.service.enums.MessageCategoryEnum;
import cn.axzo.msg.center.service.enums.OrganizationTypeEnum;
import cn.axzo.msg.center.service.enums.PendingMessageStateEnum;
import cn.axzo.msg.center.service.enums.TerminalTypeEnum;
import cn.axzo.msg.center.service.enums.TodoQueryType;
import cn.axzo.msg.center.service.enums.TodoType;
import cn.axzo.msg.center.service.pending.TerminalProvider;
import cn.axzo.msg.center.service.pending.response.v3.ModelV2PropsPopulator;
import cn.axzo.msg.center.service.pending.response.v3.ParsedModel3Walker;
import cn.axzo.msg.center.service.pending.response.v3.model.ParsedModelV3;
@ -30,7 +30,6 @@ import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@ -68,7 +67,6 @@ public class PendingMessageResponse implements Serializable, TodoButtonProvider
/**
* 卡片信息
*/
@Deprecated
private List<MessageCardContentItemDTO> cardItems;
/**
* 代办发起者自然人id
@ -188,7 +186,6 @@ public class PendingMessageResponse implements Serializable, TodoButtonProvider
/**
* 按钮路由
*/
@Deprecated
private List<ButtonRouterDTO> buttonRouters;
/**
* 业务终态的印章图片地址
@ -269,13 +266,10 @@ public class PendingMessageResponse implements Serializable, TodoButtonProvider
*/
private CardUrlConfig cardUrlConfig;
public void populateV2Props(TerminalTypeEnum terminalTypeInRequest,
AppTerminalTypeEnum appTypeInRequest) {
public void populateV2Props(TerminalProvider terminalProvider) {
if (modelV3 == null) return;
cardItems = new ArrayList<>();
buttonRouters = new ArrayList<>();
ParsedModel3Walker.walkDown(modelV3, new ModelV2PropsPopulator(
this, terminalTypeInRequest, appTypeInRequest));
ParsedModel3Walker.walkDown(
modelV3, new ModelV2PropsPopulator(this, terminalProvider));
}
public void adjustProposedButtons(boolean forPromoter) {

View File

@ -9,13 +9,14 @@ import cn.axzo.msg.center.service.dto.MessageCardContentItemDTO;
import cn.axzo.msg.center.service.enums.AppTerminalTypeEnum;
import cn.axzo.msg.center.service.enums.RouterCategoryEnum;
import cn.axzo.msg.center.service.enums.TerminalTypeEnum;
import cn.axzo.msg.center.service.pending.TerminalProvider;
import cn.axzo.msg.center.service.pending.response.PendingMessageResponse;
import cn.axzo.msg.center.service.pending.response.v3.model.ParsedButtonV3;
import cn.axzo.msg.center.service.pending.response.v3.model.ParsedGroupV3;
import cn.axzo.msg.center.service.pending.response.v3.model.ParsedKV;
import lombok.RequiredArgsConstructor;
import java.util.Optional;
import java.util.ArrayList;
import java.util.function.Supplier;
import static cn.axzo.msg.center.service.enums.AppTerminalTypeEnum.B_ENTERPRISE_APP;
@ -31,14 +32,15 @@ import static cn.axzo.msg.center.service.enums.AppTerminalTypeEnum.PC_GA_GENERAL
public class ModelV2PropsPopulator implements ParsedModel3Visitor {
private final PendingMessageResponse response;
private final TerminalTypeEnum terminalTypeInRequest;
private final AppTerminalTypeEnum appTypeInRequest;
private final TerminalProvider terminalProvider;
@Override
public void visitGroupKeyValue(ParsedGroupV3 group, ParsedKV kv) {
MessageCardContentItemDTO cardItem = new MessageCardContentItemDTO();
cardItem.setLabel(kv.getKey());
cardItem.setValue(kv.getValue());
if (response.getCardItems() == null)
response.setCardItems(new ArrayList<>());
response.getCardItems().add(cardItem);
}
@ -54,6 +56,8 @@ public class ModelV2PropsPopulator implements ParsedModel3Visitor {
buttonV2.setPendingShow(buttonV3.getPendingShow());
buttonV2.setKey(buttonV3.getCode());
buttonV2.setSource(buttonV3.getSource());
if (response.getButtonRouters() == null)
response.setButtonRouters(new ArrayList<>());
response.getButtonRouters().add(buttonV2);
return buttonV2;
};
@ -62,40 +66,39 @@ public class ModelV2PropsPopulator implements ParsedModel3Visitor {
buttonV2.setUrl(buttonV3.getApiUrl());
return;
}
parseTerminalUrl(buttonV3.getUrlConfig()).ifPresent(terminalUrl -> {
TerminalUrl terminalUrl = parseTerminalUrl(buttonV3.getUrlConfig());
if (terminalUrl != null) {
ButtonRouterDTO buttonV2 = factory.get();
buttonV2.setUrl(terminalUrl.getUrl());
buttonV2.setTerminalType(terminalUrl.getTerminalType());
});
}
}
/**
* 根据请求客户端真实的终端类型来选择对应的URL
*/
public Optional<TerminalUrl> parseTerminalUrl(UrlConfig config) {
if (appTypeInRequest == null)
return Optional.empty();
if (config == null) return Optional.empty();
public TerminalUrl parseTerminalUrl(UrlConfig config) {
if (config == null) return null;
if (terminalProvider.getAppTerminalType() == null) return null;
// PC(CMS)
TerminalUrl pcCms = selectWeb(CMS_WEB_PC, config.getPcCms());
if (pcCms != null) return Optional.of(pcCms);
if (pcCms != null) return pcCms;
// PC(OMS)
TerminalUrl pcOms = selectWeb(OMS_WEB_PC, config.getPcOms());
if (pcOms != null) return Optional.of(pcOms);
if (pcOms != null) return pcOms;
// PC(政务系统)
TerminalUrl pcGaGeneral = selectWeb(PC_GA_GENERAL, config.getPcGaGeneral());
if (pcGaGeneral != null) return Optional.of(pcGaGeneral);
if (pcGaGeneral != null) return pcGaGeneral;
// APP工人端
TerminalUrl appWorker = selectApp(C_WORKER_APP, config.getAppWorker());
if (appWorker != null) return Optional.of(appWorker);
if (appWorker != null) return appWorker;
// APP管理端
TerminalUrl appManager = selectApp(B_ENTERPRISE_APP, config.getAppManager());
return Optional.ofNullable(appManager);
return selectApp(B_ENTERPRISE_APP, config.getAppManager());
}
private TerminalUrl selectWeb(
AppTerminalTypeEnum selectAppType, WebUrl webUrl) {
if (appTypeInRequest != selectAppType)
if (terminalProvider.getAppTerminalType() != selectAppType)
return null;
if (webUrl == null)
return null;
@ -104,13 +107,14 @@ public class ModelV2PropsPopulator implements ParsedModel3Visitor {
private TerminalUrl selectApp(
AppTerminalTypeEnum selectAppType, MobileUrlConfig mobileUrl) {
if (appTypeInRequest != selectAppType)
if (terminalProvider.getAppTerminalType() != selectAppType)
return null;
if (mobileUrl == null)
return null;
if (mobileUrl.getIos() != null && terminalTypeInRequest == TerminalTypeEnum.IOS)
TerminalTypeEnum terminalType = terminalProvider.getTerminalType();
if (mobileUrl.getIos() != null && terminalType == TerminalTypeEnum.IOS)
return new TerminalUrl(TerminalTypeEnum.IOS, mobileUrl.getIos().getUrl());
if (mobileUrl.getAndroid() != null && terminalTypeInRequest == TerminalTypeEnum.ANDROID)
if (mobileUrl.getAndroid() != null && terminalType == TerminalTypeEnum.ANDROID)
return new TerminalUrl(TerminalTypeEnum.ANDROID, mobileUrl.getAndroid().getUrl());
return null;
}

View File

@ -42,7 +42,7 @@ public class ParsedGroupV3 {
private WorkerInfo workerInfo;
@NotNull
public List<ParsedKV> getKeyValues() {
public List<ParsedKV> determineKeyValues() {
return groupInfo == null ? Collections.emptyList() : groupInfo.getKeyValues();
}
}

View File

@ -24,6 +24,7 @@ public class ParsedModelV3 {
*/
@JsonIgnore @JSONField(serialize = false)
private ParsedTemplateV3 template;
/**
* 分组
*/
@ -71,7 +72,7 @@ public class ParsedModelV3 {
public void removeEmptyKVGroups() {
groups.removeIf(g -> {
boolean isKVGroup = g.getGroupType() == GroupType.KV_VALUES;
return isKVGroup && g.getKeyValues().isEmpty();
return isKVGroup && g.determineKeyValues().isEmpty();
});
}