package com.sobey.cmop.mvc.web.summary; import java.util.Map; import java.util.Map.Entry; import javax.servlet.ServletRequest; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import com.sobey.cmop.mvc.comm.BaseController; import com.sobey.cmop.mvc.constant.ResourcesConstant; import com.sobey.cmop.mvc.entity.Resources; import com.sobey.cmop.mvc.entity.User; import com.sobey.framework.utils.Servlets; /** * SummaryController负责资源汇总的管理 * * @author liukai * */ @Controller @RequestMapping(value = "/summary") public class SummaryController extends BaseController { /** * 显示资源Resources的List */ @RequestMapping(value = { "list", "" }) public String assigned(@RequestParam(value = "page", defaultValue = "1") int pageNumber, @RequestParam(value = "page.size", defaultValue = PAGE_SIZE) int pageSize, Model model, ServletRequest request) { Map<String, Object> searchParams = Servlets.getParametersStartingWith(request, REQUEST_PREFIX); model.addAttribute("page", comm.resourcesService.getSummaryPageable(searchParams, pageNumber, pageSize)); // 将搜索条件编码成字符串,分页的URL model.addAttribute("searchParams", Servlets.encodeParameterStringWithPrefix(searchParams, REQUEST_PREFIX)); /** * 返回不同服务类型的资源统计.页面参数为:服务类型名+COUNT. eg: PCSCOUNT,ECSCOUNT. * * 服务类型注意是从ResourcesConstant.ServiceType中迭代出来的. 所以枚举中修改了名称的话, 页面的参数名和链接后的查询参数也需要修改. */ for (Entry<Integer, String> entry : ResourcesConstant.ServiceType.map.entrySet()) { model.addAttribute(entry.getValue() + "COUNT", comm.resourcesService.getResourcesSummaryStatistics(entry.getKey())); } return "summary/summaryList"; } /** * 跳转到详情页面 */ @RequestMapping(value = "/detail/{id}", method = RequestMethod.GET) public String detail(@PathVariable("id") Integer id, Model model) { Resources resources = comm.resourcesService.getResources(id); model.addAttribute("resources", resources); model.addAttribute("change", comm.changeServcie.findChangeByResourcesId(id)); String detailUrl = null; Integer serviceId = resources.getServiceId(); // 服务类型 Integer serviceType = resources.getServiceType(); if (serviceType.equals(ResourcesConstant.ServiceType.PCS.toInteger()) || serviceType.equals(ResourcesConstant.ServiceType.ECS.toInteger())) { model.addAttribute("compute", comm.computeService.getComputeItem(serviceId)); detailUrl = "resource/detail/computeDetail"; } else if (serviceType.equals(ResourcesConstant.ServiceType.ES3.toInteger())) { model.addAttribute("storage", comm.es3Service.getStorageItem(serviceId)); detailUrl = "resource/detail/storageDetail"; } else if (serviceType.equals(ResourcesConstant.ServiceType.ELB.toInteger())) { model.addAttribute("elb", comm.elbService.getNetworkElbItem(serviceId)); detailUrl = "resource/detail/elbDetail"; } else if (serviceType.equals(ResourcesConstant.ServiceType.EIP.toInteger())) { model.addAttribute("eip", comm.eipService.getNetworkEipItem(serviceId)); detailUrl = "resource/detail/eipDetail"; } else if (serviceType.equals(ResourcesConstant.ServiceType.DNS.toInteger())) { model.addAttribute("dns", comm.dnsService.getNetworkDnsItem(serviceId)); detailUrl = "resource/detail/dnsDetail"; } else if (serviceType.equals(ResourcesConstant.ServiceType.MONITOR_COMPUTE.toInteger())) { model.addAttribute("monitorCompute", comm.monitorComputeServcie.getMonitorCompute(serviceId)); detailUrl = "resource/detail/monitorComputeDetail"; } else if (serviceType.equals(ResourcesConstant.ServiceType.MONITOR_ELB.toInteger())) { model.addAttribute("monitorElb", comm.monitorElbServcie.getMonitorElb(serviceId)); detailUrl = "resource/detail/monitorElbDetail"; } else if (serviceType.equals(ResourcesConstant.ServiceType.MDN.toInteger())) { model.addAttribute("mdn", comm.mdnService.getMdnItem(serviceId)); detailUrl = "resource/detail/mdnDetail"; } else if (serviceType.equals(ResourcesConstant.ServiceType.CP.toInteger())) { model.addAttribute("cp", comm.cpService.getCpItem(serviceId)); detailUrl = "resource/detail/cpDetail"; } else { detailUrl = "resource/resourceList"; } return detailUrl; } /** * 跳转到迁移页面 */ @RequestMapping(value = "/migrate/{id}", method = RequestMethod.GET) public String migrate(@PathVariable("id") Integer id, Model model) { Resources resources = comm.resourcesService.getResources(id); model.addAttribute("resources", resources); model.addAttribute("migrate", "migrate"); model.addAttribute("change", comm.changeServcie.findChangeByResourcesId(id)); model.addAttribute("users", comm.accountService.getUsers()); String detailUrl = null; Integer serviceId = resources.getServiceId(); // 服务类型 Integer serviceType = resources.getServiceType(); if (serviceType.equals(ResourcesConstant.ServiceType.PCS.toInteger()) || serviceType.equals(ResourcesConstant.ServiceType.ECS.toInteger())) { model.addAttribute("compute", comm.computeService.getComputeItem(serviceId)); detailUrl = "resource/detail/computeDetail"; } else if (serviceType.equals(ResourcesConstant.ServiceType.ES3.toInteger())) { model.addAttribute("storage", comm.es3Service.getStorageItem(serviceId)); detailUrl = "resource/detail/storageDetail"; } else if (serviceType.equals(ResourcesConstant.ServiceType.ELB.toInteger())) { model.addAttribute("elb", comm.elbService.getNetworkElbItem(serviceId)); detailUrl = "resource/detail/elbDetail"; } else if (serviceType.equals(ResourcesConstant.ServiceType.EIP.toInteger())) { model.addAttribute("eip", comm.eipService.getNetworkEipItem(serviceId)); detailUrl = "resource/detail/eipDetail"; } else if (serviceType.equals(ResourcesConstant.ServiceType.DNS.toInteger())) { model.addAttribute("dns", comm.dnsService.getNetworkDnsItem(serviceId)); detailUrl = "resource/detail/dnsDetail"; } else if (serviceType.equals(ResourcesConstant.ServiceType.MONITOR_COMPUTE.toInteger())) { model.addAttribute("monitorCompute", comm.monitorComputeServcie.getMonitorCompute(serviceId)); detailUrl = "resource/detail/monitorComputeDetail"; } else if (serviceType.equals(ResourcesConstant.ServiceType.MONITOR_ELB.toInteger())) { model.addAttribute("monitorElb", comm.monitorElbServcie.getMonitorElb(serviceId)); detailUrl = "resource/detail/monitorElbDetail"; } else if (serviceType.equals(ResourcesConstant.ServiceType.MDN.toInteger())) { model.addAttribute("mdn", comm.mdnService.getMdnItem(serviceId)); detailUrl = "resource/detail/mdnDetail"; } else if (serviceType.equals(ResourcesConstant.ServiceType.CP.toInteger())) { model.addAttribute("cp", comm.cpService.getCpItem(serviceId)); detailUrl = "resource/detail/cpDetail"; } else { detailUrl = "resource/resourceList"; } return detailUrl; } /** * 迁移 * * @param redirectAttributes * @param userId * @param resourceId * @return */ @RequestMapping(value = "/migrate", method = RequestMethod.POST) public String migrateForm(RedirectAttributes redirectAttributes, @RequestParam(value = "userId") Integer userId, @RequestParam(value = "resourceId") Integer resourceId) { Resources resources = comm.resourcesService.getResources(resourceId); User user = comm.accountService.getUser(userId); resources.setServiceTag(comm.serviceTagService.saveServiceTag(resources, user)); resources.setUser(user); comm.resourcesService.saveOrUpdate(resources); return "redirect:/summary/migrate/" + resourceId; } }