From a9043b2d39ffe03aaeacf083fb0709ee030b9e8a Mon Sep 17 00:00:00 2001 From: caiyuchao Date: Mon, 7 Jul 2025 10:02:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=94=B3=E8=AF=B7license?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../license/enums/LicenseStatusEnum.java | 27 +++++++++++++++++++ .../admin/license/LicenseController.java | 8 ++++++ .../admin/license/vo/LicenseRespVO.java | 15 ++++++++--- .../service/license/LicenseService.java | 7 +++++ .../service/license/LicenseServiceImpl.java | 13 +++++++++ 5 files changed, 67 insertions(+), 3 deletions(-) create mode 100644 agt-module-license/agt-module-license-api/src/main/java/org/agt/module/license/enums/LicenseStatusEnum.java diff --git a/agt-module-license/agt-module-license-api/src/main/java/org/agt/module/license/enums/LicenseStatusEnum.java b/agt-module-license/agt-module-license-api/src/main/java/org/agt/module/license/enums/LicenseStatusEnum.java new file mode 100644 index 0000000..5f9f6aa --- /dev/null +++ b/agt-module-license/agt-module-license-api/src/main/java/org/agt/module/license/enums/LicenseStatusEnum.java @@ -0,0 +1,27 @@ +package org.agt.module.license.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 角色标识枚举 + */ +@Getter +@AllArgsConstructor +public enum LicenseStatusEnum { + + NOT_APPLIED(0, "未申请"), + IN_APPLICATION(1, "申请中"), + COMPLETED(2, "已完成"); // CRM 系统专用 + ; + + /** + * code + */ + private final Integer code; + /** + * name + */ + private final String name; + +} diff --git a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/license/LicenseController.java b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/license/LicenseController.java index f97d08e..15f0842 100644 --- a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/license/LicenseController.java +++ b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/controller/admin/license/LicenseController.java @@ -58,6 +58,14 @@ public class LicenseController { return success(true); } + @PutMapping("/apply") + @Operation(summary = "申请License") + @PreAuthorize("@ss.hasPermission('license:license:apply')") + public CommonResult applyLicense(@Valid @RequestBody LicenseSaveReqVO updateReqVO) { + licenseService.applyLicense(updateReqVO); + return success(true); + } + @DeleteMapping("/delete") @Operation(summary = "删除License") @Parameter(name = "id", description = "编号", required = true) 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 6dc098e..e00d962 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 @@ -11,6 +11,7 @@ import org.agt.framework.excel.core.annotations.DictFormat; import org.agt.framework.excel.core.convert.DictConvert; import org.agt.module.license.dal.dataobject.customer.CustomerDO; import org.agt.module.license.dal.dataobject.project.ProjectDO; +import org.agt.module.system.api.user.AdminUserApi; import java.time.LocalDateTime; import java.util.List; @@ -69,18 +70,26 @@ public class LicenseRespVO implements VO { @ExcelProperty("License内容") private String licenseContent; - @Schema(description = "申请人") - @ExcelProperty("申请人") + @Schema(description = "申请人ID") + @Trans(type = TransType.AUTO_TRANS, key = AdminUserApi.PREFIX, fields = "nickname", ref = "applicantName") private Long applicant; + @Schema(description = "申请人", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("申请人") + private String applicantName; + @Schema(description = "申请时间") @ExcelProperty("申请时间") private LocalDateTime applicationTime; @Schema(description = "审批人") - @ExcelProperty("审批人") + @Trans(type = TransType.AUTO_TRANS, key = AdminUserApi.PREFIX, fields = "nickname", ref = "approverName") private Long approver; + @Schema(description = "审批人", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("审批人") + private String approverName; + @Schema(description = "状态", example = "1") @ExcelProperty(value = "状态", converter = DictConvert.class) @DictFormat("lic_license_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 diff --git a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/license/LicenseService.java b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/license/LicenseService.java index f117275..600d82b 100644 --- a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/license/LicenseService.java +++ b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/service/license/LicenseService.java @@ -28,6 +28,13 @@ public interface LicenseService { */ void updateLicense(@Valid LicenseSaveReqVO updateReqVO); + /** + * 申请License + * + * @param updateReqVO 更新信息 + */ + void applyLicense(@Valid LicenseSaveReqVO updateReqVO); + /** * 删除License * 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 f7d70c5..b0c2691 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 @@ -4,13 +4,17 @@ import cn.hutool.core.util.StrUtil; import jakarta.annotation.Resource; import org.agt.framework.common.pojo.PageResult; import org.agt.framework.common.util.object.BeanUtils; +import org.agt.framework.web.core.util.WebFrameworkUtils; 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.license.LicenseDO; import org.agt.module.license.dal.mysql.license.LicenseMapper; +import org.agt.module.license.enums.LicenseStatusEnum; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; +import java.time.LocalDateTime; + import static org.agt.framework.common.exception.util.ServiceExceptionUtil.exception; import static org.agt.module.license.enums.ErrorCodeConstants.LICENSE_NOT_EXISTS; import static org.agt.module.license.enums.ErrorCodeConstants.LICENSE_SN_DUPLICATE; @@ -35,6 +39,7 @@ public class LicenseServiceImpl implements LicenseService { } // 插入 LicenseDO license = BeanUtils.toBean(createReqVO, LicenseDO.class); + license.setStatus(LicenseStatusEnum.NOT_APPLIED.getCode()); licenseMapper.insert(license); // 返回 return license.getId(); @@ -53,6 +58,14 @@ public class LicenseServiceImpl implements LicenseService { licenseMapper.updateById(updateObj); } + @Override + public void applyLicense(LicenseSaveReqVO updateReqVO) { + updateReqVO.setStatus(LicenseStatusEnum.IN_APPLICATION.getCode()); + updateReqVO.setApplicant(WebFrameworkUtils.getLoginUserId()); + updateReqVO.setApplicationTime(LocalDateTime.now()); + updateLicense(updateReqVO); + } + @Override public void deleteLicense(Long id) { // 校验存在