Merge remote-tracking branch 'origin/master'

This commit is contained in:
chanbook 2022-08-02 18:28:26 +08:00
commit 3260340ce6
4 changed files with 17 additions and 21 deletions

View File

@ -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();
} }
} }

View File

@ -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);
} }

View File

@ -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;

View File

@ -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;
} }