Junjie
2 天以前 5447ff1e5abeb1d45c9e331f78a0e523695b2561
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();
    }
@@ -85,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();
@@ -92,9 +90,20 @@
            if (config == null) {
                continue;
            }
            if (Short.valueOf((short) 2).equals(config.getType()) && !checkJson(value)) {
                return R.error(config.getCode() + " json解析失败");
            }
            if (Objects.equals(config.getValue(), value)) {
                continue;
            }
            config.setValue(value);
            configService.updateById(config);
            updated = true;
        }
        if (updated) {
            Parameter.reset();
            refreshCacheData();
        }
        return R.ok();
    }
@@ -219,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;
@@ -229,4 +270,8 @@
        return parse != null;
    }
    private void refreshCacheData() {
        configService.refreshSystemConfigCache();
    }
}