From e16f0687a8a572d68d2d92259f57af504be69505 Mon Sep 17 00:00:00 2001
From: xiangZr-hhh <“2774915446@qq.com”>
Date: Mon, 22 Jan 2024 19:19:39 +0800
Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E9=97=BB=E6=B7=BB=E5=8A=A0=E6=8E=A5?=
=?UTF-8?q?=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
doc/OrganizeInternalOA-ConfigTableConfig.md | 4 +-
.../oa/config/redis/RedisConfiguration.java | 1 +
.../jsl/oa/controllers/NewsController.java | 52 +++++++++++++++++++
src/main/java/com/jsl/oa/dao/NewsDAO.java | 30 +++++++++++
.../java/com/jsl/oa/mapper/NewsMapper.java | 35 +++++++++++++
.../java/com/jsl/oa/model/doData/NewsDO.java | 35 +++++++++++++
.../com/jsl/oa/model/voData/NewsAddVO.java | 24 +++++++++
.../java/com/jsl/oa/services/NewsService.java | 21 ++++++++
.../oa/services/impl/MessageServiceImpl.java | 6 +--
.../jsl/oa/services/impl/NewsServiceImpl.java | 42 +++++++++++++++
src/main/resources/application.yml | 35 +++++++++----
11 files changed, 271 insertions(+), 14 deletions(-)
create mode 100644 src/main/java/com/jsl/oa/controllers/NewsController.java
create mode 100644 src/main/java/com/jsl/oa/dao/NewsDAO.java
create mode 100644 src/main/java/com/jsl/oa/mapper/NewsMapper.java
create mode 100644 src/main/java/com/jsl/oa/model/doData/NewsDO.java
create mode 100644 src/main/java/com/jsl/oa/model/voData/NewsAddVO.java
create mode 100644 src/main/java/com/jsl/oa/services/NewsService.java
create mode 100644 src/main/java/com/jsl/oa/services/impl/NewsServiceImpl.java
diff --git a/doc/OrganizeInternalOA-ConfigTableConfig.md b/doc/OrganizeInternalOA-ConfigTableConfig.md
index 42e78b3..0874994 100755
--- a/doc/OrganizeInternalOA-ConfigTableConfig.md
+++ b/doc/OrganizeInternalOA-ConfigTableConfig.md
@@ -98,7 +98,7 @@ id为主键(不管),团队成员信息定义value:organize_user_info,
## 新闻信息展示
1. `order`: 展示顺序,可选值[asc|desc]
2. `data`: 数据内容
- 1. `display_order`:展示顺序
+ 1. `display_order`:展示顺序(输入integer,自定义处理)
2. `title`: 新闻标题
3. `content`: 新闻内容
4. `tags`: 标签
@@ -108,6 +108,6 @@ id为主键(不管),团队成员信息定义value:organize_user_info,
8. `is_active`: 是否展示[true|false]
9. `created_at` : 创建时间
10. `updated_at` : 更新时间
- 11. `author`: 作者名称
+ 11. `author`: 填写作者
diff --git a/src/main/java/com/jsl/oa/config/redis/RedisConfiguration.java b/src/main/java/com/jsl/oa/config/redis/RedisConfiguration.java
index c697e1f..4504c8d 100755
--- a/src/main/java/com/jsl/oa/config/redis/RedisConfiguration.java
+++ b/src/main/java/com/jsl/oa/config/redis/RedisConfiguration.java
@@ -3,6 +3,7 @@ package com.jsl.oa.config.redis;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
diff --git a/src/main/java/com/jsl/oa/controllers/NewsController.java b/src/main/java/com/jsl/oa/controllers/NewsController.java
new file mode 100644
index 0000000..5a6e08d
--- /dev/null
+++ b/src/main/java/com/jsl/oa/controllers/NewsController.java
@@ -0,0 +1,52 @@
+package com.jsl.oa.controllers;
+
+
+import com.jsl.oa.model.voData.NewsAddVO;
+import com.jsl.oa.model.voData.PermissionEditVO;
+import com.jsl.oa.services.NewsService;
+import com.jsl.oa.services.RoleService;
+import com.jsl.oa.utils.BaseResponse;
+import com.jsl.oa.utils.ErrorCode;
+import com.jsl.oa.utils.Processing;
+import com.jsl.oa.utils.ResultUtil;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ *
新闻控制器
+ *
+ * 角色控制器,包含角色获取接口
+ *
+ * @version v1.1.0
+ * @see NewsService
+ * @since v1.1.0
+ */
+
+@Slf4j
+@RestController
+@RequiredArgsConstructor
+public class NewsController {
+
+ private final NewsService newsService;
+
+ @PostMapping("/news/add")
+ public BaseResponse newsAdd(@RequestBody @Validated NewsAddVO newsAddVO, BindingResult bindingResult, HttpServletRequest request){
+ log.info("请求接口[POST]: /news/add");
+ // 判断是否有参数错误
+ if (bindingResult.hasErrors()) {
+ return ResultUtil.error(ErrorCode.REQUEST_BODY_ERROR, Processing.getValidatedErrorList(bindingResult));
+ }
+
+ return newsService.newsAdd(newsAddVO,request);
+ }
+
+}
+
+
diff --git a/src/main/java/com/jsl/oa/dao/NewsDAO.java b/src/main/java/com/jsl/oa/dao/NewsDAO.java
new file mode 100644
index 0000000..2b4a384
--- /dev/null
+++ b/src/main/java/com/jsl/oa/dao/NewsDAO.java
@@ -0,0 +1,30 @@
+package com.jsl.oa.dao;
+
+import com.jsl.oa.mapper.NewsMapper;
+import com.jsl.oa.model.doData.NewsDO;
+import com.jsl.oa.model.voData.NewsAddVO;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class NewsDAO {
+
+ private final NewsMapper newsMapper;
+
+ public void addNews(NewsDO newsVO,Long uid){
+ log.info("\t> 执行 DAO 层 NewsDAO.addNews 方法");
+ log.info("\t\t> 从 MySQL 获取数据");
+// 添加新闻数据
+ newsMapper.addNews(newsVO);
+// 添加作者
+ newsMapper.addNewsUser(uid,newsVO.getId());
+ }
+
+
+}
+
+
diff --git a/src/main/java/com/jsl/oa/mapper/NewsMapper.java b/src/main/java/com/jsl/oa/mapper/NewsMapper.java
new file mode 100644
index 0000000..4b37dd7
--- /dev/null
+++ b/src/main/java/com/jsl/oa/mapper/NewsMapper.java
@@ -0,0 +1,35 @@
+package com.jsl.oa.mapper;
+
+
+import com.jsl.oa.model.doData.NewsDO;
+import org.apache.ibatis.annotations.*;
+
+import java.util.List;
+
+@Mapper
+public interface NewsMapper {
+
+ @Select("SELECT * FROM organize_oa.oa_news WHERE id = #{id}")
+ NewsDO selectNewsById( Long id);
+
+ @Select("SELECT * FROM organize_oa.oa_news WHERE status = #{status}")
+ List selectNewsByStatus( Integer status);
+
+ @Insert("INSERT INTO organize_oa.oa_news(title, content, tags, status) " +
+ "VALUES(#{title}, #{content}, #{tags}, #{status})")
+ @Options(useGeneratedKeys = true, keyProperty = "id")
+ void addNews(NewsDO news);
+
+ @Update("UPDATE organize_oa.oa_news SET title = #{title}, content = #{content}, tags = #{tags}, " +
+ "likes = #{likes}, comments = #{comments}, status = #{status}, update_at = CURRENT_TIMESTAMP " +
+ "WHERE id = #{id}")
+ void updateNews(NewsDO news);
+
+ @Delete("DELETE FROM organize_oa.oa_news WHERE id = #{id}")
+ void deleteNewsById( Long id);
+
+ @Insert("INSERT INTO organize_oa.oa_news_user(uid,nid)"+
+ "VALUES(#{uid}, #{nid})")
+ void addNewsUser(Long uid,Long nid);
+
+}
diff --git a/src/main/java/com/jsl/oa/model/doData/NewsDO.java b/src/main/java/com/jsl/oa/model/doData/NewsDO.java
new file mode 100644
index 0000000..ceb9a49
--- /dev/null
+++ b/src/main/java/com/jsl/oa/model/doData/NewsDO.java
@@ -0,0 +1,35 @@
+package com.jsl.oa.model.doData;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.sql.Timestamp;
+
+/**
+ * news 数据表
+ *
+ * 映射 oa_news数据表内容进入自定义实体类
+ *
+ * @author 张睿相
+ * @since v1.1.0
+ * @version v1.1.0
+ */
+@Data
+@Accessors(chain = true)
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class NewsDO {
+
+ private Long id;
+ private String title;
+ private String content;
+ private String tags;
+ private Integer likes;
+ private Integer comments;
+ private Short status;
+ private Timestamp createdAt;
+ private Timestamp updatedAt;
+
+}
+
+
diff --git a/src/main/java/com/jsl/oa/model/voData/NewsAddVO.java b/src/main/java/com/jsl/oa/model/voData/NewsAddVO.java
new file mode 100644
index 0000000..9c10224
--- /dev/null
+++ b/src/main/java/com/jsl/oa/model/voData/NewsAddVO.java
@@ -0,0 +1,24 @@
+package com.jsl.oa.model.voData;
+
+
+import lombok.Getter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+
+@Getter
+public class NewsAddVO {
+
+ @NotBlank(message = "标题不能为空")
+ private String title;
+ @NotBlank(message = "内容不能为空")
+ private String content;
+ @NotBlank(message = "标签不能为空")
+ private String tags;
+ @NotNull(message = "状态不能为空")
+ private Short status;
+
+}
+
+
diff --git a/src/main/java/com/jsl/oa/services/NewsService.java b/src/main/java/com/jsl/oa/services/NewsService.java
new file mode 100644
index 0000000..a79c8f8
--- /dev/null
+++ b/src/main/java/com/jsl/oa/services/NewsService.java
@@ -0,0 +1,21 @@
+package com.jsl.oa.services;
+
+import com.jsl.oa.model.voData.NewsAddVO;
+import com.jsl.oa.utils.BaseResponse;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * 新闻服务接口
+ *
+ * 用于新闻控制
+ *
+ * @author 张睿相
+ * @version v1.1.0
+ * @since v1.1.0
+ */
+public interface NewsService {
+
+ BaseResponse newsAdd(NewsAddVO newsAddVO, HttpServletRequest request);
+
+}
diff --git a/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java
index fb03264..e483032 100644
--- a/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java
+++ b/src/main/java/com/jsl/oa/services/impl/MessageServiceImpl.java
@@ -2,16 +2,16 @@ package com.jsl.oa.services.impl;
import com.jsl.oa.mapper.MessageMapper;
-import com.jsl.oa.mapper.RoleMapper;
import com.jsl.oa.model.doData.MessageDO;
import com.jsl.oa.services.MessageService;
import com.jsl.oa.utils.*;
import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
-
import javax.servlet.http.HttpServletRequest;
-import javax.swing.*;
+
+@Slf4j
@Service
@RequiredArgsConstructor
public class MessageServiceImpl implements MessageService {
diff --git a/src/main/java/com/jsl/oa/services/impl/NewsServiceImpl.java b/src/main/java/com/jsl/oa/services/impl/NewsServiceImpl.java
new file mode 100644
index 0000000..4ff20a4
--- /dev/null
+++ b/src/main/java/com/jsl/oa/services/impl/NewsServiceImpl.java
@@ -0,0 +1,42 @@
+package com.jsl.oa.services.impl;
+
+
+import com.jsl.oa.dao.NewsDAO;
+import com.jsl.oa.model.doData.NewsDO;
+import com.jsl.oa.model.voData.NewsAddVO;
+import com.jsl.oa.services.NewsService;
+import com.jsl.oa.utils.BaseResponse;
+import com.jsl.oa.utils.JwtUtil;
+import com.jsl.oa.utils.Processing;
+import com.jsl.oa.utils.ResultUtil;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class NewsServiceImpl implements NewsService {
+
+ private final NewsDAO newsDAO;
+
+ @Override
+ public BaseResponse newsAdd(NewsAddVO newsAddVO, HttpServletRequest request) {
+ log.info("\t> 执行 Service 层 NewsService.newsAdd 方法");
+// 拷贝新闻数据到实体类
+ NewsDO newsDO = new NewsDO();
+ Processing.copyProperties(newsAddVO,newsDO);
+// 获取现在的用户id
+ String token = request.getHeader("Authorization").replace("Bearer ", "");
+ Long uid = JwtUtil.getUserId(token);
+// 添加新闻数据
+ newsDAO.addNews(newsDO,uid);
+
+ return ResultUtil.success();
+ }
+
+}
+
+
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 22149f4..2f61e1a 100755
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,18 +1,35 @@
-server:
- port: 8080
spring:
datasource:
- url: jdbc:mysql://localhost:3306
+ url: jdbc:mysql://localhost:3306?organize_oa
username: root
- password: 123456
+ password: Zrx@20041009
driver-class-name: com.mysql.cj.jdbc.Driver
redis:
database: 0
- host: 192.168.80.129
+ host: localhost
port: 6379
- password: 123456
- profiles:
- active: dev
+ password: Zrx@20041009
+ mail:
+ default-encoding: UTF-8
+ host: smtp.qiye.aliyun.com
+ username: wxxydeveloper@x-lf.cn
+ password: 114477225588Zcw
+ properties:
+ form: wxxydeveloper@x-lf.cn
+ mail:
+ smtp:
+ auth: true
+ starttls:
+ enable: true
+ ssl:
+ enable: true
mybatis:
configuration:
- map-underscore-to-camel-case: true
\ No newline at end of file
+ map-underscore-to-camel-case: true
+logging:
+ level:
+ root: TRACE
+ sun.rmi: OFF
+ org.apache.tomcat: WARN
+server:
+ port: 8155
\ No newline at end of file