前置条件

在开始使用定时任务之前,要确保服务的choerodon-starters依赖在0.6.4.RELEASE版本及之上,推荐最新版0.8.1.RELEASE

介绍

站内信系统是用于通知用户站内消息的一个小模块, 在用户登录之后, 个人中心旁边有个铃铛按钮, 点击即可进入站内信即可查看站内通知。基于websocket长连接和redis的pub/sub实现站内信功能。

站内信功能开发

添加依赖

  1. <dependency>
  2. <groupId>io.choerodon</groupId>
  3. <artifactId>choerodon-starter-swagger</artifactId>
  4. <version>${choerodon.starters.version}</version>
  5. </dependency>

定义模版

所在服务启用后定义的模版会被notify-service自动扫扫描到

  1. //继承PmTemplate,确保该bean被spring托管
  2. @Component
  3. public class TestPmTemplate implements PmTemplate {
  4. //业务类型
  5. @Override
  6. public String businessTypeCode() {
  7. return "test";
  8. }
  9. //模版code,需要唯一
  10. @Override
  11. public String code() {
  12. return "test";
  13. }
  14. //模版名称
  15. @Override
  16. public String name() {
  17. return "test";
  18. }
  19. //站内信标题
  20. @Override
  21. public String title() {
  22. return "测试";
  23. }
  24. //站内信内容。可以直接写内容字符串,或者指定内容文件
  25. //模版占位符为${变量名},比如${userName}
  26. @Override
  27. public String content() {
  28. return "classpath://template/test.html";
  29. }
  30. }

添加发送站内信代码,通过feign调用notify的发送站内信接口

curl调用发送站内信接口:

  1. curl -X POST --header 'Content-Type: application/json' -d '{"code":"site-msg","id":233,"templateCode":"forgetPassword-preset","params":{"userName":"aaa"}}' 'http://api.staging.saas.hand-china.com/notify/v1/notices/ws'

调用发送站内信接口的feign定义:

  1. @FeignClient(name = "${choerodon.notify.service:notify-service}")
  2. public interface NotifyClient {
  3. @PostMapping("/v1/notices/ws")
  4. void sendSitMsg(@RequestBody NotifySendDTO dto);
  5. class NotifySendDTO {
  6. private Long id;
  7. private String code;
  8. private String templateCode;
  9. private Map<String, Object> params;
  10. public Long getId() {
  11. return id;
  12. }
  13. public void setId(Long id) {
  14. this.id = id;
  15. }
  16. public String getCode() {
  17. return code;
  18. }
  19. public void setCode(String code) {
  20. this.code = code;
  21. }
  22. public String getTemplateCode() {
  23. return templateCode;
  24. }
  25. public void setTemplateCode(String templateCode) {
  26. this.templateCode = templateCode;
  27. }
  28. public Map<String, Object> getParams() {
  29. return params;
  30. }
  31. public void setParams(Map<String, Object> params) {
  32. this.params = params;
  33. }
  34. }
  35. }

调用参数:

  • code: 业务类型。站内信的业务类型为site-msg
  • id: 业务id。站内信的业务id即为用户id。
  • templateCode: 站内信模版code。
  • params: 站内信模版渲染参数。