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