From e6c28cab0a719e3e95b25a94c08308f030601874 Mon Sep 17 00:00:00 2001 From: caiyuchao Date: Sat, 26 Jul 2025 17:47:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BD=91=E5=85=83=E5=88=86=E7=BB=84?= =?UTF-8?q?=E5=92=8C=E6=8E=A5=E5=85=A5License=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/license/vo/LicenseNeCodeVO.java | 28 ++++ .../admin/license/vo/LicensePageReqVO.java | 3 + .../admin/license/vo/LicenseRespVO.java | 3 + .../admin/license/vo/LicenseSaveReqVO.java | 3 + .../dal/dataobject/license/LicenseDO.java | 7 + .../dataobject/license/LicenseProviderDO.java | 18 ++- .../service/license/LicenseServiceImpl.java | 138 +++++++++++++----- 7 files changed, 162 insertions(+), 38 deletions(-) create mode 100644 agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/license/vo/LicenseNeCodeVO.java diff --git a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/license/vo/LicenseNeCodeVO.java b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/license/vo/LicenseNeCodeVO.java new file mode 100644 index 0000000..f3e698f --- /dev/null +++ b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/license/vo/LicenseNeCodeVO.java @@ -0,0 +1,28 @@ +package org.agt.module.license.controller.admin.license.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +/** + * @description: License网元和激活码表单 + * @author: cyc + * @since: 2025-07-25 + */ +@Schema(description = "管理后台 - License新增/修改 网元和激活码表单 Request VO") +@Data +public class LicenseNeCodeVO { + + @Schema(description = "网元开关") + private List neList; + + @Schema(description = "激活码") + private String activationCode; + + @Schema(description = "文件url") + private String fileUrl; + + @Schema(description = "提供者ID") + private Long providerId; +} diff --git a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/license/vo/LicensePageReqVO.java b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/license/vo/LicensePageReqVO.java index 4ba49e6..b8b0ff1 100644 --- a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/license/vo/LicensePageReqVO.java +++ b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/license/vo/LicensePageReqVO.java @@ -34,6 +34,9 @@ public class LicensePageReqVO extends PageParam { @Schema(description = "网元开关") private List neList; + @Schema(description = "网元激活码列表") + private List neCodeList; + @Schema(description = "用户数") private Integer userNumber; diff --git a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/license/vo/LicenseRespVO.java b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/license/vo/LicenseRespVO.java index 2cb9db1..2f90096 100644 --- a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/license/vo/LicenseRespVO.java +++ b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/license/vo/LicenseRespVO.java @@ -54,6 +54,9 @@ public class LicenseRespVO implements VO { @DictFormat("lic_ne_switch") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 private List neList; + @Schema(description = "网元激活码列表") + private List neCodeList; + @Schema(description = "用户数") @ExcelProperty("用户数") private Integer userNumber; diff --git a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/license/vo/LicenseSaveReqVO.java b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/license/vo/LicenseSaveReqVO.java index 183cd0c..9035fc3 100644 --- a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/license/vo/LicenseSaveReqVO.java +++ b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/license/vo/LicenseSaveReqVO.java @@ -42,6 +42,9 @@ public class LicenseSaveReqVO { @Schema(description = "激活码") private String activationCode; + @Schema(description = "网元激活码列表") + private List neCodeList; + @Schema(description = "文件URL") private String fileUrl; diff --git a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/dal/dataobject/license/LicenseDO.java b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/dal/dataobject/license/LicenseDO.java index 24531a0..f1c577c 100644 --- a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/dal/dataobject/license/LicenseDO.java +++ b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/dal/dataobject/license/LicenseDO.java @@ -12,6 +12,7 @@ import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.ToString; import org.agt.framework.mybatis.core.dataobject.BaseDO; +import org.agt.module.license.controller.admin.license.vo.LicenseNeCodeVO; import java.time.LocalDateTime; import java.util.List; @@ -59,6 +60,12 @@ public class LicenseDO extends BaseDO { */ @TableField(typeHandler = JacksonTypeHandler.class) private List neList; + /** + * 网元激活码列表 + * + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List neCodeList; /** * 用户数 */ diff --git a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/dal/dataobject/license/LicenseProviderDO.java b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/dal/dataobject/license/LicenseProviderDO.java index 6b1bede..3bec859 100644 --- a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/dal/dataobject/license/LicenseProviderDO.java +++ b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/dal/dataobject/license/LicenseProviderDO.java @@ -82,13 +82,23 @@ public class LicenseProviderDO extends BaseDO { */ private String cause; /** - * 授权文件路径(含文件名),扩容或续期时带入 + * 授权文件路径-legacy(含文件名),扩容或续期时带入 */ - private String oldFilePath; + private String oldFilePath_0; + /** - * 授权文件路径(含文件名),新生产授权文件 + * 授权文件路径-45G(含文件名),扩容或续期时带入 */ - private String newFilePath; + private String oldFilePath_1; + + /** + * 授权文件路径-legacy(含文件名),新生产授权文件 + */ + private String newFilePath_0; + /** + * 授权文件路径-45G(含文件名),新生产授权文件 + */ + private String newFilePath_1; /** * 备注 */ diff --git a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/license/LicenseServiceImpl.java b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/license/LicenseServiceImpl.java index accd10c..f50bf1c 100644 --- a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/license/LicenseServiceImpl.java +++ b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/license/LicenseServiceImpl.java @@ -1,13 +1,16 @@ package org.agt.module.license.service.license; +import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.resource.ResourceUtil; import cn.hutool.core.util.StrUtil; import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; import org.agt.framework.common.pojo.PageResult; import org.agt.framework.common.util.object.BeanUtils; import org.agt.framework.dict.core.DictFrameworkUtils; import org.agt.framework.web.core.util.WebFrameworkUtils; import org.agt.module.infra.api.file.FileApi; +import org.agt.module.license.controller.admin.license.vo.LicenseNeCodeVO; import org.agt.module.license.controller.admin.license.vo.LicensePageReqVO; import org.agt.module.license.controller.admin.license.vo.LicenseSaveReqVO; import org.agt.module.license.dal.dataobject.customer.CustomerDO; @@ -42,6 +45,7 @@ import static org.agt.module.license.enums.ErrorCodeConstants.LICENSE_SN_DUPLICA * * @author 管理员 */ +@Slf4j @Service @Validated public class LicenseServiceImpl implements LicenseService { @@ -119,32 +123,51 @@ public class LicenseServiceImpl implements LicenseService { notifySendApi.sendSingleMessageToAdmin(new NotifySendSingleToUserReqDTO() .setUserId(userId).setTemplateCode(templateCode).setTemplateParams(templateParams)); - // 添加数据到License提供者表 - LicenseProviderDO licenseProviderDO = new LicenseProviderDO(); - licenseProviderDO.setCustomerId(updateReqVO.getCustomerId()); - licenseProviderDO.setProjectId(updateReqVO.getProjectId()); - licenseProviderDO.setSerialNo(updateReqVO.getSerialNo()); - licenseProviderDO.setExpiryDate(updateReqVO.getExpiryDate()); - licenseProviderDO.setRanNumber(updateReqVO.getRanNumber()); - licenseProviderDO.setUserNumber(updateReqVO.getUserNumber()); - List neList = updateReqVO.getNeList(); - List neLabels = new ArrayList<>(); - for (Integer ne : neList) { - String label = DictFrameworkUtils.parseDictDataLabel("lic_ne_list", ne.toString()); - neLabels.add(label); + List neCodeList = updateReqVO.getNeCodeList(); + + for (LicenseNeCodeVO neCodeVO : neCodeList) { + // 添加数据到License提供者表 + LicenseProviderDO licenseProviderDO = new LicenseProviderDO(); + licenseProviderDO.setCustomerId(updateReqVO.getCustomerId()); + licenseProviderDO.setProjectId(updateReqVO.getProjectId()); + licenseProviderDO.setSerialNo(updateReqVO.getSerialNo()); + licenseProviderDO.setExpiryDate(updateReqVO.getExpiryDate()); + licenseProviderDO.setRanNumber(updateReqVO.getRanNumber()); + licenseProviderDO.setUserNumber(updateReqVO.getUserNumber()); + List neList = neCodeVO.getNeList(); + List neLabels = new ArrayList<>(); + for (Integer ne : neList) { + String label = DictFrameworkUtils.parseDictDataLabel("lic_ne_all", ne.toString()); + if (StrUtil.isBlank(label)) { + label = DictFrameworkUtils.parseDictDataLabel("lic_ne_5g", ne.toString()); + if (StrUtil.isBlank(label)) { + label = DictFrameworkUtils.parseDictDataLabel("lic_ne_4g", ne.toString()); + if (StrUtil.isBlank(label)) { + label = DictFrameworkUtils.parseDictDataLabel("lic_ne_23g", ne.toString()); + if (StrUtil.isBlank(label)) { + label = DictFrameworkUtils.parseDictDataLabel("lic_ne_add", ne.toString()); + } + } + } + } + neLabels.add(label); + } + licenseProviderDO.setNeList(StrUtil.join(",", neLabels)); + licenseProviderDO.setActivationCode(updateReqVO.getActivationCode()); + licenseProviderDO.setOperationType(1); + licenseProviderDO.setState(1); + licenseProviderDO.setRemark(updateReqVO.getRemark()); + + licenseProviderMapper.insert(licenseProviderDO); + neCodeVO.setProviderId(licenseProviderDO.getId()); } - licenseProviderDO.setNeList(StrUtil.join(",", neLabels)); - licenseProviderDO.setActivationCode(updateReqVO.getActivationCode()); - licenseProviderDO.setOperationType(1); - licenseProviderDO.setState(1); - licenseProviderDO.setRemark(updateReqVO.getRemark()); - licenseProviderMapper.insert(licenseProviderDO); + // 更新表 updateReqVO.setStatus(LicenseStatusEnum.IN_APPLICATION.getCode()); updateReqVO.setApplicant(WebFrameworkUtils.getLoginUserId()); updateReqVO.setApplicationTime(LocalDateTime.now()); - updateReqVO.setProviderId(licenseProviderDO.getId()); + updateReqVO.setNeCodeList(neCodeList); updateLicense(updateReqVO); } @@ -152,26 +175,73 @@ public class LicenseServiceImpl implements LicenseService { public String generate(Long id) { LicenseDO licenseDO = licenseMapper.selectById(id); - List neList = licenseDO.getNeList(); - List neLabels = new ArrayList<>(); - for (Integer ne : neList) { - String label = DictFrameworkUtils.parseDictDataLabel("lic_ne_list", ne.toString()); - neLabels.add(label); + List neCodeList = licenseDO.getNeCodeList(); + for (LicenseNeCodeVO neCodeVO : neCodeList) { + LicenseProviderDO licenseProviderDO = licenseProviderMapper.selectById(neCodeVO.getProviderId()); + licenseProviderDO.setState(2); + licenseProviderMapper.updateById(licenseProviderDO); } - String neListStr = StrUtil.join("_", neLabels); - if (StrUtil.isNotBlank(neListStr)) { - neListStr = neListStr + "_"; + + try { + System.out.println("线程开始睡眠..."); + Thread.sleep(2000); // 暂停2000毫秒,即2秒 + System.out.println("线程醒来!"); + } catch (InterruptedException e) { + log.error("睡眠失败"); } - String fileName = neListStr + licenseDO.getSerialNo() + "_" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))+ "_system.ini"; - // 上传到文件服务 - byte[] fileContent = ResourceUtil.readBytes("file/MME_13750602_2024-08-02_system.ini"); - String fileURL = fileApi.createFile(fileContent, fileName); + for (LicenseNeCodeVO neCodeVO : neCodeList) { + LicenseProviderDO licenseProviderDO = licenseProviderMapper.selectById(neCodeVO.getProviderId()); + if (licenseProviderDO.getState() != 3) { +// continue; + } + String newFilePath1 = licenseProviderDO.getNewFilePath_1(); - licenseDO.setFileUrl(fileURL); + List neList = neCodeVO.getNeList(); + List neLabels = new ArrayList<>(); + for (Integer ne : neList) { + String label = DictFrameworkUtils.parseDictDataLabel("lic_ne_all", ne.toString()); + if (StrUtil.isBlank(label)) { + label = DictFrameworkUtils.parseDictDataLabel("lic_ne_5g", ne.toString()); + if (StrUtil.isBlank(label)) { + label = DictFrameworkUtils.parseDictDataLabel("lic_ne_4g", ne.toString()); + if (StrUtil.isBlank(label)) { + label = DictFrameworkUtils.parseDictDataLabel("lic_ne_23g", ne.toString()); + if (StrUtil.isBlank(label)) { + label = DictFrameworkUtils.parseDictDataLabel("lic_ne_add", ne.toString()); + } + } + } + } + neLabels.add(label); + } + String neListStr = StrUtil.join("_", neLabels); + if (StrUtil.isNotBlank(neListStr)) { + neListStr = neListStr + "_"; + } + String fileName = neListStr + licenseDO.getSerialNo() + "_" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + "_system.ini"; + + // 上传到文件服务 + byte[] fileContent = null; + try { + fileContent = FileUtil.readBytes(newFilePath1); + } catch (Exception e) { + log.error("读取文件失败", e); + } + if (fileContent == null) { + log.error("读取文件失败为空"); + fileContent = ResourceUtil.readBytes("file/MME_13750602_2024-08-02_system.ini"); + } + + String fileURL = fileApi.createFile(fileContent, fileName); + + neCodeVO.setFileUrl(fileURL); + } + + licenseDO.setNeCodeList(neCodeList); licenseDO.setStatus(LicenseStatusEnum.COMPLETED.getCode()); licenseMapper.updateById(licenseDO); - return fileURL; + return ""; } @Override