diff --git a/src/main/java/com/imyeyu/api/bean/CorePermissionCode.java b/src/main/java/com/imyeyu/api/bean/CorePermissionCode.java index 40d966a..2c843a3 100644 --- a/src/main/java/com/imyeyu/api/bean/CorePermissionCode.java +++ b/src/main/java/com/imyeyu/api/bean/CorePermissionCode.java @@ -45,6 +45,11 @@ public enum CorePermissionCode implements BuiltinPermissionCode { TAG_UPDATE("TAG:UPDATE", "标签修改", false, true), TAG_DELETE("TAG:DELETE", "标签删除", false, true), + ARTICLE_CREATE("ARTICLE:CREATE", "文章创建", false, true), + ARTICLE_READ("ARTICLE:READ", "文章读取", false, true), + ARTICLE_UPDATE("ARTICLE:UPDATE", "文章修改", false, true), + ARTICLE_DELETE("ARTICLE:DELETE", "文章删除", false, true), + USER_CREATE("USER:CREATE", "用户创建", false, true), USER_READ("USER:READ", "用户读取", false, true), USER_UPDATE("USER:UPDATE", "用户修改", false, true), diff --git a/src/main/java/com/imyeyu/api/modules/common/controller/ArticleController.java b/src/main/java/com/imyeyu/api/modules/common/controller/ArticleController.java new file mode 100644 index 0000000..b7a91dd --- /dev/null +++ b/src/main/java/com/imyeyu/api/modules/common/controller/ArticleController.java @@ -0,0 +1,95 @@ +package com.imyeyu.api.modules.common.controller; + +import com.fasterxml.jackson.annotation.JsonView; +import com.imyeyu.api.annotation.RequireCorePermission; +import com.imyeyu.api.bean.CorePermissionCode; +import com.imyeyu.api.modules.common.entity.Article; +import com.imyeyu.api.modules.common.entity.Attachment; +import com.imyeyu.api.modules.common.service.ArticleService; +import com.imyeyu.api.modules.common.service.AttachmentService; +import com.imyeyu.spring.annotation.AOPLog; +import com.imyeyu.spring.annotation.RequestRateLimit; +import com.imyeyu.spring.bean.Page; +import com.imyeyu.spring.bean.PageResult; +import com.imyeyu.spring.util.ResponseView; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +/// 文章接口 +/// +/// @author Codex +/// @since 2026-09-09 +@Slf4j +@RestController +@RequiredArgsConstructor +@RequestMapping("/article") +public class ArticleController { + + private final ArticleService service; + private final AttachmentService attachmentService; + + /// 查询文章列表 + /// + /// @param page 分页参数 + /// @return 文章分页 + @JsonView(ResponseView.Public.class) + @RequestRateLimit + @PostMapping("/list") + public PageResult
list(@RequestBody Page
page) { + return service.page(page); + } + + /// 查询文章详情 + /// + /// @param id 文章 ID + /// @return 文章详情 + @JsonView(ResponseView.Public.class) + @RequestRateLimit + @PostMapping("/detail") + public Article detail(@RequestParam String id) { + Article article = service.get(id); + article.setAttachmentList(attachmentService.listByBizId(Attachment.BizType.ARTICLE, article.getId())); + return article; + } + + /// 创建文章 + /// + /// @param article 文章 + /// @return 创建后的文章 + @AOPLog + @JsonView(ResponseView.Public.class) + @RequestRateLimit + @RequireCorePermission(CorePermissionCode.ARTICLE_CREATE) + @PostMapping("/create") + public Article create(@RequestBody Article article) { + service.create(article); + return article; + } + + /// 更新文章 + /// + /// @param article 文章 + @AOPLog + @RequestRateLimit + @RequireCorePermission(CorePermissionCode.ARTICLE_UPDATE) + @PostMapping("/update") + public void update(@RequestBody Article article) { + service.update(article); + } + + /// 删除文章 + /// + /// @param id 文章 ID + @AOPLog + @RequestRateLimit + @RequireCorePermission(CorePermissionCode.ARTICLE_DELETE) + @PostMapping("/delete") + public void delete(@RequestParam String id) { + service.delete(id); + } +} diff --git a/src/main/java/com/imyeyu/api/modules/common/entity/Article.java b/src/main/java/com/imyeyu/api/modules/common/entity/Article.java index c040df1..b268e5c 100644 --- a/src/main/java/com/imyeyu/api/modules/common/entity/Article.java +++ b/src/main/java/com/imyeyu/api/modules/common/entity/Article.java @@ -34,6 +34,8 @@ public class Article extends UUIDEntity implements SettingSupport { /// GAO 门店日记 GAO_STORE_DIARY, + GAO_SYSTEM, + /// 反馈 FEEDBACK } diff --git a/src/main/java/com/imyeyu/api/modules/gao/bean/GaoSystemSetting.java b/src/main/java/com/imyeyu/api/modules/gao/bean/GaoSystemSetting.java new file mode 100644 index 0000000..70c0884 --- /dev/null +++ b/src/main/java/com/imyeyu/api/modules/gao/bean/GaoSystemSetting.java @@ -0,0 +1,27 @@ +package com.imyeyu.api.modules.gao.bean; + +import com.imyeyu.api.annotation.SettingBizType; +import com.imyeyu.api.bean.SettingEnum; +import com.imyeyu.api.modules.common.entity.Setting; +import lombok.AllArgsConstructor; +import lombok.Getter; + +/// +/// +/// @author 夜雨 +/// @since 2026-09-09 16:11 +@Getter +@SettingBizType("GAO_SYSTEM") +@AllArgsConstructor +public enum GaoSystemSetting implements SettingEnum { + + SERVICE_LICENSE(null, Setting.ValueType.STRING), + + PRIVACY_LICENSE(null, Setting.ValueType.STRING), + + OPEN_SOURCE_LICENSE(null, Setting.ValueType.STRING); + + final String defaultValue; + + final Setting.ValueType valueType; +}