From daec4b1d2cce358233109fb282aa4d5be31da559 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期一, 15 七月 2024 17:43:41 +0800
Subject: [PATCH] 通知
---
src/main/java/com/mindskip/xzs/domain/enums/NotifyRefType.java | 27 +++
src/main/java/com/mindskip/xzs/domain/vo/AdminNotifyVO.java | 42 ++++++
src/main/resources/mapper/NotifyMapper.xml | 42 ++++++
src/main/java/com/mindskip/xzs/controller/admin/DepartmentExamineController.java | 20 ++
src/main/java/com/mindskip/xzs/controller/admin/NotifyController.java | 60 ++++++++
src/main/resources/application-dev.yml | 4
src/main/java/com/mindskip/xzs/domain/Notify.java | 43 ++++++
src/main/java/com/mindskip/xzs/service/impl/NotifyServiceImpl.java | 42 ++++++
src/main/java/com/mindskip/xzs/repository/NotifyMapper.java | 43 ++++++
src/main/java/com/mindskip/xzs/service/NotifyService.java | 38 +++++
src/main/java/com/mindskip/xzs/service/impl/FeedbackServiceImpl.java | 18 ++
11 files changed, 378 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/mindskip/xzs/controller/admin/DepartmentExamineController.java b/src/main/java/com/mindskip/xzs/controller/admin/DepartmentExamineController.java
index e4cbe61..c005913 100644
--- a/src/main/java/com/mindskip/xzs/controller/admin/DepartmentExamineController.java
+++ b/src/main/java/com/mindskip/xzs/controller/admin/DepartmentExamineController.java
@@ -5,13 +5,18 @@
import com.mindskip.xzs.base.BaseApiController;
import com.mindskip.xzs.base.RestResponse;
import com.mindskip.xzs.domain.DepartmentExamine;
+import com.mindskip.xzs.domain.Notify;
+import com.mindskip.xzs.domain.enums.NotifyRefType;
import com.mindskip.xzs.domain.vo.DepartmentExamineVO;
import com.mindskip.xzs.service.DepartmentExamineService;
+import com.mindskip.xzs.service.NotifyService;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
+import java.util.Date;
/**
* <p>
@@ -27,6 +32,7 @@
public class DepartmentExamineController extends BaseApiController {
private final DepartmentExamineService departmentExamineService;
+ private final NotifyService notifyService;
@RequestMapping(value = "list", method = RequestMethod.POST)
public RestResponse<PageInfo<DepartmentExamineVO>> list(@RequestBody DepartmentExamineVO departmentExamineVO) {
@@ -34,11 +40,23 @@
return RestResponse.ok(departmentExamineService.pageInfo(departmentExamineVO));
}
+ @Transactional(rollbackFor = Exception.class)
@RequestMapping(value = "save", method = RequestMethod.POST)
public RestResponse<Boolean> save(@RequestBody DepartmentExamine departmentExamine) {
departmentExamine.setCreateTime(LocalDateTime.now());
departmentExamine.setCreateUser(getCurrentUser().getId());
- return RestResponse.ok(departmentExamineService.save(departmentExamine));
+
+ departmentExamineService.save(departmentExamine);
+
+ // 娣诲姞閫氱煡
+ Notify notify = new Notify();
+ notify.setCreateTime(new Date());
+ notify.setReadStatus(2);
+ notify.setRefId(departmentExamine.getId());
+ notify.setRefType(NotifyRefType.FEEDBACK.getValue());
+ notify.setCreateUserId(webContext.getCurrentUser().getId());
+ notifyService.add(notify);
+ return RestResponse.ok();
}
@RequestMapping(value = "delete/{id}", method = RequestMethod.POST)
diff --git a/src/main/java/com/mindskip/xzs/controller/admin/NotifyController.java b/src/main/java/com/mindskip/xzs/controller/admin/NotifyController.java
new file mode 100644
index 0000000..6506dd3
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/controller/admin/NotifyController.java
@@ -0,0 +1,60 @@
+package com.mindskip.xzs.controller.admin;
+
+import com.mindskip.xzs.base.RestResponse;
+import com.mindskip.xzs.domain.Notify;
+import com.mindskip.xzs.domain.enums.NotifyRefType;
+import com.mindskip.xzs.domain.vo.AdminNotifyVO;
+import com.mindskip.xzs.service.NotifyService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/7/15 15:05
+ */
+@Validated
+@RestController
+@RequiredArgsConstructor
+@RequestMapping("/api/admin/notify")
+public class NotifyController {
+
+ private final NotifyService notifyService;
+
+ /**
+ * 绠$悊鍛橀�氱煡鍒楄〃
+ *
+ * @return
+ */
+ @GetMapping("/admin")
+ public RestResponse adminNotifyList() {
+ List<Notify> notifies = notifyService.adminNotifyList();
+ AdminNotifyVO data = new AdminNotifyVO();
+ data.setTotal(notifies.size());
+ long feedback = notifies.stream().filter(notify -> NotifyRefType.FEEDBACK.getValue().equals(notify.getRefType())).count();
+ long mobilize = notifies.stream().filter(notify -> NotifyRefType.MOBILIZE.getValue().equals(notify.getRefType())).count();
+ long status = notifies.stream().filter(notify -> NotifyRefType.STATUS.getValue().equals(notify.getRefType())).count();
+ data.setFeedBack(feedback);
+ data.setMobilize(mobilize);
+ data.setStatus(status);
+ List<Integer> ids = notifies.stream().map(Notify::getId).collect(Collectors.toList());
+ data.setIds(ids);
+ return RestResponse.ok(data);
+ }
+
+ @GetMapping("/me")
+ public RestResponse notifyMeList() {
+ return RestResponse.ok(notifyService.notifyMeList());
+ }
+
+
+ @PostMapping("/read")
+ public RestResponse readNotify(@RequestBody @NotEmpty List<Integer> ids) {
+ notifyService.setHasRead(ids);
+ return RestResponse.ok();
+ }
+}
diff --git a/src/main/java/com/mindskip/xzs/domain/Notify.java b/src/main/java/com/mindskip/xzs/domain/Notify.java
new file mode 100644
index 0000000..d1aba3d
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/domain/Notify.java
@@ -0,0 +1,43 @@
+package com.mindskip.xzs.domain;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 閫氱煡
+ *
+ * @author锛歺p
+ * @date锛�2024/7/15 14:23
+ */
+@Data
+public class Notify {
+
+ private Integer id;
+
+ /** 閫氱煡璋� */
+ private Integer notifyWho;
+
+ /** 鍏宠仈鏁版嵁 */
+ private Integer refId;
+
+ /** 鍏宠仈鏁版嵁绫诲瀷 */
+ private String refType;
+
+ /** 閫氱煡鏃堕棿 */
+ private Date createTime;
+
+ /** 閫氱煡绫诲瀷 */
+ private String notifyType;
+
+ /** 閫氱煡璋� */
+ private Integer readStatus;
+
+ /** 鍙戣捣浜篒D */
+ private Integer createUserId;
+
+ /** 鍙戣捣浜洪儴闂↖D */
+ private Integer createDeptId;
+
+ private Integer deleted;
+}
diff --git a/src/main/java/com/mindskip/xzs/domain/enums/NotifyRefType.java b/src/main/java/com/mindskip/xzs/domain/enums/NotifyRefType.java
new file mode 100644
index 0000000..4ac0661
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/domain/enums/NotifyRefType.java
@@ -0,0 +1,27 @@
+package com.mindskip.xzs.domain.enums;
+
+import lombok.Getter;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/7/15 15:30
+ */
+@Getter
+public enum NotifyRefType {
+
+ FEEDBACK("feedback", "閿欓鍙嶉"),
+
+ MOBILIZE("mobilize", "璋冨姩閮ㄩ棬"),
+
+ STATUS("status", "鐘舵�佽缃�"),
+
+ ;
+
+ private final String value;
+ private final String desc;
+
+ NotifyRefType(String value, String desc) {
+ this.value = value;
+ this.desc = desc;
+ }
+}
diff --git a/src/main/java/com/mindskip/xzs/domain/vo/AdminNotifyVO.java b/src/main/java/com/mindskip/xzs/domain/vo/AdminNotifyVO.java
new file mode 100644
index 0000000..200aa81
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/domain/vo/AdminNotifyVO.java
@@ -0,0 +1,42 @@
+package com.mindskip.xzs.domain.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 绠$悊鍛橀�氱煡
+ *
+ * @author锛歺p
+ * @date锛�2024/7/15 16:45
+ */
+@Data
+public class AdminNotifyVO {
+
+ private List<Integer> ids;
+
+ /**
+ * 鎵�鏈変唬鍔�
+ *
+ */
+ private Integer total;
+
+ /**
+ * 閿欓鍙嶉浠e姙
+ *
+ */
+ private Long feedBack;
+
+ /**
+ * 閮ㄩ棬璋冨姩浠e姙
+ *
+ */
+ private Long mobilize;
+
+ /**
+ * 鐘舵�佽缃�
+ *
+ */
+ private Long status;
+
+}
diff --git a/src/main/java/com/mindskip/xzs/repository/NotifyMapper.java b/src/main/java/com/mindskip/xzs/repository/NotifyMapper.java
new file mode 100644
index 0000000..28a068c
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/repository/NotifyMapper.java
@@ -0,0 +1,43 @@
+package com.mindskip.xzs.repository;
+
+import com.mindskip.xzs.domain.Notify;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/7/15 14:36
+ */
+@Mapper
+public interface NotifyMapper {
+
+ /**
+ * 娣诲姞
+ *
+ * @param notify
+ */
+ void add(Notify notify);
+
+ /**
+ * 鏌ヨ閫氱煡鎴戠殑
+ *
+ * @return
+ */
+ List<Notify> notifyMeList(@Param("userId") Integer userId);
+
+ /**
+ * 璁剧疆涓哄凡璇�
+ *
+ * @param ids
+ */
+ void setHasRead(@Param("ids") List<Integer> ids);
+
+ /**
+ * 绠$悊鍛橀�氱煡鍒楄〃
+ *
+ * @return
+ */
+ List<Notify> adminNotifyList();
+}
diff --git a/src/main/java/com/mindskip/xzs/service/NotifyService.java b/src/main/java/com/mindskip/xzs/service/NotifyService.java
new file mode 100644
index 0000000..71a7b2c
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/service/NotifyService.java
@@ -0,0 +1,38 @@
+package com.mindskip.xzs.service;
+
+import com.mindskip.xzs.domain.Notify;
+
+import java.util.List;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/7/15 15:00
+ */
+public interface NotifyService {
+
+ /**
+ * 娣诲姞
+ *
+ * @param notify
+ */
+ void add(Notify notify);
+
+ /**
+ * 閫氱煡鎴戠殑
+ *
+ */
+ List<Notify> notifyMeList();
+
+ /**
+ * 宸茶
+ *
+ */
+ void setHasRead(List<Integer> ids);
+
+ /**
+ * 绠$悊鍛橀�氱煡
+ *
+ * @return
+ */
+ List<Notify> adminNotifyList();
+}
diff --git a/src/main/java/com/mindskip/xzs/service/impl/FeedbackServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/FeedbackServiceImpl.java
index 06be31e..e3f02c0 100644
--- a/src/main/java/com/mindskip/xzs/service/impl/FeedbackServiceImpl.java
+++ b/src/main/java/com/mindskip/xzs/service/impl/FeedbackServiceImpl.java
@@ -4,18 +4,25 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
+import com.mindskip.xzs.context.WebContext;
import com.mindskip.xzs.domain.Feedback;
+import com.mindskip.xzs.domain.Notify;
+import com.mindskip.xzs.domain.enums.NotifyRefType;
import com.mindskip.xzs.domain.question.QuestionObject;
import com.mindskip.xzs.domain.vo.FeedbackVO;
import com.mindskip.xzs.repository.FeedbackMapper;
+import com.mindskip.xzs.repository.UserMapper;
import com.mindskip.xzs.service.FeedbackService;
+import com.mindskip.xzs.service.NotifyService;
import com.mindskip.xzs.utility.JsonUtil;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
+import java.util.Date;
import java.util.stream.Collectors;
/**
@@ -28,12 +35,23 @@
public class FeedbackServiceImpl extends ServiceImpl<FeedbackMapper, Feedback> implements FeedbackService {
private final FeedbackMapper feedbackMapper;
+ private final WebContext webContext;
+ private final NotifyService notifyService;
@Override
+ @Transactional(rollbackFor = Exception.class)
public void saveFeedback(FeedbackVO feedbackVO) {
Feedback feedback = new Feedback();
BeanUtils.copyProperties(feedbackVO, feedback);
feedbackMapper.insert(feedback);
+ // 娣诲姞閫氱煡
+ Notify notify = new Notify();
+ notify.setCreateTime(new Date());
+ notify.setReadStatus(2);
+ notify.setRefId(feedback.getId());
+ notify.setRefType(NotifyRefType.FEEDBACK.getValue());
+ notify.setCreateUserId(webContext.getCurrentUser().getId());
+ notifyService.add(notify);
}
@Override
diff --git a/src/main/java/com/mindskip/xzs/service/impl/NotifyServiceImpl.java b/src/main/java/com/mindskip/xzs/service/impl/NotifyServiceImpl.java
new file mode 100644
index 0000000..cdd78f8
--- /dev/null
+++ b/src/main/java/com/mindskip/xzs/service/impl/NotifyServiceImpl.java
@@ -0,0 +1,42 @@
+package com.mindskip.xzs.service.impl;
+
+import com.mindskip.xzs.context.WebContext;
+import com.mindskip.xzs.domain.Notify;
+import com.mindskip.xzs.repository.NotifyMapper;
+import com.mindskip.xzs.service.NotifyService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/7/15 15:02
+ */
+@Service
+@RequiredArgsConstructor
+public class NotifyServiceImpl implements NotifyService {
+
+ private final NotifyMapper notifyMapper;
+ private final WebContext webContext;
+
+ @Override
+ public void add(Notify notify) {
+ notifyMapper.add(notify);
+ }
+
+ @Override
+ public List<Notify> notifyMeList() {
+ return notifyMapper.notifyMeList(webContext.getCurrentUser().getId());
+ }
+
+ @Override
+ public void setHasRead(List<Integer> ids) {
+ notifyMapper.setHasRead(ids);
+ }
+
+ @Override
+ public List<Notify> adminNotifyList() {
+ return notifyMapper.adminNotifyList();
+ }
+}
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index d82e26a..d9b2931 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -11,3 +11,7 @@
username: root
password: 321$YcYl@1970!
driver-class-name: com.mysql.cj.jdbc.Driver
+# url: jdbc:mysql://127.0.0.1:3306/xzsqy?useSSL=false&useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&allowPublicKeyRetrieval=true&allowMultiQueries=true
+# username: root
+# password: 123456
+# driver-class-name: com.mysql.cj.jdbc.Driver
diff --git a/src/main/resources/mapper/NotifyMapper.xml b/src/main/resources/mapper/NotifyMapper.xml
new file mode 100644
index 0000000..8b7bf04
--- /dev/null
+++ b/src/main/resources/mapper/NotifyMapper.xml
@@ -0,0 +1,42 @@
+<?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.mindskip.xzs.repository.NotifyMapper">
+
+ <resultMap id="BaseResultMap" type="com.mindskip.xzs.domain.Notify">
+ <id property="id" column="id"/>
+ <result property="notifyWho" column="notify_who"/>
+ <result property="refId" column="ref_id"/>
+ <result property="refType" column="ref_type"/>
+ <result property="createTime" column="create_time"/>
+ <result property="notifyType" column="notify_type"/>
+ <result property="readStatus" column="read_status"/>
+ <result property="createUserId" column="create_user_id"/>
+ <result property="createDeptId" column="create_dept_id"/>
+ </resultMap>
+
+ <sql id="Base_Column_List">
+ id,question_id,content_id,
+ describe,user_id,fix,
+ fix_time
+ </sql>
+
+ <insert id="add" keyProperty="id" useGeneratedKeys="true" keyColumn="id" parameterType="com.mindskip.xzs.domain.Notify">
+ insert into t_notify(notify_who, ref_id, ref_type, create_time, notify_type, read_status, create_user_id, create_dept_id) value (
+ #{notifyWho}, #{refId}, #{refType}, #{createTime}, #{notifyType}, #{readStatus}, #{createUserId}, #{createDeptId}
+ )
+ </insert>
+
+ <select id="notifyMeList" resultMap="BaseResultMap">
+ SELECT * FROM t_notify WHERE notify_who = #{userId} AND deleted = 0 ORDER BY read_status,create_time DESC
+ </select>
+
+ <select id="adminNotifyList" resultMap="BaseResultMap">
+ SELECT * FROM t_notify WHERE read_status = 2 AND deleted = 0 ORDER BY read_status,create_time DESC
+ </select>
+
+ <update id="setHasRead" parameterType="integer">
+ update t_notify set read_status = 1 where id in <foreach collection="ids" open="(" separator="," close=")" item="id">#{id}</foreach>
+ </update>
+</mapper>
--
Gitblit v1.8.0