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 = "网元开关")
|
@Schema(description = "网元开关")
|
||||||
private List<Integer> neList;
|
private List<Integer> neList;
|
||||||
|
|
||||||
|
@Schema(description = "网元激活码列表")
|
||||||
|
private List<LicenseNeCodeVO> neCodeList;
|
||||||
|
|
||||||
@Schema(description = "用户数")
|
@Schema(description = "用户数")
|
||||||
private Integer userNumber;
|
private Integer userNumber;
|
||||||
|
|
||||||
|
|||||||
@@ -54,6 +54,9 @@ public class LicenseRespVO implements VO {
|
|||||||
@DictFormat("lic_ne_switch") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
|
@DictFormat("lic_ne_switch") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
|
||||||
private List<Integer> neList;
|
private List<Integer> neList;
|
||||||
|
|
||||||
|
@Schema(description = "网元激活码列表")
|
||||||
|
private List<LicenseNeCodeVO> neCodeList;
|
||||||
|
|
||||||
@Schema(description = "用户数")
|
@Schema(description = "用户数")
|
||||||
@ExcelProperty("用户数")
|
@ExcelProperty("用户数")
|
||||||
private Integer userNumber;
|
private Integer userNumber;
|
||||||
|
|||||||
@@ -42,6 +42,9 @@ public class LicenseSaveReqVO {
|
|||||||
@Schema(description = "激活码")
|
@Schema(description = "激活码")
|
||||||
private String activationCode;
|
private String activationCode;
|
||||||
|
|
||||||
|
@Schema(description = "网元激活码列表")
|
||||||
|
private List<LicenseNeCodeVO> neCodeList;
|
||||||
|
|
||||||
@Schema(description = "文件URL")
|
@Schema(description = "文件URL")
|
||||||
private String fileUrl;
|
private String fileUrl;
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import lombok.EqualsAndHashCode;
|
|||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.ToString;
|
import lombok.ToString;
|
||||||
import org.agt.framework.mybatis.core.dataobject.BaseDO;
|
import org.agt.framework.mybatis.core.dataobject.BaseDO;
|
||||||
|
import org.agt.module.license.controller.admin.license.vo.LicenseNeCodeVO;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -59,6 +60,12 @@ public class LicenseDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
@TableField(typeHandler = JacksonTypeHandler.class)
|
@TableField(typeHandler = JacksonTypeHandler.class)
|
||||||
private List<Integer> neList;
|
private List<Integer> neList;
|
||||||
|
/**
|
||||||
|
* 网元激活码列表
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@TableField(typeHandler = JacksonTypeHandler.class)
|
||||||
|
private List<LicenseNeCodeVO> neCodeList;
|
||||||
/**
|
/**
|
||||||
* 用户数
|
* 用户数
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -82,13 +82,23 @@ public class LicenseProviderDO extends BaseDO {
|
|||||||
*/
|
*/
|
||||||
private String cause;
|
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;
|
package org.agt.module.license.service.license;
|
||||||
|
|
||||||
|
import cn.hutool.core.io.FileUtil;
|
||||||
import cn.hutool.core.io.resource.ResourceUtil;
|
import cn.hutool.core.io.resource.ResourceUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.agt.framework.common.pojo.PageResult;
|
import org.agt.framework.common.pojo.PageResult;
|
||||||
import org.agt.framework.common.util.object.BeanUtils;
|
import org.agt.framework.common.util.object.BeanUtils;
|
||||||
import org.agt.framework.dict.core.DictFrameworkUtils;
|
import org.agt.framework.dict.core.DictFrameworkUtils;
|
||||||
import org.agt.framework.web.core.util.WebFrameworkUtils;
|
import org.agt.framework.web.core.util.WebFrameworkUtils;
|
||||||
import org.agt.module.infra.api.file.FileApi;
|
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.LicensePageReqVO;
|
||||||
import org.agt.module.license.controller.admin.license.vo.LicenseSaveReqVO;
|
import org.agt.module.license.controller.admin.license.vo.LicenseSaveReqVO;
|
||||||
import org.agt.module.license.dal.dataobject.customer.CustomerDO;
|
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 管理员
|
* @author 管理员
|
||||||
*/
|
*/
|
||||||
|
@Slf4j
|
||||||
@Service
|
@Service
|
||||||
@Validated
|
@Validated
|
||||||
public class LicenseServiceImpl implements LicenseService {
|
public class LicenseServiceImpl implements LicenseService {
|
||||||
@@ -119,6 +123,9 @@ public class LicenseServiceImpl implements LicenseService {
|
|||||||
notifySendApi.sendSingleMessageToAdmin(new NotifySendSingleToUserReqDTO()
|
notifySendApi.sendSingleMessageToAdmin(new NotifySendSingleToUserReqDTO()
|
||||||
.setUserId(userId).setTemplateCode(templateCode).setTemplateParams(templateParams));
|
.setUserId(userId).setTemplateCode(templateCode).setTemplateParams(templateParams));
|
||||||
|
|
||||||
|
List<LicenseNeCodeVO> neCodeList = updateReqVO.getNeCodeList();
|
||||||
|
|
||||||
|
for (LicenseNeCodeVO neCodeVO : neCodeList) {
|
||||||
// 添加数据到License提供者表
|
// 添加数据到License提供者表
|
||||||
LicenseProviderDO licenseProviderDO = new LicenseProviderDO();
|
LicenseProviderDO licenseProviderDO = new LicenseProviderDO();
|
||||||
licenseProviderDO.setCustomerId(updateReqVO.getCustomerId());
|
licenseProviderDO.setCustomerId(updateReqVO.getCustomerId());
|
||||||
@@ -127,10 +134,22 @@ public class LicenseServiceImpl implements LicenseService {
|
|||||||
licenseProviderDO.setExpiryDate(updateReqVO.getExpiryDate());
|
licenseProviderDO.setExpiryDate(updateReqVO.getExpiryDate());
|
||||||
licenseProviderDO.setRanNumber(updateReqVO.getRanNumber());
|
licenseProviderDO.setRanNumber(updateReqVO.getRanNumber());
|
||||||
licenseProviderDO.setUserNumber(updateReqVO.getUserNumber());
|
licenseProviderDO.setUserNumber(updateReqVO.getUserNumber());
|
||||||
List<Integer> neList = updateReqVO.getNeList();
|
List<Integer> neList = neCodeVO.getNeList();
|
||||||
List<String> neLabels = new ArrayList<>();
|
List<String> neLabels = new ArrayList<>();
|
||||||
for (Integer ne : neList) {
|
for (Integer ne : neList) {
|
||||||
String label = DictFrameworkUtils.parseDictDataLabel("lic_ne_list", ne.toString());
|
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);
|
neLabels.add(label);
|
||||||
}
|
}
|
||||||
licenseProviderDO.setNeList(StrUtil.join(",", neLabels));
|
licenseProviderDO.setNeList(StrUtil.join(",", neLabels));
|
||||||
@@ -138,13 +157,17 @@ public class LicenseServiceImpl implements LicenseService {
|
|||||||
licenseProviderDO.setOperationType(1);
|
licenseProviderDO.setOperationType(1);
|
||||||
licenseProviderDO.setState(1);
|
licenseProviderDO.setState(1);
|
||||||
licenseProviderDO.setRemark(updateReqVO.getRemark());
|
licenseProviderDO.setRemark(updateReqVO.getRemark());
|
||||||
|
|
||||||
licenseProviderMapper.insert(licenseProviderDO);
|
licenseProviderMapper.insert(licenseProviderDO);
|
||||||
|
neCodeVO.setProviderId(licenseProviderDO.getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 更新表
|
// 更新表
|
||||||
updateReqVO.setStatus(LicenseStatusEnum.IN_APPLICATION.getCode());
|
updateReqVO.setStatus(LicenseStatusEnum.IN_APPLICATION.getCode());
|
||||||
updateReqVO.setApplicant(WebFrameworkUtils.getLoginUserId());
|
updateReqVO.setApplicant(WebFrameworkUtils.getLoginUserId());
|
||||||
updateReqVO.setApplicationTime(LocalDateTime.now());
|
updateReqVO.setApplicationTime(LocalDateTime.now());
|
||||||
updateReqVO.setProviderId(licenseProviderDO.getId());
|
updateReqVO.setNeCodeList(neCodeList);
|
||||||
updateLicense(updateReqVO);
|
updateLicense(updateReqVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -152,26 +175,73 @@ public class LicenseServiceImpl implements LicenseService {
|
|||||||
public String generate(Long id) {
|
public String generate(Long id) {
|
||||||
LicenseDO licenseDO = licenseMapper.selectById(id);
|
LicenseDO licenseDO = licenseMapper.selectById(id);
|
||||||
|
|
||||||
List<Integer> neList = licenseDO.getNeList();
|
List<LicenseNeCodeVO> neCodeList = licenseDO.getNeCodeList();
|
||||||
|
for (LicenseNeCodeVO neCodeVO : neCodeList) {
|
||||||
|
LicenseProviderDO licenseProviderDO = licenseProviderMapper.selectById(neCodeVO.getProviderId());
|
||||||
|
licenseProviderDO.setState(2);
|
||||||
|
licenseProviderMapper.updateById(licenseProviderDO);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
System.out.println("线程开始睡眠...");
|
||||||
|
Thread.sleep(2000); // 暂停2000毫秒,即2秒
|
||||||
|
System.out.println("线程醒来!");
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
log.error("睡眠失败");
|
||||||
|
}
|
||||||
|
|
||||||
|
for (LicenseNeCodeVO neCodeVO : neCodeList) {
|
||||||
|
LicenseProviderDO licenseProviderDO = licenseProviderMapper.selectById(neCodeVO.getProviderId());
|
||||||
|
if (licenseProviderDO.getState() != 3) {
|
||||||
|
// continue;
|
||||||
|
}
|
||||||
|
String newFilePath1 = licenseProviderDO.getNewFilePath_1();
|
||||||
|
|
||||||
|
List<Integer> neList = neCodeVO.getNeList();
|
||||||
List<String> neLabels = new ArrayList<>();
|
List<String> neLabels = new ArrayList<>();
|
||||||
for (Integer ne : neList) {
|
for (Integer ne : neList) {
|
||||||
String label = DictFrameworkUtils.parseDictDataLabel("lic_ne_list", ne.toString());
|
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);
|
neLabels.add(label);
|
||||||
}
|
}
|
||||||
String neListStr = StrUtil.join("_", neLabels);
|
String neListStr = StrUtil.join("_", neLabels);
|
||||||
if (StrUtil.isNotBlank(neListStr)) {
|
if (StrUtil.isNotBlank(neListStr)) {
|
||||||
neListStr = neListStr + "_";
|
neListStr = neListStr + "_";
|
||||||
}
|
}
|
||||||
String fileName = neListStr + licenseDO.getSerialNo() + "_" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))+ "_system.ini";
|
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");
|
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);
|
String fileURL = fileApi.createFile(fileContent, fileName);
|
||||||
|
|
||||||
licenseDO.setFileUrl(fileURL);
|
neCodeVO.setFileUrl(fileURL);
|
||||||
|
}
|
||||||
|
|
||||||
|
licenseDO.setNeCodeList(neCodeList);
|
||||||
licenseDO.setStatus(LicenseStatusEnum.COMPLETED.getCode());
|
licenseDO.setStatus(LicenseStatusEnum.COMPLETED.getCode());
|
||||||
licenseMapper.updateById(licenseDO);
|
licenseMapper.updateById(licenseDO);
|
||||||
return fileURL;
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user