ProjectBuildCtrl.java 6.56 KB
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.*;
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.
 */
@RestController
@RequestMapping("project")
public class ProjectBuildCtrl {
    Logger log = LoggerFactory.getLogger(ProjectBuildCtrl.class);

    @Autowired
    private HttpRestClient httpRestClient;

    @RequestMapping("/toOm")
    public ModelAndView toOm() {
        return new ModelAndView("project/om");
    }

    @RequestMapping("/toNewOm")
    public ModelAndView toOmNew() {
        return new ModelAndView("project/newOm");
    }

    @RequestMapping("/toNode")
    public ModelAndView toNode() {
        return new ModelAndView("project/node");
    }

    @RequestMapping("/toProject")
    public ModelAndView toProject(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;
    }


    @RequestMapping("/newOm/query")
    public BaseResponse queryProjects(ProjectInfoReq req) {

        BaseResponse response = httpRestClient.defaultPost("/projectManager/query", req, BaseResponse.class);

        return response;
    }


    @RequestMapping("/newOm/save")
    public BaseResponse addProject(ProjectInfoReq req) {

        BaseResponse response = httpRestClient.defaultPost("/projectManager/add", req, BaseResponse.class);
        return response;
    }

    @RequestMapping("/newOm/del")
    public BaseResponse delProject(ProjectInfoReq req) {

        BaseResponse response = httpRestClient.defaultPost("/projectManager/del", req, BaseResponse.class);
        return response;
    }

    @RequestMapping("/newOm/build")
    public BaseResponse buildOmProject(ProjectBuildInfoReq req) {
        BaseResponse response = httpRestClient.defaultPost("/projectManager/build", req, BaseResponse.class);
        return response;
    }

}