package com.ui.ctrl; import com.alibaba.fastjson.JSONArray; import com.ui.contants.HttpUriContants; import com.ui.http.HttpRestClient; import com.ui.model.BaseResponse; import com.ui.model.req.BuildRequest; import com.ui.model.req.HostInfoReq; import com.ui.model.req.ProjectBuildReq; import com.ui.project.ProjectEnvironment; import com.ui.project.ProjectOnline; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpSession; import java.util.HashMap; import java.util.Map; /** * Created by fruwei on 2016/6/16. */ @Controller @RequestMapping("project") public class ProjectBuildCtrl { Logger log = LoggerFactory.getLogger(ProjectBuildCtrl.class); @Autowired private HttpRestClient httpRestClient; @RequestMapping("/toProject") public ModelAndView toJavaApi(Model model) { model.addAttribute("environments", ProjectEnvironment.getEnviroments()); return new ModelAndView("project/project"); } @RequestMapping("/toHistory") public ModelAndView toHistory(Model model) { model.addAttribute("environments", ProjectEnvironment.getEnviroments()); model.addAttribute("projects", ProjectOnline.getProjectList()); return new ModelAndView("project/history"); } /** * 获取所有项目 * * @return */ @RequestMapping(value = "getProjects", method = RequestMethod.POST) @ResponseBody public String getProjects() { try { return JSONArray.toJSON(ProjectOnline.getProjectList()).toString(); } catch (Exception ex) { return "failed"; } } /** * 校验tag * * @return */ @RequestMapping(value = "checkTag", method = RequestMethod.POST) @ResponseBody public String checkTag(String projects, String tag, String enviromment) { Map<String, String> map = new HashMap<>(); map.put("projects", projects); map.put("tag", tag); return httpRestClient.get(ProjectEnvironment.getUrl(enviromment) + "checkTag", String.class, map); } /** * 校验branch * * @return */ @RequestMapping(value = "checkBranch") @ResponseBody public String checkBranch(String projects, String branch, String environment) { if (!("master".equals(branch) || "test".equals(branch) || "dev".equals(branch))) { Map<String, String> map = new HashMap<>(); map.put("projects", projects); map.put("branch", branch); return httpRestClient.get(ProjectEnvironment.getUrl(environment) + "checkBranch", String.class, map); } return "1"; } /** * 执行任务 * * @param request * @return */ @RequestMapping(value = "build", method = RequestMethod.POST) @ResponseBody public String build(@RequestBody BuildRequest request,HttpSession session) { try { String user = String.valueOf(session.getAttribute("user")); request.setUser(user); return httpRestClient.post(ProjectEnvironment.getUrl(request.getEnvironment()) + "build", request, String.class); } catch (Exception ex) { return "failed"; } } /** * 获取执行结果 * * @param messageid * @return */ @RequestMapping(value = "getbuildmsg", method = RequestMethod.POST) @ResponseBody public String getbuildmsg(String messageid, String project) { try { Map<String, String> map = new HashMap<>(); map.put("messageid", messageid); map.put("project", project); return httpRestClient.get(ProjectEnvironment.getUrl(messageid.split("_")[0]) + "getbuildmsg", String.class, map); } catch (Exception ex) { return "failed"; } } @RequestMapping(value = "cancelBuild") @ResponseBody public String cancelBuild(String id) { try { Map<String, String> map = new HashMap<>(); map.put("id", id); return httpRestClient.get(ProjectEnvironment.getUrl(id.split("_")[0]) + "cancelBuild", String.class, map); } catch (Exception ex) { return "failed"; } } @RequestMapping(value = "rollbackList", method = RequestMethod.POST) @ResponseBody public String rollbackList(String project, String environment) { try { Map<String, String> map = new HashMap<>(); map.put("project", project); map.put("environment", environment); return httpRestClient.get(ProjectEnvironment.getUrl(environment) + "rollbackList", String.class, map); } catch (Exception ex) { return "failed"; } } @RequestMapping("/getHistory") @ResponseBody public BaseResponse getHistory(ProjectBuildReq req) throws Exception { if("all".equals(req.getEnvironment())){ req.setEnvironment(null); } if("all".equals(req.getCurrentProject())){ req.setCurrentProject(null); } BaseResponse response=httpRestClient.defaultPost("/projectBuild/getHistory", req, BaseResponse.class); return response; } }