package jnpf.message.service.impl; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import jnpf.base.ActionResult; import jnpf.base.service.SuperServiceImpl; import jnpf.constant.MsgCode; import jnpf.exception.DataException; import jnpf.message.entity.MessageTemplateConfigEntity; import jnpf.message.entity.SmsFieldEntity; import jnpf.message.entity.TemplateParamEntity; import jnpf.message.mapper.MessageTemplateConfigMapper; import jnpf.message.mapper.SmsFieldMapper; import jnpf.message.mapper.TemplateParamMapper; import jnpf.message.model.messagetemplateconfig.MessageTemplateConfigForm; import jnpf.message.model.messagetemplateconfig.MessageTemplateConfigPagination; import jnpf.message.model.messagetemplateconfig.TemplateParamModel; import jnpf.message.service.MessageTemplateConfigService; import jnpf.util.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 消息模板(新) * 版本: V3.2.0 * 版权: 引迈信息技术有限公司(https://www.jnpfsoft.com) * 作者: JNPF开发平台组 * 日期: 2022-08-18 */ @Service public class MessageTemplateConfigServiceImpl extends SuperServiceImpl implements MessageTemplateConfigService { @Autowired private TemplateParamMapper templateParamMapper; @Autowired private SmsFieldMapper smsFieldMapper; @Override public List getList(MessageTemplateConfigPagination MessageTemplateConfigPagination) { return this.baseMapper.getList(MessageTemplateConfigPagination); } @Override public List getTypeList(MessageTemplateConfigPagination MessageTemplateConfigPagination, String dataType) { return this.baseMapper.getTypeList(MessageTemplateConfigPagination, dataType); } @Override public MessageTemplateConfigEntity getInfo(String id) { return this.baseMapper.getInfo(id); } @Override public MessageTemplateConfigEntity getInfoByEnCode(String enCode, String messageType) { return this.baseMapper.getInfoByEnCode(enCode, messageType); } @Override public void create(MessageTemplateConfigEntity entity) { this.save(entity); } @Override public boolean update(String id, MessageTemplateConfigEntity entity) { entity.setId(id); return this.updateById(entity); } @Override public void delete(MessageTemplateConfigEntity entity) { if (entity != null) { this.removeById(entity.getId()); } } @Override public List getTemplateParamList(String id) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(TemplateParamEntity::getTemplateId, id); return templateParamMapper.selectList(queryWrapper); } @Override public List getSmsFieldList(String id) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(SmsFieldEntity::getTemplateId, id); return smsFieldMapper.selectList(queryWrapper); } //验证表单唯一字段 @Override public boolean checkForm(MessageTemplateConfigForm form, int i, String id) { int total = 0; if (ObjectUtil.isNotEmpty(form.getEnCode())) { QueryWrapper codeWrapper = new QueryWrapper<>(); codeWrapper.lambda().eq(MessageTemplateConfigEntity::getEnCode, form.getEnCode()); if (StringUtil.isNotBlank(id) && !"null".equals(id)) { codeWrapper.lambda().ne(MessageTemplateConfigEntity::getId, id); } if ((int) this.count(codeWrapper) > i) { total++; } } if (form.getTemplateParamList() != null) { } if (form.getSmsFieldList() != null) { } if (total > 0) { return true; } return false; } @Override public boolean isExistByFullName(String fullName, String id) { return this.baseMapper.isExistByFullName(fullName, id); } @Override public boolean isExistByEnCode(String enCode, String id) { return this.baseMapper.isExistByEnCode(enCode, id); } @Override public ActionResult ImportData(MessageTemplateConfigEntity entity) throws DataException { if (entity != null) { if (isExistByEnCode(entity.getEnCode(), entity.getId())) { return ActionResult.fail(MsgCode.EXIST002.get()); } try { this.save(entity); } catch (Exception e) { throw new DataException(MsgCode.IMP003.get()); } return ActionResult.success(MsgCode.IMP001.get()); } return ActionResult.fail(MsgCode.IMP006.get()); } @Override public List getParamJson(String id) { MessageTemplateConfigEntity entity = getInfo(id); List paramModelList = new ArrayList<>(); List smsField = new ArrayList<>(); List paramList = new ArrayList<>(); if (entity != null) { if ("3".equals(entity.getMessageType()) || "7".equals(entity.getMessageType())) { List smsFieldList = smsFieldMapper.getDetailListByParentId(id); for (SmsFieldEntity entity1 : smsFieldList) { if (!"@flowLink".equals(entity1.getField())) { smsField.add(entity1.getField()); } } List paramFieldList = templateParamMapper.getDetailListByParentId(id); for (TemplateParamEntity entity1 : paramFieldList) { if (smsField.contains(entity1.getField())) { TemplateParamModel paramModel = new TemplateParamModel(); paramModel.setTemplateId(entity.getId()); paramModel.setTemplateCode(entity.getEnCode()); paramModel.setTemplateType(entity.getTemplateType()); paramModel.setField(entity1.getField()); paramModel.setFieldName(entity1.getFieldName()); paramModel.setId(entity1.getId()); paramModel.setTemplateName(entity.getFullName()); paramModelList.add(paramModel); } } } else { String content = StringUtil.isNotEmpty(entity.getContent()) ? entity.getContent() : ""; String title = StringUtil.isNotEmpty(entity.getTitle()) ? entity.getTitle() : ""; Set list = new HashSet<>(); list.addAll(regexContent(content)); list.addAll(regexContent(title)); List paramFieldList = templateParamMapper.getDetailListByParentId(id); for (TemplateParamEntity entity1 : paramFieldList) { TemplateParamModel paramModel = new TemplateParamModel(); paramModel.setTemplateId(entity.getId()); paramModel.setTemplateCode(entity.getEnCode()); paramModel.setTemplateType(entity.getTemplateType()); paramModel.setField(entity1.getField()); paramModel.setFieldName(entity1.getFieldName()); paramModel.setId(entity1.getId()); paramModel.setTemplateName(entity.getFullName()); if (list.contains(entity1.getField())) { if (!"@FlowLink".equals(entity1.getField()) && !"@CreatorUserName".equals(entity1.getField()) && !"@SendTime".equals(entity1.getField()) && !"@Mandator".equals(entity1.getField()) && !"@Mandatary".equals(entity1.getField()) ) { paramModelList.add(paramModel); } } } } } //将参数模板转为json格式数据 // String data = JsonUtil.getObjectToString(paramModelList); return paramModelList; } //获取消息内容参数 public List regexContent(String content) { List list = new ArrayList<>(); String pattern = "[{]([^}]+)[}]"; Pattern patternList = Pattern.compile(pattern); Matcher m = patternList.matcher(content); while (m.find()) { String group = m.group().replaceAll("\\{", "").replaceAll("}", ""); list.add(group); } return list; } }