REQ-3046: 设置卡片的跳转
This commit is contained in:
parent
f1927eb7c2
commit
d5a78772d4
@ -2,7 +2,7 @@ package cn.axzo.msg.center.message.domain.dto;
|
||||
|
||||
import cn.axzo.msg.center.api.custombutton.ProposedButtons;
|
||||
import cn.axzo.msg.center.domain.entity.PendingMessageRecord;
|
||||
import cn.axzo.msg.center.service.domain.CardUrlConfig;
|
||||
import cn.axzo.msg.center.service.domain.UrlConfig;
|
||||
import cn.axzo.msg.center.service.dto.IdentityDTO;
|
||||
import cn.axzo.msg.center.service.dto.MessageCardContentItemDTO;
|
||||
import cn.axzo.msg.center.service.dto.PersonDTO;
|
||||
@ -230,7 +230,7 @@ public class PendingMessageDTO implements Serializable {
|
||||
/**
|
||||
* 卡片跳转配置. 在links的基础上再包一层, 避免以后卡片增加自己的配置
|
||||
*/
|
||||
private CardUrlConfig cardUrlConfig;
|
||||
private UrlConfig cardUrl;
|
||||
|
||||
@Deprecated
|
||||
public static PendingMessageDTO from(PendingMessageRecord pendingMessageRecord) {
|
||||
@ -342,7 +342,7 @@ public class PendingMessageDTO implements Serializable {
|
||||
.modelV3(modelV3)
|
||||
.displayOnCardKeyValues(modelV3.determineDisplayOnCardKeyValues())
|
||||
.cardUrlOpenStrategy(cardUrlOpenStrategy)
|
||||
.cardUrlConfig(cardUrlConfig)
|
||||
.cardUrl(cardUrl)
|
||||
.build();
|
||||
if (modelV3 != null)
|
||||
ParsedModel3Walker.walkDown(modelV3, new ModelV2PropsPopulator(response, terminalProvider));
|
||||
|
||||
@ -6,7 +6,6 @@ import cn.axzo.maokai.api.vo.response.OrganizationalTeamOuRelationResp;
|
||||
import cn.axzo.msg.center.common.enums.TableIsDeleteEnum;
|
||||
import cn.axzo.msg.center.common.utils.BizAssertions;
|
||||
import cn.axzo.msg.center.dal.MessageGroupNodeDao;
|
||||
import cn.axzo.msg.center.dal.PendingMessageRecordDao;
|
||||
import cn.axzo.msg.center.domain.entity.MessageGroupNode;
|
||||
import cn.axzo.msg.center.domain.entity.PendingMessageRecord;
|
||||
import cn.axzo.msg.center.domain.entity.PendingRecordAdapter;
|
||||
@ -17,39 +16,30 @@ import cn.axzo.msg.center.message.domain.dto.TemplateModelV3;
|
||||
import cn.axzo.msg.center.message.service.impl.v3.ModelV3Parser;
|
||||
import cn.axzo.msg.center.message.service.todo.MigrateUtils;
|
||||
import cn.axzo.msg.center.message.service.todo.manage.TodoExt;
|
||||
import cn.axzo.msg.center.service.dto.IdentityDTO;
|
||||
import cn.axzo.msg.center.service.dto.PersonDTO;
|
||||
import cn.axzo.msg.center.service.domain.UrlConfig;
|
||||
import cn.axzo.msg.center.service.enums.AppTerminalTypeEnum;
|
||||
import cn.axzo.msg.center.service.enums.BizCategoryEnum;
|
||||
import cn.axzo.msg.center.service.enums.IdentityTypeEnum;
|
||||
import cn.axzo.msg.center.service.enums.OrganizationTypeEnum;
|
||||
import cn.axzo.msg.center.service.enums.PendingMessageRoleCategoryEnum;
|
||||
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.ParsedModelV3;
|
||||
import cn.axzo.msg.center.service.template.response.MessageDetailStyle;
|
||||
import cn.axzo.msg.center.utils.DateFormatUtil;
|
||||
import cn.axzo.msg.center.utils.JSONObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
|
||||
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static java.util.function.Function.identity;
|
||||
import static java.util.stream.Collectors.toMap;
|
||||
@ -66,7 +56,6 @@ import static java.util.stream.Collectors.toSet;
|
||||
@RequiredArgsConstructor
|
||||
public class PendingMessageNewServiceImpl {
|
||||
|
||||
private final PendingMessageRecordDao pendingMessageRecordDao;
|
||||
private final OrganizationalTeamOuRelationApi organizationalTeamOuRelationApi;
|
||||
private final PendingMessageBizConfig pendingMessageBizConfig;
|
||||
private final MessageGroupNodeDao messageGroupNodeDao;
|
||||
@ -106,7 +95,7 @@ public class PendingMessageNewServiceImpl {
|
||||
public PendingMessageDTO convertV3(PendingRecordAdapter adapter, List<TemplateModelV3> templateModels) {
|
||||
PendingMessageDTO pendingMessage;
|
||||
if (adapter instanceof PendingMessageRecord) {
|
||||
pendingMessage = PendingMessageDTO.from((PendingMessageRecord)adapter);
|
||||
pendingMessage = PendingMessageDTO.from((PendingMessageRecord) adapter);
|
||||
} else {
|
||||
pendingMessage = PendingMessageDTO.from(MigrateUtils.convertAdapterToPending(adapter));
|
||||
}
|
||||
@ -169,55 +158,16 @@ public class PendingMessageNewServiceImpl {
|
||||
adapter.getBizExtParamObj(), authParam, routerParam);
|
||||
pendingMessage.setModelV3(parsedModel);
|
||||
pendingMessage.setCardUrlOpenStrategy(templateModel.getTemplate().getCardUrlOpenStrategy());
|
||||
pendingMessage.setCardUrlConfig(templateModel.getTemplate().getCardUrlConfig());
|
||||
ParsedModel3Walker.walkDown(parsedModel, new ParsedModel3Visitor() {
|
||||
@Override
|
||||
public void visitTemplateCardUrlConfig(UrlConfig urlConfig) {
|
||||
pendingMessage.setCardUrl(urlConfig);
|
||||
}
|
||||
});
|
||||
}
|
||||
return pendingMessage;
|
||||
}
|
||||
|
||||
private void buildPersonCondition(LambdaQueryChainWrapper<PendingMessageRecord> query, Boolean withIdentify,
|
||||
PendingMessageRoleCategoryEnum roleCategory, PersonDTO operator) {
|
||||
IdentityDTO identity = null;
|
||||
if (Objects.equals(withIdentify, true)) {
|
||||
// 代办需要对身份进行隔离
|
||||
identity = operator.getIdentity();
|
||||
}
|
||||
SFunction<PendingMessageRecord, Long> personIdFunc;
|
||||
SFunction<PendingMessageRecord, Long> identityIdFunc;
|
||||
SFunction<PendingMessageRecord, IdentityTypeEnum> identityTypeFunc;
|
||||
if (Objects.equals(PendingMessageRoleCategoryEnum.PROMOTER, roleCategory)) {
|
||||
// 代办发起者查询条件
|
||||
personIdFunc = PendingMessageRecord::getPromoterPersonId;
|
||||
identityIdFunc = PendingMessageRecord::getPromoterId;
|
||||
identityTypeFunc = PendingMessageRecord::getPromoterType;
|
||||
buildPromoterCondition(query, operator);
|
||||
} else {
|
||||
// 代办执行者查询条件
|
||||
personIdFunc = PendingMessageRecord::getExecutorPersonId;
|
||||
identityIdFunc = PendingMessageRecord::getExecutorId;
|
||||
identityTypeFunc = PendingMessageRecord::getExecutorType;
|
||||
}
|
||||
query.eq(personIdFunc, operator.getId());
|
||||
if (Objects.nonNull(identity) && identity.isValid()) {
|
||||
query.eq(identityIdFunc, identity.getId());
|
||||
query.eq(identityTypeFunc, identity.getType());
|
||||
}
|
||||
}
|
||||
|
||||
private void buildPromoterCondition(LambdaQueryChainWrapper<PendingMessageRecord> query, PersonDTO operator) {
|
||||
Date queryFrom = DateFormatUtil.toDate(LocalDateTime.now().minusDays(90));
|
||||
List<PendingMessageRecord> records = pendingMessageRecordDao.lambdaQuery()
|
||||
.eq(PendingMessageRecord::getPromoterPersonId, operator.getId())
|
||||
.gt(PendingMessageRecord::getCreateAt, queryFrom)
|
||||
.select(PendingMessageRecord::getId, PendingMessageRecord::getRequestNo)
|
||||
.list();
|
||||
Map<String, List<PendingMessageRecord>> map = records.stream()
|
||||
.collect(Collectors.groupingBy(PendingMessageRecord::getRequestNo));
|
||||
List<Long> ids = map.values().stream()
|
||||
.map(e -> e.stream().mapToLong(PendingMessageRecord::getId).max().orElse(0))
|
||||
.collect(Collectors.toList());
|
||||
query.in(CollectionUtils.isNotEmpty(ids), PendingMessageRecord::getId, ids);
|
||||
}
|
||||
|
||||
@NotEmpty
|
||||
public List<Long> determineOuIds(Long ouId) {
|
||||
List<Long> ouIds = new ArrayList<>();
|
||||
|
||||
@ -2,7 +2,7 @@ package cn.axzo.msg.center.service.pending.response;
|
||||
|
||||
import cn.axzo.msg.center.api.custombutton.ProposedButtonFilter;
|
||||
import cn.axzo.msg.center.api.custombutton.ProposedButtons;
|
||||
import cn.axzo.msg.center.service.domain.CardUrlConfig;
|
||||
import cn.axzo.msg.center.service.domain.UrlConfig;
|
||||
import cn.axzo.msg.center.service.dto.ButtonRouterDTO;
|
||||
import cn.axzo.msg.center.service.dto.DetailRouterDTO;
|
||||
import cn.axzo.msg.center.service.dto.IdentityDTO;
|
||||
@ -265,9 +265,9 @@ public class PendingMessageResponse implements Serializable, TodoButtonProvider
|
||||
private CardUrlOpenStrategy cardUrlOpenStrategy;
|
||||
|
||||
/**
|
||||
* 卡片跳转配置. 在links的基础上再包一层, 避免以后卡片增加自己的配置
|
||||
* 卡片跳转
|
||||
*/
|
||||
private CardUrlConfig cardUrlConfig;
|
||||
private UrlConfig cardUrl;
|
||||
|
||||
public void adjustProposedButtons(boolean forPromoter) {
|
||||
ProposedButtonFilter.adjustProposedButtons(this, forPromoter);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user