feat: 网元分组和接入License生成
This commit is contained in:
@@ -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<Integer> neList;
|
||||
|
||||
@Schema(description = "激活码")
|
||||
private String activationCode;
|
||||
|
||||
@Schema(description = "文件url")
|
||||
private String fileUrl;
|
||||
|
||||
@Schema(description = "提供者ID")
|
||||
private Long providerId;
|
||||
}
|
||||
@@ -34,6 +34,9 @@ public class LicensePageReqVO extends PageParam {
|
||||
@Schema(description = "网元开关")
|
||||
private List<Integer> neList;
|
||||
|
||||
@Schema(description = "网元激活码列表")
|
||||
private List<LicenseNeCodeVO> neCodeList;
|
||||
|
||||
@Schema(description = "用户数")
|
||||
private Integer userNumber;
|
||||
|
||||
|
||||
@@ -54,6 +54,9 @@ public class LicenseRespVO implements VO {
|
||||
@DictFormat("lic_ne_switch") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
|
||||
private List<Integer> neList;
|
||||
|
||||
@Schema(description = "网元激活码列表")
|
||||
private List<LicenseNeCodeVO> neCodeList;
|
||||
|
||||
@Schema(description = "用户数")
|
||||
@ExcelProperty("用户数")
|
||||
private Integer userNumber;
|
||||
|
||||
@@ -42,6 +42,9 @@ public class LicenseSaveReqVO {
|
||||
@Schema(description = "激活码")
|
||||
private String activationCode;
|
||||
|
||||
@Schema(description = "网元激活码列表")
|
||||
private List<LicenseNeCodeVO> neCodeList;
|
||||
|
||||
@Schema(description = "文件URL")
|
||||
private String fileUrl;
|
||||
|
||||
|
||||
@@ -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<Integer> neList;
|
||||
/**
|
||||
* 网元激活码列表
|
||||
*
|
||||
*/
|
||||
@TableField(typeHandler = JacksonTypeHandler.class)
|
||||
private List<LicenseNeCodeVO> neCodeList;
|
||||
/**
|
||||
* 用户数
|
||||
*/
|
||||
|
||||
@@ -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;
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
|
||||
@@ -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<Integer> neList = updateReqVO.getNeList();
|
||||
List<String> neLabels = new ArrayList<>();
|
||||
for (Integer ne : neList) {
|
||||
String label = DictFrameworkUtils.parseDictDataLabel("lic_ne_list", ne.toString());
|
||||
neLabels.add(label);
|
||||
List<LicenseNeCodeVO> 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<Integer> neList = neCodeVO.getNeList();
|
||||
List<String> 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<Integer> neList = licenseDO.getNeList();
|
||||
List<String> neLabels = new ArrayList<>();
|
||||
for (Integer ne : neList) {
|
||||
String label = DictFrameworkUtils.parseDictDataLabel("lic_ne_list", ne.toString());
|
||||
neLabels.add(label);
|
||||
List<LicenseNeCodeVO> 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<Integer> neList = neCodeVO.getNeList();
|
||||
List<String> 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
|
||||
|
||||
Reference in New Issue
Block a user