liujie
昨天 c983a0a398504697a777ffae48e59961b5ee2bd7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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<SysAgreement> 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);
    }
}