SysMessageController.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. package com.ym.mec.student.controller;
  2. import com.alibaba.fastjson.JSON;
  3. import com.ym.mec.auth.api.client.SysUserFeignService;
  4. import com.ym.mec.auth.api.entity.SysUser;
  5. import com.ym.mec.biz.dal.dao.AppVersionInfoDao;
  6. import com.ym.mec.biz.dal.entity.AppVersionInfo;
  7. import com.ym.mec.biz.dal.enums.MessageSendMode;
  8. import com.ym.mec.biz.dal.page.SysMessageQueryInfo;
  9. import com.ym.mec.biz.service.SysMessageService;
  10. import com.ym.mec.common.controller.BaseController;
  11. import com.ym.mec.common.exception.BizException;
  12. import com.ym.mec.thirdparty.message.MessageSenderPluginContext.MessageSender;
  13. import com.ym.mec.util.validator.CommonValidator;
  14. import io.swagger.annotations.Api;
  15. import io.swagger.annotations.ApiOperation;
  16. import org.apache.commons.lang3.StringUtils;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.http.HttpStatus;
  19. import org.springframework.web.bind.annotation.GetMapping;
  20. import org.springframework.web.bind.annotation.PostMapping;
  21. import org.springframework.web.bind.annotation.RequestMapping;
  22. import org.springframework.web.bind.annotation.RestController;
  23. import java.io.IOException;
  24. import java.util.ArrayList;
  25. import java.util.HashMap;
  26. import java.util.List;
  27. import java.util.Map;
  28. @RestController
  29. @Api(tags = "消息服务")
  30. @RequestMapping("sysMessage")
  31. public class SysMessageController extends BaseController {
  32. @Autowired
  33. private SysMessageService sysMessageService;
  34. @Autowired
  35. private SysUserFeignService sysUserFeignService;
  36. @Autowired
  37. private AppVersionInfoDao appVersionInfoDao;
  38. @ApiOperation("获取所有消息列表")
  39. @GetMapping(value = "list")
  40. public Object list(SysMessageQueryInfo queryInfo){
  41. SysUser sysUser = sysUserFeignService.queryUserInfo();
  42. if (sysUser == null) {
  43. return failed(HttpStatus.FORBIDDEN, "请登录");
  44. }
  45. queryInfo.setUserId(sysUser.getId());
  46. queryInfo.setType(MessageSendMode.PUSH.getCode());
  47. queryInfo.setJpushType("STUDENT");
  48. return succeed(sysMessageService.queryPage(queryInfo));
  49. }
  50. @ApiOperation("获取消息分类类型")
  51. @GetMapping(value = "typeList")
  52. public Object typeList(String memo){
  53. //如果用户使用的版本比当前版本号大,那么屏蔽缴费信息
  54. if(StringUtils.isNotEmpty(memo)){
  55. //获取当前使用的版本
  56. AppVersionInfo appVersionInfo = appVersionInfoDao.queryNewestByPlatform("ios-student").get(0);
  57. int defaultVersion = Integer.parseInt(appVersionInfo.getVersion().replaceAll("\\.",""));
  58. int currentVersion = Integer.parseInt(memo.replaceAll("\\.",""));
  59. if(currentVersion > defaultVersion){
  60. return succeed(JSON.parseArray("[{\"value\":\"全部\",\"key\":\"ALL\"}," +
  61. "{\"value\":\"课程信息\",\"key\":\"COURSE\"}," +
  62. "{\"value\":\"训练信息\",\"key\":\"WORK\"}," +
  63. "{\"value\":\"其他\",\"key\":\"DEFAULT\"}]"));
  64. }
  65. }
  66. return succeed(JSON.parseArray("[{\"value\":\"全部\",\"key\":\"ALL\"}," +
  67. "{\"value\":\"缴费信息\",\"key\":\"PAY\"}," +
  68. "{\"value\":\"课程信息\",\"key\":\"COURSE\"}," +
  69. "{\"value\":\"训练信息\",\"key\":\"WORK\"}," +
  70. "{\"value\":\"其他\",\"key\":\"DEFAULT\"}]"));
  71. }
  72. @ApiOperation("一键已读")
  73. @PostMapping("batchSetRead")
  74. public Object batchSetRead() {
  75. int status = 1;
  76. SysUser sysUser = sysUserFeignService.queryUserInfo();
  77. if (sysUser == null) {
  78. return failed(HttpStatus.FORBIDDEN, "请登录");
  79. }
  80. return sysMessageService.updateStatus(sysUser.getId(), status,"STUDENT") > 0 ? succeed() : failed();
  81. }
  82. @ApiOperation("设置已读")
  83. @PostMapping("setRead")
  84. public Object setRead(Long id) {
  85. int status = 1;
  86. SysUser sysUser = sysUserFeignService.queryUserInfo();
  87. if (sysUser == null) {
  88. return failed(HttpStatus.FORBIDDEN, "请登录");
  89. }
  90. return sysMessageService.updateOneStatus(id, status) > 0 ? succeed() : failed();
  91. }
  92. @ApiOperation(value = "查询用户未读消息条数")
  93. @GetMapping("/queryCountOfUnread")
  94. public Object queryCountOfUnread() {
  95. SysUser sysUser = sysUserFeignService.queryUserInfo();
  96. if (sysUser == null) {
  97. return failed(HttpStatus.FORBIDDEN, "请登录");
  98. }
  99. Map<String, Integer> map = sysMessageService.queryCountOfUnread(MessageSendMode.PUSH, sysUser.getId(),"STUDENT");
  100. if (map == null || map.size() == 0) {
  101. return succeed();
  102. }
  103. return succeed(map);
  104. }
  105. @ApiOperation(value = "发送消息")
  106. @PostMapping("/sendMessage")
  107. public Object sendMessage(MessageSender messageSender, String content, String receiver, int readStatus, String url, String group) {
  108. SysUser sysUser = sysUserFeignService.queryUserInfo();
  109. if (sysUser == null) {
  110. return failed(HttpStatus.FORBIDDEN, "请登录");
  111. }
  112. Integer userId = sysUser.getId();
  113. String mobileNo = sysUser.getPhone();
  114. if (StringUtils.isBlank(mobileNo) || !CommonValidator.isMobileNo(mobileNo)) {
  115. throw new BizException("请输入正确的手机号");
  116. }
  117. sysMessageService.sendMessage(messageSender, userId, "", content, receiver, null, readStatus, url, group, "STUDENT");
  118. return succeed();
  119. }
  120. }