1
13693261870
2024-12-30 2d8dc64971a203e5cb2485bf1714892a8005fc0f
1
已添加1个文件
已修改4个文件
303 ■■■■■ 文件已修改
se-modules/se-system/src/main/java/com/se/system/controller/SysSoftController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-modules/se-system/src/main/java/com/se/system/domain/vo/NacosConfigVo.java 199 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-modules/se-system/src/main/java/com/se/system/service/NacosService.java 61 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-modules/se-system/src/main/java/com/se/system/utils/StringUtils.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-modules/se-system/src/main/resources/bootstrap.yml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
se-modules/se-system/src/main/java/com/se/system/controller/SysSoftController.java
@@ -5,6 +5,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.se.system.domain.vo.NacosConfigVo;
import com.se.system.service.NacosService;
import org.omg.CORBA.ServerRequest;
import org.springframework.web.bind.annotation.GetMapping;
@@ -103,6 +104,7 @@
        return toAjax(sysSoftService.deleteSysSoftBySoftIds(softIds));
    }
    @Log(title = "软件-获取配置", businessType = BusinessType.OTHER)
    @RequiresPermissions("system:soft:query")
    @GetMapping(value = "getNacosConfig")
    public void getNacosConfig(String dataId, HttpServletRequest req, HttpServletResponse res) {
@@ -116,4 +118,19 @@
            }
        }
    }
    @Log(title = "软件-更新配置", businessType = BusinessType.UPDATE)
    @RequiresPermissions("system:soft:edit")
    @PostMapping(value = "updateNacosConfig")
    public void updateNacosConfig(@RequestBody NacosConfigVo vo, HttpServletRequest req, HttpServletResponse res) {
        try {
            nacosService.updateNacosConfig(vo, req, res);
        } catch (Exception e) {
            try {
                res.getWriter().print(e.getMessage());
            } catch (Exception ex) {
                logger.error(ex.getMessage(), ex);
            }
        }
    }
}
se-modules/se-system/src/main/java/com/se/system/domain/vo/NacosConfigVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,199 @@
package com.se.system.domain.vo;
@SuppressWarnings("ALL")
public class NacosConfigVo {
    private String id;
    private String dataId;
    private String group;
    private String content;
    private String md5;
    private String encryptedDataKey;
    private String tenant;
    private String appName;
    private String type;
    private Long createTime;
    private Long modifyTime;
    private String createUser;
    private String createIp;
    private String desc;
    private String use;
    private String effect;
    private String schema;
    private String configTags;
    public NacosConfigVo() {
    }
    public void setDefault() {
        this.appName = "";
        this.encryptedDataKey = "";
        this.tenant = "";
        this.modifyTime = System.currentTimeMillis();
        this.createIp = "127.0.0.1";
        this.use = "";
        this.effect = "";
        this.schema = "";
        this.configTags = "";
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getDataId() {
        return dataId;
    }
    public void setDataId(String dataId) {
        this.dataId = dataId;
    }
    public String getGroup() {
        return group;
    }
    public void setGroup(String group) {
        this.group = group;
    }
    public String getContent() {
        return content;
    }
    public void setContent(String content) {
        this.content = content;
    }
    public String getAppName() {
        return appName;
    }
    public void setAppName(String appName) {
        this.appName = appName;
    }
    public String getDesc() {
        return desc;
    }
    public void setDesc(String desc) {
        this.desc = desc;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getMd5() {
        return md5;
    }
    public void setMd5(String md5) {
        this.md5 = md5;
    }
    public String getEncryptedDataKey() {
        return encryptedDataKey;
    }
    public void setEncryptedDataKey(String encryptedDataKey) {
        this.encryptedDataKey = encryptedDataKey;
    }
    public String getTenant() {
        return tenant;
    }
    public void setTenant(String tenant) {
        this.tenant = tenant;
    }
    public Long getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Long createTime) {
        this.createTime = createTime;
    }
    public Long getModifyTime() {
        return modifyTime;
    }
    public void setModifyTime(Long modifyTime) {
        this.modifyTime = modifyTime;
    }
    public String getCreateUser() {
        return createUser;
    }
    public void setCreateUser(String createUser) {
        this.createUser = createUser;
    }
    public String getCreateIp() {
        return createIp;
    }
    public void setCreateIp(String createIp) {
        this.createIp = createIp;
    }
    public String getUse() {
        return use;
    }
    public void setUse(String use) {
        this.use = use;
    }
    public String getEffect() {
        return effect;
    }
    public void setEffect(String effect) {
        this.effect = effect;
    }
    public String getSchema() {
        return schema;
    }
    public void setSchema(String schema) {
        this.schema = schema;
    }
    public String getConfigTags() {
        return configTags;
    }
    public void setConfigTags(String configTags) {
        this.configTags = configTags;
    }
}
se-modules/se-system/src/main/java/com/se/system/service/NacosService.java
@@ -1,12 +1,13 @@
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;
@@ -16,6 +17,8 @@
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
@@ -35,16 +38,16 @@
    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;
    }
@@ -66,9 +69,8 @@
    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);
@@ -82,4 +84,43 @@
        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;
    }
}
se-modules/se-system/src/main/java/com/se/system/utils/StringUtils.java
@@ -2,6 +2,8 @@
import com.se.system.domain.StaticData;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -150,4 +152,26 @@
        return list;
    }
    public static String md5(String str) {
        if (str == null || str.length() == 0) return null;
        try {
            MessageDigest md5 = MessageDigest.getInstance("MD5");
            md5.update(str.getBytes());
            byte[] byteArray = md5.digest();
            BigInteger bigInt = new BigInteger(1, byteArray);
            // å‚æ•°16表示16进制
            String result = bigInt.toString(16);
            // ä¸è¶³32位高位补零
            while (result.length() < 32) {
                result = "0" + result;
            }
            return result;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}
se-modules/se-system/src/main/resources/bootstrap.yml
@@ -25,4 +25,6 @@
        # å…±äº«é…ç½®
        shared-configs:
          - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
        # å…è®¸åˆ·æ–°
        refresh-enabled: true
enableEncrypt: true