From bafbbe7a3d087baa7a637888680d6a43dd385c00 Mon Sep 17 00:00:00 2001 From: caiyuchao Date: Thu, 28 Aug 2025 12:05:18 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20licensed=E7=9A=84=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E5=8F=96=E9=A1=B9=E7=9B=AE=E7=9A=84=E5=AE=A2=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dal/dataobject/license/LicenseDO.java | 4 -- .../dataobject/license/LicenseHistoryDO.java | 4 -- .../dal/mysql/license/LicenseMapper.java | 15 +++- .../service/license/LicenseServiceImpl.java | 26 +++++-- .../mapper/license/LicenseMapper.xml | 72 ++++++++++++++++++- 5 files changed, 103 insertions(+), 18 deletions(-) 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 80d750c..ec917f9 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 @@ -33,10 +33,6 @@ public class LicenseDO extends BaseDO { */ @TableId private Long id; - /** - * 客户ID - */ - private Long customerId; /** * 项目ID */ diff --git a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/dal/dataobject/license/LicenseHistoryDO.java b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/dal/dataobject/license/LicenseHistoryDO.java index 65ca551..7c45098 100644 --- a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/dal/dataobject/license/LicenseHistoryDO.java +++ b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/dal/dataobject/license/LicenseHistoryDO.java @@ -37,10 +37,6 @@ public class LicenseHistoryDO extends BaseDO { * License ID */ private Long licenseId; - /** - * 客户ID - */ - private Long customerId; /** * 项目ID */ diff --git a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/dal/mysql/license/LicenseMapper.java b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/dal/mysql/license/LicenseMapper.java index 3d80d17..61f10d0 100644 --- a/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/dal/mysql/license/LicenseMapper.java +++ b/agt-module-license/agt-module-license-server/src/main/java/org/agt/module/license/dal/mysql/license/LicenseMapper.java @@ -1,11 +1,15 @@ package org.agt.module.license.dal.mysql.license; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import org.agt.framework.common.pojo.PageResult; import org.agt.framework.mybatis.core.mapper.BaseMapperX; import org.agt.framework.mybatis.core.query.LambdaQueryWrapperX; +import org.agt.framework.mybatis.core.query.MPJLambdaWrapperX; import org.agt.module.license.controller.admin.license.vo.LicensePageReqVO; +import org.agt.module.license.controller.admin.license.vo.LicenseRespVO; import org.agt.module.license.dal.dataobject.license.LicenseDO; +import org.agt.module.license.dal.dataobject.project.ProjectDO; import org.agt.module.license.enums.LicenseStatusEnum; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; @@ -23,7 +27,6 @@ public interface LicenseMapper extends BaseMapperX { default PageResult selectPage(LicensePageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(LicenseDO::getCustomerId, reqVO.getCustomerId()) .eqIfPresent(LicenseDO::getProjectId, reqVO.getProjectId()) .likeIfPresent(LicenseDO::getSerialNo, reqVO.getSerialNo()) .betweenIfPresent(LicenseDO::getExpiryDate, reqVO.getExpiryDate()) @@ -37,8 +40,12 @@ public interface LicenseMapper extends BaseMapperX { .orderByDesc(LicenseDO::getApplicationTime)); } - default List selectListByExpiryDate() { - return selectList(new LambdaQueryWrapperX() + default List selectListByExpiryDate() { + + return selectJoinList(LicenseRespVO.class, new MPJLambdaWrapperX() + .selectAll(LicenseDO.class) + .leftJoin(ProjectDO.class, ProjectDO::getId, LicenseDO::getProjectId) + .selectAs(ProjectDO::getCustomerId, LicenseRespVO::getCustomerId) .gt(LicenseDO::getExpiryDate, LocalDateTime.now()) .le(LicenseDO::getExpiryDate, LocalDateTime.now().plusDays(7)) .eq(LicenseDO::getStatus, LicenseStatusEnum.COMPLETED.getCode()) @@ -50,4 +57,6 @@ public interface LicenseMapper extends BaseMapperX { } LicenseDO getBySnAndProjectAndCustomer(@Param("serialNo") String serialNo, @Param("projectName") String projectName, @Param("customerName") String customerName); + + IPage queryPage(IPage page, @Param("query") LicensePageReqVO reqVO); } \ No newline at end of file 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 0d72408..838931b 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 @@ -5,7 +5,9 @@ import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.resource.ResourceUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.ZipUtil; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.agt.framework.common.pojo.PageResult; @@ -168,8 +170,8 @@ public class LicenseServiceImpl implements LicenseService { Long userId = updateReqVO.getApprover(); String templateCode = "license_apply"; // 邮件模版,记得在【邮箱管理】中配置噢 Map templateParams = new HashMap<>(); - CustomerDO customerDO = customerMapper.selectById(updateReqVO.getCustomerId()); ProjectDO projectDO = projectMapper.selectById(updateReqVO.getProjectId()); + CustomerDO customerDO = customerMapper.selectById(projectDO.getCustomerId()); templateParams.put("customer", customerDO.getName()); templateParams.put("project", projectDO.getName()); templateParams.put("sn", updateReqVO.getSerialNo()); @@ -469,7 +471,11 @@ public class LicenseServiceImpl implements LicenseService { @Override public LicenseRespVO getLicense(Long id) { LicenseDO licenseDO = licenseMapper.selectById(id); + ProjectDO projectDO = projectMapper.selectById(licenseDO.getProjectId()); LicenseRespVO licenseRespVO = BeanUtils.toBean(licenseDO, LicenseRespVO.class); + if (projectDO != null) { + licenseRespVO.setCustomerId(projectDO.getCustomerId()); + } fillLicenseRespVO(licenseRespVO); return licenseRespVO; } @@ -576,8 +582,9 @@ public class LicenseServiceImpl implements LicenseService { @Override public PageResult getLicensePage(LicensePageReqVO pageReqVO) { - PageResult pageResult = licenseMapper.selectPage(pageReqVO); - PageResult voPageResult = BeanUtils.toBean(pageResult, LicenseRespVO.class); + IPage page = licenseMapper.queryPage(new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()), pageReqVO); + + PageResult voPageResult = BeanUtils.toBean(new PageResult<>(page.getRecords(), page.getTotal()), LicenseRespVO.class); for (LicenseRespVO licenseRespVO : voPageResult.getList()) { fillLicenseRespVO(licenseRespVO); } @@ -586,8 +593,7 @@ public class LicenseServiceImpl implements LicenseService { @Override public List getLicenseByExpiryDate() { - List licenseDOS = licenseMapper.selectListByExpiryDate(); - return BeanUtils.toBean(licenseDOS, LicenseRespVO.class); + return licenseMapper.selectListByExpiryDate(); } @@ -616,6 +622,10 @@ public class LicenseServiceImpl implements LicenseService { List allLicenses = new ArrayList<>(); if (LicenseStatusEnum.COMPLETED.getCode().equals(licenseDO.getStatus())) { LicenseRespVO license = BeanUtils.toBean(licenseDO, LicenseRespVO.class); + ProjectDO projectDO = projectMapper.selectById(licenseDO.getProjectId()); + if (projectDO != null) { + license.setCustomerId(projectDO.getCustomerId()); + } List licenseDetailDOS = licenseDetailMapper.selectList(Wrappers.lambdaQuery().eq(LicenseDetailDO::getLicenseId, license.getId())); List details = BeanUtils.toBean(licenseDetailDOS, LicenseDetailVO.class); fillDetail(details, license); @@ -625,6 +635,10 @@ public class LicenseServiceImpl implements LicenseService { .eq(LicenseHistoryDO::getLicenseId, id).orderByDesc(LicenseHistoryDO::getApplicationTime)); List voList = BeanUtils.toBean(historyDOList, LicenseRespVO.class); for (LicenseRespVO licenseRespVO : voList) { + ProjectDO projectDO = projectMapper.selectById(licenseRespVO.getProjectId()); + if (projectDO != null) { + licenseRespVO.setCustomerId(projectDO.getCustomerId()); + } fillLicenseHistoryRespVO(licenseRespVO); } allLicenses.addAll(voList); @@ -722,6 +736,7 @@ public class LicenseServiceImpl implements LicenseService { projectId = projectDO.getId(); projectDO = BeanUtils.toBean(importVO, ProjectDO.class); projectDO.setId(projectId); + projectDO.setCustomerId(customerId); projectDO.setBusinessOwner(customerMapper.getUserByName(importVO.getBusinessOwnerName())); projectDO.setTechnicalOwnerA(customerMapper.getUserByName(importVO.getTechnicalOwnerAName())); projectDO.setTechnicalOwnerB(customerMapper.getUserByName(importVO.getTechnicalOwnerBName())); @@ -732,7 +747,6 @@ public class LicenseServiceImpl implements LicenseService { } LicenseDO licenseDO = new LicenseDO(); - licenseDO.setCustomerId(customerId); licenseDO.setProjectId(projectId); licenseDO.setSerialNo(serialNo); licenseDO.setStatus(LicenseStatusEnum.COMPLETED.getCode()); diff --git a/agt-module-license/agt-module-license-server/src/main/resources/mapper/license/LicenseMapper.xml b/agt-module-license/agt-module-license-server/src/main/resources/mapper/license/LicenseMapper.xml index 415d4cd..16b1f4b 100644 --- a/agt-module-license/agt-module-license-server/src/main/resources/mapper/license/LicenseMapper.xml +++ b/agt-module-license/agt-module-license-server/src/main/resources/mapper/license/LicenseMapper.xml @@ -9,7 +9,7 @@ crm_license_server l LEFT JOIN crm_project p ON l.project_id = p.id AND p.deleted = 0 - LEFT JOIN crm_customer c ON l.customer_id = c.id + LEFT JOIN crm_customer c ON p.customer_id = c.id AND c.deleted = 0 WHERE l.deleted = 0 @@ -25,4 +25,74 @@ limit 1 + + \ No newline at end of file