| | |
| | | package com.se.system.service; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.se.system.domain.vo.NacosConfigVo; |
| | | import com.se.system.utils.CaffeineUtils; |
| | | import com.se.system.utils.StringUtils; |
| | | import nonapi.io.github.classgraph.json.JSONUtils; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.http.HttpEntity; |
| | | import org.springframework.http.HttpHeaders; |
| | | import org.springframework.http.HttpMethod; |
| | | import org.springframework.http.ResponseEntity; |
| | | import org.springframework.http.*; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.util.LinkedMultiValueMap; |
| | | import org.springframework.util.MultiValueMap; |
| | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.PrintWriter; |
| | | import java.lang.reflect.Field; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.util.Map; |
| | | |
| | | @Component |
| | |
| | | |
| | | final static String key = "nacos:login:token"; |
| | | |
| | | private String getToken() { |
| | | private String getToken() throws Exception { |
| | | Object obj = CaffeineUtils.get(key); |
| | | if (obj instanceof String) { |
| | | return (String) obj; |
| | | } |
| | | |
| | | String token = login(); |
| | | if (null != token) { |
| | | if (null == token) throw new Exception("Nacos令牌为空"); |
| | | |
| | | CaffeineUtils.put(key, token); |
| | | } |
| | | |
| | | return token; |
| | | } |
| | |
| | | |
| | | public void getNacosConfig(String dataId, HttpServletRequest req, HttpServletResponse res) throws Exception { |
| | | String token = getToken(); |
| | | if (null == token) throw new Exception("Nacos令牌为空"); |
| | | |
| | | String url = "http://" + serverAddr + "/nacos/v1/cs/configs?dataId=se-system-dev.yml&group=&appName=&pageNo=1&pageSize=10&search=accurate"; |
| | | // String url = "http://" + serverAddr + "/nacos/v1/cs/configs?dataId=" + dataId + "&group=&appName=&pageNo=1&pageSize=10&search=accurate"; |
| | | String url = "http://" + serverAddr + "/nacos/v1/cs/configs?dataId=" + dataId + "&group=DEFAULT_GROUP&namespaceId=&tenant=&show=all&username="; |
| | | |
| | | HttpHeaders headers = new HttpHeaders(); |
| | | headers.set("accessToken", token); |
| | |
| | | out.flush(); |
| | | out.close(); |
| | | } |
| | | |
| | | public void updateNacosConfig(NacosConfigVo vo, HttpServletRequest req, HttpServletResponse res) throws Exception { |
| | | if (null == vo || null == vo.getId() || null == vo.getDataId() || null == vo.getContent()) |
| | | throw new Exception("NacosConfigVo数据不正确"); |
| | | |
| | | String token = getToken(); |
| | | vo.setModifyTime(System.currentTimeMillis()); |
| | | //vo.setMd5(StringUtils.md5(vo.getContent())); |
| | | String url = "http://" + serverAddr + "/nacos/v1/cs/configs?username=" + username; |
| | | |
| | | HttpHeaders headers = new HttpHeaders(); |
| | | // headers.setContentType(MediaType.APPLICATION_JSON); |
| | | // headers.setContentType(new MediaType("application", "json", StandardCharsets.UTF_8)); |
| | | headers.setContentType(MediaType.valueOf("application/x-www-form-urlencoded")); |
| | | headers.set("accessToken", token); |
| | | headers.set("casMd5", vo.getMd5()); |
| | | |
| | | MultiValueMap<String, Object> map = createMap(vo); |
| | | HttpEntity<MultiValueMap<String, Object>> entity = new HttpEntity<>(map, headers); |
| | | ResponseEntity<String> re = restTemplate.exchange(url, HttpMethod.POST, entity, String.class); |
| | | |
| | | res.setContentType("application/json;charset=UTF-8"); |
| | | PrintWriter out = res.getWriter(); |
| | | out.print(re.getBody()); |
| | | out.flush(); |
| | | out.close(); |
| | | } |
| | | |
| | | private <T> MultiValueMap<String, Object> createMap(T t) throws Exception { |
| | | MultiValueMap<String, Object> map = new LinkedMultiValueMap<>(); |
| | | |
| | | Field[] fields = t.getClass().getDeclaredFields(); |
| | | for (Field field : fields) { |
| | | field.setAccessible(true); |
| | | map.add(field.getName(), field.get(t)); |
| | | } |
| | | |
| | | return map; |
| | | } |
| | | } |