liujie
2026-09-11 4d15e6b553c448e2e07527e9c06aa4b5f9b099cf
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
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.SysVersionUpdateEditRequest;
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("版本更新内容不能为空");
        }
        SysVersionUpdate versionUpdate = buildVersionUpdate(request.getVersionNo(), request.getUpdateContent(),
                request.getPackageUrl(), request.getPackageName(), request.getForceUpdate());
        versionUpdate.setCreateBy(username);
        return versionUpdateMapper.insertVersionUpdate(versionUpdate);
    }
 
    @Override
    public int edit(SysVersionUpdateEditRequest request, String username)
    {
        if (request == null || request.getUpdateId() == null || request.getUpdateId() <= 0)
        {
            throw new ServiceException("更新主键不能为空");
        }
        if (versionUpdateMapper.selectById(request.getUpdateId()) == null)
        {
            throw new ServiceException("版本更新记录不存在");
        }
        SysVersionUpdate versionUpdate = buildVersionUpdate(request.getVersionNo(), request.getUpdateContent(),
                request.getPackageUrl(), request.getPackageName(), request.getForceUpdate());
        versionUpdate.setUpdateId(request.getUpdateId());
        versionUpdate.setUpdateBy(username);
        return versionUpdateMapper.updateVersionUpdate(versionUpdate);
    }
 
    private SysVersionUpdate buildVersionUpdate(String requestVersionNo, String requestUpdateContent,
                                                 String requestPackageUrl, String requestPackageName,
                                                 Boolean requestForceUpdate)
    {
        String versionNo = StringUtils.trim(requestVersionNo);
        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(requestUpdateContent);
        String packageUrl = StringUtils.trim(requestPackageUrl);
        if (StringUtils.isEmpty(packageUrl))
        {
            throw new ServiceException("安装包不能为空");
        }
        String packageName = StringUtils.trim(requestPackageName);
        SysVersionUpdate versionUpdate = new SysVersionUpdate();
        versionUpdate.setVersionNo(versionNo);
        versionUpdate.setUpdateContent(updateContent);
        versionUpdate.setPackageUrl(packageUrl);
        versionUpdate.setPackageName(StringUtils.isEmpty(packageName) ? packageUrl : packageName);
        versionUpdate.setForceUpdate(requestForceUpdate == null ? Boolean.FALSE : requestForceUpdate);
        return 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());
    }
}