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 pageList(SysVersionUpdatePageRequest request) { SysVersionUpdatePageRequest query = request == null ? new SysVersionUpdatePageRequest() : request; PageInfo pageInfo = new PageInfo(query.getPageNum(), query.getPageSize()); List 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()); } }