Merge branch 'feature/REQ-3045' into dev

This commit is contained in:
yanglin 2024-10-14 15:40:00 +08:00
commit 52daecb38e
12 changed files with 262 additions and 63 deletions

View File

@ -14,7 +14,7 @@ import java.util.List;
*/
@Setter
@Getter
public class MessageTemplateV3Model {
public class MessageTemplateModelV3 {
@NotNull private MessageTemplateV3 template;
@NotNull private List<MessageTemplateGroupV3> groups;

View File

@ -45,6 +45,7 @@ import cn.axzo.msg.center.message.service.MessageGroupNodeService;
import cn.axzo.msg.center.message.service.MessageTemplateGroupService;
import cn.axzo.msg.center.message.service.MessageTemplateNewService;
import cn.axzo.msg.center.message.service.PendingMessageNewService;
import cn.axzo.msg.center.message.service.impl.v3.model.OldTemplateModelPropsPopulator;
import cn.axzo.msg.center.message.service.todo.MigrateUtils;
import cn.axzo.msg.center.message.service.todo.manage.TodoExt;
import cn.axzo.msg.center.notices.common.enums.IsDeletedEnum;
@ -155,6 +156,7 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService {
private final PendingMessageBizConfig pendingMessageBizConfig;
private final MessageGroupNodeDao messageGroupNodeDao;
private final MessageRouterUtil messageRouterUtil;;
private final OldTemplateModelPropsPopulator oldTemplateModelPropsPopulator;
@Value("${msg.center.pending.hide-seconds:60}")
private int pendingDefaultHideSeconds;

View File

@ -0,0 +1,10 @@
package cn.axzo.msg.center.message.service.impl.v3.model;
import org.springframework.stereotype.Component;
/**
* @author yanglin
*/
@Component
public class OldTemplateModelPropsPopulator {
}

View File

@ -1,29 +0,0 @@
package cn.axzo.msg.center.message.service.impl.v3.model;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
/**
* @author yanglin
*/
@Setter
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public class ParseSettings {
public static ParseSettings none() {
return new ParseSettings(false, false);
}
public static ParseSettings parseUrl() {
return new ParseSettings(true, false);
}
public static ParseSettings parseProps() {
return new ParseSettings(true, true);
}
private final boolean parseUrl;
private final boolean parseKv;
}

View File

@ -0,0 +1,15 @@
package cn.axzo.msg.center.message.service.impl.v3.model;
import cn.axzo.msg.center.message.domain.dto.MessageTemplateModelV3;
import org.springframework.stereotype.Component;
/**
* @author yanglin
*/
@Component
class TemplateModelV3PropsParser {
void parse(MessageTemplateModelV3 model) {
}
}

View File

@ -6,7 +6,7 @@ import cn.axzo.msg.center.dal.MessageTemplateV3Dao;
import cn.axzo.msg.center.domain.entity.MessageTemplateButtonV3;
import cn.axzo.msg.center.domain.entity.MessageTemplateGroupV3;
import cn.axzo.msg.center.domain.entity.MessageTemplateV3;
import cn.axzo.msg.center.message.domain.dto.MessageTemplateV3Model;
import cn.axzo.msg.center.message.domain.dto.MessageTemplateModelV3;
import cn.axzo.msg.center.service.enums.StatusEnum;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections4.CollectionUtils;
@ -26,14 +26,14 @@ import static java.util.stream.Collectors.toList;
*/
@Service
@RequiredArgsConstructor
public class MessageTemplateV3ModelService {
public class TemplateModelV3Service {
private final MessageTemplateV3Dao messageTemplateV3Dao;
private final MessageTemplateGroupV3Dao messageTemplateGroupV3Dao;
private final MessageTemplateButtonV3Dao messageTemplateButtonV3Dao;
private final V3ModelPropsParser v3ModelPropsParser;
private final TemplateModelV3PropsParser propsParser;
public Optional<MessageTemplateV3Model> findEnabledByCode(String templateCode, ParseSettings parseSettings) {
public Optional<MessageTemplateModelV3> findEnabledByCode(String templateCode, boolean parseProps) {
MessageTemplateV3 template = messageTemplateV3Dao.lambdaQuery()
.eq(MessageTemplateV3::getCode, templateCode)
.eq(MessageTemplateV3::getIsDelete, 0)
@ -41,18 +41,18 @@ public class MessageTemplateV3ModelService {
.one();
if (template == null)
return Optional.empty();
ModelBuilder builder = new ModelBuilder(parseSettings, templateCode);
ModelBuilder builder = new ModelBuilder(parseProps, templateCode);
return Optional.of(builder.build(template));
}
public List<MessageTemplateV3Model> getByCodes(List<String> templateCodes, ParseSettings parseSettings) {
public List<MessageTemplateModelV3> getByCodes(List<String> templateCodes, boolean parseProps) {
if (CollectionUtils.isEmpty(templateCodes))
return Collections.emptyList();
List<MessageTemplateV3> templates = messageTemplateV3Dao.lambdaQuery()
.in(MessageTemplateV3::getCode, templateCodes)
.eq(MessageTemplateV3::getIsDelete, 0)
.list();
ModelBuilder builder = new ModelBuilder(parseSettings, templateCodes.toArray(new String[0]));
ModelBuilder builder = new ModelBuilder(parseProps, templateCodes.toArray(new String[0]));
return templates.stream()
.map(builder::build)
.collect(toList());
@ -61,12 +61,12 @@ public class MessageTemplateV3ModelService {
@RequiredArgsConstructor
private class ModelBuilder {
final ParseSettings parseSettings;
final boolean parseProps;
final Map<String, List<MessageTemplateGroupV3>> templateCode2Groups;
final Map<String, List<MessageTemplateButtonV3>> templateCode2Buttons;
ModelBuilder(ParseSettings parseSettings, String... templateCodes) {
this.parseSettings = parseSettings;
ModelBuilder(boolean parseProps, String... templateCodes) {
this.parseProps = parseProps;
if (templateCodes.length > 0) {
templateCode2Groups = messageTemplateGroupV3Dao.lambdaQuery()
.in(MessageTemplateGroupV3::getTemplateCode, Arrays.asList(templateCodes))
@ -82,12 +82,12 @@ public class MessageTemplateV3ModelService {
}
}
MessageTemplateV3Model build(MessageTemplateV3 template) {
MessageTemplateV3Model model = new MessageTemplateV3Model();
MessageTemplateModelV3 build(MessageTemplateV3 template) {
MessageTemplateModelV3 model = new MessageTemplateModelV3();
model.setTemplate(template);
model.setGroups(templateCode2Groups.getOrDefault(template.getCode(), Collections.emptyList()));
model.setButtons(templateCode2Buttons.getOrDefault(template.getCode(), Collections.emptyList()));
v3ModelPropsParser.parse(model, parseSettings);
propsParser.parse(model);
return model;
}

View File

@ -1,15 +0,0 @@
package cn.axzo.msg.center.message.service.impl.v3.model;
import cn.axzo.msg.center.message.domain.dto.MessageTemplateV3Model;
import org.springframework.stereotype.Component;
/**
* @author yanglin
*/
@Component
class V3ModelPropsParser {
void parse(MessageTemplateV3Model model, ParseSettings parseSettings) {
}
}

View File

@ -14,13 +14,9 @@ import cn.axzo.msg.center.service.enums.OrganizationTypeEnum;
import cn.axzo.msg.center.service.enums.PendingMessageStateEnum;
import cn.axzo.msg.center.service.enums.TodoQueryType;
import cn.axzo.msg.center.service.enums.TodoType;
import cn.axzo.msg.center.service.pending.response.v3.TodoModelV3;
import cn.axzo.msg.center.service.template.response.MessageDetailStyle;
import com.alibaba.fastjson.JSON;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import com.alibaba.fastjson.JSONObject;
import lombok.AllArgsConstructor;
import lombok.Builder;
@ -250,6 +246,11 @@ public class PendingMessageResponse implements Serializable, TodoButtonProvider
private JSONObject bizExtParamObj;
private JSONObject routerExtParamObj;
/**
* 基于分组的待办信息
*/
private TodoModelV3 modelV3;
public void adjustProposedButtons(boolean forPromoter) {
ProposedButtonFilter.adjustProposedButtons(this, forPromoter);
}

View File

@ -0,0 +1,75 @@
package cn.axzo.msg.center.service.pending.response.v3;
import cn.axzo.msg.center.service.domain.UrlConfig;
import cn.axzo.msg.center.service.enums.PresetButtonType;
import cn.axzo.msg.center.service.enums.RouterButtonSourceEnum;
import cn.axzo.msg.center.service.enums.RouterCategoryEnum;
import com.alibaba.fastjson.JSONArray;
import lombok.Getter;
import lombok.Setter;
/**
* @author yanglin
*/
@Setter
@Getter
public class TodoButtonV3 {
private Long id;
/**
* 按钮名称
*/
private String name;
/**
* 编码
*/
private String code;
/**
* 预设按钮类型
*/
private PresetButtonType presetBtnType;
/**
* 按钮来源
*/
private RouterButtonSourceEnum source;
/**
* 路由类型
*/
private RouterCategoryEnum category;
/**
* API地址,仅当按钮是接口调用类型时有值
*/
private String apiUrl;
/**
* 按钮链接配置
*/
private UrlConfig urlConfig;
/**
* 按钮style配置
*/
private JSONArray style;
/**
* 执行人可见true 不可见false
*/
private Boolean executorShow;
/**
* 待办状态可见可见true 不可见false
*/
private Boolean pendingShow;
/**
* 按钮优先级数值越大优先级越低
*/
private Integer priority;
}

View File

@ -0,0 +1,41 @@
package cn.axzo.msg.center.service.pending.response.v3;
import cn.axzo.msg.center.service.domain.GroupConfig;
import cn.axzo.msg.center.service.enums.GroupType;
import lombok.Getter;
import lombok.Setter;
/**
* @author yanglin
*/
@Setter
@Getter
public class TodoGroupV3 {
private Long id;
/**
* 分组名称, 公共组件时为空
*/
private String name;
/**
* 分组类型. KV_VALUES: 键值信息; COMPONENT_WORKER:工人卡片
*/
private GroupType groupType;
// !! 分组内容
/**
* 分组信息. groupType=KV_VALUES读这个信息
*/
private GroupConfig groupInfo;
/**
* 工人卡片信息. groupType=COMPONENT_WORKER读这个信息
* <p/>
* 由yoke填充
*/
private WorkerInfo workerInfo;
}

View File

@ -0,0 +1,36 @@
package cn.axzo.msg.center.service.pending.response.v3;
import cn.axzo.msg.center.service.enums.GroupType;
import lombok.Getter;
import lombok.Setter;
import java.util.Collections;
import java.util.List;
import static java.util.stream.Collectors.toList;
/**
* @author yanglin
*/
@Setter
@Getter
public class TodoModelV3 {
private List<TodoGroupV3> groups;
private List<TodoButtonV3> buttons;
public List<TodoGroupV3> getGroups(GroupType type) {
return determineGroups().stream()
.filter(group -> group.getGroupType() == type)
.collect(toList());
}
public List<TodoGroupV3> determineGroups() {
return groups == null ? Collections.emptyList() : groups;
}
public List<TodoButtonV3> determineButtons() {
return buttons == null ? Collections.emptyList() : buttons;
}
}

View File

@ -0,0 +1,63 @@
package cn.axzo.msg.center.service.pending.response.v3;
import cn.axzo.trade.datasecurity.sd.extension.annotation.SDCellPhoneField;
import cn.axzo.trade.datasecurity.sd.extension.annotation.SDIdCardField;
import lombok.Getter;
import lombok.Setter;
import java.util.Date;
/**
* @author yanglin
*/
@Setter
@Getter
public class WorkerInfo {
/**
* 员工姓名
*/
private String name;
/**
* 头像
*/
private String icon;
/**
* 手机号码
*/
@SDCellPhoneField
private String phone;
/**
* 手机号码密文
*/
private String phoneCiphertext;
/**
* 生日
*/
private Date birthday;
/**
* 名族
*/
private String nationality;
/**
* 身份证号
*/
@SDIdCardField
private String idNumber;
/**
* 身份证号密文
*/
private String idNumberCiphertext;
/**
* 身份信息校验
*/
private Boolean identityValid;
/**
* 银行卡信息校验
*/
private Boolean cardValid;
/**
* 工种
*/
private String professionNames;
}