package com.wgcloud.service; import cn.hutool.core.bean.BeanUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.wgcloud.entity.DockerInfo; import com.wgcloud.entity.HostGroup; import com.wgcloud.mapper.DockerInfoMapper; import com.wgcloud.mapper.DockerStateMapper; import com.wgcloud.util.DateUtil; import com.wgcloud.util.HostUtil; import com.wgcloud.util.UUIDUtil; import com.wgcloud.util.staticvar.StaticKeys; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @version v3.3 * @ClassName:DockerInfoService.java * @author: http://www.wgstart.com * @date: 2021年1月16日 * @Description: DockerInfoService.java * @Copyright: 2019-2021 wgcloud. All rights reserved. */ @Service public class DockerInfoService { private static final Logger logger = LoggerFactory.getLogger(DockerInfoService.class); public PageInfo selectByParams(Map params, int currPage, int pageSize) throws Exception { PageHelper.startPage(currPage, pageSize); List list = dockerInfoMapper.selectByParams(params); PageInfo pageInfo = new PageInfo(list); return pageInfo; } public void save(DockerInfo DockerInfo, HttpServletRequest request) throws Exception { DockerInfo.setId(UUIDUtil.getUUID()); Date nowDate = DateUtil.getNowTime(); DockerInfo.setCreateTime(nowDate); DockerInfo.setDockerSize("0"); DockerInfo.setMemPer(0d); DockerInfo.setGatherDockerNames("获取中"); if (!StringUtils.isEmpty(DockerInfo.getDockerId())) { DockerInfo.setDockerId(DockerInfo.getDockerId().trim()); } dockerInfoMapper.save(DockerInfo); //保存页面动态添加的进程数据 addExtDataForm(DockerInfo, request, nowDate); } /** * 保存页面动态添加的docker数据 * * @param dockerInfo * @param request */ private void addExtDataForm(DockerInfo dockerInfo, HttpServletRequest request, Date nowDate) throws Exception { String dataFromIndex = request.getParameter("dataFromIndex"); int rowsLen = 0; if (!StringUtils.isEmpty(dataFromIndex)) { for (int i = 0; i <= Integer.valueOf(dataFromIndex); i++) { String dockerId = request.getParameter("dockerId_" + i); String dockerName = request.getParameter("dockerName_" + i); if (StringUtils.isEmpty(dockerId) || StringUtils.isEmpty(dockerName)) { continue; } DockerInfo dockerInfoExt = new DockerInfo(); BeanUtil.copyProperties(dockerInfo, dockerInfoExt, true); dockerInfoExt.setId(UUIDUtil.getUUID()); dockerInfoExt.setCreateTime(nowDate); dockerInfoExt.setDockerId(dockerId); dockerInfoExt.setDockerName(dockerName); dockerInfoMapper.save(dockerInfoExt); saveLog(request, StaticKeys.LOG_ADD, dockerInfoExt); rowsLen += 1; } } } public int deleteByHostName(Map map) throws Exception { return dockerInfoMapper.deleteByHostName(map); } @Transactional public void saveRecord(List recordList) throws Exception { if (recordList.size() < 1) { return; } for (DockerInfo as : recordList) { as.setId(UUIDUtil.getUUID()); } dockerInfoMapper.insertList(recordList); } public void downByHostName(List recordList) throws Exception { if (recordList.size() < 1) { return; } dockerInfoMapper.downByHostName(recordList); } public int countByParams(Map params) throws Exception { return dockerInfoMapper.countByParams(params); } @Transactional public int deleteById(String[] id) throws Exception { return dockerInfoMapper.deleteById(id); } @Transactional public void updateRecord(List recordList) throws Exception { if (recordList.size() < 1) { return; } dockerInfoMapper.updateList(recordList); } public void updateById(DockerInfo DockerInfo) throws Exception { dockerInfoMapper.updateById(DockerInfo); } public DockerInfo selectById(String id) throws Exception { return dockerInfoMapper.selectById(id); } public List selectAllByParams(Map params) throws Exception { return dockerInfoMapper.selectAllByParams(params); } /** * 设置资源分组 begin * * @param recordList */ public List setGroupInList(List recordList) throws Exception { Map params = new HashMap(); params.put("groupType", StaticKeys.HOST_GROUP_1); List hostGroupList = hostGroupService.selectAllByParams(params); //查询所有主机分组列表,封装为map Map hostGroupMap = new HashMap<>(); for (HostGroup hostGroup : hostGroupList) { hostGroupMap.put(hostGroup.getId(), hostGroup.getGroupName()); } for (DockerInfo dockerInfo : recordList) { if (!StringUtils.isEmpty(dockerInfo.getGroupId())) { dockerInfo.setGroupId(hostGroupMap.get(dockerInfo.getGroupId())); } } return hostGroupList; } /** * 保存操作日志 * * @param request 获取当前登录用户 * @param action 操作标识 */ public void saveLog(HttpServletRequest request, String action, DockerInfo dockerInfo) { if (null == dockerInfo) { return; } logInfoService.save(HostUtil.getAccountByRequest(request).getAccount() + action + "docker容器监测信息:" + dockerInfo.getHostname() + "," + dockerInfo.getDockerName(), "docker名称:" + dockerInfo.getDockerName() + ",获取docker方法:" + dockerInfo.getDockerId(), StaticKeys.LOG_XTCZ); } @Autowired private DockerInfoMapper dockerInfoMapper; @Autowired private DockerStateMapper dockerStateMapper; @Resource private HostGroupService hostGroupService; @Autowired private LogInfoService logInfoService; }