package com.ruoyi.system.service.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.system.domain.SysAgreement; import com.ruoyi.system.mapper.SysAgreementMapper; import com.ruoyi.system.service.ISysAgreementService; /** * 协议版本 服务层实现 * * @author ruoyi */ @Service public class SysAgreementServiceImpl implements ISysAgreementService { @Autowired private SysAgreementMapper agreementMapper; /** * 查询协议版本信息 * * @param agreementId 协议编号 * @return 协议版本信息 */ @Override public SysAgreement selectAgreementById(Long agreementId) { return agreementMapper.selectAgreementById(agreementId); } /** * 查询协议版本列表 * * @param agreement 协议版本信息 * @return 协议版本集合 */ @Override public List selectAgreementList(SysAgreement agreement) { return agreementMapper.selectAgreementList(agreement); } /** * 发布一个协议版本 * * 没有 @Transactional:全程只有一条 INSERT,没有第二处写入要与它保持一致 * (旧版本的「历史版本」身份是查出来的,不需要在发布时改写任何行)。 * 这里刻意不做「自动失效旧版本」那种维护动作,那样反而要引入事务和可被遗忘的补偿逻辑。 * * 同类型下版本号重复由这里拦:交给数据库唯一键只会返回 500 与一句英文异常, * 而 ServiceException 的 message 会被 RuoYi 的全局异常处理原样吐给前端。 * * @param agreement 协议版本信息 * @return 结果 */ @Override public int publishAgreement(SysAgreement agreement) { if (agreementMapper.countByTypeAndVersion(agreement.getAgreementType(), agreement.getVersion()) > 0) { throw new ServiceException("该协议类型下已存在版本号 " + agreement.getVersion() + ",请更换版本号后再发布"); } return agreementMapper.insertAgreement(agreement); } }