Commit 2a61f141 by liangkaiping

copy

parent 4ecb777c
<?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">
<parent>
<groupId>com.yizhi</groupId>
<artifactId>cloud-newMessage</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.yizhi</groupId>
<artifactId>cloud-newMessage-api</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-util</artifactId>
<scope>provided</scope>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-orm</artifactId>
<scope>provided</scope>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-common-api</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-core</artifactId>
<scope>provided</scope>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
package com.yizhi.message.application.constans;
public interface Constans {
/**
* 未删除
*/
public static final Integer NOT_DELETED = 0;
/**
* 已删除
*/
public static final Integer DELETED = 1;
/**
* 平台可见
*/
public static final Integer PUBLIC_SITE = 0;
/**
* 指定范围
*/
public static final Integer VISIBLE_RANGE = 1;
/**
* job的Group
*/
public static final String JOBGROUP = "newMessage";
/**
* 部门类型
*/
public static final Integer ORG = 1;
/**
* 用户类型
*/
public static final Integer ACCOUNT = 2;
/**
* 已读
*/
public static final Integer READED = 1;
/**
* 未读
*/
public static final Integer NOT_READ = 0;
public static final String MESSAGE_QUEUE = "newMessage";
}
package com.yizhi.message.application.enums;
import java.util.Arrays;
import java.util.List;
/**
*
*/
public enum EvenType {
COURSE_UP(1L,Arrays.asList(1,2)),//"课程上架通知"
COURSE_FINISH(2L, Arrays.asList(1,2)),//课程完成通知
ENROLL_START(3L, Arrays.asList(1,3,4,5)),//报名开始
TRAINING_AUDIT_PASS(4L, Arrays.asList(1,3,4,5)),//项目审核通过通知
TRAINING_AUDIT_FAIL(5L, Arrays.asList(1,3,4,5)),//项目审核不通过通知
SIGN_SUCCESS(6L, Arrays.asList(1,3,4,5)),//签到成功通知
TRAINING_FINISH(7L, Arrays.asList(1,3,4,5)),//项目完成通知
ASSIGNMENT_AUDIT_FINISH(8L, Arrays.asList(1,6,7,8)),//作业已被批阅通知
EXAM_AUDIT_FINISH(9L, Arrays.asList(1,9,10,11)),//考试已被批阅通知
POINT_CHANGE(10L, Arrays.asList(1,12,13,14));//积分变动原因
//数据库message表的id
private Long key;
//数据库message_parameter表的field_type
private List<Integer> fieldType;
private EvenType(Long key, List<Integer> fieldType) {
this.key = key;
this.fieldType = fieldType;
}
public Long getKey() {
return key;
}
public List<Integer> getName() {
return fieldType;
}
}
package com.yizhi.message.application.enums;
public enum MessageParameterEnums {
accountName(1,"【accountName】"),
courseName(2,"【courseName】"),
projectTime(3,"【projectTime】"),
projectName(4,"【projectName】"),
enrollEndTime(5,"【enrollEndTime】"),
assignmentName(6,"【assignmentName】"),
assignmentTime(7,"【assignmentTime】"),
assignmentScore(8,"【assignmentScore】"),
examName(9,"【examName】"),
examTime(10,"【examTime】"),
examScore(11,"【examScore】"),
changeReason(12,"【changeReason】"),
changePoint(13,"【changePoint】"),
changeTime(14,"【changeTime】"),
researchTime(15,"【researchTime】"),
researchName(16,"【researchName】"),
liveTime(17,"【liveTime】");
private Integer code;
private String name;
MessageParameterEnums(Integer code, String name) {
this.code = code;
this.name = name;
}
public Integer getCode() {
return code;
}
public String getName() {
return name;
}
}
package com.yizhi.message.application.enums;
public enum MessageStatus {
DRAFT(1,"草稿"),
TO_SEND(2,"待发送"),
SEND_ING(3,"发送中"),
SEND_ED(4,"已发送"),
DOWN(6,"下架"),
UP(7,"上架"),
SEND_ED_CANCEl(8,"已发送被撤回");
private Integer code;
private String name;
MessageStatus(Integer code, String name) {
this.code = code;
this.name = name;
}
public Integer getCode() {
return code;
}
public String getName() {
return name;
}
}
package com.yizhi.message.application.enums;
import org.springframework.stereotype.Component;
/**
* 应用场景或者是活动名称的枚举类
*/
public enum RelationType {
ZDY(0,"自定义消息"),
XX(1,"学习计划"),
KS(2,"考试"),
DY(3,"调研"),
TP(4,"投票"),
BM(5,"报名"),
ZY(6,"作业"),
QD(7,"签到"),
XM(8,"项目"),
ZB(9,"直播"),
JF(10,"积分"),
KC(11,"课程");
private Integer key;
private String name;
private RelationType(Integer key, String name){
this.key = key;
this.name = name;
}
public Integer getKey() {
return key;
}
public String getName() {
return name;
}
}
package com.yizhi.message.application.enums;
public enum ReturnParameterEnums {
accountName("【用户名】","【accountName】"),
courseName("【课程名称】","【courseName】"),
projectTime("【项目时间】","【projectTime】"),
projectName("【项目名称】","【projectName】"),
enrollEndTime("【报名截止时间】","【enrollEndTime】"),
assignmentName("【作业名称】","【assignmentName】"),
assignmentTime("【作业时间】","【assignmentTime】"),
assignmentScore("【作业分数】","【assignmentScore】"),
examName("【考试名称】","【examName】"),
examTime("【考试时间】","【examTime】"),
examScore("【考试分数】","【examScore】"),
changeReason("【积分变动原因】","【changeReason】"),
changePoint("【积分变动分值】","【changePoint】"),
changeTime("【积分获得时间】","【changeTime】"),
researchTime("【调研时间】","【researchTime】"),
researchName("【调研名称】","【researchName】"),
liveTime("【直播时间】","【liveTime】");
private String code;
private String name;
ReturnParameterEnums(String code, String name) {
this.code = code;
this.name = name;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
}
package com.yizhi.message.application.enums;
public enum SendType {
MAIL("1","邮件"),
INSITE("2","站内"),
APPPUSH("3","app推送");
private String code;
private String name;
SendType(String code,String name) {
this.code = code;
this.name = name;
}
public String getCode() {
return code;
}
public String getName() {
return name;
}
}
package com.yizhi.message.application.enums;
public enum TimeType {
ONTIME(0,"时间发生时"),
FMIN(1,"5分钟前"),
TMIN(2,"10分钟前"),
THMIN(3,"30分钟前"),
OHOUR(4,"1小时前"),
THOUR(5,"2小时前"),
ODAY(6,"1天前"),
TDAY(7,"2天前");
private Integer code;
private String name;
TimeType(Integer code, String name) {
this.code = code;
this.name = name;
}
public Integer getCode() {
return code;
}
public String getName() {
return name;
}
}
package com.yizhi.message.application.feign.remote;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
/**
* <p>
* 前端控制器
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@FeignClient(name = "newMessage", contextId = "RemoteJobHandleClient")
public interface RemoteJobHandleClient {
/**
* 定时任务业务逻辑处理
*
* @param
* @return
*/
@GetMapping("/remote/messageRemind/messageHandle")
public void sendMessageHandle();
}
package com.yizhi.message.application.feign.remote;
import com.yizhi.message.application.vo.domain.MessageAccountVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
/**
* <p>
* 前端控制器 用户消息记录表
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Api(tags = "管理端用户消息接口")
@FeignClient(name = "newMessage", contextId = "RemoteMessageAccountClient")
public interface RemoteMessageAccountClient {
/**
* 用于触发事件,直接发送消息
*
* @return
*/
@GetMapping("/remote/manage/messageAccount/batchSave")
@ApiOperation(value = "用于触发事件,直接发送消息", response = Integer.class)
public Boolean save(@RequestBody List<MessageAccountVo> messageAccount);
@GetMapping("/remote/manage/messageAccount/getList")
public List<MessageAccountVo> getList(@RequestParam("taskType") Integer taskType,
@RequestParam("taskId") Long taskId);
@GetMapping("/remote/manage/messageAccount/getOne")
public MessageAccountVo getOne(@RequestParam("accountId") Long accountId,
@RequestParam("taskType") Integer taskType,
@RequestParam("taskId") Long taskId);
}
package com.yizhi.message.application.feign.remote;
import com.yizhi.message.application.vo.MessageVo;
import com.yizhi.message.application.vo.domain.MessageRemindVo;
import com.yizhi.message.application.vo.domain.MessageVisibleRangeVo;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@FeignClient(name = "newMessage", contextId = "RemoteMessageClient")
public interface RemoteMessageClient {
/**
* 业务那边需要系统消息列表
* (应用场景)1:学习计划、2:考试、3:调研、4、投票5:报名、6:作业、7:签到、8:项目、9:直播、10:积分
*
* @param relationType
* @return
*/
@PostMapping("/remote/message/getList")
@ApiOperation(value = "单条消息查询", response = MessageVo.class)
public List<MessageVo> getListByRelationType(@ApiParam("relationType 必传") @RequestParam("relationType") Integer relationType,
@ApiParam("siteId 必传") @RequestParam("siteId") Long siteId);
@PostMapping("/remote/message/getOne")
@ApiOperation(value = "", response = MessageVo.class)
public MessageVo getOne(@ApiParam("id") @RequestParam("id") Long id);
@GetMapping("/remote/message/getAuthorize")
public List<MessageVisibleRangeVo> getAuthorize(@ApiParam("id 必传") @RequestParam("id") Long id);
@GetMapping("/remote/message/getMessage")
public MessageRemindVo getMessageRemind(@ApiParam("id 必传") @RequestParam("id") Long id);
}
package com.yizhi.message.application.feign.remote;
import com.yizhi.message.application.vo.MessageRemindVo;
import com.yizhi.util.application.domain.Response;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
/**
* <p>
* 前端控制器
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@FeignClient(name = "newMessage", contextId = "RemoteMessageRemindClient")
public interface RemoteMessageRemindClient {
@PostMapping("/remote/messageRemind/insert")
@ApiOperation(value = "保存待发消息(提醒)",response = String.class)
public Response insert(@ApiParam("messageRemindVo") @RequestBody MessageRemindVo messageRemindVo);
@GetMapping("/remote/messageRemind/get")
@ApiOperation(value = "回显各业务的消息提醒",response = MessageRemindVo.class)
public Response get(@ApiParam("relationType")@RequestParam("relationType") Integer relationType,
@ApiParam("relationId")@RequestParam("relationId") Long relationId,
@ApiParam("siteId")@RequestParam("siteId") Long siteId);
}
\ No newline at end of file
package com.yizhi.message.application.util;
import com.yizhi.message.application.enums.TimeType;
import com.yizhi.util.application.date.DateUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Date;
/**
* 根据时间发生时间和提前发送消息的类型,计算消息确切的发送时间
*
* @author yinyuyan
*/
public class DateConvertor {
private static final Logger logger = LoggerFactory.getLogger(DateConvertor.class);
private DateConvertor() {}
public static Date calSendTime(Date current, Integer aheadType) {
if (TimeType.FMIN.getCode().equals(aheadType)) {
return DateUtil.add(current, 12, -5);
} else if (TimeType.TMIN.getCode().equals(aheadType)) {
return DateUtil.add(current, 12, -10);
} else if (TimeType.THMIN.getCode().equals(aheadType)) {
return DateUtil.add(current, 12, -30);
} else if (TimeType.OHOUR.getCode().equals(aheadType)) {
return DateUtil.add(current, 10, -1);
} else if (TimeType.THOUR.getCode().equals(aheadType)) {
return DateUtil.add(current, 10, -2);
} else if (TimeType.ODAY.getCode().equals(aheadType)) {
return DateUtil.add(current, 5, -1);
} else if (TimeType.TDAY.getCode().equals(aheadType)) {
return DateUtil.add(current, 5, -2);
} else {
return current;
}
}
}
package com.yizhi.message.application.vo;
import com.yizhi.core.application.context.RequestContext;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 消息
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Data
@Api(tags = "CancelSendMessageVo", description = "消息参数对象")
public class CancelSendMessageVo {
@ApiModelProperty(value = "id 消息id 必传")
private Long id;
@ApiModelProperty(value = "type: 1、取消发送: 2、撤回 取消发送或者撤回操作必传")
private Integer type;
@ApiModelProperty(value = "状态 6:下架、7:上架 上下架操作必传 ")
private Integer status;
@ApiModelProperty(value = "消息类型:1、自定义消息;2、系统消息;3、事件触发消息 ")
private Integer messageType;
private RequestContext context;
}
package com.yizhi.message.application.vo;
import com.yizhi.core.application.context.RequestContext;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
* 消息
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Data
@Api(tags = "JobHandleVo", description = "Job执行参数对象")
public class JobHandleVo {
@ApiModelProperty(value = "待发消息messageRemindId 必传")
private Long messageRemindId;
@ApiModelProperty(value = "上下文")
private RequestContext requestContext;
}
package com.yizhi.message.application.vo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* <p>
* 消息
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Data
@Api(tags = "MessageManageVo", description = "管理端返回消息对象")
public class MessageManageVo {
@ApiModelProperty(value = "id 主体消息表")
private Long id;
@ApiModelProperty(value = "编号")
private Integer num;
@ApiModelProperty(value = "可变参数id")
private Long messageParameterId;
@ApiModelProperty(value = "消息类型:1、自定义消息;2、系统消息;3、事件触发消息")
private Integer messageType;
@ApiModelProperty(value = "消息标题")
private String title;
@ApiModelProperty(value = "模板名称 (系统消息需要)")
private String templateName;
@ApiModelProperty(value = "事件名称 (触发消息需要)")
private String eventName;
@ApiModelProperty(value = "状态 1:草稿、2:待发送、3:发送中、4:已发送、、6:下架、7:上架、8:已发送被撤回 (没有发送失败,直接发送中)")
private Integer status;
@ApiModelProperty(value = "状态String 比如: 草稿、上架")
private String statusString;
@ApiModelProperty(value = "发送方式:1、站内信;2、短信;3、邮件")
private Integer sendType;
@ApiModelProperty(value = "(应用场景或者活动名称) 只记录数字 --1:学习计划、2:考试、3:调研、4、投票5:报名、6:作业、7:签到、8:项目、9:直播、10:积分 ")
private Integer relationType;
@ApiModelProperty(value = "(应用场景或者活动名称)String 比如:学习计划、考试")
private String relationTypeString;
@ApiModelProperty(value = "发送时间 (新增自定义消息需要)")
private Date sendTime;
@ApiModelProperty(value = "创建时间 ")
private Date createTime;
@ApiModelProperty(value = "站点id ")
private Long siteId;
}
package com.yizhi.message.application.vo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
*
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Data
@Api(tags = "MessageParameterVo", description = "可选参数对象")
public class MessageParameterVo {
private Long id;
@ApiModelProperty(value = "可变参数名称")
private String name;
@ApiModelProperty(value = "消息类型:比如: 1、自定义消息 2、系统消息 3、事件触发消息")
private Integer messageType;
@ApiModelProperty(value = "可变参数类型 :1、用户姓名;2、课程名称;3、项目时间;4、项目名称;5、报名截止时间;更多请看数据库")
private Integer fieldType;
@ApiModelProperty(value = "关联模块对应的字段")
private String relationField;
@ApiModelProperty(value = "关联模块类型(0:自定义消息、1:学习计划、2:考试、3:调研、4、投票5:报名、6:作业、7:签到、8:项目、9:直播、10:积分)")
private Integer relationType;
}
package com.yizhi.message.application.vo;
import com.yizhi.core.application.context.RequestContext;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Data
@Api(tags = "MessageRemindVo", description = "各个业务设置提醒时的数据")
public class MessageRemindVo implements Serializable {
private static final long serialVersionUID = -7621642684091133619l;
@ApiModelProperty(value = "提醒id ")
private Long id;
@ApiModelProperty(value = "消息id")
private Long messageId;
@ApiModelProperty(value = "消息类型:1、自定义消息;2、系统消息;3、事件触发消息")
private Integer messageType;
@ApiModelProperty(value = "用户id 主要用于触发消息 个人完成发消息类型")
private Long accountId;
@ApiModelProperty(value = "消息内容(完整版)")
private String messageContext;
@ApiModelProperty(value = "关联模块类型(1:学习计划、2:考试、3:调研、4、投票5:报名、6:作业、7:签到、8:项目、9:直播、10:积分)")
private Integer relationType;
@ApiModelProperty(value = "关联的业务id: 比如调研id")
private Long relationId;
@ApiModelProperty(value = "发送方式:1、站内信;2、短信;3、邮件")
private Integer sendType;
@ApiModelProperty(value = "该业务提醒是被关闭,关闭则为true,默认false")
private Boolean hasDeleted = false;
@ApiModelProperty(value = "该业务提醒是否有变化,有则为true,默认false")
private Boolean isChangge = false;
@ApiModelProperty(value = "专门存放提醒时间设置")
private List<MessageTaskRemindVo> messageTaskRemindVos = new ArrayList<>();
@ApiModelProperty(value = "目前只有培训项目需要,计划同步项目可见范围")
private Boolean visibleRangeUpdate = false;
@ApiModelProperty(value = "指定范围(0:全平台,1:指定用户)")
private Integer visibleRange;
@ApiModelProperty(value = "业务参数对象")
private TaskVo taskVo;
@ApiModelProperty(value = "触发消息专用 发送时间")
private Date sendTime;
@ApiModelProperty(value = "是否设置为上架状态")
private Boolean hasUp = false;
@ApiModelProperty(value = "是否是 修改业务状态 ")
private Boolean taskStatusUpdate = false;
@ApiModelProperty(value = "业务状态 1:才允上架许发送(业务上架)0:不允许发送(业务非上架) 仅针对于系统消息")
private Integer taskStatus;
@ApiModelProperty(value = "上下文 必传,主要需要 siteId companyId accountId accountName 都不能是空")
private RequestContext requestContext;
@ApiModelProperty(value = "调研是否为复制类型")
private Boolean isCopy = false;
@ApiModelProperty(value = "复制调研时,旧的调研id")
private Long oldRelationId;
}
package com.yizhi.message.application.vo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Data
@Api(tags = "MessageTaskRemindVo", description = "各个业务设置提醒时的数据")
public class MessageTaskRemindVo implements Serializable {
@ApiModelProperty(value = "待发消息id")
private Long messageRemindId;
@ApiModelProperty(value = "提醒时间事件类型 1:业务开始时间、 2:业务结束时间、3:自定义时间")
private Integer timeEventType;
@ApiModelProperty(value = "发生时间枚举:1:五分钟前、2:十分钟前、3:三十分钟前、4:一个小时前、5:两个小时前、6:一天前、7:两天前")
private Integer timeType;
@ApiModelProperty(value = "最终发送时间")
private Date sendTime;
}
package com.yizhi.message.application.vo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* <p>
*
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Data
@Api(tags = "MessageVisibleRangeVo", description = "消息可见范围对象")
public class MessageVisibleRangeVo {
@ApiModelProperty(value = "id")
private Long id;
@ApiModelProperty(value = "消息id")
private Long messageId;
@ApiModelProperty(value = "待发消息id")
private Long messageRemindId;
@ApiModelProperty(value = "类型(1、部门;2、用户)")
private Integer type;
@ApiModelProperty(value = "可能是部门id 也可能是用户id")
private Long relationId;
@ApiModelProperty(value = "关联模块类型(、1:学习计划、2:考试、3:调研、4、投票5:报名、6:作业、7:签到、8:项目、9:直播、10:积分)")
private Integer relationType;
@ApiModelProperty(value = "关联的业务id: 比如调研id")
private Long taskId;
@ApiModelProperty(value = "用户名或 部门名称")
private String name;
@ApiModelProperty(value = "用户真实姓名")
private String fullName;
@ApiModelProperty(value = "工号")
private String workNum;
}
package com.yizhi.message.application.vo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
* <p>
* 消息
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Data
@Api(tags = "MessageVo", description = "消息主体表")
public class MessageVo {
@ApiModelProperty(value = "id 主体消息表")
private Long id;
@ApiModelProperty(value = "消息内容id")
private Long messageContextId;
@ApiModelProperty(value = "消息类型:1、自定义消息;2、系统消息;3、事件触发消息 必传")
private Integer messageType;
@ApiModelProperty(value = "消息标题")
private String title;
@ApiModelProperty(value = "消息内容")
private String context;
@ApiModelProperty(value = "伪消息内容")
private String fakeContext;
@ApiModelProperty(value = "消息状态")
private Integer status;
@ApiModelProperty(value = "模板名称 (系统消息需要)")
private String templateName;
@ApiModelProperty(value = "事件名称 (触发消息需要)")
private String eventName;
@ApiModelProperty(value = "发送方式:1、站内信;2、短信;3、邮件")
private Integer sendType;
@ApiModelProperty(value = "关联模块类型(应用场景)1:学习计划、2:考试、3:调研、4、投票5:报名、6:作业、7:签到、8:项目、9:直播、10:积分 ")
private Integer relationType;
@ApiModelProperty(value = "(应用场景或者活动名称)String 比如:学习计划、考试")
private String relationTypeString;
@ApiModelProperty(value = "指定范围(0:全平台,1:指定用户)")
private Integer visibleRange;
@ApiModelProperty(value = "发送时间 (新增自定义消息需要)")
private Date sendTime;
@ApiModelProperty(value = "可见范围")
private List<MessageVisibleRangeVo> messageVisibleRange;
@ApiModelProperty(value = "可变参数id集合")
private List<Long> messageParameterIds;
@ApiModelProperty(value = "专门存放提醒时间设置")
private List<MessageTaskRemindVo> messageTaskRemindVos = new ArrayList<>();
}
package com.yizhi.message.application.vo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Data
@Api(tags = "TaskVisibleRangeVo", description = "用于保存到待发消息时,业务可见范围对象")
public class TaskVisibleRangeVo {
@ApiModelProperty(value = "部门id集合")
private List<Long> orgIds;
@ApiModelProperty(value = "用户id集合")
private List<Long> accountIds;
}
package com.yizhi.message.application.vo;
import com.yizhi.message.application.enums.EvenType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 消息
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Data
@Api(tags = "TaskVo", description = "业务参数对象")
public class TaskVo implements Serializable {
@ApiModelProperty(value = "业务名称")
private String taskName;
@ApiModelProperty(value = "业务开始时间")
private Date taskStratTime;
@ApiModelProperty(value = "业务结束时间")
private Date taskEndTime;
@ApiModelProperty(value = "业务得分")
private Double taskScore;
@ApiModelProperty(value = "业务发生原因(主要用于积分)")
private String reason;
@ApiModelProperty(value = "业务时间(主要用于积分)")
private Date taskTime;
@ApiModelProperty(value = "事件类型")
private EvenType evenType;
}
package com.yizhi.message.application.vo.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Data
@Api(tags = "MessageAccountVo", description = "学员收到消息记录表")
public class MessageAccountVo extends Model<MessageAccountVo> {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "id 学员收到消息记录表")
private Long id;
@ApiModelProperty(value = "消息id")
private Long messageId;
@ApiModelProperty(value = "待发消息id")
private Long messageRemindId;
@ApiModelProperty(value = "账号id")
private Long accountId;
@ApiModelProperty(value = "消息内容")
private String context;
@ApiModelProperty(value = "关联模块类型(、1:学习计划、2:考试、3:调研、4、投票5:报名、6:作业、7:签到、8:项目、9:直播、10:积分)")
private Integer relationType;
@ApiModelProperty(value = "关联的业务id: 比如调研id")
private Long relationId;
@ApiModelProperty(value = "指定范围指定范围(0:全平台,1:指定用户)")
private Integer visibleRange;
@ApiModelProperty(value = "是否已读(0:否,1:是)")
private Integer readed;
@ApiModelProperty(value = "读取时间")
private Date readTime;
@ApiModelProperty(value = "是否删除")
private Integer deleted;
@ApiModelProperty(value = "消息标题")
private String title;
@ApiModelProperty(value = "站点id")
private Long siteId;
@ApiModelProperty(value = "公司id")
private Long companyId;
@ApiModelProperty(value = "创建人id")
private Long createById;
@ApiModelProperty(value = "创建人账号")
private String createByName;
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "修改人id")
private Long updateById;
@ApiModelProperty(value = "修改人账号")
private String updateByName;
@ApiModelProperty(value = "修改时间")
private Date updateTime;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.message.application.vo.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Data
@Api(tags = "MessageContextVo", description = "消息内容表")
public class MessageContextVo extends Model<MessageContextVo> {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "id")
private Long id;
@ApiModelProperty(value = "消息id")
private Long messageId;
@ApiModelProperty(value = "消息内容(带可变参数,不完整)")
private String context;
@ApiModelProperty(value = "创建人id")
private Long createById;
@ApiModelProperty(value = "创建人姓名")
private String createByName;
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "修改人id")
private Long updateById;
@ApiModelProperty(value = "修改人账号")
private String updateByName;
@ApiModelProperty(value = "修改时间")
private Date updateTime;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.message.application.vo.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author hutao123
* @since 2019-09-12
*/
@Data
@Api(tags = "MessageParamRelationVo", description = "")
public class MessageParamRelationVo extends Model<MessageParamRelationVo> {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "消息与可选参数关联表")
private Long id;
@ApiModelProperty(value = "消息id")
private Long messageId;
@ApiModelProperty(value = "可选参数id")
private Long messageParameterId;
@ApiModelProperty(value = "可变参数类型 :1、用户姓名;2、课程名称;3、项目时间;4、项目名称;5、报名截止时间;更多请看数据库")
private Integer fieldType;
@ApiModelProperty(value = "是否删除")
private Integer deleted;
@ApiModelProperty(value = "创建人id")
private Long createById;
@ApiModelProperty(value = "创建人账号")
private String createByName;
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "修改人id")
private Long updateById;
@ApiModelProperty(value = "修改人账号")
private String updateByName;
@ApiModelProperty(value = "修改时间")
private Date updateTime;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.message.application.vo.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Data
@Api(tags = "MessageParameterVo", description = "可选参数表")
public class MessageParameterVo extends Model<MessageParameterVo> {
private static final long serialVersionUID = 1L;
private Long id;
@ApiModelProperty(value = "可变参数名称")
private String name;
@ApiModelProperty(value = "消息类型:比如: 1、自定义消息 2、系统消息 3、事件触发消息")
private Integer messageType;
@ApiModelProperty(value = "可变参数类型 :1、用户姓名;2、课程名称;3、项目时间;4、项目名称;5、报名截止时间;更多请看数据库")
private Integer fieldType;
@ApiModelProperty(value = "关联模块对应的字段")
private String relationField;
@ApiModelProperty(value = "关联模块类型(0:自定义消息、1:学习计划、2:考试、3:调研、4、投票5:报名、6:作业、7:签到、8:项目、9:直播、10:积分)")
private Integer relationType;
@ApiModelProperty(value = "是否删除")
private Integer deleted;
@ApiModelProperty(value = "站点id")
private Long siteId;
@ApiModelProperty(value = "公司id")
private Long companyId;
@ApiModelProperty(value = "创建人id")
private Long createById;
@ApiModelProperty(value = "创建人账号")
private String createByName;
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "修改人id")
private Long updateById;
@ApiModelProperty(value = "修改人账号")
private String updateByName;
@ApiModelProperty(value = "修改时间")
private Date updateTime;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.message.application.vo.domain;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author taoge123
* @since 2020-03-29
*/
@Data
@ApiModel(value = "MessageReadRecordVo", description = "")
public class MessageReadRecordVo {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "id 学员收到消息记录表")
private Long id;
@ApiModelProperty(value = "用户消息id")
private Long messageAccountId;
@ApiModelProperty(value = "账号id")
private Long accountId;
@ApiModelProperty(value = "指定范围指定范围(0:全平台,1:指定用户)")
private Integer visibleRange;
@ApiModelProperty(value = "是否已读(0:否,1:是)")
private Integer readed;
@ApiModelProperty(value = "读取时间")
private Date readTime;
@ApiModelProperty(value = "创建人id")
private Long createById;
@ApiModelProperty(value = "创建人账号")
private String createByName;
@ApiModelProperty(value = "创建时间")
private Date createTime;
}
package com.yizhi.message.application.vo.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Data
@Api(tags = "MessageRemindVo", description = "各个业务设置提醒时的数据")
public class MessageRemindVo extends Model<MessageRemindVo> {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "提醒id ") private Long id;
@ApiModelProperty(value = "消息类型:1、自定义消息;2、系统消息;3、事件触发消息")
private Integer messageType;
@ApiModelProperty(value = "消息id")
private Long messageId;
@ApiModelProperty(value = "消息内容(完整版)")
private String messageContext;
@ApiModelProperty(value = "关联模块类型(、1:学习计划、2:考试、3:调研、4、投票5:报名、6:作业、7:签到、8:项目、9:直播、10:积分)")
private Integer relationType;
private Long relationId;
@ApiModelProperty(value = "提醒时间事件类型 1:业务开始时间、 2:业务结束时间、3:自定义时间")
private Integer timeEventType;
@ApiModelProperty(value = "发生时间枚举:1:五分钟前、2:十分钟前、3:三十分钟前、4:一个小时前、5:两个小时前、6:一天前、7:两天前")
private Integer timeType;
@ApiModelProperty(value = "最终发送时间")
private Date sendTime;
@ApiModelProperty(value = "状态 1:草稿、2:待发送、3:发送中、4:已发送、、6:下架、7:上架 (没有发送失败,直接发送中)")
private Integer status;
@ApiModelProperty(value = "业务状态:1代表上架状态,0:代表非上架状态(只有1才允许发送消息)")
private Integer taskStatus;
@ApiModelProperty(value = "指定范围指定范围(0:全平台,1:指定用户)")
private Integer visibleRange;
@ApiModelProperty(value = "发送方式:1、站内信;2、短信;3、邮件")
private Integer sendType;
@ApiModelProperty(value = "用户id 主要用于触发消息 个人完成发消息类型")
private Long accountId;
@ApiModelProperty(value = "是否删除(0:否,1:是)")
private Integer deleted;
@ApiModelProperty(value = "站点id")
private Long siteId;
@ApiModelProperty(value = "公司id")
private Long companyId;
@ApiModelProperty(value = "创建人id")
private Long createById;
@ApiModelProperty(value = "创建人账号")
private String createByName;
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "修改人id")
private Long updateById;
@ApiModelProperty(value = "修改人账号")
private String updateByName;
@ApiModelProperty(value = "修改时间")
private Date updateTime;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.message.application.vo.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Data
@Api(tags = "MessageVisibleRangeVo", description = "")
public class MessageVisibleRangeVo extends Model<MessageVisibleRangeVo> {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "id")
private Long id;
@ApiModelProperty(value = "消息id")
private Long messageId;
@ApiModelProperty(value = "类型(1、部门;2、用户)")
private Integer type;
@ApiModelProperty(value = "可能是部门id 也可能是用户id")
private Long relationId;
@ApiModelProperty(value = "是否删除(0:否,1:是)")
private Integer deleted;
@ApiModelProperty(value = "创建人")
private Long createById;
@ApiModelProperty(value = "创建人姓名")
private String createByName;
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "修改人id")
private Long updateById;
@ApiModelProperty(value = "修改人账号")
private String updateByName;
@ApiModelProperty(value = "修改时间")
private Date updateTime;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.message.application.vo.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 消息
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Data
@Api(tags = "MessageVo", description = "消息主体表")
public class MessageVo extends Model<MessageVo> {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "id 主体消息表")
private Long id;
@ApiModelProperty(value = "消息类型:1、自定义消息;2、系统消息;3、事件触发消息")
private Integer messageType;
@ApiModelProperty(value = "消息标题")
private String title;
@ApiModelProperty(value = "模板名称 (系统消息需要)")
private String templateName;
@ApiModelProperty(value = "事件名称 (触发消息需要)")
private String eventName;
@ApiModelProperty(value = "发送方式:1、站内信;2、短信;3、邮件")
private Integer sendType;
@ApiModelProperty(value = "关联模块类型(应用场景)1:学习计划、2:考试、3:调研、4、投票5:报名、6:作业、7:签到、8:项目、9:直播、10:积分 ")
private Integer relationType;
@ApiModelProperty(value = "状态 1:草稿、2:待发送、3:发送中、4:已发送、、6:下架、7:上架、8:已发送被撤回 (没有发送失败,直接发送中)")
private Integer status;
@ApiModelProperty(value = "指定范围(0:全平台,1:指定用户)")
private Integer visibleRange;
@ApiModelProperty(value = "是否删除(0:否,1:是)")
private Integer deleted;
@ApiModelProperty(value = "发送时间 (新增自定义消息需要)")
private Date sendTime;
@ApiModelProperty(value = "站点id")
private Long siteId;
@ApiModelProperty(value = "公司id")
private Long companyId;
@ApiModelProperty(value = "触发消息类型")
private Long evenType;
@ApiModelProperty(value = "创建人id")
private Long createById;
@ApiModelProperty(value = "创建人账号")
private String createByName;
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "修改人id")
private Long updateById;
@ApiModelProperty(value = "修改人账号")
private String updateByName;
@ApiModelProperty(value = "修改时间")
private Date updateTime;
@Override
protected Serializable pkVal() {
return this.id;
}
}
<?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">
<parent>
<groupId>com.yizhi</groupId>
<artifactId>cloud-newMessage</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.yizhi</groupId>
<artifactId>cloud-newMessage-service</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-system-api</artifactId>
<scope>provided</scope>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-job-api</artifactId>
<scope>provided</scope>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-newMessage-api</artifactId><scope>provided</scope>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-course-api</artifactId><scope>provided</scope>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-training-project-api</artifactId>
<scope>provided</scope>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-exam-api</artifactId>
<scope>provided</scope>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-research-api</artifactId>
<scope>provided</scope>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-live-api</artifactId>
<scope>provided</scope>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-assignment-api</artifactId>
<scope>provided</scope>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yizhi</groupId>
<artifactId>cloud-course-studyLog-api</artifactId>
<scope>provided</scope>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- deploy 时跳过该模块 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
package com.yizhi.message.application;
import com.yizhi.message.application.constans.Constans;
import org.springframework.amqp.core.Queue;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
/**
* @Author: hutao
* @Date: 2019
*/
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients(basePackages = {"com.yizhi"})
@ComponentScan(basePackages = {"com.yizhi"})
public class CloudMessageApplication {
public static void main(String[] args) {
SpringApplication.run(CloudMessageApplication.class, args);
}
@Bean
public Queue createMessageEventQueue() {
return new Queue(Constans.MESSAGE_QUEUE, true, false, false);
}
}
package com.yizhi.message.application;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* @Author:
* @Date:
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurerAdapter {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("消息接口")
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.fulan.application"))
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("消息接口")
//版本
.version("1.0")
.build();
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("docs.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
package com.yizhi.message.application.controller.api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 前端控制器
* </p>
*
* @author taoge123
* @since 2020-03-29
*/
@RestController
@RequestMapping("/messageReadRecord")
public class MessageReadRecordController {
}
package com.yizhi.message.application.controller.jobHandle;
import com.yizhi.message.application.controller.util.BuildJob;
import com.yizhi.message.application.service.MessageRemindService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
/**
* <p>
* 前端控制器
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@RestController
@Api(tags = "消息涉及job接口")
@RequestMapping("/remote/messageRemind")
public class RemoteJobHandleComtroller {
@Autowired
private MessageRemindService messageRemindService;
@Autowired
private BuildJob buildJob;
private Logger logger = LoggerFactory.getLogger(RemoteJobHandleComtroller.class);
/**
* 定时任务执行实际的处理逻辑类
* 定时任务业务逻辑处理
*
* @param
* @return
*/
@GetMapping("/messageHandle")
@ApiOperation(value = "定时发送消息", response = String.class)
public void sendMessageHandle() {
logger.info("我今天就看有没有调用!!!");
try {
logger.info("开始处理定时任务");
messageRemindService.sendMessageHandle();
} catch (Exception e) {
e.printStackTrace();
logger.info("定时任务处理异常");
}
}
@GetMapping("/buildJob")
@ApiOperation(value = "构建一个job任务,默认每五分钟处理,也可指定cron表达式", response = String.class)
public void buildJob(@RequestParam(value = "hanldeTime",required = false)Date hanldeTime ) throws Exception {
if (hanldeTime == null){
buildJob.buildJobDefault("消息处理,默认每五分钟处理一次");
}else {
buildJob.buildJob(new Date().toString(),hanldeTime);
}
}
}
package com.yizhi.message.application.controller.manage;
import com.yizhi.message.application.service.MessageParameterService;
import com.yizhi.message.application.vo.MessageParameterVo;
import com.yizhi.util.application.domain.Response;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* <p>
* 前端控制器
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@RestController
@Api(tags = "消息可选参数接口")
@RequestMapping("/manage/messageParameter")
public class MessageParameterComtroller {
@Autowired
private MessageParameterService messageParameterService;
/**
* @param messageType 消息类型:比如: 1、自定义消息 2、系统消息 3、事件触发消息
* @param relationType 应用场景(关联模块类型)(0:通用、1:学习计划、2:考试、3:调研、4、投票5:报名、6:作业、7:签到、8:项目、9:直播 、10积分)
* @return
*/
@GetMapping("/getList")
@ApiOperation(value = "获取可选参数列表", response = MessageParameterVo.class)
public Response<List<MessageParameterVo>> getList(@RequestParam("messageType") Integer messageType,
@RequestParam("relationType") Integer relationType) {
return Response.ok(messageParameterService.getList(messageType, relationType));
}
}
package com.yizhi.message.application.controller.manage;
import com.yizhi.message.application.service.MessageRemindService;
import com.yizhi.message.application.vo.MessageRemindVo;
import com.yizhi.message.application.vo.MessageVo;
import com.yizhi.util.application.domain.Response;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* <p>
* 前端控制器
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@RestController
@Api(tags = "待发消息接口")
@RequestMapping("/manage/messageRemind")
public class MessageRemindComtroller {
@Autowired
private MessageRemindService messageRemindService;
/**
* 保存各业务设置的提醒
*
* @param vo
* @return
*/
@PostMapping("/insert")
@ApiOperation(value = "保存待发消息(提醒)", response = String.class)
public Response insert(@ApiParam("vo") @RequestBody MessageRemindVo vo) {
if (vo.getMessageContext() == null || vo.getRelationType() == null
|| vo.getRelationId() == null || vo.getMessageId() == null
|| vo.getSendType() == null || vo.getVisibleRange() == null) {
return Response.fail("缺少必要参数");
}
Integer integer = messageRemindService.insertMessageRemind(vo);
if (integer == 1) {
return Response.ok("保存成功");
}
return Response.fail("操作失败");
}
/**
* 给各业务回显已设置的提醒
*
* @param relationType
* @param relationId
* @return
*/
@GetMapping("/get")
@ApiOperation(value = "回显各业务的消息提醒", response = MessageVo.class)
public Response get(@ApiParam("relationType") @RequestParam("relationType") Integer relationType,
@ApiParam("relationId") @RequestParam("relationId") Long relationId) {
return Response.ok(messageRemindService.get(relationType, relationId));
}
/**
* 修改消息提醒(包含删除提醒)
*
* @param vo
* @return
*/
@PostMapping("/update")
@ApiOperation(value = "修改待发消息(提醒)", response = String.class)
public Response update(@ApiParam("vo") @RequestBody MessageRemindVo vo) {
if (vo.getIsChangge() == true) {
if (vo.getMessageContext() == null || vo.getRelationType() == null
|| vo.getRelationId() == null || vo.getMessageId() == null
|| vo.getSendType() == null || vo.getVisibleRange() == null) {
return Response.fail("缺少必要参数");
}
}
Integer integer = messageRemindService.updateMessageRemind(vo);
if (integer == 1) {
return Response.ok("修改成功");
}
return Response.fail("操作失败");
}
}
package com.yizhi.message.application.controller.remote;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.yizhi.message.application.constans.Constans;
import com.yizhi.message.application.domain.MessageAccount;
import com.yizhi.message.application.service.MessageAccountService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* <p>
* 前端控制器 用户消息记录表
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@RestController
@Api(tags = "用户消息接口,后端内部调用接口,不给前端用")
@RequestMapping("/remote/manage/messageAccount")
public class RemoteMessageAccountComtroller {
@Autowired
private MessageAccountService messageAccountService;
/**
* 用于触发事件,直接发送消息
*
* @return
*/
@GetMapping("/batchSave")
@ApiOperation(value = "用于触发事件,直接发送消息", response = Integer.class)
public Boolean save(@RequestBody List<MessageAccount> messageAccounts) {
if (!CollectionUtils.isEmpty(messageAccounts)) {
return messageAccountService.insertBatch(messageAccounts);
}
return false;
}
@GetMapping("/getList")
@ApiOperation(value = "获取列表", response = Integer.class)
public List<MessageAccount> getList(@RequestParam("taskType") Integer taskType, @RequestParam("taskId") Long taskId) {
EntityWrapper wrapper = new EntityWrapper();
wrapper.eq("deleted", Constans.NOT_DELETED);
wrapper.eq("relation_id", taskId);
wrapper.eq("relation_type", taskType);
wrapper.setSqlSelect("account_id");
return messageAccountService.selectList(wrapper);
}
@GetMapping("/getOne")
@ApiOperation(value = "获取单条消息", response = Integer.class)
public MessageAccount getOne(@RequestParam("accountId") Long accountId, @RequestParam("taskType") Integer taskType, @RequestParam("taskId") Long taskId) {
EntityWrapper wrapper = new EntityWrapper();
wrapper.eq("deleted", Constans.NOT_DELETED);
wrapper.eq("relation_id", taskId);
wrapper.eq("relation_type", taskType);
wrapper.eq("account_id",accountId);
wrapper.setSqlSelect("account_id");
return messageAccountService.selectOne(wrapper);
}
}
package com.yizhi.message.application.controller.remote;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.yizhi.message.application.domain.MessageAccount;
import com.yizhi.message.application.domain.MessageRemind;
import com.yizhi.message.application.domain.MessageVisibleRange;
import com.yizhi.message.application.service.MessageAccountService;
import com.yizhi.message.application.service.MessageRemindService;
import com.yizhi.message.application.service.MessageService;
import com.yizhi.message.application.service.MessageVisibleRangeService;
import com.yizhi.message.application.vo.MessageVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* <p>
* 消息 前端控制器 消息主体表
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@RestController
@Api(tags = "主体消息接口,后端内部调用接口,不给前端用")
@RequestMapping("/remote/message")
public class RemoteMessageComtroller {
@Autowired
private MessageService messageService;
@Autowired
private MessageVisibleRangeService messageVisibleRangeService;
@Autowired
private MessageAccountService messageAccountService;
@Autowired
private MessageRemindService messageRemindService;
/**
* 业务那边需要系统消息列表
* (应用场景)1:学习计划、2:考试、3:调研、4、投票5:报名、6:作业、7:签到、8:项目、9:直播、10:积分
*
* @param relationType
* @return
*/
@PostMapping("/getList")
@ApiOperation(value = "业务新增时,模板消息列表查询", response = MessageVo.class)
public List<MessageVo> getListByRelationType(@ApiParam("relationType 必传")
@RequestParam("relationType") Integer relationType) {
return messageService.getListByRelationType(relationType);
}
/**
* 业务那边需要系统消息列表
* (应用场景)1:学习计划、2:考试、3:调研、4、投票5:报名、6:作业、7:签到、8:项目、9:直播、10:积分
*
* @param id 消息id
* @return
*/
@PostMapping("/getOne")
@ApiOperation(value = "", response = MessageVo.class)
public MessageVo getOne(@ApiParam("id 必传") @RequestParam("id") Long id) {
return messageService.get(id);
}
@GetMapping("/getAuthorize")
public List<MessageVisibleRange> getAuthorize(@ApiParam("id 必传") @RequestParam("id") Long id) {
MessageVisibleRange range = new MessageVisibleRange();
range.setMessageId(id);
range.setDeleted(0);
EntityWrapper<MessageVisibleRange> wrapper = new EntityWrapper<MessageVisibleRange>(range);
List<MessageVisibleRange> list = messageVisibleRangeService.selectList(wrapper);
return list;
}
@GetMapping("/getMessage")
public MessageRemind getMessageRemind(@ApiParam("id 必传") @RequestParam("id") Long id) {
MessageAccount messageAccount = messageAccountService.selectById(id);
MessageRemind messageRemind = null;
if (messageAccount != null) {
messageRemind = messageRemindService.selectById(messageAccount.getMessageRemindId());
}
return messageRemind;
}
}
package com.yizhi.message.application.controller.remote;
import com.yizhi.message.application.service.MessageRemindService;
import com.yizhi.message.application.vo.MessageRemindVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 前端控制器
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@RestController
@Api(tags = "待发消息接口,后端内部调用接口,不给前端用")
@RequestMapping("/remote/messageRemind")
public class RemoteMessageRemindComtroller {
@Autowired
private MessageRemindService messageRemindService;
private Logger logger = LoggerFactory.getLogger(RemoteMessageRemindComtroller.class);
@PostMapping("/insert")
@ApiOperation(value = "保存待发消息(提醒)", response = String.class)
public Integer insert(@ApiParam("messageRemindVo") @RequestBody MessageRemindVo messageRemindVo) {
return messageRemindService.insertMessageRemind(messageRemindVo);
}
}
package com.yizhi.message.application.controller.util;
import com.yizhi.application.job.remote.JobClient;
import com.yizhi.application.job.remote.vo.VmyJobVO;
import com.yizhi.message.application.constans.Constans;
import com.yizhi.util.application.date.DateUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class BuildJob {
@Autowired
private JobClient jobClient;
private static final Logger logger = LoggerFactory.getLogger(BuildJob.class);
/**
* 构建一个定时任务
* @param jobName
* @param sendTime
* @throws Exception
*/
public void buildJob(String jobName,Date sendTime) throws Exception {
VmyJobVO job = new VmyJobVO();
job.setGroup(Constans.JOBGROUP);
job.setJobName(jobName);
job.setJobClassName("com.fulan.application.handle.quartz.job.SendNewMessageJob");
logger.info("********************************上架消息的发送时间={},时间戳={}",
sendTime, sendTime.getTime());
logger.info("**************************************当前系统时间={}", (new Date()).getTime());
String cron = DateUtil.getCron(sendTime);
logger.info("**************************************cron={}", cron);
String[] cronArr = cron.split(" ");
job.setSecond(cronArr[0]);
job.setMinute(cronArr[1]);
job.setHour(cronArr[2]);
job.setDay(cronArr[3]);
job.setMonth(cronArr[4]);
job.setWeek(cronArr[5]);
job.setYear(cronArr[6]);
jobClient.insert(job);
}
public void buildJobDefault(String jobName) throws Exception {
VmyJobVO job = new VmyJobVO();
job.setGroup(Constans.JOBGROUP);
job.setJobName(jobName);
job.setJobClassName("com.fulan.application.handle.quartz.job.SendNewMessageJob");
logger.info("**************************************当前系统时间={}", (new Date()).getTime());
job.setSecond("0");
job.setMinute("0/5");
job.setHour("*");
job.setDay("*");
job.setMonth("*");
job.setWeek("?");
job.setYear("*");
jobClient.insert(job);
}
}
\ No newline at end of file
package com.yizhi.message.application.controller.util;
import com.yizhi.assignment.application.feign.AssignmentClient;
import com.yizhi.course.application.feign.CourseClient;
import com.yizhi.exam.application.feign.ExamAuthorizeClient;
import com.yizhi.exam.application.vo.exam.VisibleRangeExport;
import com.yizhi.live.application.feign.LiveActivityClient;
import com.yizhi.message.application.constans.Constans;
import com.yizhi.message.application.domain.MessageVisibleRange;
import com.yizhi.research.application.feign.ResearchAuthorizeClient;
import com.yizhi.system.application.system.remote.AccountClient;
import com.yizhi.system.application.system.remote.OrganizationClient;
import com.yizhi.system.application.vo.AccountVO;
import com.yizhi.system.application.vo.OrgVO;
import com.yizhi.training.application.feign.TrainingProjectClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Component
public class QueryAccount {
@Autowired
private AccountClient accountClient;
@Autowired
private OrganizationClient organizationClient;
@Autowired
private CourseClient courseClient;
@Autowired
private TrainingProjectClient trainingProjectClient;
@Autowired
private ExamAuthorizeClient examAuthorizeClient;
@Autowired
private ResearchAuthorizeClient researchAuthorizeClient;
@Autowired
private AssignmentClient assignmentClient;
@Autowired
private LiveActivityClient liveActivityClient;
private QueryAccount() {
}
/**
* 返回《accountId,account》的map
*
* @param accountIds
* @return
*/
public Map<Long, AccountVO> queryAccountByIds(List<Long> accountIds) {
if (!CollectionUtils.isEmpty(accountIds)) {
Map<Long, AccountVO> map = new HashMap<>(accountIds.size());
List<AccountVO> accountVOS = accountClient.findByIds(accountIds);
//组装map 以免双重循环
if (!CollectionUtils.isEmpty(accountVOS)) {
accountVOS.forEach(a -> {
if (!map.containsKey(a.getId())) {
map.put(a.getId(), a);
}
});
}
return map;
}
return null;
}
/**
* 返回《orgId,org》的map
*
* @param orgIds
* @return
*/
public Map<Long, OrgVO> queryOrgByIds(List<Long> orgIds) {
if (!CollectionUtils.isEmpty(orgIds)) {
Map<Long, OrgVO> map = new HashMap<>(orgIds.size());
List<OrgVO> orgVOS = null;
try {
orgVOS = organizationClient.listByOrgIds(orgIds);
} catch (Exception e) {
e.printStackTrace();
return null;
}
//组装map 以免双重循环
if (!CollectionUtils.isEmpty(orgVOS)) {
orgVOS.forEach(a -> {
if (!map.containsKey(a.getId())) {
map.put(a.getId(), a);
}
});
}
return map;
}
return null;
}
/**
* 全平台可见 根据站点id查询用户
*
* @param siteId
* @return
*/
public List<AccountVO> getAccountBySiteId(Long siteId) {
List<AccountVO> accounts = new ArrayList<>();
List<AccountVO> list = accountClient.findBySiteId(siteId);
if (!CollectionUtils.isEmpty(list)) {
accounts.addAll(list);
}
return accounts;
}
/**
* 给定orgIds accountIds 获取用户集合
*
* @param accountIds
* @param orgIds
* @param companyId
* @return
*/
public List<AccountVO> getAllAccounts(List<Long> accountIds, List<Long> orgIds, Long companyId) {
List<AccountVO> accountVOS = new ArrayList<>();
if (!CollectionUtils.isEmpty(orgIds)) {
for (Long orgId : orgIds) {
accountVOS.addAll(getAccountByOrgId(orgId, companyId));
}
}
if (!CollectionUtils.isEmpty(accountIds)) {
accountVOS.addAll(getAccountByIds(accountIds));
}
return accountVOS;
}
/**
* 获取指定范围的人
* 返回accountVo
*/
public List<AccountVO> getMessageAccounts(List<MessageVisibleRange> list, Long companyId) {
List<Long> orgIds = new ArrayList<>();
List<Long> accountIds = new ArrayList<>();
for (MessageVisibleRange range : list) {
if (range.getType() == Constans.ORG) {
orgIds.add(range.getRelationId());
} else {
accountIds.add(range.getRelationId());
}
}
return getAllAccounts(accountIds, orgIds, companyId);
}
/**
* 根据部门id 查询部门下所有人
*
* @param
* @return
*/
public List<AccountVO> getAccountByOrgId(Long orgId, Long companyId) {
List<AccountVO> accounts = new ArrayList<>();
List<AccountVO> list = accountClient.findByOrgId(orgId, companyId);
if (!CollectionUtils.isEmpty(list)) {
accounts.addAll(list);
}
return accounts;
}
/**
* 根据用户id,查询用户对象
*
* @param accountIds
* @return
*/
public List<AccountVO> getAccountByIds(List<Long> accountIds) {
List<AccountVO> accounts = new ArrayList<>();
List<AccountVO> list = accountClient.findByIds(accountIds);
if (!CollectionUtils.isEmpty(list)) {
accounts.addAll(list);
}
return accounts;
}
/**
* 根据业务获取相应用户信息
*
* @param taskType
* @param taskId
* @param companyId
* @return
*/
public List<AccountVO> getVisibleRangeByTask(Integer taskType, Long taskId, Long companyId) {
switch (taskType) {
// "关联模块类型(、1:学习计划、2:考试、3:调研、4、投票 5:报名、6:作业、7:签到、8:项目、9:直播、10:积分、11课程)"
case 1:
getVisibleRangeByTask(8, taskId, companyId);
break;
case 2:
VisibleRangeExport examRange = examAuthorizeClient.exportVisibleRange(taskId);
if (examRange != null) {
return getAllAccounts(examRange.getAccountIds(), examRange.getOrgIds(), companyId);
}
case 3:
com.yizhi.research.application.vo.VisibleRangeExport researchRange = researchAuthorizeClient.exportVisibleRange(taskId);
if (researchRange != null) {
return getAllAccounts(researchRange.getAccountIds(), researchRange.getOrgIds(), companyId);
}
case 4:
break;
case 5:
getVisibleRangeByTask(8, taskId, companyId);
break;
case 6:
com.yizhi.assignment.application.vo.VisibleRangeExport assignRange = assignmentClient.exportVisibleRange(taskId);
if (assignRange != null) {
return getAllAccounts(assignRange.getAccountIds(), assignRange.getOrgIds(), companyId);
}
case 7:
break;
case 8:
com.yizhi.training.application.vo.manage.VisibleRangeExport trainingRange = trainingProjectClient.exportVisibleRange(taskId);
if (trainingRange != null) {
return getAllAccounts(trainingRange.getAccountIds(), trainingRange.getOrgIds(), companyId);
}
case 9:
com.yizhi.live.application.vo.VisibleRangeExport liveRange = liveActivityClient.getListToMessage(taskId);
if (liveRange != null) {
return getAllAccounts(liveRange.getAccountIds(), liveRange.getOrgIds(), companyId);
}
case 10:
break;
case 11:
com.yizhi.course.application.vo.VisibleRangeExport courseRange = courseClient.vsibleRangeExport(taskId);
if (courseRange != null) {
return getAllAccounts(courseRange.getAccountIds(), courseRange.getOrgIds(), companyId);
}
}
return new ArrayList();
}
}
package com.yizhi.message.application.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 消息
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Data
@Api(tags = "MessageVo", description = "消息主体表")
@TableName("message")
public class Message extends Model<Message> {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "id 主体消息表")
@TableId("id")
private Long id;
@ApiModelProperty(value = "消息类型:1、自定义消息;2、系统消息;3、事件触发消息")
@TableField("message_type")
private Integer messageType;
@ApiModelProperty(value = "消息标题")
@TableField("title")
private String title;
@ApiModelProperty(value = "模板名称 (系统消息需要)")
@TableField("template_name")
private String templateName;
@ApiModelProperty(value = "事件名称 (触发消息需要)")
@TableField("event_name")
private String eventName;
@ApiModelProperty(value = "发送方式:1、站内信;2、短信;3、邮件")
@TableField("send_type")
private Integer sendType;
@ApiModelProperty(value = "关联模块类型(应用场景)1:学习计划、2:考试、3:调研、4、投票5:报名、6:作业、7:签到、8:项目、9:直播、10:积分 ")
@TableField("relation_type")
private Integer relationType;
@ApiModelProperty(value = "状态 1:草稿、2:待发送、3:发送中、4:已发送、、6:下架、7:上架、8:已发送被撤回 (没有发送失败,直接发送中)")
@TableField("status")
private Integer status;
@ApiModelProperty(value = "指定范围(0:全平台,1:指定用户)")
@TableField("visible_range")
private Integer visibleRange;
@ApiModelProperty(value = "是否删除(0:否,1:是)")
@TableField("deleted")
private Integer deleted;
@ApiModelProperty(value = "发送时间 (新增自定义消息需要)")
@TableField("send_time")
private Date sendTime;
@ApiModelProperty(value = "站点id")
@TableField("site_id")
private Long siteId;
@ApiModelProperty(value = "公司id")
@TableField("company_id")
private Long companyId;
@ApiModelProperty(value = "触发消息类型")
@TableField("even_type")
private Long evenType;
@ApiModelProperty(value = "创建人id")
@TableField(value = "create_by_id", fill = FieldFill.INSERT)
private Long createById;
@ApiModelProperty(value = "创建人账号")
@TableField(value = "create_by_name", fill = FieldFill.INSERT)
private String createByName;
@ApiModelProperty(value = "创建时间")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "修改人id")
@TableField(value = "update_by_id", fill = FieldFill.INSERT)
private Long updateById;
@ApiModelProperty(value = "修改人账号")
@TableField(value = "update_by_name", fill = FieldFill.INSERT)
private String updateByName;
@ApiModelProperty(value = "修改时间")
@TableField(value = "update_time", fill = FieldFill.INSERT)
private Date updateTime;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.message.application.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Data
@Api(tags = "MessageAccountVo", description = "学员收到消息记录表")
@TableName("message_account")
public class MessageAccount extends Model<MessageAccount> {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "id 学员收到消息记录表")
@TableId("id")
private Long id;
@ApiModelProperty(value = "消息id")
@TableField("message_id")
private Long messageId;
@ApiModelProperty(value = "待发消息id")
@TableField("message_remind_id")
private Long messageRemindId;
@ApiModelProperty(value = "账号id")
@TableField("account_id")
private Long accountId;
@ApiModelProperty(value = "消息内容")
@TableField("context")
private String context;
@ApiModelProperty(value = "关联模块类型(、1:学习计划、2:考试、3:调研、4、投票5:报名、6:作业、7:签到、8:项目、9:直播、10:积分)")
@TableField("relation_type")
private Integer relationType;
@ApiModelProperty(value = "关联的业务id: 比如调研id")
@TableField("relation_id")
private Long relationId;
@ApiModelProperty(value = "指定范围指定范围(0:全平台,1:指定用户)")
@TableField("visible_range")
private Integer visibleRange;
@ApiModelProperty(value = "是否已读(0:否,1:是)")
@TableField("readed")
private Integer readed;
@ApiModelProperty(value = "读取时间")
@TableField("read_time")
private Date readTime;
@ApiModelProperty(value = "是否删除")
@TableField("deleted")
private Integer deleted;
@ApiModelProperty(value = "消息标题")
@TableField(exist = false)
private String title;
@ApiModelProperty(value = "站点id")
@TableField("site_id")
private Long siteId;
@ApiModelProperty(value = "公司id")
@TableField("company_id")
private Long companyId;
@ApiModelProperty(value = "创建人id")
@TableField(value = "create_by_id", fill = FieldFill.INSERT)
private Long createById;
@ApiModelProperty(value = "创建人账号")
@TableField(value = "create_by_name", fill = FieldFill.INSERT)
private String createByName;
@ApiModelProperty(value = "创建时间")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "修改人id")
@TableField(value = "update_by_id", fill = FieldFill.INSERT)
private Long updateById;
@ApiModelProperty(value = "修改人账号")
@TableField(value = "update_by_name", fill = FieldFill.INSERT)
private String updateByName;
@ApiModelProperty(value = "修改时间")
@TableField(value = "update_time", fill = FieldFill.INSERT)
private Date updateTime;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.message.application.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Data
@Api(tags = "MessageContextVo", description = "消息内容表")
@TableName("message_context")
public class MessageContext extends Model<MessageContext> {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "id")
@TableField("id")
private Long id;
@ApiModelProperty(value = "消息id")
@TableField("message_id")
private Long messageId;
@ApiModelProperty(value = "消息内容(带可变参数,不完整)")
@TableField("context")
private String context;
@ApiModelProperty(value = "创建人id")
@TableField(value = "create_by_id", fill = FieldFill.INSERT)
private Long createById;
@ApiModelProperty(value = "创建人姓名")
@TableField(value = "create_by_name", fill = FieldFill.INSERT)
private String createByName;
@ApiModelProperty(value = "创建时间")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "修改人id")
@TableField(value = "update_by_id", fill = FieldFill.INSERT)
private Long updateById;
@ApiModelProperty(value = "修改人账号")
@TableField(value = "update_by_name", fill = FieldFill.INSERT)
private String updateByName;
@ApiModelProperty(value = "修改时间")
@TableField(value = "update_time", fill = FieldFill.INSERT)
private Date updateTime;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.message.application.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author hutao123
* @since 2019-09-12
*/
@Data
@Api(tags = "MessageParamRelationVo", description = "")
@TableName("message_param_relation")
public class MessageParamRelation extends Model<MessageParamRelation> {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "消息与可选参数关联表")
@TableId("id")
private Long id;
@ApiModelProperty(value = "消息id")
@TableField("message_id")
private Long messageId;
@ApiModelProperty(value = "可选参数id")
@TableField("message_parameter_id")
private Long messageParameterId;
@ApiModelProperty(value = "可变参数类型 :1、用户姓名;2、课程名称;3、项目时间;4、项目名称;5、报名截止时间;更多请看数据库")
@TableField("field_type")
private Integer fieldType;
@ApiModelProperty(value = "是否删除")
@TableField("deleted")
private Integer deleted;
@ApiModelProperty(value = "创建人id")
@TableField(value = "create_by_id", fill = FieldFill.INSERT)
private Long createById;
@ApiModelProperty(value = "创建人账号")
@TableField(value = "create_by_name", fill = FieldFill.INSERT)
private String createByName;
@ApiModelProperty(value = "创建时间")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "修改人id")
@TableField(value = "update_by_id", fill = FieldFill.INSERT)
private Long updateById;
@ApiModelProperty(value = "修改人账号")
@TableField(value = "update_by_name", fill = FieldFill.INSERT)
private String updateByName;
@ApiModelProperty(value = "修改时间")
@TableField(value = "update_time", fill = FieldFill.INSERT)
private Date updateTime;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.message.application.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Data
@Api(tags = "MessageParameterVo", description = "可选参数表")
@TableName("message_parameter")
public class MessageParameter extends Model<MessageParameter> {
private static final long serialVersionUID = 1L;
@TableId("id")
private Long id;
@ApiModelProperty(value = "可变参数名称")
@TableField("name")
private String name;
@ApiModelProperty(value = "消息类型:比如: 1、自定义消息 2、系统消息 3、事件触发消息")
@TableField("message_type")
private Integer messageType;
@ApiModelProperty(value = "可变参数类型 :1、用户姓名;2、课程名称;3、项目时间;4、项目名称;5、报名截止时间;更多请看数据库")
@TableField("field_type")
private Integer fieldType;
@ApiModelProperty(value = "关联模块对应的字段")
@TableField("relation_field")
private String relationField;
@ApiModelProperty(value = "关联模块类型(0:自定义消息、1:学习计划、2:考试、3:调研、4、投票5:报名、6:作业、7:签到、8:项目、9:直播、10:积分)")
@TableField("relation_type")
private Integer relationType;
@ApiModelProperty(value = "是否删除")
@TableField("deleted")
private Integer deleted;
@ApiModelProperty(value = "站点id")
@TableField("site_id")
private Long siteId;
@ApiModelProperty(value = "公司id")
@TableField("company_id")
private Long companyId;
@ApiModelProperty(value = "创建人id")
@TableField(value = "create_by_id", fill = FieldFill.INSERT)
private Long createById;
@ApiModelProperty(value = "创建人账号")
@TableField(value = "create_by_name", fill = FieldFill.INSERT)
private String createByName;
@ApiModelProperty(value = "创建时间")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "修改人id")
@TableField(value = "update_by_id", fill = FieldFill.INSERT)
private Long updateById;
@ApiModelProperty(value = "修改人账号")
@TableField(value = "update_by_name", fill = FieldFill.INSERT)
private String updateByName;
@ApiModelProperty(value = "修改时间")
@TableField(value = "update_time", fill = FieldFill.INSERT)
private Date updateTime;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.message.application.domain;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author taoge123
* @since 2020-03-29
*/
@Data
@ApiModel(value = "MessageReadRecordVo", description = "")
@TableName("message_read_record")
public class MessageReadRecord {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "id 学员收到消息记录表")
private Long id;
@ApiModelProperty(value = "用户消息id")
@TableField("message_account_id")
private Long messageAccountId;
@ApiModelProperty(value = "账号id")
@TableField("account_id")
private Long accountId;
@ApiModelProperty(value = "指定范围指定范围(0:全平台,1:指定用户)")
@TableField("visible_range")
private Integer visibleRange;
@ApiModelProperty(value = "是否已读(0:否,1:是)")
private Integer readed;
@ApiModelProperty(value = "读取时间")
@TableField("read_time")
private Date readTime;
@ApiModelProperty(value = "创建人id")
@TableField(value = "create_by_id", fill = FieldFill.INSERT)
private Long createById;
@ApiModelProperty(value = "创建人账号")
@TableField(value = "create_by_name", fill = FieldFill.INSERT)
private String createByName;
@ApiModelProperty(value = "创建时间")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
}
package com.yizhi.message.application.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Data
@Api(tags = "MessageRemindVo", description = "各个业务设置提醒时的数据")
@TableName("message_remind")
public class MessageRemind extends Model<MessageRemind> {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "提醒id ")
@TableId("id")
private Long id;
@ApiModelProperty(value = "消息类型:1、自定义消息;2、系统消息;3、事件触发消息")
@TableField("message_type")
private Integer messageType;
@ApiModelProperty(value = "消息id")
@TableField("message_id")
private Long messageId;
@ApiModelProperty(value = "消息内容(完整版)")
@TableField("message_context")
private String messageContext;
@ApiModelProperty(value = "关联模块类型(、1:学习计划、2:考试、3:调研、4、投票5:报名、6:作业、7:签到、8:项目、9:直播、10:积分)")
@TableField("relation_type")
private Integer relationType;
@ApiModelProperty(value = "关联的业务id: 比如调研id")
@TableField("relation_id")
private Long relationId;
@ApiModelProperty(value = "提醒时间事件类型 1:业务开始时间、 2:业务结束时间、3:自定义时间")
@TableField("time_event_type")
private Integer timeEventType;
@ApiModelProperty(value = "发生时间枚举:1:五分钟前、2:十分钟前、3:三十分钟前、4:一个小时前、5:两个小时前、6:一天前、7:两天前")
@TableField("time_type")
private Integer timeType;
@ApiModelProperty(value = "最终发送时间")
@TableField("send_time")
private Date sendTime;
@ApiModelProperty(value = "状态 1:草稿、2:待发送、3:发送中、4:已发送、、6:下架、7:上架 (没有发送失败,直接发送中)")
@TableField("status")
private Integer status;
@ApiModelProperty(value = "业务状态:1代表上架状态,0:代表非上架状态(只有1才允许发送消息)")
@TableField("task_status")
private Integer taskStatus;
@ApiModelProperty(value = "指定范围指定范围(0:全平台,1:指定用户)")
@TableField("visible_range")
private Integer visibleRange;
@ApiModelProperty(value = "发送方式:1、站内信;2、短信;3、邮件")
@TableField("send_type")
private Integer sendType;
@ApiModelProperty(value = "用户id 主要用于触发消息 个人完成发消息类型")
@TableField("account_id")
private Long accountId;
@ApiModelProperty(value = "是否删除(0:否,1:是)")
@TableField("deleted")
private Integer deleted;
@ApiModelProperty(value = "站点id")
@TableField("site_id")
private Long siteId;
@ApiModelProperty(value = "公司id")
@TableField("company_id")
private Long companyId;
@ApiModelProperty(value = "创建人id")
@TableField(value = "create_by_id", fill = FieldFill.INSERT)
private Long createById;
@ApiModelProperty(value = "创建人账号")
@TableField(value = "create_by_name", fill = FieldFill.INSERT)
private String createByName;
@ApiModelProperty(value = "创建时间")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "修改人id")
@TableField(value = "update_by_id", fill = FieldFill.INSERT)
private Long updateById;
@ApiModelProperty(value = "修改人账号")
@TableField(value = "update_by_name", fill = FieldFill.INSERT)
private String updateByName;
@ApiModelProperty(value = "修改时间")
@TableField(value = "update_time", fill = FieldFill.INSERT)
private Date updateTime;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.message.application.domain;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.FieldFill;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
*
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Data
@Api(tags = "MessageVisibleRangeVo", description = "")
@TableName("message_visible_range")
public class MessageVisibleRange extends Model<MessageVisibleRange> {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "id")
@TableId("id")
private Long id;
@ApiModelProperty(value = "消息id")
@TableField("message_id")
private Long messageId;
@ApiModelProperty(value = "类型(1、部门;2、用户)")
@TableField("type")
private Integer type;
@ApiModelProperty(value = "可能是部门id 也可能是用户id")
@TableField("relation_id")
private Long relationId;
@ApiModelProperty(value = "是否删除(0:否,1:是)")
@TableField("deleted")
private Integer deleted;
@ApiModelProperty(value = "创建人")
@TableField(value = "create_by_id", fill = FieldFill.INSERT)
private Long createById;
@ApiModelProperty(value = "创建人姓名")
@TableField(value = "create_by_name", fill = FieldFill.INSERT)
private String createByName;
@ApiModelProperty(value = "创建时间")
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@ApiModelProperty(value = "修改人id")
@TableField(value = "update_by_id", fill = FieldFill.INSERT)
private Long updateById;
@ApiModelProperty(value = "修改人账号")
@TableField(value = "update_by_name", fill = FieldFill.INSERT)
private String updateByName;
@ApiModelProperty(value = "修改时间")
@TableField(value = "update_time", fill = FieldFill.INSERT)
private Date updateTime;
@Override
protected Serializable pkVal() {
return this.id;
}
}
package com.yizhi.message.application.event;
import com.yizhi.application.orm.id.IdGenerator;
import com.yizhi.core.application.event.EventWrapper;
import com.yizhi.message.application.service.MessageRemindService;
import com.yizhi.message.application.controller.util.MessageUtil;
import com.yizhi.message.application.vo.MessageRemindVo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* 各个微服务业务处理完后向培训过项目微服务发送业务消息
* 的处理器
*
* @Author: shengchenglong
* @Date: 2018/4/18 11:19
*/
@Service
@Transactional
public class MessageEventHandler {
private static final Logger LOGGER = LoggerFactory.getLogger(MessageEventHandler.class);
@Autowired
private IdGenerator idGenerator;
@Autowired
private MessageUtil messageUtil;
@Autowired
private MessageRemindService messageRemindService;
public void handle(EventWrapper<MessageRemindVo> ew) {
MessageRemindVo remindVo = ew.getData();
LOGGER.info("收到消息,开始保存待发消息,其remindVo:"+ remindVo);
if (remindVo != null) {
messageRemindService.insertMessageRemind(remindVo);
}else {
LOGGER.info("remindVo"+remindVo+"接到的消息内容为空!!!");
}
}
}
package com.yizhi.message.application.event;
import com.yizhi.core.application.event.EventWrapper;
import com.yizhi.message.application.constans.Constans;
import com.yizhi.message.application.vo.MessageRemindVo;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @Author: shengchenglong
* @Date: 2018/4/18 11:14
*/
@Component
@RabbitListener(queues = Constans.MESSAGE_QUEUE)
public class MessageEventListener {
@Autowired
private MessageEventHandler messageEventHandler;
@RabbitHandler
public void processBizEvent(EventWrapper<MessageRemindVo> ew) {
messageEventHandler.handle(ew);
}
}
package com.yizhi.message.application.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.yizhi.message.application.domain.MessageAccount;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Mapper
public interface MessageAccountMapper extends BaseMapper<MessageAccount> {
List<MessageAccount> getList(@Param("siteId") Long siteId, @Param("accountId") Long accountId, Page<MessageAccount> page);
Integer getListNum(@Param("siteId") Long siteId, @Param("accountId") Long accountId);
}
package com.yizhi.message.application.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.yizhi.message.application.domain.MessageContext;
/**
* <p>
* Mapper 接口
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
public interface MessageContextMapper extends BaseMapper<MessageContext> {
}
package com.yizhi.message.application.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.yizhi.message.application.domain.Message;
import com.yizhi.message.application.vo.MessageManageVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* 消息 Mapper 接口
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
public interface MessageMapper extends BaseMapper<Message> {
/**
* 分页获取消息
*
* @param title
* @param page
* @return
*/
public List<MessageManageVo> getPage(@Param("messageType") Integer messageType, @Param("title") String title,@Param("siteId") Long siteId, Page<MessageManageVo> page);
public Integer getPageNum(@Param("messageType") Integer messageType, @Param("title") String title,@Param("siteId") Long siteId);
public List<Message> getList(@Param("messageType") Integer messageType,@Param("siteId") Long siteId);
}
package com.yizhi.message.application.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.yizhi.message.application.domain.MessageParamRelation;
/**
* <p>
* Mapper 接口
* </p>
*
* @author hutao123
* @since 2019-09-12
*/
public interface MessageParamRelationMapper extends BaseMapper<MessageParamRelation> {
}
package com.yizhi.message.application.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.yizhi.message.application.domain.MessageParameter;
import com.yizhi.message.application.vo.MessageParameterVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
public interface MessageParameterMapper extends BaseMapper<MessageParameter> {
/**
* @param messageType 消息类型:比如: 1、自定义消息 2、系统消息 3、事件触发消息
* @param relationType 应用场景(关联模块类型)(0:通用、1:学习计划、2:考试、3:调研、4、投票5:报名、6:作业、7:签到、8:项目、9:直播 、10积分)
* @return
*/
List<MessageParameterVo> getList(@Param("messageType") Integer messageType, @Param("relationType") Integer relationType,@Param("siteId")Long siteId);
}
package com.yizhi.message.application.mapper;
import com.yizhi.message.application.domain.MessageReadRecord;
import com.baomidou.mybatisplus.mapper.BaseMapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author taoge123
* @since 2020-03-29
*/
public interface MessageReadRecordMapper extends BaseMapper<MessageReadRecord> {
}
package com.yizhi.message.application.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.yizhi.message.application.domain.MessageRemind;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
public interface MessageRemindMapper extends BaseMapper<MessageRemind> {
List<MessageRemind> getListByTime();
}
package com.yizhi.message.application.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.yizhi.message.application.domain.MessageVisibleRange;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
public interface MessageVisibleRangeMapper extends BaseMapper<MessageVisibleRange> {
public List<MessageVisibleRange> getList(@Param("messageIds") List<Long> messageIds);
}
package com.yizhi.message.application.service;
import com.yizhi.message.application.domain.MessageAccount;
import com.yizhi.message.application.domain.MessageReadRecord;
import com.baomidou.mybatisplus.service.IService;
import java.util.List;
import java.util.Map;
/**
* <p>
* 服务类
* </p>
*
* @author taoge123
* @since 2020-03-29
*/
public interface IMessageReadRecordService extends IService<MessageReadRecord> {
Integer insertReadRecord(MessageAccount messageAccount);
//<messageAccountId,accountId>
Map<Long,Long> getMap(List<Long> messageAccountIds);
Integer getReadNum();
Integer batchInsertReadRecord(List<MessageReadRecord> messageReadRecords);
}
package com.yizhi.message.application.service;
import com.baomidou.mybatisplus.service.IService;
import com.yizhi.message.application.domain.MessageAccount;
/**
* <p>
* 服务类
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
public interface MessageAccountService extends IService<MessageAccount> {
}
package com.yizhi.message.application.service;
import com.baomidou.mybatisplus.service.IService;
import com.yizhi.message.application.domain.MessageContext;
/**
* <p>
* 服务类
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
public interface MessageContextService extends IService<MessageContext> {
}
package com.yizhi.message.application.service;
import com.baomidou.mybatisplus.service.IService;
import com.yizhi.message.application.domain.MessageParamRelation;
/**
* <p>
* 服务类
* </p>
*
* @author hutao123
* @since 2019-09-12
*/
public interface MessageParamRelationService extends IService<MessageParamRelation> {
}
package com.yizhi.message.application.service;
import com.baomidou.mybatisplus.service.IService;
import com.yizhi.message.application.domain.MessageParameter;
import com.yizhi.message.application.vo.MessageParameterVo;
import java.util.List;
/**
* <p>
* 服务类
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
public interface MessageParameterService extends IService<MessageParameter> {
List<MessageParameterVo> getList(Integer messageType, Integer relationType);
}
package com.yizhi.message.application.service;
import com.baomidou.mybatisplus.service.IService;
import com.yizhi.message.application.domain.MessageRemind;
import com.yizhi.message.application.vo.MessageRemindVo;
import com.yizhi.message.application.vo.MessageVo;
/**
* <p>
* 服务类
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
public interface MessageRemindService extends IService<MessageRemind> {
void sendMessageHandle();
Integer insertMessageRemind(MessageRemindVo messageRemindVo);
MessageVo get(Integer relationType, Long relationId);
Integer updateMessageRemind(MessageRemindVo messageRemindVo);
}
package com.yizhi.message.application.service;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.yizhi.message.application.domain.Message;
import com.yizhi.message.application.vo.CancelSendMessageVo;
import com.yizhi.message.application.vo.MessageManageVo;
import com.yizhi.message.application.vo.MessageVo;
import java.util.List;
import java.util.Map;
/**
* <p>
* 消息 服务类
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
public interface MessageService extends IService<Message> {
public Integer save(MessageVo message);
public Page<MessageManageVo> getPage(Integer messageType, String title, Page<MessageManageVo> page);
public MessageVo get(Long id);
public Integer update(MessageVo messageVo);
Integer upOrDown(CancelSendMessageVo vo);
Integer cancel(CancelSendMessageVo vo);
/**
* 点击发送时,保存到提醒表,以及添加定时任务
*
* @param vo
* @return
*/
Integer send(CancelSendMessageVo vo);
List<MessageVo> getListByRelationType(Integer relationType);
Map<Long, String> getMessageTitleMap(List<Long> messageIds);
}
package com.yizhi.message.application.service;
import com.baomidou.mybatisplus.service.IService;
import com.yizhi.message.application.domain.MessageVisibleRange;
/**
* <p>
* 服务类
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
public interface MessageVisibleRangeService extends IService<MessageVisibleRange> {
}
package com.yizhi.message.application.service.impl;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.yizhi.message.application.domain.MessageAccount;
import com.yizhi.message.application.mapper.MessageAccountMapper;
import com.yizhi.message.application.service.MessageAccountService;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Service
public class MessageAccountServiceImple extends ServiceImpl<MessageAccountMapper, MessageAccount> implements MessageAccountService {
}
package com.yizhi.message.application.service.impl;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.yizhi.message.application.domain.MessageContext;
import com.yizhi.message.application.mapper.MessageContextMapper;
import com.yizhi.message.application.service.MessageContextService;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Service
public class MessageContextServiceImple extends ServiceImpl<MessageContextMapper, MessageContext> implements MessageContextService {
}
package com.yizhi.message.application.service.impl;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.yizhi.message.application.domain.MessageParamRelation;
import com.yizhi.message.application.mapper.MessageParamRelationMapper;
import com.yizhi.message.application.service.MessageParamRelationService;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author hutao123
* @since 2019-09-12
*/
@Service
public class MessageParamRelationServiceImple extends ServiceImpl<MessageParamRelationMapper, MessageParamRelation> implements MessageParamRelationService {
}
package com.yizhi.message.application.service.impl;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.yizhi.core.application.context.ContextHolder;
import com.yizhi.core.application.context.RequestContext;
import com.yizhi.message.application.domain.MessageParameter;
import com.yizhi.message.application.mapper.MessageParameterMapper;
import com.yizhi.message.application.service.MessageParameterService;
import com.yizhi.message.application.vo.MessageParameterVo;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
* 服务实现类
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Service
public class MessageParameterServiceImple extends ServiceImpl<MessageParameterMapper, MessageParameter> implements MessageParameterService {
@Override
public List<MessageParameterVo> getList(Integer messageType, Integer relationType) {
RequestContext context = ContextHolder.get();
List<MessageParameterVo> list = this.baseMapper.getList(messageType, relationType, context.getSiteId());
return list;
}
}
package com.yizhi.message.application.service.impl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.yizhi.application.orm.id.IdGenerator;
import com.yizhi.core.application.context.ContextHolder;
import com.yizhi.core.application.context.RequestContext;
import com.yizhi.core.application.task.AbstractTaskHandler;
import com.yizhi.core.application.task.TaskExecutor;
import com.yizhi.message.application.constans.Constans;
import com.yizhi.message.application.domain.MessageAccount;
import com.yizhi.message.application.domain.MessageReadRecord;
import com.yizhi.message.application.mapper.MessageReadRecordMapper;
import com.yizhi.message.application.service.IMessageReadRecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <p>
* 服务实现类
* </p>
*
* @author taoge123
* @since 2020-03-29
*/
@Service
public class MessageReadRecordServiceImpl extends ServiceImpl<MessageReadRecordMapper, MessageReadRecord> implements IMessageReadRecordService {
@Autowired
private TaskExecutor taskExecutor;
@Autowired
private IdGenerator idGenerator;
@Autowired
private MessageReadRecordMapper messageReadRecordMapper;
@Autowired
private IMessageReadRecordService messageReadRecordService;
@Override
public Integer insertReadRecord(MessageAccount messageAccount) {
RequestContext context = ContextHolder.get();
taskExecutor.asynExecute(new AbstractTaskHandler() {
@Override
public void handle() {
MessageReadRecord readRecord1 = new MessageReadRecord();
readRecord1.setReaded(1);
readRecord1.setAccountId(context.getAccountId());
readRecord1.setMessageAccountId(messageAccount.getId());
Integer readNum = messageReadRecordMapper.selectCount(new EntityWrapper<>(readRecord1));
if (readNum == 0) {
MessageReadRecord readRecord = new MessageReadRecord();
readRecord.setId(idGenerator.generate());
readRecord.setMessageAccountId(messageAccount.getId());
readRecord.setVisibleRange(messageAccount.getVisibleRange());
readRecord.setAccountId(context.getAccountId());
readRecord.setCreateByName(context.getAccountName());
readRecord.setReaded(1);
readRecord.setReadTime(new Date());
messageReadRecordMapper.insert(readRecord);
}
}
});
return 1;
}
@Override
public Map<Long, Long> getMap(List<Long> messageAccountIds) {
Map<Long, Long> map = null;
if (!CollectionUtils.isEmpty(messageAccountIds)) {
map = new HashMap<>();
RequestContext context = ContextHolder.get();
MessageReadRecord readRecord = new MessageReadRecord();
readRecord.setReaded(1);
readRecord.setAccountId(context.getAccountId());
EntityWrapper wrapper = new EntityWrapper(readRecord);
wrapper.in("message_account_id", messageAccountIds);
List<MessageReadRecord> readRecords = this.selectList(wrapper);
if (!CollectionUtils.isEmpty(readRecords)) {
for (MessageReadRecord a : readRecords) {
if (!map.containsKey(a.getMessageAccountId())) {
map.put(a.getMessageAccountId(), a.getAccountId());
}
}
}
}
return map;
}
@Override
public Integer getReadNum() {
RequestContext context = ContextHolder.get();
MessageReadRecord readRecord = new MessageReadRecord();
readRecord.setReaded(1);
readRecord.setAccountId(context.getAccountId());
readRecord.setVisibleRange(Constans.PUBLIC_SITE);
EntityWrapper wrapper = new EntityWrapper(readRecord);
return this.selectCount(wrapper);
}
@Override
public Integer batchInsertReadRecord(List<MessageReadRecord> messageReadRecords) {
if (CollectionUtils.isEmpty(messageReadRecords)) {
return null;
}
taskExecutor.asynExecute(new AbstractTaskHandler() {
@Override
public void handle() {
messageReadRecordService.insertBatch(messageReadRecords);
}
});
return 1;
}
}
package com.yizhi.message.application.service.impl;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.yizhi.message.application.domain.MessageVisibleRange;
import com.yizhi.message.application.mapper.MessageVisibleRangeMapper;
import com.yizhi.message.application.service.MessageVisibleRangeService;
import org.springframework.stereotype.Service;
/**
* <p>
* 服务实现类
* </p>
*
* @author hutao123
* @since 2019-09-09
*/
@Service
public class MessageVisibleRangeServiceImple extends ServiceImpl<MessageVisibleRangeMapper, MessageVisibleRange> implements MessageVisibleRangeService {
}
server.port=35012
spring.application.name=newMessage
ACTIVE=${spring.profiles.active}
spring.profiles.active=wmy401
# nacos
spring.cloud.nacos.config.shared-dataids=common-${spring.profiles.active}.properties
spring.cloud.nacos.config.namespace=${spring.profiles.active}
spring.cloud.nacos.config.prefix=${spring.application.name}
spring.cloud.nacos.config.file-extension=properties
spring.cloud.nacos.config.server-addr=192.168.1.7:3333;192.168.1.7:4444;192.168.1.7:5555
\ No newline at end of file
<?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.yizhi.message.application.mapper.MessageMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.yizhi.message.application.domain.Message">
<id column="id" property="id" />
<result column="message_type" property="messageType" />
<result column="title" property="title" />
<result column="template_name" property="templateName" />
<result column="event_name" property="eventName" />
<result column="send_type" property="sendType" />
<result column="relation_type" property="relationType" />
<result column="status" property="status" />
<result column="visible_range" property="visibleRange" />
<result column="even_type" property="evenType" />
<result column="deleted" property="deleted" />
<result column="send_time" property="sendTime" />
<result column="site_id" property="siteId" />
<result column="company_id" property="companyId" />
<result column="create_by_id" property="createById" />
<result column="create_by_name" property="createByName" />
<result column="create_time" property="createTime" />
<result column="update_by_id" property="updateById" />
<result column="update_by_name" property="updateByName" />
<result column="update_time" property="updateTime" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id AS id,message_type AS messageType, title AS title, even_type AS evenType,template_name AS templateName, event_name AS eventName, send_type AS sendType, relation_type AS relationType, status AS status, visible_range AS visibleRange, deleted AS deleted, send_time AS sendTime, site_id AS siteId, company_id AS companyId, create_by_id AS createById, create_by_name AS createByName, create_time AS createTime, update_by_id AS updateById, update_by_name AS updateByName, update_time AS updateTime
</sql>
<select id="getPage" resultType="com.yizhi.message.application.vo.MessageManageVo">
select id AS id, message_type AS messageType,title AS title, template_name AS templateName,
event_name AS eventName, send_type AS sendType,relation_type AS relationType, status AS status
,update_time AS createTime,send_time AS sendTime,site_id AS siteId from message
where 1=1 and deleted = 0
<if test="messageType !=null and messageType !=''">
and message_type = #{messageType}
</if>
<if test="title !=null and title !=''">
and title like concat('%',#{title},'%')
</if>
<if test="messageType == 3">
and (site_id =#{siteId})
</if>
<if test="messageType != 3">
and (site_id =#{siteId} or site_id = 0)
</if>
order by update_time desc;
</select>
<select id="getPageNum" resultType="Integer">
select count(1) from message
where 1=1 and deleted = 0
<if test="messageType !=null and messageType !=''">
and message_type = #{messageType}
</if>
<if test="title !=null and title !=''">
and title like concat('%',#{title},'%')
</if>
<if test="messageType == 3">
and (site_id =#{siteId})
</if>
<if test="messageType != 3">
and (site_id =#{siteId} or site_id = 0)
</if>
</select>
<select id="getList" resultMap="BaseResultMap">
select * from message
where 1=1 and deleted = 0 and message_type = #{messageType}
<if test="messageType == 3">
and (site_id =#{siteId})
</if>
order by update_time desc;
</select>
</mapper>
<?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.yizhi.message.application.mapper.MessageAccountMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.yizhi.message.application.domain.MessageAccount">
<id column="id" property="id"/>
<result column="message_id" property="messageId"/>
<result column="message_remind_id" property="messageRemindId"/>
<result column="account_id" property="accountId"/>
<result column="relation_type" property="relationType"/>
<result column="relation_id" property="relationId"/>
<result column="context" property="context"/>
<result column="readed" property="readed"/>
<result column="visible_range" property="visibleRange"/>
<result column="read_time" property="readTime"/>
<result column="deleted" property="deleted"/>
<result column="site_id" property="siteId"/>
<result column="company_id" property="companyId"/>
<result column="create_by_id" property="createById"/>
<result column="create_by_name" property="createByName"/>
<result column="create_time" property="createTime"/>
<result column="update_by_id" property="updateById"/>
<result column="update_by_name" property="updateByName"/>
<result column="update_time" property="updateTime"/>
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id AS id, message_remind_id AS messageRemindId,visible_range,visibleRange, context AS context,account_id AS accountId, relation_type AS relationType, relation_id AS relationId, readed AS readed, read_time AS readTime, deleted AS deleted, site_id AS siteId, company_id AS companyId, create_by_id AS createById, create_by_name AS createByName, create_time AS createTime, update_by_id AS updateById, update_by_name AS updateByName, update_time AS updateTime
</sql>
<select id="getList" resultMap="BaseResultMap">
SELECT * FROM message_account
WHERE deleted = 0
AND site_id = #{siteId}
AND account_id = #{accountId}
union all
SELECT * FROM message_account
WHERE deleted = 0
AND site_id = #{siteId}
AND visible_range = 0
ORDER BY create_time DESC
</select>
<select id="getListNum" resultType="Integer">
SELECT sum(b.num) from (SELECT count(1) num FROM message_account
WHERE deleted = 0
AND site_id = #{siteId}
AND account_id = #{accountId}
union all
SELECT count(1) num FROM message_account
WHERE deleted = 0
AND site_id = #{siteId}
AND visible_range = 0
)b
</select>
</mapper>
<?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.yizhi.message.application.mapper.MessageContextMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.yizhi.message.application.domain.MessageContext">
<result column="id" property="id" />
<result column="message_id" property="messageId" />
<result column="context" property="context" />
<result column="create_by_id" property="createById" />
<result column="create_by_name" property="createByName" />
<result column="create_time" property="createTime" />
<result column="update_by_id" property="updateById" />
<result column="update_by_name" property="updateByName" />
<result column="update_time" property="updateTime" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id AS id, message_id AS messageId, context AS context, create_by_id AS createById, create_by_name AS createByName, create_time AS createTime, update_by_id AS updateById, update_by_name AS updateByName, update_time AS updateTime
</sql>
</mapper>
<?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.yizhi.message.application.mapper.MessageParamRelationMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.yizhi.message.application.domain.MessageParamRelation">
<id column="id" property="id" />
<result column="message_id" property="messageId" />
<result column="message_parameter_id" property="messageParameterId" />
<result column="field_type" property="fieldType" />
<result column="deleted" property="deleted" />
<result column="create_by_id" property="createById" />
<result column="create_by_name" property="createByName" />
<result column="create_time" property="createTime" />
<result column="update_by_id" property="updateById" />
<result column="update_by_name" property="updateByName" />
<result column="update_time" property="updateTime" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id AS id, message_id AS messageId,field_type AS fieldType, message_parameter_id AS messageParameterId, deleted AS deleted, create_by_id AS createById, create_by_name AS createByName, create_time AS createTime, update_by_id AS updateById, update_by_name AS updateByName, update_time AS updateTime
</sql>
</mapper>
This diff is collapsed. Click to expand it.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment