吴羡
2026-10-28 4efd37516a0723c67a2644ab0ddcf86013af6a4b
Merge remote-tracking branch 'origin/master'
已添加2个文件
已修改3个文件
175 ■■■■■ 文件已修改
basic-server/src/main/java/com/ruoyi/basic/controller/CertificationController.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/dto/CertificationImageUpdateDto.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/dto/CertificationUpdateDto.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/CertificationService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/CertificationServiceImpl.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/controller/CertificationController.java
@@ -1,6 +1,8 @@
package com.ruoyi.basic.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.basic.dto.CertificationImageUpdateDto;
import com.ruoyi.basic.dto.CertificationUpdateDto;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.basic.pojo.Certification;
import com.ruoyi.basic.service.CertificationService;
@@ -25,11 +27,30 @@
        return Result.success(certificationService.getCertificationDetail(page, certification));
    }
    @Operation(summary = "按ID查询资质详情")
    @GetMapping("/getCertificationById")
    public Result<Certification> getCertificationById(Integer id) {
        return Result.success(certificationService.getCertificationById(id));
    }
    @Operation(summary = "添加资质明细列表")
    @PostMapping("/addCertificationDetail")
    public Result addCertificationDetail(@RequestBody Certification certification) {
        return Result.success(certificationService.addCertificationDetail(certification));
    }
    @Operation(summary = "更新资质资料")
    @PutMapping("/updateCertificationDetail")
    public Result<Integer> updateCertificationDetail(@RequestBody CertificationUpdateDto certification) {
        return Result.success(certificationService.updateCertificationDetail(certification));
    }
    @Operation(summary = "更新资质图片")
    @PutMapping("/updateCertificationImage")
    public Result<Integer> updateCertificationImage(@RequestBody CertificationImageUpdateDto certification) {
        return Result.success(certificationService.updateCertificationImage(certification));
    }
    @Operation(summary = "删除资质明细列表")
    @DeleteMapping("/delCertificationDetail")
    public Result<?> delCertificationDetail(String ids) {
basic-server/src/main/java/com/ruoyi/basic/dto/CertificationImageUpdateDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.basic.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/** èµ„质图片更新参数。 */
@Data
@Schema(description = "资质图片更新参数")
public class CertificationImageUpdateDto {
    @Schema(description = "资质ID")
    private Integer id;
    @Schema(description = "资质图片地址")
    private String imageUrl;
}
basic-server/src/main/java/com/ruoyi/basic/dto/CertificationUpdateDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
package com.ruoyi.basic.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
/** èµ„质资料更新参数。 */
@Data
@Schema(description = "资质资料更新参数")
public class CertificationUpdateDto {
    @Schema(description = "资质ID")
    private Integer id;
    @Schema(description = "资质名称")
    private String name;
    @Schema(description = "资质编码")
    private String code;
    @Schema(description = "颁发机构")
    private String organization;
    @Schema(description = "资质说明")
    private String explanation;
    @Schema(description = "颁发时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime dateOfIssuance;
    @Schema(description = "到期时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime expireTime;
    @Schema(description = "资质图片地址")
    private String imageUrl;
    @Schema(description = "资质附件地址")
    private String fileUrl;
}
basic-server/src/main/java/com/ruoyi/basic/service/CertificationService.java
@@ -3,15 +3,23 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.basic.dto.CertificationImageUpdateDto;
import com.ruoyi.basic.dto.CertificationUpdateDto;
import com.ruoyi.basic.pojo.Certification;
public interface CertificationService extends IService<Certification> {
    //查询资质明细列表
    IPage<Certification> getCertificationDetail(Page page, Certification certification);
    Certification getCertificationById(Integer id);
    //添加资质明细列表
    int addCertificationDetail(Certification certification);
    int updateCertificationDetail(CertificationUpdateDto certification);
    int updateCertificationImage(CertificationImageUpdateDto certification);
    //删除资质明细列表
    int delCertificationDetail(String ids);
}
basic-server/src/main/java/com/ruoyi/basic/service/impl/CertificationServiceImpl.java
@@ -1,13 +1,16 @@
package com.ruoyi.basic.service.impl;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.basic.dto.CertificationImageUpdateDto;
import com.ruoyi.basic.dto.CertificationUpdateDto;
import com.ruoyi.basic.mapper.CertificationMapper;
import com.ruoyi.basic.pojo.Certification;
import com.ruoyi.basic.service.CertificationService;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.StringUtils;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -31,10 +34,71 @@
        return  certificationMapper.getCertificationDetail(page, certification);
    }
    @Override
    public Certification getCertificationById(Integer id) {
        if (id == null) {
            throw new BaseException("资质ID不能为空");
        }
        Certification certification = certificationMapper.selectById(id);
        if (certification == null) {
            throw new BaseException("资质记录不存在");
        }
        return certification;
    }
    //添加资质明细列表
    @Override
    public int addCertificationDetail(Certification certification) {
        validateRequiredFields(certification.getName(), certification.getCode(), certification.getOrganization(),
                certification.getDateOfIssuance(), certification.getExpireTime());
        return certificationMapper.insert(certification);
    }
    @Override
    public int updateCertificationDetail(CertificationUpdateDto certification) {
        if (certification == null || certification.getId() == null) {
            throw new BaseException("资质ID不能为空");
        }
        Certification existing = getCertificationById(certification.getId());
        validateRequiredFields(certification.getName(), certification.getCode(), certification.getOrganization(),
                certification.getDateOfIssuance(), certification.getExpireTime());
        String imageUrl = StringUtils.isNotBlank(certification.getImageUrl())
                ? certification.getImageUrl() : existing.getImageUrl();
        String fileUrl = StringUtils.isNotBlank(certification.getFileUrl())
                ? certification.getFileUrl() : existing.getFileUrl();
        int updated = certificationMapper.update(new Certification(), Wrappers.<Certification>lambdaUpdate()
                .eq(Certification::getId, certification.getId())
                .set(Certification::getName, certification.getName())
                .set(Certification::getCode, certification.getCode())
                .set(Certification::getOrganization, certification.getOrganization())
                .set(Certification::getExplanation, certification.getExplanation())
                .set(Certification::getDateOfIssuance, certification.getDateOfIssuance())
                .set(Certification::getExpireTime, certification.getExpireTime())
                .set(Certification::getImageUrl, imageUrl)
                .set(Certification::getFileUrl, fileUrl));
        if (updated < 1) {
            throw new BaseException("资质更新失败");
        }
        return updated;
    }
    @Override
    public int updateCertificationImage(CertificationImageUpdateDto certification) {
        if (certification == null || certification.getId() == null) {
            throw new BaseException("资质ID不能为空");
        }
        if (StringUtils.isBlank(certification.getImageUrl())) {
            throw new BaseException("资质图片不能为空");
        }
        getCertificationById(certification.getId());
        int updated = certificationMapper.update(new Certification(), Wrappers.<Certification>lambdaUpdate()
                .eq(Certification::getId, certification.getId())
                .set(Certification::getImageUrl, certification.getImageUrl()));
        if (updated < 1) {
            throw new BaseException("资质图片更新失败");
        }
        return updated;
    }
    //删除资质明细列表
@@ -44,4 +108,24 @@
        return certificationMapper.deleteBatchIds(list);
    }
    private void validateRequiredFields(String name, String code, String organization,
                                        java.time.LocalDateTime dateOfIssuance,
                                        java.time.LocalDateTime expireTime) {
        if (StringUtils.isBlank(name)) {
            throw new BaseException("资质名称不能为空");
        }
        if (StringUtils.isBlank(code)) {
            throw new BaseException("资质编码不能为空");
        }
        if (StringUtils.isBlank(organization)) {
            throw new BaseException("颁发机构不能为空");
        }
        if (dateOfIssuance == null) {
            throw new BaseException("颁发时间不能为空");
        }
        if (expireTime == null) {
            throw new BaseException("到期时间不能为空");
        }
    }
}