Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
3260340ce6
|
|
@ -1,5 +1,6 @@
|
||||||
package com.zhangshu.chat.demo.controller;
|
package com.zhangshu.chat.demo.controller;
|
||||||
|
|
||||||
|
import com.zhangshu.chat.demo.dto.AgoraEventDto;
|
||||||
import com.zhangshu.chat.demo.dto.CommonResult;
|
import com.zhangshu.chat.demo.dto.CommonResult;
|
||||||
import com.zhangshu.chat.demo.service.EventService;
|
import com.zhangshu.chat.demo.service.EventService;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
|
|
@ -23,9 +24,9 @@ public class EventController {
|
||||||
|
|
||||||
@PostMapping("/agora")
|
@PostMapping("/agora")
|
||||||
@ApiOperation(value = "agora")
|
@ApiOperation(value = "agora")
|
||||||
public CommonResult agora(@RequestBody Map<String,Object> body) {
|
public CommonResult agora(@RequestBody AgoraEventDto dto) {
|
||||||
log.info("事件回调:{}", body);
|
log.info("事件回调:{}", dto);
|
||||||
eventService.agora(body);
|
eventService.agora(dto);
|
||||||
return CommonResult.success();
|
return CommonResult.success();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,6 @@ package com.zhangshu.chat.demo.service;
|
||||||
|
|
||||||
import com.zhangshu.chat.demo.dto.AgoraEventDto;
|
import com.zhangshu.chat.demo.dto.AgoraEventDto;
|
||||||
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public interface EventService {
|
public interface EventService {
|
||||||
void agora(Map<String, Object> body);
|
void agora(AgoraEventDto body);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,10 @@ package com.zhangshu.chat.demo.service;
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.bean.copier.CopyOptions;
|
import cn.hutool.core.bean.copier.CopyOptions;
|
||||||
import com.zhangshu.chat.demo.config.AgoraProperties;
|
import com.zhangshu.chat.demo.config.AgoraProperties;
|
||||||
import com.zhangshu.chat.demo.constant.EAgoraEventType;
|
|
||||||
import com.zhangshu.chat.demo.constant.ERoomUserType;
|
import com.zhangshu.chat.demo.constant.ERoomUserType;
|
||||||
import com.zhangshu.chat.demo.dto.AgoraChannelEventDto;
|
import com.zhangshu.chat.demo.dto.AgoraChannelEventDto;
|
||||||
import com.zhangshu.chat.demo.dto.AgoraChannelUserEventDto;
|
import com.zhangshu.chat.demo.dto.AgoraChannelUserEventDto;
|
||||||
|
import com.zhangshu.chat.demo.dto.AgoraEventDto;
|
||||||
import com.zhangshu.chat.demo.entity.User;
|
import com.zhangshu.chat.demo.entity.User;
|
||||||
import com.zhangshu.chat.demo.mapper.UserMapper;
|
import com.zhangshu.chat.demo.mapper.UserMapper;
|
||||||
import com.zhangshu.chat.demo.vo.RoomUserVo;
|
import com.zhangshu.chat.demo.vo.RoomUserVo;
|
||||||
|
|
@ -26,29 +26,26 @@ public class EventServiceImpl implements EventService {
|
||||||
RoomCache roomCache;
|
RoomCache roomCache;
|
||||||
@Autowired
|
@Autowired
|
||||||
UserMapper userMapper;
|
UserMapper userMapper;
|
||||||
|
|
||||||
<T> T mapToBean(Map<String, Object> map, Class<T> targetClass) {
|
<T> T mapToBean(Map<String, Object> map, Class<T> targetClass) {
|
||||||
return BeanUtil.mapToBean(map, targetClass, false, CopyOptions.create());
|
return BeanUtil.mapToBean(map, targetClass, false, CopyOptions.create());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void agora(Map<String, Object> body) {
|
public void agora(AgoraEventDto dto) {
|
||||||
|
switch (dto.getEventType()) {
|
||||||
Object eventTypeObj = body.get("eventType");
|
|
||||||
EAgoraEventType eventType = EAgoraEventType.getByType((Integer) eventTypeObj);
|
|
||||||
switch (eventType) {
|
|
||||||
case channel_create: {
|
case channel_create: {
|
||||||
AgoraChannelEventDto eventDto = mapToBean(body, AgoraChannelEventDto.class);
|
AgoraChannelEventDto eventDto = dto.convert(AgoraChannelEventDto.class);
|
||||||
roomCache.add(eventDto.getChannelName());
|
roomCache.add(eventDto.getChannelName());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case channel_destroy: {
|
case channel_destroy: {
|
||||||
AgoraChannelEventDto eventDto = mapToBean(body, AgoraChannelEventDto.class);
|
AgoraChannelEventDto eventDto = dto.convert(AgoraChannelEventDto.class);
|
||||||
roomCache.remove(eventDto.getChannelName());
|
roomCache.remove(eventDto.getChannelName());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case broadcaster_join_channel: {
|
case broadcaster_join_channel: {
|
||||||
AgoraChannelUserEventDto eventDto = mapToBean(body, AgoraChannelUserEventDto.class);
|
AgoraChannelUserEventDto eventDto = dto.convert(AgoraChannelUserEventDto.class);
|
||||||
User user = userMapper.selectById(eventDto.getUid());
|
User user = userMapper.selectById(eventDto.getUid());
|
||||||
if (Objects.isNull(user)) {
|
if (Objects.isNull(user)) {
|
||||||
break;
|
break;
|
||||||
|
|
@ -63,12 +60,12 @@ public class EventServiceImpl implements EventService {
|
||||||
break;
|
break;
|
||||||
case broadcaster_leave_channel:
|
case broadcaster_leave_channel:
|
||||||
case audience_leave_channel: {
|
case audience_leave_channel: {
|
||||||
AgoraChannelUserEventDto eventDto = mapToBean(body, AgoraChannelUserEventDto.class);
|
AgoraChannelUserEventDto eventDto = dto.convert(AgoraChannelUserEventDto.class);
|
||||||
roomCache.removeUser(eventDto.getChannelName(), eventDto.getUid());
|
roomCache.removeUser(eventDto.getChannelName(), eventDto.getUid());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case audience_join_channel: {
|
case audience_join_channel: {
|
||||||
AgoraChannelUserEventDto eventDto = mapToBean(body, AgoraChannelUserEventDto.class);
|
AgoraChannelUserEventDto eventDto = dto.convert(AgoraChannelUserEventDto.class);
|
||||||
User user = userMapper.selectById(eventDto.getUid());
|
User user = userMapper.selectById(eventDto.getUid());
|
||||||
if (Objects.isNull(user)) {
|
if (Objects.isNull(user)) {
|
||||||
break;
|
break;
|
||||||
|
|
@ -82,12 +79,12 @@ public class EventServiceImpl implements EventService {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case client_role_change_to_audience: {
|
case client_role_change_to_audience: {
|
||||||
AgoraChannelUserEventDto eventDto = mapToBean(body, AgoraChannelUserEventDto.class);
|
AgoraChannelUserEventDto eventDto = dto.convert(AgoraChannelUserEventDto.class);
|
||||||
roomCache.changeUserType(eventDto.getChannelName(), eventDto.getUid(), ERoomUserType.audience);
|
roomCache.changeUserType(eventDto.getChannelName(), eventDto.getUid(), ERoomUserType.audience);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case client_role_change_to_broadcaster: {
|
case client_role_change_to_broadcaster: {
|
||||||
AgoraChannelUserEventDto eventDto = mapToBean(body, AgoraChannelUserEventDto.class);
|
AgoraChannelUserEventDto eventDto = dto.convert(AgoraChannelUserEventDto.class);
|
||||||
roomCache.changeUserType(eventDto.getChannelName(), eventDto.getUid(), ERoomUserType.broadcaster);
|
roomCache.changeUserType(eventDto.getChannelName(), eventDto.getUid(), ERoomUserType.broadcaster);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,6 @@ import lombok.Data;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class RoomVo {
|
public class RoomVo {
|
||||||
private Long id;
|
private String id;
|
||||||
private String name;
|
private String name;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue