From 5447ff1e5abeb1d45c9e331f78a0e523695b2561 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 05 五月 2026 16:02:12 +0800
Subject: [PATCH] #WCS系统自定义上传LOGO、标题、名称V3.0.1.8

---
 src/main/java/com/zy/system/controller/ConfigController.java |   69 +++++++++++++++++++++++++++++-----
 1 files changed, 58 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/zy/system/controller/ConfigController.java b/src/main/java/com/zy/system/controller/ConfigController.java
index 8eb9f90..58acb70 100644
--- a/src/main/java/com/zy/system/controller/ConfigController.java
+++ b/src/main/java/com/zy/system/controller/ConfigController.java
@@ -17,7 +17,9 @@
 import com.zy.core.enums.RedisKeyType;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.io.IOException;
 import java.util.*;
 
 @RestController
@@ -31,12 +33,7 @@
     @RequestMapping(value = "/config/refreshCache")
     @ManagerAuth
     public R refreshCache(){
-        HashMap<String, String> systemConfigMap = new HashMap<>();
-        List<Config> configList = configService.list(new QueryWrapper<>());
-        for (Config config : configList) {
-            systemConfigMap.put(config.getCode(), config.getValue());
-        }
-        redisUtil.set(RedisKeyType.SYSTEM_CONFIG_MAP.key, systemConfigMap);
+        refreshCacheData();
         return R.ok();
     }
 
@@ -70,12 +67,14 @@
 
     private void convert(Map<String, Object> map, QueryWrapper wrapper){
         for (Map.Entry<String, Object> entry : map.entrySet()){
-            if (entry.getKey().endsWith(">")) {
-                wrapper.ge(Cools.deleteChar(entry.getKey()), DateUtils.convert(String.valueOf(entry.getValue())));
-            } else if (entry.getKey().endsWith("<")) {
-                wrapper.le(Cools.deleteChar(entry.getKey()), DateUtils.convert(String.valueOf(entry.getValue())));
+            String val = String.valueOf(entry.getValue());
+            String column = humpToLine(entry.getKey());
+            if (val.contains(" - ")) {
+                String[] dates = val.split(" - ");
+                wrapper.ge(column, DateUtils.convert(dates[0]));
+                wrapper.le(column, DateUtils.convert(dates[1]));
             } else {
-                wrapper.like(entry.getKey(), String.valueOf(entry.getValue()));
+                wrapper.like(column, val);
             }
         }
     }
@@ -83,6 +82,7 @@
     @RequestMapping(value = "/config/updateBatch")
     @ManagerAuth
     public R updateBatch(@RequestBody List<ConfigUpdateBatchParam> params){
+        boolean updated = false;
         for (ConfigUpdateBatchParam param : params) {
             String code = param.getCode();
             String value = param.getValue();
@@ -90,9 +90,20 @@
             if (config == null) {
                 continue;
             }
+            if (Short.valueOf((short) 2).equals(config.getType()) && !checkJson(value)) {
+                return R.error(config.getCode() + " json瑙f瀽澶辫触");
+            }
+            if (Objects.equals(config.getValue(), value)) {
+                continue;
+            }
 
             config.setValue(value);
             configService.updateById(config);
+            updated = true;
+        }
+        if (updated) {
+            Parameter.reset();
+            refreshCacheData();
         }
         return R.ok();
     }
@@ -217,6 +228,38 @@
         return R.ok(types);
     }
 
+    @PostMapping("/config/uploadLogo/auth")
+    @ManagerAuth
+    public R uploadLogo(@RequestParam("file") MultipartFile file) {
+        if (file == null || file.isEmpty()) {
+            return R.error("璇烽�夋嫨鏂囦欢");
+        }
+        String originalName = file.getOriginalFilename();
+        if (originalName == null) {
+            return R.error("鏂囦欢鍚嶄负绌�");
+        }
+        String ext = originalName.contains(".") ? originalName.substring(originalName.lastIndexOf(".") + 1).toLowerCase() : "";
+        String mimeType;
+        switch (ext) {
+            case "png": mimeType = "image/png"; break;
+            case "jpg":
+            case "jpeg": mimeType = "image/jpeg"; break;
+            case "svg": mimeType = "image/svg+xml"; break;
+            case "ico": mimeType = "image/x-icon"; break;
+            default: return R.error("浠呮敮鎸� png/jpg/jpeg/svg/ico 鏍煎紡");
+        }
+        try {
+            String base64 = Base64.getEncoder().encodeToString(file.getBytes());
+            String dataUri = "data:" + mimeType + ";base64," + base64;
+            configService.saveConfigValue("system.logo", dataUri);
+            Parameter.reset();
+            configService.refreshSystemConfigCache();
+            return R.ok().add(dataUri);
+        } catch (IOException e) {
+            return R.error("涓婁紶澶辫触锛�" + e.getMessage());
+        }
+    }
+
 
     private static boolean checkJson(String val){
         Object parse = null;
@@ -227,4 +270,8 @@
         return parse != null;
     }
 
+    private void refreshCacheData() {
+        configService.refreshSystemConfigCache();
+    }
+
 }

--
Gitblit v1.9.1