RongCloudController.java 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. package com.izouma.awesomeadmin.web;
  2. import com.izouma.awesomeadmin.constant.RongConstant;
  3. import com.izouma.awesomeadmin.dto.Result;
  4. import com.izouma.awesomeadmin.model.RongYunToken;
  5. import com.izouma.awesomeadmin.model.UserInfo;
  6. import com.izouma.awesomeadmin.service.RongYunTokenService;
  7. import com.izouma.awesomeadmin.service.UserInfoService;
  8. import com.izouma.awesomeadmin.util.PropertiesFileLoader;
  9. import io.rong.RongCloud;
  10. import io.rong.models.CheckOnlineResult;
  11. import io.rong.models.SMSSendCodeResult;
  12. import io.rong.models.SMSVerifyCodeResult;
  13. import io.rong.models.TokenResult;
  14. import org.apache.commons.lang.StringUtils;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.stereotype.Controller;
  17. import org.springframework.web.bind.annotation.RequestMapping;
  18. import org.springframework.web.bind.annotation.RequestMethod;
  19. import org.springframework.web.bind.annotation.RequestParam;
  20. import org.springframework.web.bind.annotation.ResponseBody;
  21. import javax.servlet.http.HttpServletRequest;
  22. import java.util.HashMap;
  23. import java.util.Map;
  24. @Controller
  25. @RequestMapping("/rong")
  26. public class RongCloudController {
  27. @Autowired
  28. private RongYunTokenService rongYunTokenService;
  29. @Autowired
  30. private UserInfoService userService;
  31. private RongCloud rongCloud = RongCloud.getInstance(PropertiesFileLoader.getProperties("rongyunappkey"), PropertiesFileLoader.getProperties("rongyunappsecret"));
  32. @RequestMapping(value = "/sendCode", method = RequestMethod.GET)
  33. @ResponseBody
  34. public Result sendCode(@RequestParam("phone") String mobile, HttpServletRequest request) {
  35. try {
  36. SMSSendCodeResult smsSendCodeResult = rongCloud.sms.sendCode(mobile, RongConstant.VERIFY_TEMPLATEID, "86", null, null);
  37. if (200 == smsSendCodeResult.getCode()) {
  38. String sessionId = smsSendCodeResult.getSessionId();
  39. return new Result(true, new StringBuilder(sessionId));
  40. }
  41. } catch (Exception e) {
  42. e.printStackTrace();
  43. }
  44. return new Result(false, "发送失败,请稍后重试");
  45. }
  46. @RequestMapping(value = "/verifyCode", method = RequestMethod.GET)
  47. @ResponseBody
  48. public Result verifyCode(@RequestParam("sessionId") String sessionId,
  49. @RequestParam("code") String code) {
  50. try {
  51. SMSVerifyCodeResult sMSVerifyCodeResult = rongCloud.sms.verifyCode(sessionId, code);
  52. if (200 == sMSVerifyCodeResult.getCode()) {
  53. Boolean success = sMSVerifyCodeResult.getSuccess();
  54. if (success) {
  55. return new Result(true, null);
  56. }
  57. }
  58. } catch (Exception e) {
  59. e.printStackTrace();
  60. }
  61. return new Result(false, "验证失败");
  62. }
  63. @RequestMapping(value = "/sendNotify", method = RequestMethod.GET)
  64. @ResponseBody
  65. public Result sendNotify(@RequestParam(required = true, value = "mobile") String mobile) {
  66. String result;
  67. try {
  68. SMSSendCodeResult smsSendCodeResult = rongCloud.sms.sendNotify(mobile, RongConstant.NOTIFY_TEMPLATEID, "86", null, null, null);
  69. if (200 == smsSendCodeResult.getCode()) {
  70. String sessionId = smsSendCodeResult.getSessionId();
  71. return new Result(true, sessionId);
  72. }
  73. } catch (Exception e) {
  74. e.printStackTrace();
  75. }
  76. return new Result(false, "发送失败,请稍后重试");
  77. }
  78. @RequestMapping(value = "/getToken", method = RequestMethod.GET)
  79. @ResponseBody
  80. public Map<String, Object> getToken(@RequestParam("rongKey") String rongKey) {
  81. Map<String, Object> token = new HashMap<String, Object>();
  82. String userToken = "";
  83. RongYunToken ryt = rongYunTokenService.getRongToken(rongKey);
  84. if (ryt != null) {
  85. userToken = ryt.getToken();
  86. } else {
  87. try {
  88. UserInfo userInfo = userService.getUserInfoById(rongKey);
  89. TokenResult userGetTokenResult = rongCloud.user.getToken(rongKey, rongKey, userInfo != null ? userInfo.getIcon() : "http://www.rongcloud.cn/images/logo.png");
  90. userToken = userGetTokenResult.getToken();
  91. RongYunToken rong = new RongYunToken();
  92. rong.setUserId(rongKey);
  93. rong.setToken(userToken);
  94. rongYunTokenService.saveRongToken(rong);
  95. } catch (Exception e) {
  96. e.printStackTrace();
  97. }
  98. }
  99. token.put("token", userToken);
  100. token.put("appKey", PropertiesFileLoader.getProperties("rongyunappkey"));
  101. return token;
  102. }
  103. @RequestMapping(value = "/userInfo", method = RequestMethod.GET)
  104. @ResponseBody
  105. public Map<String, Object> getUserInfo(@RequestParam(required = true, value = "targetId") String targetId) {
  106. Map<String, Object> token = new HashMap<String, Object>();
  107. UserInfo uinfo = userService.getUserInfoById(targetId);
  108. token.put("name", uinfo.getNickname());
  109. token.put("portraitUri", uinfo.getIcon());
  110. return token;
  111. }
  112. /**
  113. * 检查是否在线
  114. *
  115. * @param userId
  116. * @return
  117. */
  118. @RequestMapping(value = "/checkOnline", method = RequestMethod.GET)
  119. @ResponseBody
  120. public CheckOnlineResult checkOnline(@RequestParam(required = true, value = "userId") String userId) {
  121. try {
  122. CheckOnlineResult checkOnlineResult = rongCloud.user.checkOnline(userId);
  123. return checkOnlineResult;
  124. } catch (Exception e) {
  125. e.printStackTrace();
  126. }
  127. return null;
  128. }
  129. }