package com.terra.proxy.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; import com.terra.proxy.bean.ServletBean; import com.terra.proxy.mapper.ProxyServletMapper; import com.terra.proxy.properties.TerraProperties; import com.terra.proxy.util.CrpUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.function.Consumer; /** * 该类用于配置代理servlet * * @author zsx */ @Controller @RequestMapping("/serv") @CrossOrigin public class ProxyServletConfigController { @Autowired private TerraProperties properties; @Resource ProxyServletMapper mapper; @RequestMapping(value = "/addServlet", method = {RequestMethod.GET, RequestMethod.POST}) @ResponseBody public String addArcgisServer(HttpServletRequest request, String url, Integer enable, String remark, Integer ispublic) { ServletBean bean = new ServletBean(); bean.setEnable(enable); bean.setTime(new Date()); bean.setRemark(remark); bean.setUrl(url); bean.setIspublic(ispublic); mapper.addServlet(bean); String proxyurl = new StringBuilder(properties.getProxy().getHost()).append("/servlet/").append(CrpUtil.encode(bean.getId())) .toString(); JSONObject json = new JSONObject(); json.put("code", 200); json.put("data", proxyurl); json.put("message", "获取成功"); return json.toJSONString(0); } @RequestMapping(value = "/batchImportFromPath", method = {RequestMethod.GET, RequestMethod.POST}) @ResponseBody public String test(HttpServletRequest request, String path, Integer enable) { String json = readFile(path); List t = JSON.parseArray(json, Map.class); t.forEach(new Consumer() { @Override public void accept(Map b) { ServletBean bean = new ServletBean(); bean.setEnable(enable); bean.setTime(new Date()); bean.setRemark(b.get("serverurl").toString()); bean.setUrl(b.get("targetUri").toString()); mapper.addServlet(bean); } }); return ""; } public static String readFile(String json) { //读取servletjson文件 File file = new File(json); byte[] buffer = new byte[1024]; StringBuilder sb = new StringBuilder(); String s = null; BufferedReader br; try { br = new BufferedReader(new FileReader(file)); while ((s = br.readLine()) != null) { sb.append(s).append("\n"); } br.close(); } catch (IOException e1) { e1.printStackTrace(); } return sb.toString(); } @RequestMapping(value = "/updateServlet", method = {RequestMethod.GET, RequestMethod.POST}) @ResponseBody public String updateServer(HttpServletRequest request, String url, Integer enable, String remark, Integer ispublic, Integer id) { ServletBean bean = new ServletBean(); bean.setEnable(enable); bean.setRemark(remark); bean.setUrl(url); bean.setIspublic(ispublic); bean.setId(id); mapper.updateServer(bean); return "ok"; } @RequestMapping(value = "/delServlet", method = {RequestMethod.GET, RequestMethod.POST}) @ResponseBody public String delServlet(HttpServletRequest request, Integer id) { mapper.delServer(id); return "ok"; } @RequestMapping(value = "/queryServlet", method = {RequestMethod.GET, RequestMethod.POST}) @ResponseBody public String queryServlet(HttpServletRequest request, Integer id, String url, Integer enable, String remark, Integer page, Integer limit, Date starttime, Date endtime) { Map params = new HashMap<>(); Map resultmap = new HashMap<>(); params.put("url", url); params.put("enable", enable); params.put("remark", remark); params.put("id", id); params.put("starttime", starttime); params.put("endtime", endtime); params.put("offSet", (page - 1) * limit); params.put("limit", limit); List list = mapper.queryServer(params); int total = mapper.queryTotalServer(params); resultmap.put("data", list); resultmap.put("total", total); String str = JSONObject.toJSONStringWithDateFormat(resultmap, "yyyy-MM-dd HH:mm:ss", SerializerFeature.PrettyFormat); return str; } }