REQ-3046: a lot of staff
This commit is contained in:
parent
a922791bb8
commit
cf66d98fe4
@ -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();
|
||||
|
||||
}
|
||||
@ -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
|
||||
*/
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
/**
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user