Skip to content

Commit dcf4250

Browse files
committed
add easemob app server module
1 parent 9ee604c commit dcf4250

File tree

11 files changed

+116
-109
lines changed

11 files changed

+116
-109
lines changed

agora-app-server/src/main/java/com/easemob/agora/api/TokenController.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.easemob.agora.api;
22

33
import com.alibaba.fastjson.JSONObject;
4+
import com.easemob.agora.model.ResCode;
45
import com.easemob.agora.model.ResponseParam;
56
import com.easemob.agora.model.TokenInfo;
67
import com.easemob.agora.service.RedisService;
@@ -29,6 +30,28 @@ public TokenController(TokenService tokenService) {
2930
this.tokenService = tokenService;
3031
}
3132

33+
@GetMapping("/token/rtc/channel/{channelName}/agorauid/{agoraUid}")
34+
public ResponseParam getAgoraRtcToken(@PathVariable String channelName,
35+
@PathVariable Integer agoraUid,
36+
@RequestParam("userAccount") String userAccount) {
37+
38+
redisService.saveAgoraChannelInfo(false, channelName, String.valueOf(agoraUid));
39+
redisService.saveUidMapper(String.valueOf(agoraUid), userAccount);
40+
41+
ResponseParam responseParam = new ResponseParam();
42+
if (!StringUtils.isEmpty(channelName) && agoraUid != null) {
43+
TokenInfo token = tokenService.getRtcToken(channelName, agoraUid);
44+
responseParam.setAccessToken(token.getToken());
45+
responseParam.setExpireTime(token.getExpireTime());
46+
47+
} else {
48+
responseParam.setCode(ResCode.RES_REQUEST_PARAM_ERROR);
49+
responseParam.setErrorInfo("channelName or agoraUid is not null");
50+
}
51+
52+
return responseParam;
53+
}
54+
3255
@PostMapping("/token/rtcToken")
3356
public ResponseParam getAgoraToken(
3457
@RequestParam(name = "channelName", required = false) String channelName,

agora-app-server/src/main/java/com/easemob/agora/model/ResCode.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
**/
88
public enum ResCode {
99
RES_0K(200),//可以成功返回
10+
RES_REQUEST_PARAM_ERROR(400),//请求参数错误
1011
RES_METHOND_ERROR(411), //请求方法错误
1112
RES_PARME_ERROR(412),//请求参数错误
1213
RES_CONTENT_TYPE_ERROR(413), //传参类型错误

agora-app-server/src/main/resources/application.properties

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,23 @@ spring.application.name=agora-app-server
55
## 环信console 获取自己的rest域名
66
application.restServer=a1.easemob.com/
77
## 环信console 注册获取的orgname
8-
application.orgName=easemob-demo
8+
application.orgName=xxx
99
## 环信console 注册获取的appname
10-
application.appName=chatdemoui
10+
application.appName=xxx
1111
## 声网console获取appid
12-
application.agoraAppId=XXX
12+
application.agoraAppId=xxx
1313
## 声网console获取appcert
14-
application.agoraCert=XXX
14+
application.agoraCert=xxx
1515

1616
management.endpoints.web.base-path=/management
1717
management.endpoints.web.exposure.include=*
1818

1919
spring.cloud.consul.enabled=false
2020

2121
## 本地redis
22-
spring.redis.channel.host=localhost
23-
spring.redis.channel.port=6379
24-
spring.redis.channel.password=123456
25-
spring.redis.channel.timeout=10000
22+
spring.redis.channel.nodes=tcp://localhost:6379
23+
spring.redis.channel.password=
24+
spring.redis.channel.type=standalone
25+
spring.redis.channel.ssl=false
2626

2727
spring.redis.channel.expireTime=86400

easemob-app-server/src/main/java/com/easemob/app/api/AppUserController.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.easemob.app.exception.ASUnAuthorizedException;
44
import com.easemob.app.model.*;
55
import com.easemob.app.service.AppUserService;
6-
import com.easemob.app.service.IndexTestService;
76
import org.apache.commons.lang.StringUtils;
87
import org.springframework.beans.factory.annotation.Autowired;
98
import org.springframework.beans.factory.annotation.Value;

easemob-app-server/src/main/java/com/easemob/app/api/TokenController.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ public TokenController(TokenService tokenService) {
2828
this.tokenService = tokenService;
2929
}
3030

31-
// to do 考虑server sdk提供直接生成rtc token的方法
3231
@GetMapping("/token/rtc/channel/{channelName}/agorauid/{agoraUid}")
3332
public ResponseEntity getAgoraRtcToken(@PathVariable String channelName,
3433
@PathVariable Integer agoraUid,

easemob-app-server/src/main/java/com/easemob/app/model/IndexTest.java

Lines changed: 0 additions & 39 deletions
This file was deleted.

easemob-app-server/src/main/java/com/easemob/app/model/IndexTestRepository.java

Lines changed: 0 additions & 11 deletions
This file was deleted.

easemob-app-server/src/main/java/com/easemob/app/service/IndexTestService.java

Lines changed: 0 additions & 34 deletions
This file was deleted.

easemob-app-server/src/main/java/com/easemob/app/service/RestService.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,8 @@ public interface RestService {
2424
*/
2525
String getChatUserUuid(String appkey, String chatUserName);
2626

27+
void sendTextMessageToUser(String from, String to, String messageContent);
28+
29+
void sendCmdMessageToUser(String from, String to, String action);
30+
2731
}

easemob-app-server/src/main/java/com/easemob/app/service/impl/RestServiceImpl.java

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ public class RestServiceImpl implements RestService {
2121
@Value("${application.baseUri}")
2222
private String baseUri;
2323

24+
@Value("${application.appkey}")
25+
private String appkey;
26+
2427
@Autowired
2528
private Rest2Properties rest2Properties;
2629

@@ -100,4 +103,67 @@ public class RestServiceImpl implements RestService {
100103
List<Map<String, Object>> results = (List<Map<String, Object>>) responseEntity.getBody().get("entities");
101104
return (String) results.get(0).get("uuid");
102105
}
106+
107+
@Override public void sendTextMessageToUser(String from, String to, String messageContent) {
108+
109+
String orgName = appkey.split("#")[0];
110+
String appName = appkey.split("#")[1];
111+
String url = baseUri + "/" + orgName + "/" + appName + "/messages/users";
112+
113+
HttpHeaders headers = new HttpHeaders();
114+
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
115+
headers.setContentType(MediaType.APPLICATION_JSON);
116+
headers.setBearerAuth(Objects.requireNonNull(RestUtil.getToken(appkey, restTemplate, rest2Properties)));
117+
118+
Map<String, Object> body = new HashMap<>();
119+
body.put("from", from);
120+
List<String> tos = new ArrayList<>();
121+
tos.add(to);
122+
body.put("to", tos);
123+
body.put("type", "txt");
124+
Map<String, String> messageBody = new HashMap<>();
125+
messageBody.put("msg", messageContent);
126+
body.put("body", messageBody);
127+
128+
HttpEntity<Map<String, Object>> entity = new HttpEntity<>(body, headers);
129+
130+
try {
131+
restTemplate.exchange(url, HttpMethod.POST, entity, Map.class);
132+
} catch (Exception e) {
133+
log.error("send message to user. chatUserName : {}, error : {}", to, e.getMessage());
134+
throw new RestClientException("Send message to user error.");
135+
}
136+
}
137+
138+
@Override public void sendCmdMessageToUser(String from, String to, String action) {
139+
140+
String orgName = appkey.split("#")[0];
141+
String appName = appkey.split("#")[1];
142+
String url = baseUri + "/" + orgName + "/" + appName + "/messages/users";
143+
144+
HttpHeaders headers = new HttpHeaders();
145+
headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
146+
headers.setContentType(MediaType.APPLICATION_JSON);
147+
headers.setBearerAuth(Objects.requireNonNull(RestUtil.getToken(appkey, restTemplate, rest2Properties)));
148+
149+
Map<String, Object> body = new HashMap<>();
150+
body.put("from", from);
151+
List<String> tos = new ArrayList<>();
152+
tos.add(to);
153+
body.put("to", tos);
154+
body.put("type", "cmd");
155+
body.put("routetype", "ROUTE_ONLINE");
156+
Map<String, String> messageBody = new HashMap<>();
157+
messageBody.put("action", action);
158+
body.put("body", messageBody);
159+
160+
HttpEntity<Map<String, Object>> entity = new HttpEntity<>(body, headers);
161+
162+
try {
163+
restTemplate.exchange(url, HttpMethod.POST, entity, Map.class);
164+
} catch (Exception e) {
165+
log.error("send cmd message to user. chatUserName : {}, error : {}", to, e.getMessage());
166+
throw new RestClientException("Send cmd message to user error.");
167+
}
168+
}
103169
}

0 commit comments

Comments
 (0)