【message】系统消息模块初步划分

pull/3/head
liuhanqing 2021-01-01 22:35:57 +08:00
parent b33e72d017
commit 4a5da6eaf5
26 changed files with 670 additions and 0 deletions

View File

@ -0,0 +1,3 @@
系统消息模块
系统消息模块可以发送消息记录,已读未读状态

View File

@ -0,0 +1 @@
系统消息模块的api

View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>kernel-d-message</artifactId>
<version>1.0.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>message-api</artifactId>
<packaging>jar</packaging>
<dependencies>
<!--auth模块的api-->
<!--记录日志时候有可能需要记录当前登录用户id-->
<!--如果不要记录当前登录用户id时就不用本模块所以optional=true-->
<dependency>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>auth-api</artifactId>
<version>1.0.0</version>
<optional>true</optional>
</dependency>
<!--参数校验模块-->
<!--包含带参数校验注解的类-->
<dependency>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>validator-api</artifactId>
<version>1.0.0</version>
</dependency>
<!--数据库模块 api-->
<!--分页查询需要用到PageResult相关类-->
<dependency>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>db-api</artifactId>
<version>1.0.0</version>
</dependency>
<!--web-->
<!--LogRecordFactory快速创建http类的日志参数会用到-->
<!--如果不要记录当前请求的http接口信息就不用本模块所以optional=true-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,14 @@
package cn.stylefeng.roses.kernel.message.api;
/**
*
* <p>
*
*
* @author liuhanqing
* @date 2021/1/1 20:21
*/
public interface MessageApi {
}

View File

@ -0,0 +1,36 @@
package cn.stylefeng.roses.kernel.message.api.constants;
/**
* message
*
* @author liuhanqing
* @date 2021/1/1 20:58
*/
public interface MessageConstants {
/**
*
*/
String MESSAGE_MODULE_NAME = "kernel-d-message";
/**
*
*/
String MESSAGE_EXCEPTION_STEP_CODE = "23";
/**
*
*/
String RECEIVE_ALL_USER_FLAG = "all";
/**
*
*/
Integer DEFAULT_BEGIN_PAGE_NO = 1;
/**
*
*/
Integer DEFAULT_PAGE_SIZE = 10;
}

View File

@ -0,0 +1,24 @@
package cn.stylefeng.roses.kernel.message.api.context;
import cn.hutool.extra.spring.SpringUtil;
import cn.stylefeng.roses.kernel.message.api.MessageApi;
/**
* api
*
* @author liuhanqing
* @date 2021/1/1 21:13
*/
public class MessageContext {
/**
* api
*
* @author liuhanqing
* @date 2021/1/1 21:13
*/
public static MessageApi me() {
return SpringUtil.getBean(MessageApi.class);
}
}

View File

@ -0,0 +1,19 @@
package cn.stylefeng.roses.kernel.message.api.exception;
import cn.stylefeng.roses.kernel.message.api.constants.MessageConstants;
import cn.stylefeng.roses.kernel.rule.abstracts.AbstractExceptionEnum;
import cn.stylefeng.roses.kernel.rule.exception.base.ServiceException;
/**
*
*
* @author liuhanqing
* @date 2021/1/1 20:55
*/
public class MessageException extends ServiceException {
public MessageException(AbstractExceptionEnum exception) {
super(MessageConstants.MESSAGE_MODULE_NAME, exception);
}
}

View File

@ -0,0 +1,37 @@
package cn.stylefeng.roses.kernel.message.api.exception.enums;
import cn.stylefeng.roses.kernel.message.api.constants.MessageConstants;
import cn.stylefeng.roses.kernel.rule.abstracts.AbstractExceptionEnum;
import cn.stylefeng.roses.kernel.rule.constants.RuleConstants;
import lombok.Getter;
/**
*
*
* @author liuhanqing
* @date 2021/1/1 21:14
*/
@Getter
public enum MessageExceptionEnum implements AbstractExceptionEnum {
/**
* receiveUserIds
*/
ERROR_RECEIVE_USER_IDS(RuleConstants.BUSINESS_ERROR_TYPE_CODE + MessageConstants.MESSAGE_EXCEPTION_STEP_CODE + "01", "接收用户id字符串不合法");
/**
*
*/
private final String errorCode;
/**
*
*/
private final String userTip;
MessageExceptionEnum(String errorCode, String userTip) {
this.errorCode = errorCode;
this.userTip = userTip;
}
}

View File

@ -0,0 +1,71 @@
package cn.stylefeng.roses.kernel.message.api.pojo.manage;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
*
*
* @author liuhanqing
* @date 2021/1/1 20:23
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class MessageParam extends BaseRequest {
/**
* id
*/
@NotNull(message = "messageId不能为空", groups = {edit.class, delete.class, detail.class})
private Long messageId;
/**
* id
*/
private Long receiveUserId;
/**
* id
*/
private Long sendUserId;
/**
*
*/
private String messageTitle;
/**
*
*/
private String messageContent;
/**
*
*/
private String messageType;
/**
*
*/
private Date messageSendTime;
/**
* id
*/
private Long businessId;
/**
*
*/
private String businessType;
/**
* 0-1-
*/
private Integer readFlag;
}

View File

@ -0,0 +1,53 @@
package cn.stylefeng.roses.kernel.message.api.pojo.manage;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
/**
*
*
* @author liuhanqing
* @date 2021/1/1 20:23
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class MessageSendParam extends BaseRequest {
/**
* id,
*/
@NotBlank(message = "接收用户ID字符串不能为空", groups = {add.class, edit.class})
private String receiveUserIds;
/**
*
*/
@NotBlank(message = "消息标题不能为空", groups = {add.class, edit.class})
private String messageTitle;
/**
*
*/
private String messageContent;
/**
*
*/
private String messageType;
/**
* id
*/
@NotBlank(message = "业务id不能为空", groups = {add.class, edit.class})
private Long businessId;
/**
*
*/
@NotBlank(message = "业务类型不能为空", groups = {add.class, edit.class})
private String businessType;
}

View File

@ -0,0 +1 @@
系统消息业务模块,包含发送消息,查看消息,消息列表,已读消息,未读消息的业务

View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>kernel-d-log</artifactId>
<version>1.0.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>message-business</artifactId>
<packaging>jar</packaging>
<dependencies>
<!--消息api模块-->
<dependency>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>message-api</artifactId>
<version>1.0.0</version>
</dependency>
<!--资源api模块-->
<!--用在资源控制器,资源扫描上-->
<dependency>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>scanner-api</artifactId>
<version>1.0.0</version>
</dependency>
<!--参数校验模块-->
<!--用在控制器,参数校验-->
<dependency>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>validator-api</artifactId>
<version>1.0.0</version>
</dependency>
<!--数据库sdk-->
<!--数据库dao框架-->
<dependency>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>db-sdk-mp</artifactId>
<version>1.0.0</version>
</dependency>
<!--web模块-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,25 @@
package cn.stylefeng.roses.kernel.message.modular.manage.controller;
import cn.stylefeng.roses.kernel.message.api.MessageApi;
import cn.stylefeng.roses.kernel.resource.api.annotation.ApiResource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RestController;
/**
*
*
* @author liuhanqing
* @date 2021/1/1 22:30
*/
@RestController
@ApiResource(name = "系统消息控制器")
public class SysMessageController {
/**
* api
*/
@Autowired
private MessageApi messageApi;
}

View File

@ -0,0 +1 @@
系统消息记录的sdk用于将消息记录到数据库中提供相关消息管理接口

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>kernel-d-message</artifactId>
<version>1.0.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>message-sdk-db</artifactId>
<packaging>jar</packaging>
<dependencies>
<!--消息模块的api-->
<dependency>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>message-api</artifactId>
<version>1.0.0</version>
</dependency>
<!--数据库sdk-->
<dependency>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>db-sdk-mp</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,87 @@
package cn.stylefeng.roses.kernel.message.db.entity;
import cn.stylefeng.roses.kernel.db.api.pojo.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
*
*
* @author liuhanqing
* @date 2020/12/31 20:09
*/
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("sys_message")
public class SysMessage extends BaseEntity {
/**
*
*/
@TableId(value = "message_id", type = IdType.ASSIGN_ID)
private Long messageId;
/**
* id
*/
@TableId(value = "receive_user_id")
private Long receiveUserId;
/**
* id
*/
@TableId(value = "send_user_id")
private Long sendUserId;
/**
*
*/
@TableField(value = "message_title")
private String messageTitle;
/**
*
*/
@TableField(value = "message_content")
private String messageContent;
/**
*
*/
@TableField(value = "message_type")
private String messageType;
/**
*
*/
@TableField(value = "message_send_time")
private Date messageSendTime;
/**
* id
*/
@TableField(value = "business_id")
private Long businessId;
/**
*
*/
@TableField(value = "business_type")
private String businessType;
/**
* 0-1-
*/
@TableField(value = "read_flag")
private Integer readFlag;
/**
* Y-N-
*/
@TableField(value = "del_flag", fill = FieldFill.INSERT)
private String delFlag;
}

View File

@ -0,0 +1,14 @@
package cn.stylefeng.roses.kernel.message.db.mapper;
import cn.stylefeng.roses.kernel.message.db.entity.SysMessage;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* Mapper
*
* @author liuhanqing
* @date 2020/12/31 20:09
*/
public interface SysMessageMapper extends BaseMapper<SysMessage> {
}

View File

@ -0,0 +1,4 @@
<?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="cn.stylefeng.roses.kernel.message.db.mapper.SysMessageMapper">
</mapper>

View File

@ -0,0 +1,14 @@
package cn.stylefeng.roses.kernel.message.db.service;
import cn.stylefeng.roses.kernel.message.db.entity.SysMessage;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* service
*
* @author liuhanqing
* @date 2020/12/31 20:09
*/
public interface SysMessageService extends IService<SysMessage> {
}

View File

@ -0,0 +1,18 @@
package cn.stylefeng.roses.kernel.message.db.service.impl;
import cn.stylefeng.roses.kernel.message.db.entity.SysMessage;
import cn.stylefeng.roses.kernel.message.db.mapper.SysMessageMapper;
import cn.stylefeng.roses.kernel.message.db.service.SysMessageService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* service
*
* @author liuhanqing
* @date 2020/12/31 20:09
*/
@Service
public class SysMessageServiceImpl extends ServiceImpl<SysMessageMapper, SysMessage> implements SysMessageService {
}

View File

@ -0,0 +1 @@
系统消息的spring boot自动加载模块

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>kernel-d-message</artifactId>
<version>1.0.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>message-spring-boot-starter</artifactId>
<packaging>jar</packaging>
<dependencies>
<!--消息管理-->
<!--<dependency>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>message-business-manage</artifactId>
<version>1.0.0</version>
</dependency>-->
<!--消息默认记录到库中-->
<dependency>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>message-sdk-db</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,16 @@
package cn.stylefeng.roses.kernel.message.starter;
import org.springframework.context.annotation.Configuration;
/**
*
*
* @author liuhanqing
* @date 2020/12/31 18:50
*/
@Configuration
public class GunsMessageAutoConfiguration {
}

View File

@ -0,0 +1,2 @@
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
cn.stylefeng.roses.kernel.message.starter.GunsMessageAutoConfiguration

36
kernel-d-message/pom.xml Normal file
View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>roses-kernel</artifactId>
<version>1.0.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>kernel-d-message</artifactId>
<packaging>pom</packaging>
<modules>
<module>message-api</module>
<module>message-business</module>
<module>message-sdk-db</module>
<module>message-spring-boot-starter</module>
</modules>
<dependencies>
<!-- 开发规则 -->
<dependency>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>kernel-a-rule</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
</project>

View File

@ -73,6 +73,9 @@
<!--字典业务模块-->
<module>kernel-s-dict</module>
<!--系统消息模块-->
<module>kernel-d-message</module>
<!--系统管理基础业务-->
<module>kernel-s-system</module>
</modules>