Authored by qinchao

完善工单

... ... @@ -8,7 +8,7 @@ public class ProjectEnvironment {
private static List<String> JAVA_ENV_LIST_QCLOUD = Arrays.asList("qcloud", "qcloud_gray");
private static List<String> JAVA_ENV_LIST_AWS= Arrays.asList( "aws","aws_gray");
private static String[] dockerEnvironments = {"yoho-online","yoho-gray"};
private static List<String> dockerEnvironments = Arrays.asList("yoho-online","yoho-gray");
//private static String[] dockerProjectTypes = {"node","java","php","ops","other"};
private static Map<String,String> map = new HashMap<>();
private static Map<String,String> dockerProjectTypeMap=new LinkedHashMap<>();
... ... @@ -29,18 +29,20 @@ public class ProjectEnvironment {
dockerProjectTypeMap.put("erp","erp");
}
public static List<String> getJavaEnvListALL() {
return JAVA_ENV_LIST;
}
public static List<String> getJavaEnvList(String project) {
if("yoho-social".equals(project)||"yohobuy-union".equals(project)){
return JAVA_ENV_LIST_QCLOUD;
List<String> ls=new ArrayList<>();
ls.addAll(JAVA_ENV_LIST_QCLOUD);
ls.addAll(JAVA_ENV_LIST_AWS);
ls.remove("aws");
return ls;
}
return JAVA_ENV_LIST;
}
public static Set<String> getEnviroments(){
return map.keySet();
}
public static String getUrl(String envi){
if(map.containsKey(envi)){
return map.get(envi);
... ... @@ -50,7 +52,7 @@ public class ProjectEnvironment {
}
public static String[] getDockerEnvironments(){
public static List<String> getDockerEnvironments(){
return dockerEnvironments;
}
... ...
... ... @@ -4,8 +4,8 @@ import com.ui.contants.HttpUriContants;
import com.ui.http.HttpRestClient;
import com.ui.model.BaseResponse;
import com.ui.model.domain.BuildMessage;
import com.ui.model.req.*;
import com.ui.project.ProjectEnvironment;
import com.ui.model.req.BuildRequest;
import com.ui.model.req.User;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
... ... @@ -18,7 +18,10 @@ import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpSession;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RestController
... ... @@ -59,7 +62,7 @@ public class PhpBuildCtrl {
*/
@RequestMapping(value = "getProject", method = RequestMethod.POST)
@ResponseBody
public String getProjects(String name) {
public String getProjectByName(String name) {
try {
return httpRestClient.get(URL + "getProject?name="+name , String.class, null);
} catch (Exception ex) {
... ...
... ... @@ -85,14 +85,14 @@ public class ProjectBuildCtrl {
}
}
model.addAttribute("environments", ProjectEnvironment.getEnviroments());
model.addAttribute("environments", ProjectEnvironment.getJavaEnvListALL());
ModelAndView mv=new ModelAndView("project/project");
return mv;
}
@RequestMapping("/toHistory")
public ModelAndView toHistory(Model model) {
model.addAttribute("environments", ProjectEnvironment.getEnviroments());
model.addAttribute("environments", ProjectEnvironment.getJavaEnvListALL());
model.addAttribute("projects", ProjectOnline.getJavaList());
... ...
... ... @@ -2,6 +2,7 @@ package com.ui.ctrl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ui.contants.HttpUriContants;
import com.ui.http.HttpRestClient;
import com.ui.model.BaseResponse;
... ... @@ -25,10 +26,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* Created by zhengyouwei on 2016/9/5.
... ... @@ -44,13 +42,15 @@ public class WorkSystemCtrl {
NodeBuildCtrl nodeBuildCtrl;
@Autowired
PhpBuildCtrl phpBuildCtrl;
@Autowired
HttpRestClient httpRestClient;
@RequestMapping("/toAddWork")
public ModelAndView toAddWork(Model model) {
model.addAttribute("platforms", Platform.getPlatforms());
model.addAttribute("environments", ProjectEnvironment.getEnviroments());
model.addAttribute("dockerEnvironments", ProjectEnvironment.getDockerEnvironments());
model.addAttribute("projectTypes", ProjectEnvironment.getDockerProjectTypeMap());
BaseResponse<List<User>> resp = httpRestClient.exchangeForget(HttpUriContants.GET_All_USER, new ParameterizedTypeReference<BaseResponse<List<User>>>() {
... ... @@ -62,22 +62,6 @@ public class WorkSystemCtrl {
return new ModelAndView("worksystem/addWorkOrder");
}
@RequestMapping("/toAddWorkTest")
public ModelAndView toAddWorkTest(Model model) {
model.addAttribute("platforms", Platform.getPlatforms());
model.addAttribute("environments", ProjectEnvironment.getEnviroments());
model.addAttribute("dockerEnvironments", ProjectEnvironment.getDockerEnvironments());
model.addAttribute("projectTypes", ProjectEnvironment.getDockerProjectTypeMap());
BaseResponse<List<User>> resp = httpRestClient.exchangeForget(HttpUriContants.GET_All_USER, new ParameterizedTypeReference<BaseResponse<List<User>>>() {
}, null);
model.addAttribute("verifiers",resp.getData());//审核人列表
BaseResponse<List<User>> response = httpRestClient.exchangeForget(HttpUriContants.GET_USER_BY_ROLE + "?role=test", new ParameterizedTypeReference<BaseResponse<List<User>>>() {
}, null);
model.addAttribute("tests", response.getData());
return new ModelAndView("worksystem/addWorkOrder2");
}
@RequestMapping("/toHandledWork")
public ModelAndView toHandledWork() {
... ... @@ -151,10 +135,61 @@ public class WorkSystemCtrl {
}
@RequestMapping(value = "getNodeEnvByProject")
@RequestMapping(value = "getEnvByProject")
@ResponseBody
public String getNodeEnvByProject(String name) {
return nodeBuildCtrl.getProjectByName(name);
public List<String> getEnvByProject(String platform ,String projects) {
List<String> envs=new ArrayList<>();
if(StringUtils.isBlank(platform)||StringUtils.isBlank(projects)){
return envs;
}
String[] projArray=projects.split(",");
if (Platform.JAVA.equals(platform)) {
for(int i=0;i<projArray.length;i++){
List<String> ls= ProjectEnvironment.getJavaEnvList(projArray[i]);
if(i==0){
envs.addAll(ls);
}else{
envs.retainAll(ls);
}
}
} else if (Platform.NODE.equals(platform)||Platform.PHP.equals(platform)) {
for(int i=0;i<projArray.length;i++){
List<String> ls= getProjectEnvByName(platform,projArray[i]);
if(i==0){
envs.addAll(ls);
}else{
envs.retainAll(ls);
}
}
}else if (Platform.DOCKER.equals(platform)) {
envs.addAll(ProjectEnvironment.getDockerEnvironments());
}
return envs;
}
public List<String> getProjectEnvByName(String platform ,String project) {
List<String> ls=new ArrayList<>();
String jsonProjectDesc="";
if(Platform.PHP.equals(platform)){
jsonProjectDesc=phpBuildCtrl.getProjectByName(project);
} else if (Platform.NODE.equals(platform)) {
jsonProjectDesc=nodeBuildCtrl.getProjectByName(project);
}
if(StringUtils.isNotBlank(jsonProjectDesc)&&!"failed".equals(jsonProjectDesc)){
JSONObject jo= JSON.parseObject(jsonProjectDesc);
if(jo!=null&&jo.getJSONArray("envs")!=null){
JSONArray ja=jo.getJSONArray("envs");
for(int i=0;i<ja.size();i++){
String evnName=ja.getJSONObject(i).getString("name");
if(StringUtils.isNotBlank(evnName)){
ls.add(evnName);
}
}
}
}
return ls;
}
... ...
... ... @@ -86,32 +86,6 @@
</div>
</div>
<div id="environmentDiv" class="form-group">
<label class="col-sm-1 control-label"><strong>环境选择: </strong></label>
<div class="col-sm-8">
<div id="environmentDiv_common">
<c:forEach items="${environments }" var="environment">
<div class="ckbox ckbox-default" style="display: inline">
<input type="checkbox" name="environment" id="${environment}"
value="${environment}"/>
<label for="${environment}" style='width: 100px'>${environment}</label>
</div>
</c:forEach>
</div>
<div id="environmentDiv_docker" style="display: none">
<div class="ckbox ckbox-default" style="display: inline">
<c:forEach items="${dockerEnvironments }" var="environment">
<div class="ckbox ckbox-default" style="display: inline">
<input type="checkbox" name="environment" id="docker_environment_${environment}"
value="${environment}"/>
<label for="docker_environment_${environment}" style='width: 100px'>${environment}</label>
</div>
</c:forEach>
</div>
</div>
</div>
</div>
<div id="projectTypesDiv" class="form-group" style="display: none">
<label class="col-sm-1 control-label"><strong>项目类别: </strong></label>
... ... @@ -135,11 +109,10 @@
</div>
</div>
<div id="environmentNodeDiv" class="form-group">
<div id="environmentDiv" class="form-group">
<label class="col-sm-1 control-label"><strong>环境选择: </strong></label>
<div class="col-sm-8">
<div id="environmentDiv_node">
<div id="environmentDiv_common">
</div>
</div>
</div>
... ... @@ -291,28 +264,16 @@
function changePlatform() {
//把已选的环境变量去掉
$('input:checkbox[name=environment]').removeAttr("checked");
$("#environmentDiv_common").empty();
var platform = $('input:radio[name=platform]:checked').val();
var projectType=$("input[name='projectTypes']:checked").val();
var getProjectUrl=contextPath + 'workSystem/getProjectsByPlatform?platform='+platform;
if("DOCKER" == platform){
$("#environmentDiv").show();
$("#environmentNodeDiv").hide();
$("#environmentDiv_common").hide();
$("#environmentDiv_docker").show();
$("#projectTypesDiv").show();
getProjectUrl += "&projectType="+projectType;
}else{
$("#environmentDiv_common").show();
$("#environmentDiv_docker").hide();
$("#projectTypesDiv").hide();
if("NODE" == platform){
$("#environmentDiv").hide();
$("#environmentNodeDiv").show();
}else{
$("#environmentDiv").show();
$("#environmentNodeDiv").hide();
}
}
$("#projects_div").empty();
... ... @@ -324,10 +285,6 @@
var project_HTML = "";
var checkType='checkbox';
var checkTypeCss='ckbox ckbox-primary';
if("NODE" == platform){
checkType='radio';
checkTypeCss='rdio rdio-default';
}
if(data==null){
return ;
... ... @@ -339,9 +296,9 @@
}
project_HTML += "<div class='"+checkTypeCss+"' style='display: inline'>";
project_HTML += " <input name='project' type='"+checkType+"' id='" + data[i].name + "' value='" + data[i].name +"' ";
if("NODE" == platform){
project_HTML += " onclick = loadNodeEnv('"+data[i].name+"') ";
}
project_HTML += " onclick = loadEnv('"+data[i].name+"') ";
project_HTML += "/>";
project_HTML += "<label for='" + data[i].name + "' style='width: 200px'>" + data[i].name + "</label></div>";
... ... @@ -357,37 +314,47 @@
}
//加载环境
function loadNodeEnv(projName){
$("#environmentDiv_node").html("");
function loadEnv(projName){
var platform = $('input:radio[name=platform]:checked').val();
var projects = "";
$('input[name="project"]:checked').each(function () {
projects = projects + "," + $(this).val();//向数组中添加元素
});
if(platform==null||projects==null){
return ;
}
$("#environmentDiv_common").empty();
$.ajax({
url: contextPath+'workSystem/getNodeEnvByProject?name=' + projName,
url: contextPath+'workSystem/getEnvByProject' ,
type: 'POST',
data:{
platform:platform,
projects:projects
},
dataType: 'json',
success: function (data) {
$("#environmentDiv_node").empty();
if ("failed" == data) {
success: function (dataList) {
if ("failed" == dataList) {
return;
}
var pythonProject = eval("(" + data + ")");
//动态生成环境的组件
var list = pythonProject.envs;
var node_env_HTML = "";
for(var i = 0; i < list.length; i++){
var env = list[i];
var env_HTML = "";
for(var i = 0; i < dataList.length; i++){
var env = dataList[i];
if (i % 4 == 0) {
node_env_HTML += "</br>";
env_HTML += "</br>";
}
var show_label=env.name;
if(env.name=='az2'){
show_label=env.name+'(灰度)';
var show_label=env;
if(env=='az2'){
show_label=env+'(灰度)';
}
node_env_HTML += "<div class='ckbox ckbox-primary' style='display: inline'>";
node_env_HTML += " <input name='environment' type='checkbox' id='node_env_" + env.name + "' value='" + env.name +"' ";
node_env_HTML += "/>";
node_env_HTML += "<label for='node_env_" + env.name + "' style='width: 200px'>" + show_label + "</label></div>";
env_HTML += "<div class='ckbox ckbox-primary' style='display: inline'>";
env_HTML += " <input name='environment' type='checkbox' id='dy_env_" + env + "' value='" + env +"' ";
env_HTML += "/>";
env_HTML += "<label for='dy_env_" + env + "' style='width: 200px'>" + show_label + "</label></div>";
}
$("#environmentDiv_node").append(node_env_HTML);
$("#environmentDiv_common").append(env_HTML);
},
error: function (e) {
alert("获取项目环境失败");
... ...