Jelajahi Sumber

资讯信息 代码初始化

zhangcl 5 hari lalu
induk
melakukan
d336e53f3d

+ 2 - 0
yudao-module-rd/yudao-module-rd-api/src/main/java/cn/iocoder/yudao/module/rd/enums/ErrorCodeConstant.java

@@ -15,6 +15,8 @@ public interface ErrorCodeConstant {
     ErrorCode RESEARCH_ACHIEVEMENT_ATTRS_NOT_EXISTS = new ErrorCode(500, "研究成果 论文 专利 软著 荣誉证书 扩展属性不存在");
     ErrorCode RESEARCH_ACHIEVEMENT_NOT_EXISTS = new ErrorCode(501, "知识产权、荣誉证书等研究成果不存在");
 
+    ErrorCode NEWS_NOT_EXISTS = new ErrorCode(502, "资讯(政策信息 行业科技动态)不存在");
+
     ErrorCode ATTACHMENT_NOT_EXISTS = new ErrorCode(300, "R&D 附件不存在");
     /***
      * 数字油藏

+ 146 - 0
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/news/NewsController.java

@@ -0,0 +1,146 @@
+package cn.iocoder.yudao.module.rd.controller.admin.news;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.module.rd.controller.admin.news.vo.NewsPageReqVO;
+import cn.iocoder.yudao.module.rd.controller.admin.news.vo.NewsRespVO;
+import cn.iocoder.yudao.module.rd.controller.admin.news.vo.NewsSaveReqVO;
+import cn.iocoder.yudao.module.rd.dal.dataobject.news.NewsDO;
+import cn.iocoder.yudao.module.rd.service.news.NewsService;
+import cn.iocoder.yudao.module.rd.utils.DictDataUtils;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 资讯(政策信息 行业科技动态)")
+@RestController
+@RequestMapping("/rd/news")
+@Validated
+public class NewsController {
+
+    @Resource
+    private NewsService newsService;
+
+    @Resource
+    private DictDataUtils dictDataUtils;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建资讯(政策信息 行业科技动态)")
+    @PreAuthorize("@ss.hasPermission('rd:news:create')")
+    public CommonResult<Long> createNews(@Valid @RequestBody NewsSaveReqVO createReqVO) {
+        return success(newsService.createNews(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新资讯(政策信息 行业科技动态)")
+    @PreAuthorize("@ss.hasPermission('rd:news:update')")
+    public CommonResult<Boolean> updateNews(@Valid @RequestBody NewsSaveReqVO updateReqVO) {
+        newsService.updateNews(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除资讯(政策信息 行业科技动态)")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('rd:news:delete')")
+    public CommonResult<Boolean> deleteNews(@RequestParam("id") Long id) {
+        newsService.deleteNews(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得资讯(政策信息 行业科技动态)")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('rd:news:query')")
+    public CommonResult<NewsRespVO> getNews(@RequestParam("id") Long id) {
+        NewsDO news = newsService.getNews(id);
+        return success(buildNews(news));
+    }
+
+    /**
+     * 查询 资讯 详情
+     * @param news
+     * @return
+     */
+    private NewsRespVO buildNews(NewsDO news) {
+        // 如果 news 为空 返回空对象
+        if (ObjUtil.isEmpty(news)) {
+            return new NewsRespVO();
+        }
+        NewsRespVO newsVO = BeanUtils.toBean(news, NewsRespVO.class);
+        // 查询 资讯类别 字典数据
+        Map<String, String> newsCategoryPair = dictDataUtils.getDictData("rd_news_category");
+        // 资讯类别
+        String category = newsVO.getNewsCategory();
+        if (StrUtil.isNotBlank(category) && newsCategoryPair.containsKey(category)) {
+            newsVO.setNewsCategoryLabel(newsCategoryPair.get(category));
+        }
+        return newsVO;
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得资讯(政策信息 行业科技动态)分页")
+    @PreAuthorize("@ss.hasPermission('rd:news:query')")
+    public CommonResult<PageResult<NewsRespVO>> getNewsPage(@Valid NewsPageReqVO pageReqVO) {
+        PageResult<NewsDO> pageResult = newsService.getNewsPage(pageReqVO);
+        return success(new PageResult<>(buildNews(pageResult.getList()), pageResult.getTotal()));
+    }
+
+    /**
+     * 设置日报的关联信息 部门(施工队伍) 项目 任务 带班干部 日报填报人
+     * @param news
+     * @return
+     */
+    private List<NewsRespVO> buildNews(List<NewsDO> news) {
+        if (CollUtil.isEmpty(news)) {
+            return Collections.emptyList();
+        }
+        // 查询数据字典值列表
+        // 资讯类别 key字典键值     value字典标签
+        // 查询 核心技术-状态 字典数据
+        Map<String, String> newsCategoryPair = dictDataUtils.getDictData("rd_news_category");
+        return BeanUtils.toBean(news, NewsRespVO.class, (newsVO) -> {
+            if (StrUtil.isNotBlank(newsVO.getNewsCategory())) {
+                if (newsCategoryPair.containsKey(newsVO.getNewsCategory())) {
+                    newsVO.setNewsCategoryLabel(newsCategoryPair.get(newsVO.getNewsCategory()));
+                }
+            }
+
+        });
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出资讯(政策信息 行业科技动态) Excel")
+    @PreAuthorize("@ss.hasPermission('rd:news:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportNewsExcel(@Valid NewsPageReqVO pageReqVO,
+              HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<NewsDO> list = newsService.getNewsPage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "资讯(政策信息 行业科技动态).xls", "数据", NewsRespVO.class,
+                        BeanUtils.toBean(list, NewsRespVO.class));
+    }
+
+}

+ 79 - 0
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/news/vo/NewsPageReqVO.java

@@ -0,0 +1,79 @@
+package cn.iocoder.yudao.module.rd.controller.admin.news.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+
+import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
+
+@Schema(description = "管理后台 - 资讯(政策信息 行业科技动态)分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+public class NewsPageReqVO extends PageParam {
+
+    @Schema(description = "所属部门", example = "18551")
+    private Long deptId;
+
+    @Schema(description = "核心技术名称", example = "赵六")
+    private String newsName;
+
+    @Schema(description = "资讯类型(政策信息 科技动态)")
+    private String newsCategory;
+
+    @Schema(description = "资讯类型的子类别", example = "1")
+    private String newsSubType;
+
+    @Schema(description = "概述摘要")
+    private String summary;
+
+    @Schema(description = "正文内容(富文本html)")
+    private String content;
+
+    @Schema(description = "资讯来源名称(网站 期刊 政府部门...)")
+    private String source;
+
+    @Schema(description = "外部原文链接", example = "https://www.iocoder.cn")
+    private String sourceUrl;
+
+    @Schema(description = "原文发布时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] publishTime;
+
+    @Schema(description = "置顶标识 0否 1是")
+    private Boolean onTop;
+
+    @Schema(description = "封面图", example = "https://www.iocoder.cn")
+    private String coverUrl;
+
+    @Schema(description = "浏览次数", example = "6323")
+    private Integer browseCount;
+
+    @Schema(description = "排序值")
+    private Integer sort;
+
+    @Schema(description = "备注", example = "你说的对")
+    private String remark;
+
+    @Schema(description = "状态(0草稿 1已发布 2已下线)", example = "2")
+    private Integer status;
+
+    @Schema(description = "流程实例id", example = "14226")
+    private String processInstanceId;
+
+    @Schema(description = "审批状态 未提交、审批中、审批通过、审批不通过、已取消", example = "2")
+    private Integer auditStatus;
+
+    @Schema(description = "审批意见")
+    private String opinion;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+}

+ 101 - 0
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/news/vo/NewsRespVO.java

@@ -0,0 +1,101 @@
+package cn.iocoder.yudao.module.rd.controller.admin.news.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 资讯(政策信息 行业科技动态) Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class NewsRespVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "31116")
+    @ExcelProperty("主键id")
+    private Long id;
+
+    @Schema(description = "所属部门", example = "18551")
+    @ExcelProperty("所属部门")
+    private Long deptId;
+
+    @Schema(description = "核心技术名称", example = "赵六")
+    @ExcelProperty("核心技术名称")
+    private String newsName;
+
+    @Schema(description = "资讯类型(政策信息 科技动态)")
+    @ExcelProperty("资讯类型(政策信息 科技动态)")
+    private String newsCategory;
+
+    @Schema(description = "资讯类型的子类别", example = "1")
+    @ExcelProperty("资讯类型的子类别")
+    private String newsSubType;
+
+    @Schema(description = "概述摘要")
+    @ExcelProperty("概述摘要")
+    private String summary;
+
+    @Schema(description = "正文内容(富文本html)")
+    @ExcelProperty("正文内容(富文本html)")
+    private String content;
+
+    @Schema(description = "资讯来源名称(网站 期刊 政府部门...)")
+    @ExcelProperty("资讯来源名称(网站 期刊 政府部门...)")
+    private String source;
+
+    @Schema(description = "外部原文链接", example = "https://www.iocoder.cn")
+    @ExcelProperty("外部原文链接")
+    private String sourceUrl;
+
+    @Schema(description = "原文发布时间")
+    @ExcelProperty("原文发布时间")
+    private LocalDateTime publishTime;
+
+    @Schema(description = "置顶标识 0否 1是")
+    @ExcelProperty("置顶标识 0否 1是")
+    private Boolean onTop;
+
+    @Schema(description = "封面图", example = "https://www.iocoder.cn")
+    @ExcelProperty("封面图")
+    private String coverUrl;
+
+    @Schema(description = "浏览次数", example = "6323")
+    @ExcelProperty("浏览次数")
+    private Integer browseCount;
+
+    @Schema(description = "排序值")
+    @ExcelProperty("排序值")
+    private Integer sort;
+
+    @Schema(description = "备注", example = "你说的对")
+    @ExcelProperty("备注")
+    private String remark;
+
+    @Schema(description = "状态(0草稿 1已发布 2已下线)", example = "2")
+    @ExcelProperty("状态(0草稿 1已发布 2已下线)")
+    private Integer status;
+
+    @Schema(description = "流程实例id", example = "14226")
+    @ExcelProperty("流程实例id")
+    private String processInstanceId;
+
+    @Schema(description = "审批状态 未提交、审批中、审批通过、审批不通过、已取消", example = "2")
+    @ExcelProperty("审批状态 未提交、审批中、审批通过、审批不通过、已取消")
+    private Integer auditStatus;
+
+    @Schema(description = "审批意见")
+    @ExcelProperty("审批意见")
+    private String opinion;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    /**
+     * 扩展字段
+     */
+    @Schema(description = "资讯类别")
+    @ExcelProperty("资讯类别")
+    private String newsCategoryLabel;
+}

+ 69 - 0
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/controller/admin/news/vo/NewsSaveReqVO.java

@@ -0,0 +1,69 @@
+package cn.iocoder.yudao.module.rd.controller.admin.news.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 资讯(政策信息 行业科技动态)新增/修改 Request VO")
+@Data
+public class NewsSaveReqVO {
+
+    @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "31116")
+    private Long id;
+
+    @Schema(description = "所属部门", example = "18551")
+    private Long deptId;
+
+    @Schema(description = "核心技术名称", example = "赵六")
+    private String newsName;
+
+    @Schema(description = "资讯类型(政策信息 科技动态)")
+    private String newsCategory;
+
+    @Schema(description = "资讯类型的子类别", example = "1")
+    private String newsSubType;
+
+    @Schema(description = "概述摘要")
+    private String summary;
+
+    @Schema(description = "正文内容(富文本html)")
+    private String content;
+
+    @Schema(description = "资讯来源名称(网站 期刊 政府部门...)")
+    private String source;
+
+    @Schema(description = "外部原文链接", example = "https://www.iocoder.cn")
+    private String sourceUrl;
+
+    @Schema(description = "原文发布时间")
+    private LocalDateTime publishTime;
+
+    @Schema(description = "置顶标识 0否 1是")
+    private Boolean onTop;
+
+    @Schema(description = "封面图", example = "https://www.iocoder.cn")
+    private String coverUrl;
+
+    @Schema(description = "浏览次数", example = "6323")
+    private Integer browseCount;
+
+    @Schema(description = "排序值")
+    private Integer sort;
+
+    @Schema(description = "备注", example = "你说的对")
+    private String remark;
+
+    @Schema(description = "状态(0草稿 1已发布 2已下线)", example = "2")
+    private Integer status;
+
+    @Schema(description = "流程实例id", example = "14226")
+    private String processInstanceId;
+
+    @Schema(description = "审批状态 未提交、审批中、审批通过、审批不通过、已取消", example = "2")
+    private Integer auditStatus;
+
+    @Schema(description = "审批意见")
+    private String opinion;
+
+}

+ 104 - 0
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/dataobject/news/NewsDO.java

@@ -0,0 +1,104 @@
+package cn.iocoder.yudao.module.rd.dal.dataobject.news;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+import java.time.LocalDateTime;
+
+/**
+ * 资讯(政策信息 行业科技动态) DO
+ *
+ * @author ruiqi
+ */
+@TableName("rd_news")
+@KeySequence("rd_news_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class NewsDO extends BaseDO {
+
+    /**
+     * 主键id
+     */
+    @TableId
+    private Long id;
+    /**
+     * 所属部门
+     */
+    private Long deptId;
+    /**
+     * 核心技术名称
+     */
+    private String newsName;
+    /**
+     * 资讯类型(政策信息 科技动态)
+     */
+    private String newsCategory;
+    /**
+     * 资讯类型的子类别
+     */
+    private String newsSubType;
+    /**
+     * 概述摘要
+     */
+    private String summary;
+    /**
+     * 正文内容(富文本html)
+     */
+    private String content;
+    /**
+     * 资讯来源名称(网站 期刊 政府部门...)
+     */
+    private String source;
+    /**
+     * 外部原文链接
+     */
+    private String sourceUrl;
+    /**
+     * 原文发布时间
+     */
+    private LocalDateTime publishTime;
+    /**
+     * 置顶标识 0否 1是
+     */
+    private Boolean onTop;
+    /**
+     * 封面图
+     */
+    private String coverUrl;
+    /**
+     * 浏览次数
+     */
+    private Integer browseCount;
+    /**
+     * 排序值
+     */
+    private Integer sort;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 状态(0草稿 1已发布 2已下线)
+     */
+    private Integer status;
+    /**
+     * 流程实例id
+     */
+    private String processInstanceId;
+    /**
+     * 审批状态 未提交、审批中、审批通过、审批不通过、已取消
+     */
+    private Integer auditStatus;
+    /**
+     * 审批意见
+     */
+    private String opinion;
+
+}

+ 42 - 0
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/dal/mysql/news/NewsMapper.java

@@ -0,0 +1,42 @@
+package cn.iocoder.yudao.module.rd.dal.mysql.news;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.rd.controller.admin.news.vo.NewsPageReqVO;
+import cn.iocoder.yudao.module.rd.dal.dataobject.news.NewsDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 资讯(政策信息 行业科技动态) Mapper
+ *
+ * @author ruiqi
+ */
+@Mapper
+public interface NewsMapper extends BaseMapperX<NewsDO> {
+
+    default PageResult<NewsDO> selectPage(NewsPageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<NewsDO>()
+                .eqIfPresent(NewsDO::getDeptId, reqVO.getDeptId())
+                .likeIfPresent(NewsDO::getNewsName, reqVO.getNewsName())
+                .eqIfPresent(NewsDO::getNewsCategory, reqVO.getNewsCategory())
+                .eqIfPresent(NewsDO::getNewsSubType, reqVO.getNewsSubType())
+                .eqIfPresent(NewsDO::getSummary, reqVO.getSummary())
+                .eqIfPresent(NewsDO::getContent, reqVO.getContent())
+                .eqIfPresent(NewsDO::getSource, reqVO.getSource())
+                .eqIfPresent(NewsDO::getSourceUrl, reqVO.getSourceUrl())
+                .betweenIfPresent(NewsDO::getPublishTime, reqVO.getPublishTime())
+                .eqIfPresent(NewsDO::getOnTop, reqVO.getOnTop())
+                .eqIfPresent(NewsDO::getCoverUrl, reqVO.getCoverUrl())
+                .eqIfPresent(NewsDO::getBrowseCount, reqVO.getBrowseCount())
+                .eqIfPresent(NewsDO::getSort, reqVO.getSort())
+                .eqIfPresent(NewsDO::getRemark, reqVO.getRemark())
+                .eqIfPresent(NewsDO::getStatus, reqVO.getStatus())
+                .eqIfPresent(NewsDO::getProcessInstanceId, reqVO.getProcessInstanceId())
+                .eqIfPresent(NewsDO::getAuditStatus, reqVO.getAuditStatus())
+                .eqIfPresent(NewsDO::getOpinion, reqVO.getOpinion())
+                .betweenIfPresent(NewsDO::getCreateTime, reqVO.getCreateTime())
+                .orderByDesc(NewsDO::getId));
+    }
+
+}

+ 55 - 0
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/service/news/NewsService.java

@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.module.rd.service.news;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.rd.controller.admin.news.vo.NewsPageReqVO;
+import cn.iocoder.yudao.module.rd.controller.admin.news.vo.NewsSaveReqVO;
+import cn.iocoder.yudao.module.rd.dal.dataobject.news.NewsDO;
+
+import javax.validation.Valid;
+
+/**
+ * 资讯(政策信息 行业科技动态) Service 接口
+ *
+ * @author ruiqi
+ */
+public interface NewsService {
+
+    /**
+     * 创建资讯(政策信息 行业科技动态)
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createNews(@Valid NewsSaveReqVO createReqVO);
+
+    /**
+     * 更新资讯(政策信息 行业科技动态)
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateNews(@Valid NewsSaveReqVO updateReqVO);
+
+    /**
+     * 删除资讯(政策信息 行业科技动态)
+     *
+     * @param id 编号
+     */
+    void deleteNews(Long id);
+
+    /**
+     * 获得资讯(政策信息 行业科技动态)
+     *
+     * @param id 编号
+     * @return 资讯(政策信息 行业科技动态)
+     */
+    NewsDO getNews(Long id);
+
+    /**
+     * 获得资讯(政策信息 行业科技动态)分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 资讯(政策信息 行业科技动态)分页
+     */
+    PageResult<NewsDO> getNewsPage(NewsPageReqVO pageReqVO);
+
+}

+ 71 - 0
yudao-module-rd/yudao-module-rd-biz/src/main/java/cn/iocoder/yudao/module/rd/service/news/NewsServiceImpl.java

@@ -0,0 +1,71 @@
+package cn.iocoder.yudao.module.rd.service.news;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.rd.controller.admin.news.vo.NewsPageReqVO;
+import cn.iocoder.yudao.module.rd.controller.admin.news.vo.NewsSaveReqVO;
+import cn.iocoder.yudao.module.rd.dal.dataobject.news.NewsDO;
+import cn.iocoder.yudao.module.rd.dal.mysql.news.NewsMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.rd.enums.ErrorCodeConstant.NEWS_NOT_EXISTS;
+
+/**
+ * 资讯(政策信息 行业科技动态) Service 实现类
+ *
+ * @author ruiqi
+ */
+@Service
+@Validated
+public class NewsServiceImpl implements NewsService {
+
+    @Resource
+    private NewsMapper newsMapper;
+
+    @Override
+    public Long createNews(NewsSaveReqVO createReqVO) {
+        // 插入
+        NewsDO news = BeanUtils.toBean(createReqVO, NewsDO.class);
+        newsMapper.insert(news);
+        // 返回
+        return news.getId();
+    }
+
+    @Override
+    public void updateNews(NewsSaveReqVO updateReqVO) {
+        // 校验存在
+        validateNewsExists(updateReqVO.getId());
+        // 更新
+        NewsDO updateObj = BeanUtils.toBean(updateReqVO, NewsDO.class);
+        newsMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteNews(Long id) {
+        // 校验存在
+        validateNewsExists(id);
+        // 删除
+        newsMapper.deleteById(id);
+    }
+
+    private void validateNewsExists(Long id) {
+        if (newsMapper.selectById(id) == null) {
+            throw exception(NEWS_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public NewsDO getNews(Long id) {
+        return newsMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<NewsDO> getNewsPage(NewsPageReqVO pageReqVO) {
+        return newsMapper.selectPage(pageReqVO);
+    }
+
+}