package com.oying.modules.maint.service.impl; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.oying.modules.maint.domain.dto.AppQueryCriteria; import com.oying.modules.maint.mapper.AppMapper; import com.oying.modules.maint.mapper.DeployMapper; import com.oying.modules.maint.mapper.DeployServerMapper; import lombok.RequiredArgsConstructor; import com.oying.exception.BadRequestException; import com.oying.modules.maint.domain.App; import com.oying.modules.maint.service.AppService; import com.oying.utils.FileUtil; import com.oying.utils.PageResult; import com.oying.utils.PageUtil; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.*; /** * @author Z * @date 2019-08-24 */ @Service @RequiredArgsConstructor public class AppServiceImpl extends ServiceImpl implements AppService { private final AppMapper appMapper; private final DeployMapper deployMapper; private final DeployServerMapper deployServerMapper; @Override public PageResult queryAll(AppQueryCriteria criteria, Page page){ return PageUtil.toPage(appMapper.queryAll(criteria, page)); } @Override public List queryAll(AppQueryCriteria criteria){ return appMapper.queryAll(criteria); } @Override @Transactional(rollbackFor = Exception.class) public void create(App resources) { verification(resources); save(resources); } @Override @Transactional(rollbackFor = Exception.class) public void update(App resources) { verification(resources); App app = getById(resources.getId()); app.copy(resources); saveOrUpdate(app); } private void verification(App resources){ String opt = "/opt"; String home = "/home"; if (!(resources.getUploadPath().startsWith(opt) || resources.getUploadPath().startsWith(home))) { throw new BadRequestException("文件只能上传在opt目录或者home目录 "); } if (!(resources.getDeployPath().startsWith(opt) || resources.getDeployPath().startsWith(home))) { throw new BadRequestException("文件只能部署在opt目录或者home目录 "); } if (!(resources.getBackupPath().startsWith(opt) || resources.getBackupPath().startsWith(home))) { throw new BadRequestException("文件只能备份在opt目录或者home目录 "); } } @Override @Transactional(rollbackFor = Exception.class) public void delete(Set ids) { // 删除应用 removeBatchByIds(ids); // 删除部署 Set deployIds = deployMapper.getIdByAppIds(ids); if(CollUtil.isNotEmpty(deployIds)){ deployServerMapper.deleteByDeployIds(deployIds); deployMapper.deleteBatchIds(deployIds); } } @Override public void download(List apps, HttpServletResponse response) throws IOException { List> list = new ArrayList<>(); for (App app : apps) { Map map = new LinkedHashMap<>(); map.put("应用名称", app.getName()); map.put("端口", app.getPort()); map.put("上传目录", app.getUploadPath()); map.put("部署目录", app.getDeployPath()); map.put("备份目录", app.getBackupPath()); map.put("启动脚本", app.getStartScript()); map.put("部署脚本", app.getDeployScript()); map.put("创建日期", app.getCreateTime()); list.add(map); } FileUtil.downloadExcel(list, response); } }