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 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("版本更新内容不能为空"); } 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()); } }