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());
|
}
|
}
|