diff --git a/pom.xml b/pom.xml index 32a8eb8..0501762 100644 --- a/pom.xml +++ b/pom.xml @@ -61,6 +61,17 @@ commons-lang3 3.10 + + + com.google.guava + guava + 20.0 + + + org.springframework.boot + spring-boot-starter-validation + ${springboot.version} + \ No newline at end of file diff --git a/writer/pom.xml b/writer/pom.xml index c0584e4..386307e 100644 --- a/writer/pom.xml +++ b/writer/pom.xml @@ -26,6 +26,18 @@ gns-common 1.0.0 + + cn.org.gitlink.notification + gns-model + 1.0.0 + compile + + + cn.org.gitlink.notification + gns-model + 1.0.0 + compile + diff --git a/writer/src/main/java/cn/org/gitlink/notification/writer/controller/sysNotification/SysNotificationController.java b/writer/src/main/java/cn/org/gitlink/notification/writer/controller/sysNotification/SysNotificationController.java new file mode 100644 index 0000000..5094d4f --- /dev/null +++ b/writer/src/main/java/cn/org/gitlink/notification/writer/controller/sysNotification/SysNotificationController.java @@ -0,0 +1,40 @@ +package cn.org.gitlink.notification.writer.controller.sysNotification; + +import cn.org.gitlink.notification.common.response.DataPacketUtil; +import cn.org.gitlink.notification.common.response.ResponseData; +import cn.org.gitlink.notification.common.utils.KafkaUtil; +import cn.org.gitlink.notification.model.service.notification.SysNotificationService; +import cn.org.gitlink.notification.writer.controller.sysNotification.vo.NewSysNotificationVo; +import cn.org.gitlink.notification.writer.controller.sysNotification.vo.UpdateNotificationStatusVo; +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping(value = "/gns/notification") +public class SysNotificationController { + + @Autowired + private KafkaUtil kafkaUtil; + + @Autowired + private SysNotificationService sysNotificationService; + + @ApiOperation("添加系统消息") + @RequestMapping(path = "/", method = RequestMethod.POST) + @ResponseBody + public ResponseData sendNotification(@Validated @RequestBody NewSysNotificationVo newSysNotificationVo) { + kafkaUtil.sendMessage("gitlink_notification", JSONObject.toJSONString(newSysNotificationVo)); + return DataPacketUtil.jsonSuccessResult(); + } + + @ApiOperation("改变系统消息状态") + @RequestMapping(path = "/", method = RequestMethod.PUT) + @ResponseBody + public ResponseData changeNotificationStatus(@RequestBody UpdateNotificationStatusVo updateNotificationStatusVo) { + int i = sysNotificationService.markNotificationAs(updateNotificationStatusVo.getPlatform(), updateNotificationStatusVo.getNotificationIds(), updateNotificationStatusVo.getStatus()); + return i > 0 ? DataPacketUtil.jsonSuccessResult() : DataPacketUtil.jsonFailResult(); + } +} diff --git a/writer/src/main/java/cn/org/gitlink/notification/writer/controller/sysNotification/vo/NewSysNotificationVo.java b/writer/src/main/java/cn/org/gitlink/notification/writer/controller/sysNotification/vo/NewSysNotificationVo.java new file mode 100644 index 0000000..8f9975d --- /dev/null +++ b/writer/src/main/java/cn/org/gitlink/notification/writer/controller/sysNotification/vo/NewSysNotificationVo.java @@ -0,0 +1,82 @@ +package cn.org.gitlink.notification.writer.controller.sysNotification.vo; + +import io.swagger.annotations.ApiModelProperty; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +public class NewSysNotificationVo { + + @ApiModelProperty(value = "平台编码", required = true) + @NotBlank + private String platform; + + @ApiModelProperty(value = "消息发送者", required = true) + @NotNull + private long sender; + + @ApiModelProperty(value = "消息接受者", required = true) + @NotBlank + private String receivers; + + @ApiModelProperty(value = "消息内容", required = true) + @NotBlank + private String content; + + @ApiModelProperty(value = "消息跳转链接", required = true) + @NotBlank + private String notification_url; + + @ApiModelProperty(value = "消息类型 1-系统消息 2-@我", required = true) + @NotNull + private Integer type; + + public String getPlatform() { + return platform; + } + + public void setPlatform(String platform) { + this.platform = platform; + } + + public long getSender() { + return sender; + } + + public void setSender(long sender) { + this.sender = sender; + } + + public String getReceivers() { + return receivers; + } + + public void setReceivers(String receivers) { + this.receivers = receivers; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getNotification_url() { + return notification_url; + } + + public void setNotification_url(String notification_url) { + this.notification_url = notification_url; + } + + public Integer getType() { + return type; + } + + public void setType(Integer type) { + this.type = type; + } +} diff --git a/writer/src/main/java/cn/org/gitlink/notification/writer/controller/sysNotification/vo/UpdateNotificationStatusVo.java b/writer/src/main/java/cn/org/gitlink/notification/writer/controller/sysNotification/vo/UpdateNotificationStatusVo.java new file mode 100644 index 0000000..9bbee0e --- /dev/null +++ b/writer/src/main/java/cn/org/gitlink/notification/writer/controller/sysNotification/vo/UpdateNotificationStatusVo.java @@ -0,0 +1,44 @@ +package cn.org.gitlink.notification.writer.controller.sysNotification.vo; + +import io.swagger.annotations.ApiModelProperty; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +public class UpdateNotificationStatusVo { + @ApiModelProperty(value = "平台编号", required = true) + @NotBlank + private String platform; + + @ApiModelProperty(value = "消息ids", required = true) + @NotBlank + private String notificationIds; + + @ApiModelProperty(value = "已读状态: 1未读,2已读", required = true) + @NotNull + private Integer status; + + public String getPlatform() { + return platform; + } + + public void setPlatform(String platform) { + this.platform = platform; + } + + public String getNotificationIds() { + return notificationIds; + } + + public void setNotificationIds(String notificationIds) { + this.notificationIds = notificationIds; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } +}