InternalDnsCtrl.java 6.19 KB
package com.ui.ctrl;

import com.alibaba.fastjson.JSON;
import com.ui.common.TagTypeEnum;
import com.ui.contants.HttpUriContants;
import com.ui.http.HttpRestClient;
import com.ui.model.BaseResponse;
import com.ui.model.domain.InternalDomain;
import com.ui.model.domain.InternalDomainHistory;
import com.ui.model.req.TagReq;
import com.ui.model.req.User;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpSession;
import java.util.ArrayList;
import java.util.List;


/**
 * Created by zhengyouwei on 2016/12/16.
 */
@Controller
@RequestMapping("/internalDns")
public class InternalDnsCtrl {

    Logger logger = LoggerFactory.getLogger(getClass());


    @Autowired
    private HttpRestClient httpRestClient;

    @RequestMapping("/toInternalDns")
    public ModelAndView toInternalDns(Model model) {
        ModelAndView mv = new ModelAndView("project/internal_domain");
        TagReq req = new TagReq();
        BaseResponse response=httpRestClient.defaultPost(HttpUriContants.HOST_ALL_GROUPS, req, BaseResponse.class);
        mv.addObject("tags",response.getData());//获取标签列表
        mv.addObject("tagTypeMapJson", JSON.toJSONString(TagTypeEnum.getAllTypeMap()));//获取标签map  层级结构的
        return mv;
    }

    @RequestMapping("save")
    @ResponseBody
    public BaseResponse insert(InternalDomain internalDomain,HttpSession httpSession){
        addUser(internalDomain,httpSession);
        if (StringUtils.equals(internalDomain.getType(),"cname") && !StringUtils.endsWith(internalDomain.getValue(),".")){
            internalDomain.setValue(internalDomain.getValue().trim() + ".");
        }
        if (internalDomain.getId() == 0){
            return httpRestClient.defaultPost(HttpUriContants.INTERNAL_DOMAIN_INSERT, internalDomain, BaseResponse.class);
        }else {
            return httpRestClient.defaultPost(HttpUriContants.INTERNAL_DOMAIN_UPDATE, internalDomain, BaseResponse.class);

        }
    }

    /**
     * 搜索dns配置:
     * 即再name前面添加冒号,则不生效
     * @param ids
     * @param httpSession
     * @return
     */
    @RequestMapping("/updateNameForSearch")
    @ResponseBody
    public BaseResponse updateNameForSearch(String ids,HttpSession httpSession){
        for(String id:ids.split(",")){
            if(StringUtils.isNotBlank(id)){
                InternalDomain paramInternalDomain=new InternalDomain();
                paramInternalDomain.setId(Integer.parseInt(id));
                BaseResponse<InternalDomain> queryResponse = httpRestClient.exchangeForpost(HttpUriContants.INTERNAL_DOMAIN_SELECTBYID ,
                        new ParameterizedTypeReference<BaseResponse<InternalDomain>>() {}, paramInternalDomain);
                InternalDomain updateInternalDomain=queryResponse.getData();
                if(updateInternalDomain!=null){
                    if(updateInternalDomain.getName().startsWith(";")){
                        updateInternalDomain.setName(updateInternalDomain.getName().substring(1));
                    }else{
                        updateInternalDomain.setName(";"+updateInternalDomain.getName());
                    }
                }
                addUser(updateInternalDomain,httpSession);
                httpRestClient.defaultPost(HttpUriContants.INTERNAL_DOMAIN_UPDATE, updateInternalDomain, BaseResponse.class);
            }
        }
        return new BaseResponse();
    }

    @RequestMapping("selectAll")
    @ResponseBody
    public BaseResponse selectAll(InternalDomain internalDomain,HttpSession httpSession){
        if (StringUtils.isBlank(internalDomain.getDomain()) || StringUtils.isBlank(internalDomain.getEnvironment()) ){
            return null;
        }
        addUser(internalDomain,httpSession);
        return httpRestClient.defaultPost(HttpUriContants.INTERNAL_DOMAIN_SELECTALL, internalDomain, BaseResponse.class);

    }

    @RequestMapping("deleteById")
    @ResponseBody
    public BaseResponse deleteById(InternalDomain internalDomain,HttpSession httpSession){
        addUser(internalDomain,httpSession);
        return httpRestClient.defaultPost(HttpUriContants.INTERNAL_DOMAIN_DELBYID, internalDomain, BaseResponse.class);
    }

    @RequestMapping("selectById")
    @ResponseBody
    public BaseResponse selectById(InternalDomain internalDomain,HttpSession httpSession){
        addUser(internalDomain, httpSession);
        return httpRestClient.defaultPost(HttpUriContants.INTERNAL_DOMAIN_SELECTBYID, internalDomain, BaseResponse.class);
    }

    @RequestMapping("refresh")
    @ResponseBody
    public BaseResponse refresh(InternalDomain internalDomain,HttpSession httpSession){
        addUser(internalDomain,httpSession);
        return httpRestClient.defaultPost(HttpUriContants.INTERNAL_DOMAIN_REFRESH, internalDomain, BaseResponse.class);
    }

    public void addUser(InternalDomain internalDomain,HttpSession httpSession){
        User user = (User) httpSession.getAttribute("user");
        internalDomain.setUser(user.getName());
    }

    @RequestMapping("/toHistory")
    public ModelAndView toHistory(Model model) {
        List<String> environments = new ArrayList<>();
        environments.add("aws");
        environments.add("qcloud");
        environments.add("aws_media");
        model.addAttribute("environments", environments);

        List<String> domains = new ArrayList<>();
        domains.add("yohoops.org.");
        domains.add("yohobuy.com.");
        model.addAttribute("domains", domains);

        return new ModelAndView("project/internal_dns_history");
    }

    @RequestMapping("/getHistory")
    @ResponseBody
    public BaseResponse getHistory(InternalDomainHistory req) throws Exception {
        BaseResponse response = httpRestClient.defaultPost(HttpUriContants.INTERNAL_DOMAIN_HISTORY, req, BaseResponse.class);
        return response;
    }

}