• 前置条件
  • 介绍
  • 站内信功能开发
    • 添加依赖
    • 定义模版
    • 添加发送站内信代码,通过feign调用notify的发送站内信接口

    前置条件

    在开始使用定时任务之前,要确保服务的choerodon-starters依赖在0.6.4.RELEASE版本及之上,推荐最新版0.12.0.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: 站内信模版渲染参数。