diff --git a/blog-backend/src/main/java/cn/hamster3/application/blog/controller/SettingController.java b/blog-backend/src/main/java/cn/hamster3/application/blog/controller/SettingController.java index 9598d5e..1e92459 100644 --- a/blog-backend/src/main/java/cn/hamster3/application/blog/controller/SettingController.java +++ b/blog-backend/src/main/java/cn/hamster3/application/blog/controller/SettingController.java @@ -4,6 +4,7 @@ import cn.hamster3.application.blog.service.ISettingService; import cn.hamster3.application.blog.vo.PageableVO; import cn.hamster3.application.blog.vo.ResponseVO; import cn.hamster3.application.blog.vo.setting.SettingInfoResponseVO; +import cn.hamster3.application.blog.vo.setting.SettingUpdateRequireVO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -12,6 +13,8 @@ import org.springframework.data.domain.PageRequest; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; +import java.util.Map; + @Tag(name = "SettingController", description = "网站设置相关接口") @RestController @RequestMapping(value = "/api/v1/settings", produces = MediaType.APPLICATION_JSON_VALUE) @@ -40,13 +43,19 @@ public class SettingController { return settingService.getSettingInfoList(PageRequest.of(page, Math.min(size, 100))); } - @PutMapping(value = "/{id}/", consumes = MediaType.TEXT_PLAIN_VALUE) + @PutMapping(value = "/{id}/") @Operation(summary = "更改网站设置") public ResponseVO updateSetting( @Parameter(description = "设置ID") @PathVariable String id, - @Parameter(description = "设置内容") @RequestBody String content + @Parameter(description = "设置内容") @RequestBody SettingUpdateRequireVO requireVO ) { - return settingService.updateSetting(id, content); + return settingService.updateSetting(id, requireVO); + } + + @PutMapping(value = "/") + @Operation(summary = "批量更改网站设置") + public ResponseVO updateSettings(@Parameter(description = "设置内容") @RequestBody Map data) { + return settingService.updateSettings(data); } @DeleteMapping("/{id}/") diff --git a/blog-backend/src/main/java/cn/hamster3/application/blog/service/ISettingService.java b/blog-backend/src/main/java/cn/hamster3/application/blog/service/ISettingService.java index c7ffd94..b227a92 100644 --- a/blog-backend/src/main/java/cn/hamster3/application/blog/service/ISettingService.java +++ b/blog-backend/src/main/java/cn/hamster3/application/blog/service/ISettingService.java @@ -3,9 +3,12 @@ package cn.hamster3.application.blog.service; import cn.hamster3.application.blog.vo.PageableVO; import cn.hamster3.application.blog.vo.ResponseVO; import cn.hamster3.application.blog.vo.setting.SettingInfoResponseVO; +import cn.hamster3.application.blog.vo.setting.SettingUpdateRequireVO; import org.jetbrains.annotations.NotNull; import org.springframework.data.domain.Pageable; +import java.util.Map; + public interface ISettingService { @NotNull ResponseVO getSettingInfo(@NotNull String id); @@ -13,7 +16,9 @@ public interface ISettingService { @NotNull ResponseVO> getSettingInfoList(@NotNull Pageable pageable); - @NotNull ResponseVO updateSetting(@NotNull String id, @NotNull String content); + @NotNull ResponseVO updateSetting(@NotNull String id, @NotNull SettingUpdateRequireVO requireVO); + + @NotNull ResponseVO updateSettings(@NotNull Map data); @NotNull ResponseVO deleteSetting(@NotNull String id); } diff --git a/blog-backend/src/main/java/cn/hamster3/application/blog/service/impl/SettingService.java b/blog-backend/src/main/java/cn/hamster3/application/blog/service/impl/SettingService.java index dc18558..42963f5 100644 --- a/blog-backend/src/main/java/cn/hamster3/application/blog/service/impl/SettingService.java +++ b/blog-backend/src/main/java/cn/hamster3/application/blog/service/impl/SettingService.java @@ -8,12 +8,15 @@ import cn.hamster3.application.blog.util.BlogUtils; import cn.hamster3.application.blog.vo.PageableVO; import cn.hamster3.application.blog.vo.ResponseVO; import cn.hamster3.application.blog.vo.setting.SettingInfoResponseVO; +import cn.hamster3.application.blog.vo.setting.SettingUpdateRequireVO; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; +import java.util.Map; + @Slf4j @Service public class SettingService implements ISettingService { @@ -49,7 +52,8 @@ public class SettingService implements ISettingService { } @Override - public @NotNull ResponseVO updateSetting(@NotNull String id, @NotNull String content) { + public @NotNull ResponseVO updateSetting(@NotNull String id, @NotNull SettingUpdateRequireVO requireVO) { + String content = requireVO.getContent(); ResponseVO check = BlogUtils.checkAdminPermission(); if (check != null) { return check; @@ -65,6 +69,27 @@ public class SettingService implements ISettingService { return ResponseVO.success(); } + @Override + public @NotNull ResponseVO updateSettings(@NotNull Map data) { + ResponseVO check = BlogUtils.checkAdminPermission(); + if (check != null) { + return check; + } + for (Map.Entry entry : data.entrySet()) { + String id = entry.getKey(); + String content = entry.getValue(); + if (!settingRepo.existsByIdIgnoreCase(id)) { + SettingEntity entity = new SettingEntity(); + entity.setId(id); + entity.setContent(content); + settingRepo.save(entity); + } else { + settingRepo.updateContentByIdIgnoreCase(content, id); + } + } + return ResponseVO.success(); + } + @Override public @NotNull ResponseVO deleteSetting(@NotNull String id) { ResponseVO check = BlogUtils.checkAdminPermission(); diff --git a/blog-backend/src/main/java/cn/hamster3/application/blog/vo/setting/SettingUpdateRequireVO.java b/blog-backend/src/main/java/cn/hamster3/application/blog/vo/setting/SettingUpdateRequireVO.java index f7cc021..564f281 100644 --- a/blog-backend/src/main/java/cn/hamster3/application/blog/vo/setting/SettingUpdateRequireVO.java +++ b/blog-backend/src/main/java/cn/hamster3/application/blog/vo/setting/SettingUpdateRequireVO.java @@ -1,6 +1,5 @@ package cn.hamster3.application.blog.vo.setting; -import jakarta.validation.constraints.NotBlank; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -9,6 +8,5 @@ import lombok.NoArgsConstructor; @NoArgsConstructor @AllArgsConstructor public class SettingUpdateRequireVO { - @NotBlank(message = "网站设置内容不能为空!") private String content; } diff --git a/blog-frontend/index.html b/blog-frontend/index.html index b2514fd..d0e3fd4 100644 --- a/blog-frontend/index.html +++ b/blog-frontend/index.html @@ -7,6 +7,8 @@ 网站标题 + diff --git a/blog-frontend/src/App.vue b/blog-frontend/src/App.vue index 2cbe318..a063db6 100644 --- a/blog-frontend/src/App.vue +++ b/blog-frontend/src/App.vue @@ -1,22 +1,36 @@