liujie
2026-07-31 67de309a7c464369026427813746ad86e39bd155
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package com.ruoyi.system.service.impl;
 
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.SysVersionUpdate;
import com.ruoyi.system.dto.SysVersionUpdateAddRequest;
import com.ruoyi.system.dto.SysVersionUpdateDeleteRequest;
import com.ruoyi.system.dto.SysVersionUpdateDetailRequest;
import com.ruoyi.system.dto.SysVersionUpdatePageRequest;
import com.ruoyi.system.mapper.SysVersionUpdateMapper;
import com.ruoyi.system.service.ISysVersionUpdateService;
import com.ruoyi.system.vo.SysVersionUpdateVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
 
import java.util.List;
import java.util.Objects;
 
/**
 * 版本更新服务实现
 *
 * @author ruoyi
 */
@Service
public class SysVersionUpdateServiceImpl implements ISysVersionUpdateService
{
    @Autowired
    private SysVersionUpdateMapper versionUpdateMapper;
 
    @Override
    public PageInfo<SysVersionUpdateVO> pageList(SysVersionUpdatePageRequest request)
    {
        SysVersionUpdatePageRequest query = request == null ? new SysVersionUpdatePageRequest() : request;
        PageInfo<SysVersionUpdateVO> pageInfo = new PageInfo<SysVersionUpdateVO>(query.getPageNum(), query.getPageSize());
        List<SysVersionUpdateVO> list = versionUpdateMapper.pageList(query, pageInfo);
        SysVersionUpdateVO latest = versionUpdateMapper.selectLatest();
        Long latestUpdateId = latest == null ? null : latest.getUpdateId();
        for (SysVersionUpdateVO versionUpdate : list)
        {
            versionUpdate.setLatest(Objects.equals(versionUpdate.getUpdateId(), latestUpdateId));
        }
        pageInfo.setRecords(list);
        return pageInfo;
    }
 
    @Override
    public SysVersionUpdateVO latest()
    {
        SysVersionUpdateVO latest = versionUpdateMapper.selectLatest();
        if (latest != null)
        {
            latest.setLatest(Boolean.TRUE);
        }
        return latest;
    }
 
    @Override
    public SysVersionUpdateVO detail(SysVersionUpdateDetailRequest request)
    {
        if (request == null || request.getUpdateId() == null)
        {
            throw new ServiceException("更新主键不能为空");
        }
        SysVersionUpdateVO detail = versionUpdateMapper.selectById(request.getUpdateId());
        if (detail == null)
        {
            throw new ServiceException("版本更新记录不存在");
        }
        SysVersionUpdateVO latest = versionUpdateMapper.selectLatest();
        detail.setLatest(latest != null && Objects.equals(detail.getUpdateId(), latest.getUpdateId()));
        return detail;
    }
 
    @Override
    public int add(SysVersionUpdateAddRequest request, String username)
    {
        if (request == null)
        {
            throw new ServiceException("版本更新内容不能为空");
        }
        String versionNo = StringUtils.trim(request.getVersionNo());
        if (StringUtils.isEmpty(versionNo))
        {
            throw new ServiceException("版本号不能为空");
        }
        String versionNumber = versionNo.replaceFirst("^[vV]", "");
        if (!versionNumber.matches("\\d+(\\.\\d+)*"))
        {
            throw new ServiceException("版本号格式不正确,请输入数字或使用小数点分隔");
        }
        versionNo = versionNumber;
        String updateContent = StringUtils.trim(request.getUpdateContent());
        String packageUrl = StringUtils.trim(request.getPackageUrl());
        if (StringUtils.isEmpty(packageUrl))
        {
            throw new ServiceException("安装包不能为空");
        }
        String packageName = StringUtils.trim(request.getPackageName());
        SysVersionUpdate versionUpdate = new SysVersionUpdate();
        versionUpdate.setVersionNo(versionNo);
        versionUpdate.setUpdateContent(updateContent);
        versionUpdate.setPackageUrl(packageUrl);
        versionUpdate.setPackageName(StringUtils.isEmpty(packageName) ? packageUrl : packageName);
        versionUpdate.setForceUpdate(request.getForceUpdate() == null ? Boolean.FALSE : request.getForceUpdate());
        versionUpdate.setCreateBy(username);
        return versionUpdateMapper.insertVersionUpdate(versionUpdate);
    }
 
    @Override
    public int delete(SysVersionUpdateDeleteRequest request)
    {
        if (request == null || CollectionUtils.isEmpty(request.getUpdateIds()))
        {
            throw new ServiceException("更新主键集合不能为空");
        }
        SysVersionUpdateVO latest = versionUpdateMapper.selectLatest();
        if (latest != null && request.getUpdateIds().contains(latest.getUpdateId()))
        {
            throw new ServiceException("最新版本不能删除");
        }
        return versionUpdateMapper.deleteByIds(request.getUpdateIds());
    }
}