Forráskód Böngészése

/oa/news/box 更新查询逻辑

phoenix 1 éve
szülő
commit
4f326bcde7

+ 1 - 12
src/main/java/com/xjrsoft/module/oa/controller/NewsController.java

@@ -73,18 +73,7 @@ public class NewsController {
     @GetMapping("/box")
     @ApiOperation(value = "获取新闻分页")
     public RT<PageOutput<NewsPageVo>> box(NewsPageDto dto) {
-        MPJLambdaWrapper<News> wrapper = MPJWrappers.<News>lambdaJoin()
-                .eq(ObjectUtil.isNotEmpty(dto.getType()) && dto.getType() > 0, News::getTypeId, dto.getType())
-                .and(wq -> wq.eq(News::getLevel, 1).or().eq(News::getLevel, 2).eq(News::getClassId, dto.getClassId()))
-                .eq(ObjectUtil.isNotEmpty(dto.getLevel()) && dto.getLevel() > 0, News::getLevel, dto.getLevel())
-                .and(wq -> wq.eq(News::getSendRange, 1).or().eq(News::getSendRange, 2).in(News::getId, "select id from xjr_oa_news_relation where news_id=t.id and user_id=" + StpUtil.getLoginIdAsLong()))
-                .like(StrUtil.isNotBlank(dto.getKeyword()), News::getFullHead, dto.getKeyword())
-//                .leftJoin(NewsRelation.class, onWrapper -> onWrapper.eq(NewsRelation::getNewsId, News::getId).eq(NewsRelation::getUserId, StpUtil.getLoginIdAsLong()))
-//                .selectAs(NewsRelation::getId, NewsPageVo::getReadId)
-                .selectAs(News::getId, NewsPageVo::getId)
-                .select(News.class, x -> VoToColumnUtil.fieldsToColumns(NewsPageVo.class).contains(x.getProperty()))
-                .orderByDesc(News::getCreateDate);//新闻按照创建时间倒序排
-        IPage<NewsPageVo> page = newsService.selectJoinListPage(ConventPage.getPage(dto), NewsPageVo.class, wrapper);
+        IPage<NewsPageVo> page = newsService.box(dto);
         PageOutput<NewsPageVo> pageOutput = ConventPage.getPageOutput(page, NewsPageVo.class);
         return RT.ok(pageOutput);
     }

+ 27 - 0
src/main/java/com/xjrsoft/module/oa/dto/NewsPageDto.java

@@ -1,5 +1,6 @@
 package com.xjrsoft.module.oa.dto;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.xjrsoft.common.page.PageInput;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -25,4 +26,30 @@ public class NewsPageDto extends PageInput {
 
     @ApiModelProperty("级别 1=校级 2=班级")
     private Integer level;
+
+    /**
+     * 作者
+     */
+    @ApiModelProperty("作者")
+    private String authorName;
+
+    /**
+     * 完整标题
+     */
+    @ApiModelProperty("完整标题")
+    private String fullHead;
+
+    /**
+     * 关键字
+     */
+    @ApiModelProperty("关键字")
+    private String keyword;
+
+    /**
+     * 当前用户id
+     */
+    @ApiModelProperty(value = "当前用户id",hidden = true)
+    @JsonIgnore
+    private Long loginId;
+
 }

+ 5 - 1
src/main/java/com/xjrsoft/module/oa/mapper/NewsMapper.java

@@ -1,8 +1,12 @@
 package com.xjrsoft.module.oa.mapper;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.oa.dto.NewsPageDto;
 import com.xjrsoft.module.oa.entity.News;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xjrsoft.module.oa.vo.NewsPageVo;
+import com.xjrsoft.module.teacher.dto.WfHeadTeacherLeavePageDto;
 import org.apache.ibatis.annotations.Mapper;
 
 /**
@@ -15,5 +19,5 @@ import org.apache.ibatis.annotations.Mapper;
  */
 @Mapper
 public interface NewsMapper extends MPJBaseMapper<News> {
-
+    IPage<NewsPageVo> box(IPage<NewsPageDto> page,NewsPageDto dto);
 }

+ 11 - 4
src/main/java/com/xjrsoft/module/oa/service/INewsService.java

@@ -1,11 +1,10 @@
 package com.xjrsoft.module.oa.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.github.yulichang.base.MPJBaseService;
-import com.xjrsoft.module.oa.dto.AddNewsDto;
-import com.xjrsoft.module.oa.dto.DeleteNewsRelationDto;
-import com.xjrsoft.module.oa.dto.UpdateNewsDto;
-import com.xjrsoft.module.oa.dto.UpdateNewsRelationDto;
+import com.xjrsoft.module.oa.dto.*;
 import com.xjrsoft.module.oa.entity.News;
+import com.xjrsoft.module.oa.vo.NewsPageVo;
 
 import java.util.List;
 
@@ -25,6 +24,14 @@ public interface INewsService extends MPJBaseService<News> {
      * @return
      */
     Long add(AddNewsDto addNewsDto);
+
+    /**
+     * 获取新闻分页
+     *
+     * @param dto
+     * @return
+     */
+    IPage<NewsPageVo> box(NewsPageDto dto);
     /**
      * 修改新闻
      *

+ 30 - 0
src/main/java/com/xjrsoft/module/oa/service/impl/NewsServiceImpl.java

@@ -1,12 +1,17 @@
 package com.xjrsoft.module.oa.service.impl;
 
+import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.github.yulichang.toolkit.MPJWrappers;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.enums.EnabledMark;
+import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.utils.LocalDateTimeUtil;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.config.CommonPropertiesConfig;
@@ -20,6 +25,7 @@ import com.xjrsoft.module.oa.mapper.NewsMapper;
 import com.xjrsoft.module.oa.mapper.NewsRelationConfigMapper;
 import com.xjrsoft.module.oa.mapper.NewsRelationMapper;
 import com.xjrsoft.module.oa.service.INewsService;
+import com.xjrsoft.module.oa.vo.NewsPageVo;
 import com.xjrsoft.module.oa.vo.NewsRelationVo;
 import com.xjrsoft.module.organization.dto.WeChatSendMessageDto;
 import com.xjrsoft.module.organization.entity.User;
@@ -73,7 +79,9 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
 
         News news = BeanUtil.toBean(addNewsDto, News.class);
         news.setEnabledMark(EnabledMark.ENABLED.getCode());
+
         newsMapper.insert(news);
+        //添加附件子表
         if (addNewsDto.getAppendixList() != null) {
             for (AddNewsAppendixDto appendixDto : addNewsDto.getAppendixList()) {
                 NewsAppendix newsAppendix = BeanUtil.toBean(appendixDto, NewsAppendix.class);
@@ -81,6 +89,7 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
                 newsAppendixMapper.insert(newsAppendix);
             }
         }
+        //公告需要添加阅读关系
         if (addNewsDto.getRelationList() != null) {
             for (AddNewsRelationDto relationDto : addNewsDto.getRelationList()) {
 
@@ -105,6 +114,27 @@ public class NewsServiceImpl extends MPJBaseServiceImpl<NewsMapper, News> implem
         return news.getId();
     }
 
+    @Override
+    public IPage<NewsPageVo> box(NewsPageDto dto) {
+        /*MPJLambdaWrapper<News> wrapper = MPJWrappers.<News>lambdaJoin()
+                .eq(ObjectUtil.isNotEmpty(dto.getType()) && dto.getType() > 0, News::getTypeId, dto.getType())
+                .and(wq -> wq.eq(News::getLevel, 1).or().eq(News::getLevel, 2).eq(News::getClassId, dto.getClassId()))
+                .eq(ObjectUtil.isNotEmpty(dto.getLevel()) && dto.getLevel() > 0, News::getLevel, dto.getLevel())
+                .and(wq -> wq.eq(News::getSendRange, 1).or().eq(News::getSendRange, 2).in(News::getId, "select id from xjr_oa_news_relation where news_id=t.id and user_id=" + StpUtil.getLoginIdAsLong()))
+                .like(StrUtil.isNotBlank(dto.getKeyword()), News::getFullHead, dto.getKeyword())
+                .leftJoin(NewsRelation.class, onWrapper -> onWrapper.eq(NewsRelation::getNewsId, News::getId).eq(NewsRelation::getUserId, StpUtil.getLoginIdAsLong()))
+                .selectAs(NewsRelation::getId, NewsPageVo::getReadId)
+                .selectAs(News::getId, NewsPageVo::getId)
+                .select(News.class, x -> VoToColumnUtil.fieldsToColumns(NewsPageVo.class).contains(x.getProperty()))
+                .orderByDesc(News::getCreateDate);//新闻按照创建时间倒序排*/
+
+        if(ObjectUtil.isNotNull(dto.getType()) && dto.getType() == 2){
+            dto.setLoginId(StpUtil.getLoginIdAsLong());
+        }
+        IPage<NewsPageVo> page = newsMapper.box(ConventPage.getPage(dto),dto);
+        return page;
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean update(UpdateNewsDto updateNewsDto) {

+ 18 - 13
src/main/java/com/xjrsoft/module/oa/vo/NewsPageVo.java

@@ -24,9 +24,9 @@ public class NewsPageVo {
     private Integer typeId;
 
     /**
-     * 父级主键
+     * 所属类别主键
      */
-    @ApiModelProperty("父级主键")
+    @ApiModelProperty("所属类别主键")
     private Long categoryId;
 
     /**
@@ -114,23 +114,16 @@ public class NewsPageVo {
     private String description;
 
     /**
-     * 是否有效
-     */
-    @ApiModelProperty("是否有效")
-    private Integer enabledMark;
-
-    /**
-     * 已读数据id,该字段有值说明已读
+     * 班级(base_class)
      */
-    @ApiModelProperty("已读数据id,该字段有值说明已读")
-    private Long readId;
+    @ApiModelProperty("班级(base_class)")
+    private Long classId;
 
     /**
      * 班级(base_class)
      */
     @ApiModelProperty("班级(base_class)")
-    private Long classId;
-
+    private String classIdCN;
 
     /**
      * 紧急程度  1=一般 2=紧急
@@ -179,4 +172,16 @@ public class NewsPageVo {
      */
     @ApiModelProperty("级别 1=校级 2=班级")
     private Integer level;
+
+    /**
+     * 状态 1=未发布 2=已发布 3=下架
+     */
+    @ApiModelProperty("状态 1=未发布 2=已发布 3=下架")
+    private Integer status;
+
+    /**
+     * 回复条数,大于0表示有回复
+     */
+    @ApiModelProperty("回复条数,大于0表示有回复")
+    private Long replyContentNum;
 }

+ 4 - 4
src/main/java/com/xjrsoft/module/teacher/service/impl/WfTeacherleaveServiceImpl.java

@@ -55,8 +55,8 @@ public class WfTeacherleaveServiceImpl extends MPJBaseServiceImpl<WfTeacherleave
                 LocalDateTime afternoonStartDateTime = LocalDateTime.of(startTime.toLocalDate(), LocalTime.of(14, 0, 0));
                 LocalDateTime afternoonEndDateTime = LocalDateTime.of(startTime.toLocalDate(), LocalTime.of(22, 0, 0));
                 /*
-                 *当请假开始的星期是在星期一到星期四,
-                 * 且开始时间早于请假当天上午区间的开始时间,
+                 *当是在星期一到星期四,
+                 * 且开始时间早于当天上午区间的开始时间,
                  * 结束时间晚于当天上午区间的结束时间,
                  * 自动同步一条请假类型为“早自习、课间操”的数据到班主任事项请假列表。
                  */
@@ -80,7 +80,7 @@ public class WfTeacherleaveServiceImpl extends MPJBaseServiceImpl<WfTeacherleave
                     wfHeadTeacherLeaveList.add(wfHeadTeacherLeave);
                 }
                 /*
-                 * 当请假开始的时间是在星期五,
+                 * 当是在星期五,
                  * 且开始时间早于下午区间的开始时间,
                  * 结束时间晚于下午区间的结束时间,
                  * 自动同步一条请假类型为“学生放假”的数据到班主任事项请假列表。
@@ -154,7 +154,7 @@ public class WfTeacherleaveServiceImpl extends MPJBaseServiceImpl<WfTeacherleave
     }
 
     @Data
-    class DateRange {
+    static class DateRange {
 
         /**
          * 开始时间

+ 36 - 0
src/main/resources/mapper/oa/NewsMapper.xml

@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xjrsoft.module.oa.mapper.NewsMapper">
+    <select id="box" parameterType="com.xjrsoft.module.oa.dto.NewsPageDto"
+            resultType="com.xjrsoft.module.oa.vo.NewsPageVo">
+        select
+            t.*,
+            t2.name as classIdCN,
+            (select count(*) from xjr_oa_news_relation where reply_content is not null ) as replyContentNum
+        from xjr_oa_news t
+             left join xjr_oa_news_relation t1 on t1.news_id = t.id
+             left join base_class t2 on t2.id = t.class_id
+        where t.delete_mark = 0
+            <if test="dto.type != null and dto.type > 0">
+                and t.type_id = #{dto.type}
+            </if>
+            <if test="dto.authorName != null and dto.authorName != ''">
+                and t.author_name LIKE CONCAT('%',#{dto.authorName},'%')
+            </if>
+            <if test="dto.fullHead != null and dto.fullHead != ''">
+                and t.full_head LIKE CONCAT('%',#{dto.fullHead},'%')
+            </if>
+            <if test="dto.keyword != null and dto.keyword != ''">
+                and t.keyword LIKE CONCAT('%',#{dto.keyword},'%')
+            </if>
+            <if test="dto.type != null and dto.type == 2 and dto.loginId != null and dto.loginId > 0">
+                and t1.user_id = #{dto.loginId}
+            </if>
+        order by t.release_time desc
+            <if test="dto.type != null and dto.type == 2">
+                ,t.send_start_date desc
+            </if>
+    </select>
+</mapper>

+ 1 - 1
src/test/java/com/xjrsoft/module/teacher/service/impl/WfTeacherleaveServiceImplTest.java

@@ -19,6 +19,6 @@ class WfTeacherleaveServiceImplTest {
 
     @Test
     void dataHandle() {
-        wfTeacherleaveService.dataHandle(1737737206938324992L);
+        wfTeacherleaveService.dataHandle(1738016970903244800L);
     }
 }