From 0a49707dd4dbacf83935b8b00af27cdf29c02b10 Mon Sep 17 00:00:00 2001
From: Crunchy <3114200645@qq.com>
Date: 星期二, 23 四月 2024 15:59:38 +0800
Subject: [PATCH] 2024-4-23 消息通知后端开放
---
framework/src/main/java/com/yuanchu/mom/config/OpenFifer.java | 44 +++++++
framework/src/main/java/com/yuanchu/mom/pojo/InformationNotification.java | 69 +++++++++++
framework/src/main/java/com/yuanchu/mom/mapper/InformationNotificationMapper.java | 22 +++
framework/src/main/java/com/yuanchu/mom/service/InformationNotificationService.java | 26 ++++
framework/src/main/java/com/yuanchu/mom/service/impl/InformationNotificationServiceImpl.java | 61 ++++++++++
system-run/src/main/resources/application.yml | 3
framework/src/main/resources/mapper/InformationNotificationMapper.xml | 14 ++
framework/src/main/java/com/yuanchu/mom/controller/InformationNotificationController.java | 66 +++++++++++
system-run/src/main/java/com/yuanchu/mom/CodeGenerator.java | 4
framework/src/main/java/com/yuanchu/mom/pojo/InformationNotificationDto.java | 10 +
10 files changed, 317 insertions(+), 2 deletions(-)
diff --git a/framework/src/main/java/com/yuanchu/mom/config/OpenFifer.java b/framework/src/main/java/com/yuanchu/mom/config/OpenFifer.java
index 329eeed..50d28d4 100644
--- a/framework/src/main/java/com/yuanchu/mom/config/OpenFifer.java
+++ b/framework/src/main/java/com/yuanchu/mom/config/OpenFifer.java
@@ -1,13 +1,29 @@
package com.yuanchu.mom.config;
import cn.hutool.log.Log;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Configuration;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
@Configuration
public class OpenFifer extends WebMvcConfigurationSupport {
@@ -30,6 +46,9 @@
@Value("${wordUrl}")
private String wordUrl;
+ @Value("${spring.jackson.date-format}")
+ private String pattern;
+
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//閰嶇疆鎷︽埅鍣ㄨ闂潤鎬佽祫婧�
registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
@@ -49,4 +68,29 @@
registry.addInterceptor(logConfig).addPathPatterns("/**");
super.addInterceptors(registry);
}
+
+ // 鍏ㄥ眬鏍煎紡鍖栧鐞�
+ @Override
+ protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
+ // 杩斿洖缁欏墠绔幓闄ull
+ Jackson2ObjectMapperBuilder json = Jackson2ObjectMapperBuilder.json();
+ MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
+
+ //localDateTime鏍煎紡鍖�
+ JavaTimeModule module = new JavaTimeModule();
+ LocalDateTimeDeserializer dateTimeDeserializer = new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(pattern));
+ LocalDateTimeSerializer dateTimeSerializer = new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(pattern));
+ module.addDeserializer(LocalDateTime.class, dateTimeDeserializer);
+ module.addSerializer(LocalDateTime.class, dateTimeSerializer);
+ ObjectMapper objectMapper = json.modules(module)
+ .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS).build();
+
+ //date鏃堕棿鏍煎紡鍖�
+ objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+ objectMapper.setDateFormat(new SimpleDateFormat(pattern));
+
+ // 璁剧疆鏍煎紡鍖栧唴瀹�
+ converter.setObjectMapper(objectMapper);
+ converters.add(0, converter);
+ }
}
diff --git a/framework/src/main/java/com/yuanchu/mom/controller/InformationNotificationController.java b/framework/src/main/java/com/yuanchu/mom/controller/InformationNotificationController.java
new file mode 100644
index 0000000..d229273
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/controller/InformationNotificationController.java
@@ -0,0 +1,66 @@
+package com.yuanchu.mom.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.mapper.InformationNotificationMapper;
+import com.yuanchu.mom.pojo.InformationNotification;
+import com.yuanchu.mom.pojo.InformationNotificationDto;
+import com.yuanchu.mom.service.InformationNotificationService;
+import com.yuanchu.mom.vo.Result;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.stereotype.Controller;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 娑堟伅閫氱煡 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-04-23 02:14:30
+ */
+@Api(tags = "娑堟伅閫氱煡")
+@RestController
+@RequestMapping("/informationNotification")
+public class InformationNotificationController {
+
+ @Autowired
+ private InformationNotificationService informationNotificationService;
+
+ @ApiOperation(value = "婊氬姩鍒嗛〉鏌ヨ")
+ @GetMapping("page")
+ public Result<?> getPage(Long size, Long current, String messageType) {
+ return Result.success(informationNotificationService.getPage(new Page<>(current, size), messageType));
+ }
+
+ @ApiOperation(value = "鏇存柊娑堟伅鐘舵�侊紙鎷掔粷銆佹帴鏀讹級")
+ @PutMapping("updateMessageStatus")
+ public Result<?> updateMessageStatus(@RequestBody InformationNotification informationNotification) {
+ informationNotificationService.updateById(informationNotification);
+ return Result.success();
+ }
+
+ @ApiOperation(value = "鏍囪鎵�鏈変俊鎭负宸茶/鍒犻櫎鎵�鏈夊凡璇绘秷鎭�")
+ @PutMapping("informationReadOrDelete/{isMarkAllInformationRead}")
+ public Result<?> markAllInformationReadOrDeleteAllReadMessages(@PathVariable("isMarkAllInformationRead") Boolean isMarkAllInformationRead) {
+ informationNotificationService.markAllInformationReadOrDeleteAllReadMessages(isMarkAllInformationRead);
+ return Result.success();
+ }
+
+ @ApiOperation(value = "鏍规嵁Id鍒犻櫎鏁版嵁")
+ @DeleteMapping("deleteDataBasedOnId")
+ public Result<?> deleteDataBasedOnId(Integer id) {
+ informationNotificationService.removeById(id);
+ return Result.success();
+ }
+
+ @ApiOperation(value = "鏌ヨ鏄惁瀛樺湪鏈鏁版嵁")
+ @GetMapping("checkForUnreadData")
+ public Result<?> checkForUnreadData() {
+ return Result.success(informationNotificationService.checkForUnreadData());
+ }
+}
diff --git a/framework/src/main/java/com/yuanchu/mom/mapper/InformationNotificationMapper.java b/framework/src/main/java/com/yuanchu/mom/mapper/InformationNotificationMapper.java
new file mode 100644
index 0000000..d0d26a6
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/mapper/InformationNotificationMapper.java
@@ -0,0 +1,22 @@
+package com.yuanchu.mom.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.InformationNotification;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yuanchu.mom.pojo.InformationNotificationDto;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 娑堟伅閫氱煡 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-04-23 02:14:30
+ */
+public interface InformationNotificationMapper extends BaseMapper<InformationNotification> {
+
+ IPage<InformationNotificationDto> getPage(Page page, String messageType);
+}
diff --git a/framework/src/main/java/com/yuanchu/mom/pojo/InformationNotification.java b/framework/src/main/java/com/yuanchu/mom/pojo/InformationNotification.java
new file mode 100644
index 0000000..db0c348
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/pojo/InformationNotification.java
@@ -0,0 +1,69 @@
+package com.yuanchu.mom.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 娑堟伅閫氱煡
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-04-23 02:14:30
+ */
+@Getter
+@Setter
+@TableName("information_notification")
+@ApiModel(value = "InformationNotification瀵硅薄", description = "娑堟伅閫氱煡")
+public class InformationNotification implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("涓婚敭ID")
+ private Integer id;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ private String createUser;
+
+ @ApiModelProperty("鏇存柊鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿/鍙戦�佹椂闂�")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("寰呭姙銆佹帴鏀躲�佸鏍搞�佹壒鍑嗐�侀璀︽彁閱掋�侀�氱煡鍏憡")
+ private String messageType;
+
+ @ApiModelProperty("涓婚")
+ private String theme;
+
+ @ApiModelProperty("鍐呭")
+ private String content;
+
+ @ApiModelProperty("鍙戦�佷汉Id")
+ private Integer senderId;
+
+ @ApiModelProperty("鏀朵欢浜�")
+ private Integer consigneeId;
+
+ @ApiModelProperty("鏌ョ湅鐘舵�侊細宸茶锛屾湭璇�")
+ private Boolean viewStatus;
+
+ @ApiModelProperty("娑堟伅鐘舵�侊紙鎷掔粷銆佹帴鏀讹級锛堟牴鎹秷鎭被鍨嬪睍绀猴級")
+ private Boolean messageStatus;
+
+ @ApiModelProperty("璺宠浆璺緞")
+ private String jumpPath;
+
+ @ApiModelProperty("璺宠浆Id")
+ private String jumpId;
+}
diff --git a/framework/src/main/java/com/yuanchu/mom/pojo/InformationNotificationDto.java b/framework/src/main/java/com/yuanchu/mom/pojo/InformationNotificationDto.java
new file mode 100644
index 0000000..12e5fc5
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/pojo/InformationNotificationDto.java
@@ -0,0 +1,10 @@
+package com.yuanchu.mom.pojo;
+
+import lombok.Data;
+
+@Data
+public class InformationNotificationDto extends InformationNotification{
+ private String senderUser;
+
+ private String consigneeUser;
+}
diff --git a/framework/src/main/java/com/yuanchu/mom/service/InformationNotificationService.java b/framework/src/main/java/com/yuanchu/mom/service/InformationNotificationService.java
new file mode 100644
index 0000000..a11d10a
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/service/InformationNotificationService.java
@@ -0,0 +1,26 @@
+package com.yuanchu.mom.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.pojo.InformationNotification;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yuanchu.mom.pojo.InformationNotificationDto;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 娑堟伅閫氱煡 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-04-23 02:14:30
+ */
+public interface InformationNotificationService extends IService<InformationNotification> {
+
+ IPage<InformationNotificationDto> getPage(Page page, String messageType);
+
+ void markAllInformationReadOrDeleteAllReadMessages(Boolean isMarkAllInformationRead);
+
+ Boolean checkForUnreadData();
+}
diff --git a/framework/src/main/java/com/yuanchu/mom/service/impl/InformationNotificationServiceImpl.java b/framework/src/main/java/com/yuanchu/mom/service/impl/InformationNotificationServiceImpl.java
new file mode 100644
index 0000000..153c74a
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/mom/service/impl/InformationNotificationServiceImpl.java
@@ -0,0 +1,61 @@
+package com.yuanchu.mom.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yuanchu.mom.common.GetLook;
+import com.yuanchu.mom.pojo.InformationNotification;
+import com.yuanchu.mom.mapper.InformationNotificationMapper;
+import com.yuanchu.mom.pojo.InformationNotificationDto;
+import com.yuanchu.mom.service.InformationNotificationService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * <p>
+ * 娑堟伅閫氱煡 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃
+ * @since 2024-04-23 02:14:30
+ */
+@Service
+public class InformationNotificationServiceImpl extends ServiceImpl<InformationNotificationMapper, InformationNotification> implements InformationNotificationService {
+
+ @Autowired
+ private GetLook getLook;
+
+ @Override
+ public IPage<InformationNotificationDto> getPage(Page page, String messageType) {
+ return baseMapper.getPage(page, messageType);
+ }
+
+ @Override
+ public void markAllInformationReadOrDeleteAllReadMessages(Boolean isMarkAllInformationRead) {
+ Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("selectInsOrderParameter");
+ if (isMarkAllInformationRead) {
+ baseMapper.update(new InformationNotification(), Wrappers.<InformationNotification>lambdaUpdate()
+ .set(InformationNotification::getViewStatus, true)
+ .eq(InformationNotification::getConsigneeId, map1.get("userId")));
+ } else {
+ baseMapper.delete(Wrappers.<InformationNotification>lambdaUpdate()
+ .eq(InformationNotification::getConsigneeId, map1.get("userId"))
+ .eq(InformationNotification::getViewStatus, true));
+ }
+ }
+
+ @Override
+ public Boolean checkForUnreadData() {
+ Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("selectInsOrderParameter");
+ List<InformationNotification> informationNotifications = baseMapper.selectList(
+ Wrappers.<InformationNotification>lambdaQuery()
+ .eq(InformationNotification::getConsigneeId, map1.get("userId"))
+ .eq(InformationNotification::getViewStatus, false)
+ .last("limit 1"));
+ return !informationNotifications.isEmpty();
+ }
+}
diff --git a/framework/src/main/resources/mapper/InformationNotificationMapper.xml b/framework/src/main/resources/mapper/InformationNotificationMapper.xml
new file mode 100644
index 0000000..8141046
--- /dev/null
+++ b/framework/src/main/resources/mapper/InformationNotificationMapper.xml
@@ -0,0 +1,14 @@
+<?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.yuanchu.mom.mapper.InformationNotificationMapper">
+
+ <select id="getPage" resultType="com.yuanchu.mom.pojo.InformationNotificationDto">
+ select i.*, u.name senderUser, u2.name consigneeUserr
+ from information_notification i
+ left join user u on i.sender_id = u.id
+ left join user u2 on u2.id = i.consignee_id
+ <if test="messageType != '' and messageType != null">
+ where i.message_type = #{messageType}
+ </if>
+ </select>
+</mapper>
diff --git a/system-run/src/main/java/com/yuanchu/mom/CodeGenerator.java b/system-run/src/main/java/com/yuanchu/mom/CodeGenerator.java
index ebee0b5..e69e903 100644
--- a/system-run/src/main/java/com/yuanchu/mom/CodeGenerator.java
+++ b/system-run/src/main/java/com/yuanchu/mom/CodeGenerator.java
@@ -19,11 +19,10 @@
public static String database_username = "root";
public static String database_password= "123456";
public static String author = "姹熻嫃榈烽洀缃戠粶绉戞妧鏈夐檺鍏徃";
- public static String model_name = "/cnas-server"; // 濡傛灉涓哄垎甯冨紡濉瓙妯″潡鍚嶇О锛屽鏋滀笉鏄垎甯冨紡涓虹┖鍗冲彲
+ public static String model_name = "/framework"; // 濡傛灉涓哄垎甯冨紡濉瓙妯″潡鍚嶇О锛屽鏋滀笉鏄垎甯冨紡涓虹┖鍗冲彲
public static String setParent = "com.yuanchu.mom"; // 鍖呰矾寰�
public static void main(String[] args) {
String projectPath = System.getProperty("user.dir");
- System.out.println(projectPath+"===================");
FastAutoGenerator.create(database_url, database_username, database_password)
// 鍏ㄥ眬閰嶇疆
.globalConfig(builder -> {
@@ -69,6 +68,7 @@
// Controller 绛栫暐閰嶇疆
.controllerBuilder()
.enableFileOverride() // 瑕嗙洊宸茬敓鎴愭枃浠�
+ .enableRestStyle() // 寮�鍚敓鎴怈RestController 鎺у埗鍣�
;
})
//5銆佹ā鏉垮紩鎿�
diff --git a/system-run/src/main/resources/application.yml b/system-run/src/main/resources/application.yml
index 648b09f..821c7ce 100644
--- a/system-run/src/main/resources/application.yml
+++ b/system-run/src/main/resources/application.yml
@@ -3,6 +3,9 @@
spring:
profiles:
active: dev
+ jackson: # 鍏ㄥ眬鏃堕棿澶勭悊 LocalDateTime鏃堕棿搴忓垪鍙�
+ date-format: yyyy-MM-dd HH:mm:ss
+ time-zone: GMT+8
servlet:
multipart:
max-file-size: 20MB # 鍗曚釜鏂囦欢澶у皬
--
Gitblit v1.9.3