REQ-3045: 减少响应大小
This commit is contained in:
parent
acffc921cf
commit
3af80289da
@ -14,7 +14,7 @@ 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.TodoType;
|
||||
import cn.axzo.msg.center.service.pending.TerminalProvider;
|
||||
import cn.axzo.msg.center.service.pending.ClientRequest;
|
||||
import cn.axzo.msg.center.service.pending.response.PendingMessageResponse;
|
||||
import cn.axzo.msg.center.service.pending.response.v3.model.ParsedModelV3;
|
||||
import cn.axzo.msg.center.service.template.response.MessageDetailStyle;
|
||||
@ -285,7 +285,7 @@ public class PendingMessageDTO implements Serializable {
|
||||
return null;
|
||||
}
|
||||
|
||||
public PendingMessageResponse toResponse(TerminalProvider terminalProvider) {
|
||||
public PendingMessageResponse toResponse(ClientRequest request) {
|
||||
boolean isCreatedToday = false;
|
||||
if (createTime != null) {
|
||||
Date createAt = DateFormatUtil.toDate(createTime);
|
||||
|
||||
@ -13,7 +13,7 @@ import cn.axzo.msg.center.service.domain.url.AppUrl;
|
||||
import cn.axzo.msg.center.service.domain.url.WebUrl;
|
||||
import cn.axzo.msg.center.service.enums.GroupType;
|
||||
import cn.axzo.msg.center.service.enums.KVContentType;
|
||||
import cn.axzo.msg.center.service.pending.TerminalProvider;
|
||||
import cn.axzo.msg.center.service.pending.ClientRequest;
|
||||
import cn.axzo.msg.center.service.pending.response.v3.ParsedModel3Visitor;
|
||||
import cn.axzo.msg.center.service.pending.response.v3.ParsedModel3Walker;
|
||||
import cn.axzo.msg.center.service.pending.response.v3.model.ComponentWorkerGroup;
|
||||
@ -68,7 +68,7 @@ public class ModelV3Parser {
|
||||
JSONObject bizParam,
|
||||
JSONObject routerParam,
|
||||
JSONObject appendRouterParam,
|
||||
@Nullable TerminalProvider terminalProvider) {
|
||||
@Nullable ClientRequest request) {
|
||||
ParsedModelV3 parsedModel = new ParsedModelV3();
|
||||
parsedModel.setTemplate(BeanMapper.copyBean(templateModel.getTemplate(), ParsedTemplateV3.class));
|
||||
parsedModel.setGroups(copyGroups(templateModel.getGroups()));
|
||||
@ -151,7 +151,7 @@ public class ModelV3Parser {
|
||||
}
|
||||
|
||||
private SessionUrlInfo parseSessionUrlInfo(UrlConfig urlConfig) {
|
||||
return ModelV3Parser.this.parseSessionUrlInfo(urlConfig, terminalProvider);
|
||||
return ModelV3Parser.this.parseSessionUrlInfo(urlConfig, request);
|
||||
}
|
||||
});
|
||||
|
||||
@ -159,7 +159,7 @@ public class ModelV3Parser {
|
||||
}
|
||||
|
||||
public SessionUrlInfo parseSessionUrlInfo(UrlConfig urlConfig,
|
||||
@Nullable TerminalProvider terminalProvider) {
|
||||
@Nullable ClientRequest request) {
|
||||
SessionUrlInfo url = new SessionUrlInfo();
|
||||
UrlConfigWalker.walkDown(urlConfig, new UrlConfigVisitor() {
|
||||
@Override
|
||||
@ -178,8 +178,8 @@ public class ModelV3Parser {
|
||||
}
|
||||
|
||||
});
|
||||
url.setAppTerminalType(terminalProvider == null ? null : terminalProvider.getAppTerminalType());
|
||||
new SessionUrlSelector(terminalProvider).selectFrom(urlConfig).ifPresent(session -> {
|
||||
url.setAppTerminalType(request == null ? null : request.getAppTerminalType());
|
||||
new SessionUrlSelector(request).selectFrom(urlConfig).ifPresent(session -> {
|
||||
url.setUrl(session.getUrl().getUrl());
|
||||
if (session.getUrl() instanceof WebUrl)
|
||||
url.setWebOpenStrategy(((WebUrl) session.getUrl()).getOpenStrategy());
|
||||
|
||||
@ -17,10 +17,11 @@ import cn.axzo.msg.center.service.domain.UrlConfig;
|
||||
import cn.axzo.msg.center.service.dto.IdentityDTO;
|
||||
import cn.axzo.msg.center.service.enums.BizCategoryEnum;
|
||||
import cn.axzo.msg.center.service.enums.OrganizationTypeEnum;
|
||||
import cn.axzo.msg.center.service.pending.TerminalProvider;
|
||||
import cn.axzo.msg.center.service.pending.ClientRequest;
|
||||
import cn.axzo.msg.center.service.pending.response.PendingMessageResponse;
|
||||
import cn.axzo.msg.center.service.pending.response.PendingMessageSimpleDTO;
|
||||
import cn.axzo.msg.center.service.pending.response.v3.ModelV2PropsPopulator;
|
||||
import cn.axzo.msg.center.service.pending.response.v3.ParsedModel3Visitor;
|
||||
import cn.axzo.msg.center.service.pending.response.v3.ParsedModel3Walker;
|
||||
import cn.axzo.msg.center.service.pending.response.v3.model.ParsedCardUrl;
|
||||
import cn.axzo.msg.center.service.pending.response.v3.model.ParsedModelV3;
|
||||
@ -65,14 +66,14 @@ class TodoRespBuilder {
|
||||
// batch convert to old model to reuse the code and save some time
|
||||
|
||||
PendingMessageResponse toResponse(PendingRecordAdapter adapter,
|
||||
TerminalProvider terminalProvider) {
|
||||
ClientRequest request) {
|
||||
List<PendingMessageResponse> responses = toResponse(
|
||||
Collections.singletonList(adapter), terminalProvider);
|
||||
Collections.singletonList(adapter), request);
|
||||
return responses.get(0);
|
||||
}
|
||||
|
||||
List<PendingMessageResponse> toResponse(List<PendingRecordAdapter> adapters,
|
||||
TerminalProvider terminalProvider) {
|
||||
ClientRequest request) {
|
||||
List<String> templateCodes = adapters.stream()
|
||||
.map(PendingRecordAdapter::getTemplateCode)
|
||||
.filter(Objects::nonNull)
|
||||
@ -81,21 +82,21 @@ class TodoRespBuilder {
|
||||
// 重新查询模版的收益大于成本
|
||||
List<TemplateModelV3> templateModels = modelV3Service.getByCodes(templateCodes);
|
||||
return adapters.stream()
|
||||
.map(adapter -> toResponse(adapter, templateModels, terminalProvider))
|
||||
.map(adapter -> toResponse(adapter, templateModels, request))
|
||||
.collect(toList());
|
||||
}
|
||||
|
||||
// convert to old model to reuse the code and save some time
|
||||
|
||||
PendingMessageResponse toResponse(Todo todo,
|
||||
TerminalProvider terminalProvider) {
|
||||
ClientRequest request) {
|
||||
TodoBusiness business = todoBusinessDao.getById(todo.getTodoBusinessId());
|
||||
return toResponse(business, todo, terminalProvider);
|
||||
return toResponse(business, todo, request);
|
||||
}
|
||||
|
||||
PendingMessageResponse toResponse(TodoBusiness business,
|
||||
Todo todo,
|
||||
TerminalProvider terminalProvider) {
|
||||
ClientRequest request) {
|
||||
TodoRecordAdapter adapter = TodoRecordAdapter.adaptTodo(business, todo);
|
||||
ArrayList<String> templateCodes = new ArrayList<>(2);
|
||||
if (business != null)
|
||||
@ -103,7 +104,7 @@ class TodoRespBuilder {
|
||||
if (todo != null)
|
||||
templateCodes.add(todo.getTemplateCode());
|
||||
List<TemplateModelV3> templateModels = modelV3Service.getByCodes(templateCodes);
|
||||
return toResponse(adapter, templateModels, terminalProvider);
|
||||
return toResponse(adapter, templateModels, request);
|
||||
}
|
||||
|
||||
// !! build adapters
|
||||
@ -159,7 +160,7 @@ class TodoRespBuilder {
|
||||
|
||||
private PendingMessageResponse toResponse(PendingRecordAdapter adapter,
|
||||
List<TemplateModelV3> templateModels,
|
||||
TerminalProvider terminalProvider) {
|
||||
ClientRequest request) {
|
||||
PendingMessageResponse response = new PendingMessageResponse();
|
||||
|
||||
// 发起人单位、项目信息
|
||||
@ -215,20 +216,23 @@ class TodoRespBuilder {
|
||||
}
|
||||
if (templateModel != null) {
|
||||
ParsedModelV3 parsedModel = modelV3Parser.parseModel(templateModel, adapter,
|
||||
adapter.getBizExtParamObj(), authParam, routerParam, terminalProvider);
|
||||
adapter.getBizExtParamObj(), authParam, routerParam, request);
|
||||
if (request.getModelVersion() == null) {
|
||||
ParsedModel3Walker.walkDown(parsedModel, new ModelV2PropsPopulator(response, request));
|
||||
} else if (request.getModelVersion().equals(ClientRequest.CURRENT_VERSION)) {
|
||||
response.setModelV3(parsedModel);
|
||||
response.setDisplayOnCardKeyValues(parsedModel.determineDisplayOnCardKeyValues());
|
||||
response.setCardUrlOpenStrategy(templateModel.getTemplate().getCardUrlOpenStrategy());
|
||||
ParsedModel3Walker.walkDown(parsedModel, new ModelV2PropsPopulator(response, terminalProvider) {
|
||||
ParsedModel3Walker.walkDown(parsedModel, new ParsedModel3Visitor() {
|
||||
@Override
|
||||
public void visitTemplateCardUrlConfig(UrlConfig urlConfig) {
|
||||
super.visitTemplateCardUrlConfig(urlConfig);
|
||||
ParsedCardUrl cardUrl = new ParsedCardUrl();
|
||||
cardUrl.setUrl(modelV3Parser.parseSessionUrlInfo(urlConfig, terminalProvider));
|
||||
cardUrl.setUrl(modelV3Parser.parseSessionUrlInfo(urlConfig, request));
|
||||
response.setCardUrl(cardUrl);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
response.setIdentityCode(adapter.getIdentityCode());
|
||||
response.setTemplateCode(adapter.getTemplateCode());
|
||||
|
||||
@ -6,10 +6,16 @@ import cn.axzo.msg.center.service.enums.TerminalTypeEnum;
|
||||
/**
|
||||
* @author yanglin
|
||||
*/
|
||||
public interface TerminalProvider {
|
||||
public interface ClientRequest {
|
||||
|
||||
Integer CURRENT_VERSION = 3;
|
||||
|
||||
TerminalTypeEnum getTerminalType();
|
||||
|
||||
AppTerminalTypeEnum getAppTerminalType();
|
||||
|
||||
default Integer getModelVersion() {
|
||||
return CURRENT_VERSION;
|
||||
}
|
||||
|
||||
}
|
||||
@ -2,7 +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 cn.axzo.msg.center.service.pending.ClientRequest;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@ -14,7 +14,7 @@ import java.util.Set;
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class GetPendingTodosRequest implements TerminalProvider {
|
||||
public class GetPendingTodosRequest implements ClientRequest {
|
||||
/**
|
||||
* 待办执行人id
|
||||
*/
|
||||
|
||||
@ -3,7 +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 cn.axzo.msg.center.service.pending.ClientRequest;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@ -12,7 +12,7 @@ import lombok.Setter;
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class PendingMessageDetailRequestV3 implements TerminalProvider {
|
||||
public class PendingMessageDetailRequestV3 implements ClientRequest {
|
||||
private String msgIdentityCode;
|
||||
private TerminalTypeEnum terminalType;
|
||||
private AppTerminalTypeEnum appTerminalType;
|
||||
|
||||
@ -1,10 +1,9 @@
|
||||
package cn.axzo.msg.center.service.pending.request;
|
||||
|
||||
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 cn.axzo.msg.center.service.pending.ClientRequest;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
@ -22,7 +21,7 @@ import java.util.Date;
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class PendingMessageFixedTemplatePageRequest implements TerminalProvider, Serializable {
|
||||
public class PendingMessageFixedTemplatePageRequest implements ClientRequest, Serializable {
|
||||
|
||||
private static final long serialVersionUID = 7172093131252325437L;
|
||||
/**
|
||||
|
||||
@ -11,7 +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 cn.axzo.msg.center.service.pending.ClientRequest;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
@ -33,7 +33,7 @@ import java.util.Collections;
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class PendingMessagePageRequest extends PageRequest implements TerminalProvider, Serializable {
|
||||
public class PendingMessagePageRequest extends PageRequest implements ClientRequest, Serializable {
|
||||
|
||||
private static final long serialVersionUID = 7172093131252325437L;
|
||||
|
||||
|
||||
@ -5,7 +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 cn.axzo.msg.center.service.pending.ClientRequest;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
@ -22,7 +22,7 @@ import java.io.Serializable;
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class PendingMessageQueryRequest implements TerminalProvider, Serializable {
|
||||
public class PendingMessageQueryRequest implements ClientRequest, Serializable {
|
||||
|
||||
private static final long serialVersionUID = 3981382821433771344L;
|
||||
|
||||
|
||||
@ -2,7 +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 cn.axzo.msg.center.service.pending.ClientRequest;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
@ -19,7 +19,7 @@ import java.util.Collection;
|
||||
*/
|
||||
@Setter
|
||||
@Getter
|
||||
public class PendingMessageStatisticForWorkerRequest implements TerminalProvider, Serializable {
|
||||
public class PendingMessageStatisticForWorkerRequest implements ClientRequest, Serializable {
|
||||
|
||||
private static final long serialVersionUID = 9160942889637654608L;
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@ import cn.axzo.msg.center.service.enums.BizDetailJumpStrategyEnum;
|
||||
import cn.axzo.msg.center.service.enums.BizDetailShowStrategyEnum;
|
||||
import cn.axzo.msg.center.service.enums.KVContentType;
|
||||
import cn.axzo.msg.center.service.enums.RouterCategoryEnum;
|
||||
import cn.axzo.msg.center.service.pending.TerminalProvider;
|
||||
import cn.axzo.msg.center.service.pending.ClientRequest;
|
||||
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;
|
||||
@ -28,11 +28,11 @@ public class ModelV2PropsPopulator implements ParsedModel3Visitor {
|
||||
@Nullable private final SessionUrlSelector sessionUrlSelector;
|
||||
|
||||
public ModelV2PropsPopulator(PendingMessageResponse response,
|
||||
TerminalProvider terminalProvider) {
|
||||
ClientRequest request) {
|
||||
this.response = response;
|
||||
this.sessionUrlSelector = terminalProvider == null
|
||||
this.sessionUrlSelector = request == null
|
||||
? null
|
||||
: new SessionUrlSelector(terminalProvider);
|
||||
: new SessionUrlSelector(request);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -6,7 +6,7 @@ import cn.axzo.msg.center.service.domain.parse.SessionUrl;
|
||||
import cn.axzo.msg.center.service.domain.url.WebUrl;
|
||||
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 cn.axzo.msg.center.service.pending.ClientRequest;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
@ -24,7 +24,7 @@ import static cn.axzo.msg.center.service.enums.AppTerminalTypeEnum.PC_GA_GENERAL
|
||||
@RequiredArgsConstructor
|
||||
public class SessionUrlSelector {
|
||||
|
||||
@Nullable private final TerminalProvider terminalProvider;
|
||||
@Nullable private final ClientRequest request;
|
||||
|
||||
/**
|
||||
* 根据请求客户端真实的终端类型来选择对应的URL
|
||||
@ -50,9 +50,9 @@ public class SessionUrlSelector {
|
||||
|
||||
private SessionUrl selectWeb(
|
||||
AppTerminalTypeEnum selectAppType, WebUrl webUrl) {
|
||||
if (terminalProvider == null)
|
||||
if (request == null)
|
||||
return null;
|
||||
if (terminalProvider.getAppTerminalType() != selectAppType)
|
||||
if (request.getAppTerminalType() != selectAppType)
|
||||
return null;
|
||||
if (webUrl == null)
|
||||
return null;
|
||||
@ -61,13 +61,13 @@ public class SessionUrlSelector {
|
||||
|
||||
private SessionUrl selectApp(
|
||||
AppTerminalTypeEnum selectAppType, MobileUrlConfig mobileUrl) {
|
||||
if (terminalProvider == null)
|
||||
if (request == null)
|
||||
return null;
|
||||
if (terminalProvider.getAppTerminalType() != selectAppType)
|
||||
if (request.getAppTerminalType() != selectAppType)
|
||||
return null;
|
||||
if (mobileUrl == null)
|
||||
return null;
|
||||
TerminalTypeEnum terminalType = terminalProvider.getTerminalType();
|
||||
TerminalTypeEnum terminalType = request.getTerminalType();
|
||||
if (mobileUrl.getIos() != null && terminalType == TerminalTypeEnum.IOS)
|
||||
return new SessionUrl(TerminalTypeEnum.IOS, mobileUrl.getIos());
|
||||
if (mobileUrl.getAndroid() != null && terminalType == TerminalTypeEnum.ANDROID)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user