diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/article/AppArticleCategoryController.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/article/AppArticleCategoryController.java new file mode 100644 index 000000000..9d16048da --- /dev/null +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/article/AppArticleCategoryController.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.promotion.controller.app.article; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.promotion.controller.app.article.vo.category.AppArticleCategoryRespVO; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "用户 APP - 文章分类") +@RestController +@RequestMapping("/promotion/article-category") +@Validated +public class AppArticleCategoryController { + + @RequestMapping("/list") + @Operation(summary = "获得文章分类列表") + // TODO @芋艿:swagger 注解 + public CommonResult> getArticleCategoryList() { + List appArticleRespVOList = new ArrayList<>(); + Random random = new Random(); + for (int i = 0; i < 10; i++) { + AppArticleCategoryRespVO appArticleRespVO = new AppArticleCategoryRespVO(); + appArticleRespVO.setId((long) (i + 1)); + appArticleRespVO.setName("分类 - " + i); + appArticleRespVO.setPicUrl("https://www.iocoder.cn/" + (i + 1) + ".png"); + appArticleRespVOList.add(appArticleRespVO); + } + return success(appArticleRespVOList); + } + +} diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/article/AppArticleController.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/article/AppArticleController.java new file mode 100644 index 000000000..c794ecdf4 --- /dev/null +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/article/AppArticleController.java @@ -0,0 +1,90 @@ +package cn.iocoder.yudao.module.promotion.controller.app.article; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.promotion.controller.app.article.vo.article.AppArticlePageReqVO; +import cn.iocoder.yudao.module.promotion.controller.app.article.vo.article.AppArticleRespVO; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "用户 APP - 文章") +@RestController +@RequestMapping("/promotion/article") +@Validated +public class AppArticleController { + + @RequestMapping("/list") + // TODO @芋艿:swagger 注解 + public CommonResult> getArticleList(@RequestParam(value = "recommendHot", required = false) Boolean recommendHot, + @RequestParam(value = "recommendBanner", required = false) Boolean recommendBanner) { + List appArticleRespVOList = new ArrayList<>(); + Random random = new Random(); + for (int i = 0; i < 10; i++) { + AppArticleRespVO appArticleRespVO = new AppArticleRespVO(); + appArticleRespVO.setId((long) (i + 1)); + appArticleRespVO.setTitle("芋道源码 - " + i + "模块"); + appArticleRespVO.setAuthor("芋道源码"); + appArticleRespVO.setCategoryId((long) random.nextInt(10000)); + appArticleRespVO.setPicUrl("https://www.iocoder.cn/" + (i + 1) + ".png"); + appArticleRespVO.setIntroduction("我是简介"); + appArticleRespVO.setDescription("我是详细"); + appArticleRespVO.setCreateTime(LocalDateTime.now()); + appArticleRespVO.setBrowseCount(random.nextInt(10000)); + appArticleRespVO.setSpuId((long) random.nextInt(10000)); + appArticleRespVOList.add(appArticleRespVO); + } + return success(appArticleRespVOList); + } + + @RequestMapping("/page") + // TODO @芋艿:swagger 注解 + public CommonResult> getArticlePage(AppArticlePageReqVO pageReqVO) { + List appArticleRespVOList = new ArrayList<>(); + Random random = new Random(); + for (int i = 0; i < 10; i++) { + AppArticleRespVO appArticleRespVO = new AppArticleRespVO(); + appArticleRespVO.setId((long) (i + 1)); + appArticleRespVO.setTitle("芋道源码 - " + i + "模块"); + appArticleRespVO.setAuthor("芋道源码"); + appArticleRespVO.setCategoryId((long) random.nextInt(10000)); + appArticleRespVO.setPicUrl("https://www.iocoder.cn/" + (i + 1) + ".png"); + appArticleRespVO.setIntroduction("我是简介"); + appArticleRespVO.setDescription("我是详细"); + appArticleRespVO.setCreateTime(LocalDateTime.now()); + appArticleRespVO.setBrowseCount(random.nextInt(10000)); + appArticleRespVO.setSpuId((long) random.nextInt(10000)); + appArticleRespVOList.add(appArticleRespVO); + } + return success(new PageResult<>(appArticleRespVOList, 10L)); + } + + @RequestMapping("/get") + // TODO @芋艿:swagger 注解 + public CommonResult getArticlePage(@RequestParam("id") Long id) { + Random random = new Random(); + AppArticleRespVO appArticleRespVO = new AppArticleRespVO(); + appArticleRespVO.setId((long) (1)); + appArticleRespVO.setTitle("芋道源码 - " + 0 + "模块"); + appArticleRespVO.setAuthor("芋道源码"); + appArticleRespVO.setCategoryId((long) random.nextInt(10000)); + appArticleRespVO.setPicUrl("https://www.iocoder.cn/" + (0 + 1) + ".png"); + appArticleRespVO.setIntroduction("我是简介"); + appArticleRespVO.setDescription("我是详细"); + appArticleRespVO.setCreateTime(LocalDateTime.now()); + appArticleRespVO.setBrowseCount(random.nextInt(10000)); + appArticleRespVO.setSpuId((long) random.nextInt(10000)); + appArticleRespVO.setSpuId(633L); + return success(appArticleRespVO); + } + +} diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/article/vo/article/AppArticlePageReqVO.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/article/vo/article/AppArticlePageReqVO.java new file mode 100644 index 000000000..f548ae9bd --- /dev/null +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/article/vo/article/AppArticlePageReqVO.java @@ -0,0 +1,14 @@ +package cn.iocoder.yudao.module.promotion.controller.app.article.vo.article; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "应用 App - 文章的分页 Request VO") +@Data +public class AppArticlePageReqVO extends PageParam { + + @Schema(description = "分类编号", example = "2048") + private Long categoryId; + +} diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/article/vo/article/AppArticleRespVO.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/article/vo/article/AppArticleRespVO.java new file mode 100644 index 000000000..5db3cb01f --- /dev/null +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/article/vo/article/AppArticleRespVO.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.module.promotion.controller.app.article.vo.article; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "应用 App - 文章 Response VO") +@Data +public class AppArticleRespVO { + + @Schema(description = "文章编号", required = true, example = "1") + private Long id; + + @Schema(description = "文章标题", required = true, example = "芋道源码 - 促销模块") + private String title; + + @Schema(description = "文章作者", required = true, example = "芋道源码") + private String author; + + @Schema(description = "分类编号", required = true, example = "2048") + private Long categoryId; + + @Schema(description = "图文封面", required = true, example = "https://www.iocoder.cn/1.png") + private String picUrl; + + @Schema(description = "文章简介", required = true, example = "我是简介") + private String introduction; + + @Schema(description = "文章内容", required = true, example = "我是详细") + private String description; + + @Schema(description = "发布时间", required = true) + private LocalDateTime createTime; + + @Schema(description = "浏览量", required = true, example = "1024") + private Integer browseCount; + + @Schema(description = "关联的商品 SPU 编号", example = "1024") + private Long spuId; + +// TODO 芋艿:下面 2 个字段,后端要存储,前端不用返回; +// @Schema(description = "是否热卖推荐", required = true, example = "true") +// private Boolean recommendHot; +// +// @Schema(description = "是否 Banner 推荐", required = true, example = "true") +// private Boolean recommendBanner; + +} diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/article/vo/category/AppArticleCategoryRespVO.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/article/vo/category/AppArticleCategoryRespVO.java new file mode 100644 index 000000000..328f4dd7d --- /dev/null +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/article/vo/category/AppArticleCategoryRespVO.java @@ -0,0 +1,26 @@ +package cn.iocoder.yudao.module.promotion.controller.app.article.vo.category; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "应用 App - 文章分类 Response VO") +@Data +public class AppArticleCategoryRespVO { + + @Schema(description = "分类编号", required = true, example = "1") + private Long id; + + @Schema(description = "分类名称", required = true, example = "技术") + private String name; + + @Schema(description = "分类图标", required = true, example = "https://www.iocoder.cn/1.png") + private String picUrl; + + // TODO 芋艿:下面 2 个字段,后端要存储,前端不用返回; +// @Schema(description = "状态", required = true, example = "1") +// private Integer status; +// +// @Schema(description = "排序", required = true, example = "1024") +// private Integer sort; + +}