diff --git a/laws-base/laws-base-core/src/main/java/com/jero/common/api/vo/ResultCommon.java b/laws-base/laws-base-core/src/main/java/com/jero/common/api/vo/ResultCommon.java index af7ee6e8..8980955d 100644 --- a/laws-base/laws-base-core/src/main/java/com/jero/common/api/vo/ResultCommon.java +++ b/laws-base/laws-base-core/src/main/java/com/jero/common/api/vo/ResultCommon.java @@ -221,5 +221,7 @@ public class ResultCommon { // 当前节点下存在子集 public static final String NODE_EXIST_SUBSETS = "node.exist.subsets"; + // 社团名称不能重复 + public static final String CLUB_ALREADY_EXISTS = "club.already.exists"; } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/club/entity/LawsClub.java b/laws-modules/src/main/java/com/jero/modules/laws/club/entity/LawsClub.java index fbf32619..a568960e 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/club/entity/LawsClub.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/club/entity/LawsClub.java @@ -12,7 +12,6 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import org.jeecgframework.poi.excel.annotation.Excel; -import org.jeecgframework.poi.excel.annotation.ExcelCollection; import org.springframework.format.annotation.DateTimeFormat; /** @@ -37,8 +36,8 @@ public class LawsClub implements Serializable { private String id; @ApiModelProperty(value = "上级节点id") - @Dict(dictTable = "laws_club", dicCode = "id", dicText = "node_type") - @Excel(name = "上级节点", width = 20, dicText = "node_type", dicCode = "id", dictTable = "laws_club") + @Dict(dictTable = "laws_club", dicCode = "id", dicText = "club_name") + @Excel(name = "上级节点", width = 20, dicText = "club_name", dicCode = "id", dictTable = "laws_club") private String parentId; @ApiModelProperty(value = "节点类型") @@ -87,7 +86,6 @@ public class LawsClub implements Serializable { @TableField(exist = false) @ApiModelProperty(value = "入团信息列表数据") -// @ExcelCollection(name = "入团信息") private List lawsClubJoinTeamList; @TableField(exist = false) @@ -96,7 +94,6 @@ public class LawsClub implements Serializable { @TableField(exist = false) @ApiModelProperty(value = "参会信息列表数据") -// @ExcelCollection(name = "参会信息") private List lawsClubMeetings; @TableField(exist = false) @@ -105,7 +102,6 @@ public class LawsClub implements Serializable { @TableField(exist = false) @ApiModelProperty(value = "征集调研信息列表数据") -// @ExcelCollection(name = "征集调研信息") private List lawsClubResearchInformations; @TableField(exist = false) diff --git a/laws-modules/src/main/java/com/jero/modules/laws/club/service/impl/LawsClubJoinTeamServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/club/service/impl/LawsClubJoinTeamServiceImpl.java index 53baf0ed..73355ef0 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/club/service/impl/LawsClubJoinTeamServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/club/service/impl/LawsClubJoinTeamServiceImpl.java @@ -64,8 +64,7 @@ public class LawsClubJoinTeamServiceImpl extends ServiceImpl @@ -29,6 +57,16 @@ import java.util.List; @Service public class LawsClubMeetingServiceImpl extends ServiceImpl implements ILawsClubMeetingService { + @Resource + private ISysUserService sysUserService; + @Resource + private ISysDepartService sysDepartService; + @Resource + private ISysDictService sysDictService; + @Resource + private IOSSFileService iossFileService; + + @Override @SneakyThrows public void exportTemplate(HttpServletRequest request, HttpServletResponse response) { @@ -36,8 +74,7 @@ public class LawsClubMeetingServiceImpl extends ServiceImpl importExcel(HttpServletRequest request) { - return null; + MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; + Map fileMap = multipartRequest.getFileMap(); + List lawsClubMeetingList = new ArrayList<>(); + for (Map.Entry entity : fileMap.entrySet()) { + MultipartFile file = entity.getValue();// 获取上传文件对象 + try { + ImportParams params = new ImportParams(); + params.setNeedSave(false); + List excelList = ExcelImportUtil.importExcel(file.getInputStream(), LawsClubMeetingExcel.class, params); + excelList = excelList.stream().skip(2).filter(item -> !Objects.isNull(item)).collect(Collectors.toList()); + if (CollectionUtils.isEmpty(excelList)) { + throw new JeroBootException("没有数据可导入"); + } + // 处理分类数据 + List meetingExcels = processingMeetingData(excelList); + StringBuilder msg = validateExcelData(meetingExcels); // 校验数据 + if (StringUtils.isNotEmpty(msg.toString())) { + return Result.error(msg.toString()); + } + // 保存数据 + for (LawsClubMeetingExcel lawsClubMeetingExcel : meetingExcels) { + LawsClubMeeting lawsClubMeeting = new LawsClubMeeting(); + BeanUtils.copyProperties(lawsClubMeetingExcel, lawsClubMeeting); + lawsClubMeetingList.add(lawsClubMeeting); + } + }catch (Exception e) { + log.error(e.getMessage(),e); + return Result.error("文件导入失败:"+e.getMessage()); + } finally { + try { + file.getInputStream().close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return Result.OK(lawsClubMeetingList); } + + private StringBuilder validateExcelData(List meetingExcels) { + StringBuilder msg = new StringBuilder(); + // 拿到这个流程的名称 + List specializedModuleList = sysDictService.getDictItems("professional_module"); + List ynList = sysDictService.getDictItems("yn"); + Map specializedModuleMap = specializedModuleList.stream().collect(Collectors.toMap(DictModel::getText, DictModel::getValue)); + Map ynMap = ynList.stream().collect(Collectors.toMap(DictModel::getText, DictModel::getValue)); + for (int i = 0; i < meetingExcels.size(); i++) { + LawsClubMeetingExcel lawsClubMeetingExcel = meetingExcels.get(i); + StringBuilder msgSub = new StringBuilder(); + // 校验会议日期 + if (StringUtils.isNotBlank(lawsClubMeetingExcel.getMeetingDate())) { + try { + LocalDate.parse(lawsClubMeetingExcel.getMeetingDate()); + } catch (Exception e) { + msgSub.append(getErrorMsg(i, "会议日期格式不正确;")); + } + } + // 校验计划完成日期 + if (StringUtils.isNotBlank(lawsClubMeetingExcel.getPlanCompletionDate())) { + try { + LocalDate.parse(lawsClubMeetingExcel.getPlanCompletionDate()); + } catch (Exception e) { + msgSub.append(getErrorMsg(i, "计划完成日期格式不正确;")); + } + } + // 校验通知人 + if (StringUtils.isNotBlank(lawsClubMeetingExcel.getNotifierId())) { + String fullName = extractFullName(lawsClubMeetingExcel.getNotifierId()); + String notifierId = extractEmployeeId(lawsClubMeetingExcel.getNotifierId()); + SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper().eq(SysUser::getUsername, notifierId).eq(SysUser::getRealname,fullName),false); + if (Objects.isNull(sysUser)) { + msgSub.append(getErrorMsg(i, "通知人不存在;")); + }else { + lawsClubMeetingExcel.setNotifierId(sysUser.getId()); + } + } + // 校验通知部门 + if (StringUtils.isNotBlank(lawsClubMeetingExcel.getNotifyDepartId())) { + List sysDepart = sysDepartService.list(new LambdaQueryWrapper().eq(SysDepart::getDepartName, lawsClubMeetingExcel.getNotifyDepartId())); + if (CollectionUtils.isEmpty(sysDepart)) { + msgSub.append(getErrorMsg(i, "通知部门不存在;")); + }else { + lawsClubMeetingExcel.setNotifyDepartId((sysDepart.get(0).getId())); + } + } + // 校验通知部门专业模块 + if (StringUtils.isNotBlank(lawsClubMeetingExcel.getInformSpecializedModule())) { + String informSpecializedModule = specializedModuleMap.get(lawsClubMeetingExcel.getInformSpecializedModule()); + if (StringUtils.isBlank(informSpecializedModule)) { + msgSub.append(getErrorMsg(i, "通知部门专业模块不存在;")); + }else { + lawsClubMeetingExcel.setInformSpecializedModule(informSpecializedModule); + } + } + // 校验是否宣贯 + if (StringUtils.isNotBlank(lawsClubMeetingExcel.getIsPublicize())) { + String isPublicize = ynMap.get(lawsClubMeetingExcel.getIsPublicize()); + if (StringUtils.isBlank(isPublicize)) { + msgSub.append(getErrorMsg(i, "是否宣贯请填写是或否;")); + }else { + lawsClubMeetingExcel.setIsPublicize(isPublicize); + } + } + List meetingMemberList = lawsClubMeetingExcel.getMeetingMemberList(); + // 校验参会人员的信息 + for (LawsClubMeetingMemberExcel lawsClubMeetingMemberExcel : meetingMemberList) { + // 校验参会人员 + if (StringUtils.isNotBlank(lawsClubMeetingMemberExcel.getMemberId())) { + String fullName = extractFullName(lawsClubMeetingMemberExcel.getMemberId()); + String memberId = extractEmployeeId(lawsClubMeetingMemberExcel.getMemberId()); + SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper().eq(SysUser::getUsername, memberId).eq(SysUser::getRealname, fullName),false); + if (Objects.isNull(sysUser)) { + msgSub.append(getErrorMsg(i, "参会人员:" + lawsClubMeetingMemberExcel.getMemberId() + "不存在;")); + }else { + lawsClubMeetingMemberExcel.setMemberId(sysUser.getId()); + } + } + // 校验参会部门 + if (StringUtils.isNotBlank(lawsClubMeetingMemberExcel.getDepartId())) { + List sysDepart = sysDepartService.list(new LambdaQueryWrapper().eq(SysDepart::getDepartName, lawsClubMeetingMemberExcel.getDepartId())); + if (CollectionUtils.isEmpty(sysDepart)) { + msgSub.append(getErrorMsg(i, "参会部门:" + lawsClubMeetingMemberExcel.getDepartId() + "不存在;")); + }else { + lawsClubMeetingMemberExcel.setDepartId((sysDepart.get(0).getId())); + } + } + // 校验参会部门专业模块 + if (StringUtils.isNotBlank(lawsClubMeetingMemberExcel.getMeetingSpecializedModule())) { + String meetingSpecializedModule = specializedModuleMap.get(lawsClubMeetingMemberExcel.getMeetingSpecializedModule()); + if (StringUtils.isBlank(meetingSpecializedModule)) { + msgSub.append(getErrorMsg(i, "参会部门专业模块:" + lawsClubMeetingMemberExcel.getMeetingSpecializedModule() + "不存在;")); + }else { + lawsClubMeetingMemberExcel.setMeetingSpecializedModule(meetingSpecializedModule); + } + } + // 校验参会报告 + if (StringUtils.isNotBlank(lawsClubMeetingMemberExcel.getMeetingFileId())) { + List ossFiles = iossFileService.list(new LambdaQueryWrapper() + .eq(OSSFile::getFileName, lawsClubMeetingMemberExcel.getMeetingFileId()) + .orderByDesc(OSSFile::getCreateTime) + .last("LIMIT 1")); + if (CollectionUtils.isEmpty(ossFiles)) { + msgSub.append(getErrorMsg(i, "参会报告:" + lawsClubMeetingMemberExcel.getMeetingFileId() + "不存在;")); + }else { + lawsClubMeetingMemberExcel.setMeetingFileId(ossFiles.get(0).getId()); + } + } + } + if (msgSub.length() > 0) { + msg.append(msgSub).append("
"); + } + } + return msg; + } + + // 错误消息格式化 + private String getErrorMsg(int rowIndex, String errorMsg) { + return "第" + (rowIndex + 4) + "行" + errorMsg; + } + + public String extractEmployeeId(String input) { + // 正则表达式,匹配括号内的内容 + Pattern pattern = Pattern.compile("\\((.*?)\\)"); + Matcher matcher = pattern.matcher(input); + if (matcher.find()) { + return matcher.group(1); // 返回匹配到的内容,即括号中的内容 + } + return input; // 如果没有匹配到,返回null + } + + private String extractFullName(String notifierId) { + int startIndex = notifierId.indexOf('('); + if (startIndex != -1) { + return notifierId.substring(0, startIndex).trim(); // 提取括号前的部分并去除前后的空格 + } + return notifierId; // 如果没有括号,则返回整个字符串 + } + + + private List processingMeetingData(List excelList) { + // 用于存储有效的会议记录 + List validMeetings = new ArrayList<>(); + LawsClubMeetingExcel currentMeeting = null; + // 遍历所有记录 + for (LawsClubMeetingExcel record : excelList) { + // 检查记录是否有效 + boolean isMeetingValid = isMeetingValid(record); + boolean isMemberValid = isMemberValidForMeeting(record); + // 如果记录是有效的会议记录 + if (isMeetingValid) { + // 如果有当前会议记录,保存到有效会议列表 + if (currentMeeting != null) { + validMeetings.add(currentMeeting); + } + // 创建新的会议对象 + currentMeeting = new LawsClubMeetingExcel(); + currentMeeting.setClubId(record.getClubId()); + currentMeeting.setMeetingName(record.getMeetingName()); + currentMeeting.setMeetingDate(record.getMeetingDate()); + currentMeeting.setMeetingCost(record.getMeetingCost()); + currentMeeting.setMeetingPlace(record.getMeetingPlace()); + currentMeeting.setPlanCompletionDate(record.getPlanCompletionDate()); + currentMeeting.setNotifierId(record.getNotifierId()); + currentMeeting.setNotifyDepartId(record.getNotifyDepartId()); + currentMeeting.setInformSpecializedModule(record.getInformSpecializedModule()); + currentMeeting.setIsPublicize(record.getIsPublicize()); + currentMeeting.setMeetingOrganizer(record.getMeetingOrganizer()); + currentMeeting.setMeetingContent(record.getMeetingContent()); + // 初始化成员列表 + currentMeeting.setMeetingMemberList(new ArrayList<>()); + + // 如果当前记录中的成员信息有效,则创建成员对象并添加到会议的成员列表中 + if (isMemberValid) { + LawsClubMeetingMemberExcel member = new LawsClubMeetingMemberExcel(); + member.setMemberId(record.getMemberId()); + member.setDepartId(record.getDepartId()); + member.setMeetingSpecializedModule(record.getMeetingSpecializedModule()); + member.setMeetingFileId(record.getMeetingFileId()); + member.setRemark(record.getRemark()); + currentMeeting.getMeetingMemberList().add(member); + } + } else if (currentMeeting != null && isMemberValid) { + // 如果会议记录无效但成员记录有效,将成员信息添加到当前有效会议的成员列表中 + LawsClubMeetingMemberExcel member = new LawsClubMeetingMemberExcel(); + member.setDepartId(record.getDepartId()); + member.setMeetingSpecializedModule(record.getMeetingSpecializedModule()); + member.setMeetingFileId(record.getMeetingFileId()); + member.setRemark(record.getRemark()); + currentMeeting.getMeetingMemberList().add(member); + } + } + // 处理最后一个会议对象 + if (currentMeeting != null) { + validMeetings.add(currentMeeting); + } + // 清理掉无效的会议记录 + validMeetings = validMeetings.stream() + .filter(meeting -> isMeetingValid(meeting)) + .collect(Collectors.toList()); + return validMeetings; + } + + // 判断会议记录是否有效 + public boolean isMeetingValid(LawsClubMeetingExcel record) { + return Stream.of( + record.getMeetingName(), + record.getMeetingCost(), + record.getMeetingDate(), + record.getPlanCompletionDate(), + record.getMeetingPlace(), + record.getNotifierId(), + record.getNotifyDepartId(), + record.getInformSpecializedModule(), + record.getIsPublicize(), + record.getMeetingOrganizer(), + record.getMeetingContent() + ).anyMatch(value -> value != null && !value.isEmpty()); + } + + // 判断成员记录是否有效 + public boolean isMemberValidForMeeting(LawsClubMeetingExcel record) { + return Stream.of( + record.getMemberId(), + record.getDepartId(), + record.getMeetingSpecializedModule(), + record.getMeetingFileId(), + record.getRemark() + ).anyMatch(value -> value != null && !value.isEmpty()); + } + } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/club/service/impl/LawsClubResearchInformationServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/club/service/impl/LawsClubResearchInformationServiceImpl.java index 33c09c33..29b0aaa7 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/club/service/impl/LawsClubResearchInformationServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/club/service/impl/LawsClubResearchInformationServiceImpl.java @@ -66,8 +66,7 @@ public class LawsClubResearchInformationServiceImpl extends ServiceImpl().eq(SysUser::getUsername, specializedInterfacePerson),false); + String fullName = extractFullName(lawsClubResearchInformationExcel.getSpecializedInterfacePerson()); + SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper().eq(SysUser::getUsername, specializedInterfacePerson).eq(SysUser::getRealname,fullName),false); if (Objects.isNull(sysUser)) { msgSub.append(getErrorMsg(i, "专业接口人不存在;")); }else { @@ -175,8 +175,9 @@ public class LawsClubResearchInformationServiceImpl extends ServiceImpl().eq(SysUser::getUsername, feedbackPerson),false); + SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper().eq(SysUser::getUsername, feedbackPerson).eq(SysUser::getRealname,fullName),false); if (Objects.isNull(sysUser)) { msgSub.append(getErrorMsg(i, "反馈人不存在;")); }else { @@ -231,4 +232,12 @@ public class LawsClubResearchInformationServiceImpl extends ServiceImpl i private ILawsClubResearchInformationService lawsClubResearchInformationService; @Resource private RedisUtil redisUtil; - @Resource - private ISysUserService sysUserService; - @Resource - private ISysDepartService sysDepartService; - @Value("${jero.path.exportExcelTempPath}") - private String exportExcelTempPath; @Override public List getTreeStructure(String parentId, String nodeType) { @@ -89,6 +80,7 @@ public class LawsClubServiceImpl extends ServiceImpl i .map(lawsClub -> { LawsClubTreeNodeModel model = new LawsClubTreeNodeModel(); BeanUtils.copyProperties(lawsClub, model); + model.setNodeType(lawsClub.getClubName()); return model; }).collect(Collectors.toList()); // 构建节点映射和父子关系映射 @@ -277,6 +269,12 @@ public class LawsClubServiceImpl extends ServiceImpl i if (StringUtils.isBlank(lawsClub.getClubName())) { throw new JeroBootException(ResultCommon.EMPTY_COMMON, "clubName"); } + LawsClub lawsClub1 = getOne(new LambdaQueryWrapper() + .eq(LawsClub::getClubName, lawsClub.getClubName()) + .ne(StringUtils.isNotBlank(lawsClub.getId()), LawsClub::getId, lawsClub.getId())); + if (!Objects.isNull(lawsClub1)) { + throw new JeroBootException(ResultCommon.CLUB_ALREADY_EXISTS); + } List lawsClubJoinTeamList = lawsClub.getLawsClubJoinTeamList(); List lawsClubPayments = lawsClub.getLawsClubPayments(); List lawsClubMeetings = lawsClub.getLawsClubMeetings(); @@ -597,6 +595,7 @@ public class LawsClubServiceImpl extends ServiceImpl i String fieldTxts = "上级节点,节点类型,社团名称,社团地址,社团联系人,联系电话,编号"; String mustInputFlags = "yes,yes,yes,no,no,no,no"; String fieldTypeLists = "1,1,1,1,1,1,1"; // 1 代表是文本输入类型 + boolean mergeAttendees = false; List lawsTags = ExcelUtil.createLawsTags(fieldTxts, mustInputFlags, fieldTypeLists); try (Workbook workbook = ExcelUtil.createWorkBookWithLawsTags(lawsTags, "基础信息", describe); OutputStream out = response.getOutputStream()) { @@ -663,7 +662,7 @@ public class LawsClubServiceImpl extends ServiceImpl i if (StringUtils.isBlank(parentId)) { msgSub.append(getErrorMsg(i, "上级节点不能为空;")); } else { - LawsClub club = getOne(new LambdaQueryWrapper().eq(LawsClub::getNodeType, parentId)); + LawsClub club = getOne(new LambdaQueryWrapper().eq(LawsClub::getClubName, parentId)); if (club == null) { msgSub.append(getErrorMsg(i, "上级节点不存在,请重新输入;")); } else { @@ -676,6 +675,12 @@ public class LawsClubServiceImpl extends ServiceImpl i } if (StringUtils.isBlank(lawsClubExcel.getClubName())) { msgSub.append(getErrorMsg(i, "社团名称不能为空;")); + }else { + LawsClub lawsClub = getOne(new LambdaQueryWrapper() + .eq(LawsClub::getClubName, lawsClubExcel.getClubName())); + if (!Objects.isNull(lawsClub)) { + msgSub.append(getErrorMsg(i, "社团名称已存在;")); + } } String contactNumber = lawsClubExcel.getContactNumber(); if (StringUtils.isNotBlank(contactNumber) && !contactNumber.matches("^(?:(0\\d{2,3}-)?\\d{7,8}|1[3-9]\\d{9})$")) { diff --git a/laws-modules/src/main/java/com/jero/modules/laws/club/vo/excel/LawsClubMeetingExcel.java b/laws-modules/src/main/java/com/jero/modules/laws/club/vo/excel/LawsClubMeetingExcel.java index d0ba18f5..23a83be2 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/club/vo/excel/LawsClubMeetingExcel.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/club/vo/excel/LawsClubMeetingExcel.java @@ -2,9 +2,7 @@ package com.jero.modules.laws.club.vo.excel; import lombok.Data; import org.jeecgframework.poi.excel.annotation.Excel; -import org.jeecgframework.poi.excel.annotation.ExcelCollection; import java.io.Serializable; -import java.util.Date; import java.util.List; @Data @@ -22,11 +20,11 @@ public class LawsClubMeetingExcel implements Serializable { @Excel(name = "会议费用", width = 20) private String meetingCost; - @Excel(name = "线下/线上地点", width = 20) + @Excel(name = "线上/线下地点", width = 20) private String meetingPlace; @Excel(name = "计划完成日期", width = 20) - private Date planCompletionDate; + private String planCompletionDate; @Excel(name = "通知人", width = 20) private String notifierId; @@ -46,7 +44,21 @@ public class LawsClubMeetingExcel implements Serializable { @Excel(name = "会议内容", width = 20) private String meetingContent; - @ExcelCollection(name = "") + @Excel(name = "参会人员", width = 20) + private String memberId; + + @Excel(name = "参会部门", width = 20) + private String departId; + + @Excel(name = "参会部门专业模块", width = 20) + private String meetingSpecializedModule; + + @Excel(name = "参会报告", width = 20) + private String meetingFileId; + + @Excel(name = "备注", width = 20) + private String remark; + private List meetingMemberList; } diff --git a/laws-single-startup/src/main/resources/i18n/messages.properties b/laws-single-startup/src/main/resources/i18n/messages.properties index 46ee1ad6..097f36b8 100644 --- a/laws-single-startup/src/main/resources/i18n/messages.properties +++ b/laws-single-startup/src/main/resources/i18n/messages.properties @@ -89,4 +89,5 @@ file.empty.import.error=\u6587\u4EF6\u4E3A\u7A7A\uFF0C\u8BF7\u68C0\u67E5\u540E\u can_not_find_template_file=\u627E\u4E0D\u5230\u540D\u4E3A{0}\u7684\u6A21\u677F\u6587\u4EF6 can_not_find_field=\u627E\u4E0D\u5230\u540D\u4E3A{0}\u7684\u5B57\u6BB5 tree.node.exists=\u5DF2\u5B58\u5728\u540D\u4E3A"{0}"\u7684\u8282\u70B9" -node.exist.subsets=\u5f53\u524d\u8282\u70b9\u4e0b\u5b58\u5728\u5b50\u96c6 \ No newline at end of file +node.exist.subsets=\u5f53\u524d\u8282\u70b9\u4e0b\u5b58\u5728\u5b50\u96c6 +club.already.exists=\u793e\u56e2\u540d\u79f0\u5df2\u5b58\u5728 \ No newline at end of file diff --git a/laws-single-startup/src/main/resources/i18n/messages_en.properties b/laws-single-startup/src/main/resources/i18n/messages_en.properties index f5910915..1a5b6e96 100644 --- a/laws-single-startup/src/main/resources/i18n/messages_en.properties +++ b/laws-single-startup/src/main/resources/i18n/messages_en.properties @@ -109,3 +109,4 @@ tag.add.error.1=The attribute name is too long tree.node.exists=Name {0} tree node exists data.mismatch={0} Data mismatch node.exist.subsets=Node exist subsets +club.already.exists=Club already exists \ No newline at end of file diff --git a/laws-single-startup/src/main/resources/i18n/messages_zh.properties b/laws-single-startup/src/main/resources/i18n/messages_zh.properties index 53229af9..f210c729 100644 --- a/laws-single-startup/src/main/resources/i18n/messages_zh.properties +++ b/laws-single-startup/src/main/resources/i18n/messages_zh.properties @@ -108,3 +108,4 @@ tag.add.error.1=\u5C5E\u6027\u540D\u79F0\u592A\u957F tree.node.exists=\u5DF2\u5B58\u5728\u540D\u4E3A"{0}"\u7684\u8282\u70B9" data.mismatch={0}\u6570\u636E\u4E0D\u5339\u914D node.exist.subsets=\u5f53\u524d\u8282\u70b9\u4e0b\u5b58\u5728\u5b50\u96c6 +club.already.exists=\u793e\u56e2\u540d\u79f0\u5df2\u5b58\u5728 \ No newline at end of file