yangyale преди 1 година
родител
ревизия
36d00a8a56

+ 7 - 0
src/main/java/com/hy/modules/bz/service/IBzAnchorStudioService.java

@@ -30,4 +30,11 @@ public interface IBzAnchorStudioService extends IService<BzAnchorStudio> {
      * @return
      */
     BzAnchorStudio startStudio(BzPlayer player, String roomId, String game);
+
+    /**
+     * 主播下播
+     * @param roomId
+     * @return
+     */
+    BzAnchorStudio stopStudio(String roomId);
 }

+ 16 - 0
src/main/java/com/hy/modules/bz/service/impl/BzAnchorStudioServiceImpl.java

@@ -3,6 +3,7 @@ package com.hy.modules.bz.service.impl;
 import java.util.Date;
 import java.util.List;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
@@ -56,4 +57,19 @@ public class BzAnchorStudioServiceImpl extends ServiceImpl<BzAnchorStudioMapper,
         throw new RuntimeException("主播直播间开启失败");
     }
 
+    @Override
+    public BzAnchorStudio stopStudio(String roomId) {
+        QueryWrapper<BzAnchorStudio> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("room_id", roomId)
+                .eq("status","open");
+        BzAnchorStudio bzAnchorStudio = getOne(queryWrapper,false);
+        if (bzAnchorStudio != null) {
+            bzAnchorStudio.setStatus("close");
+            bzAnchorStudio.setCloseTime(new Date());
+            updateById(bzAnchorStudio);
+            return bzAnchorStudio;
+        }
+        return null;
+    }
+
 }

+ 11 - 5
src/main/java/com/hy/modules/bz/webapi/service/impl/WebApiServiceImpl.java

@@ -2,6 +2,7 @@ package com.hy.modules.bz.webapi.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.hy.common.tools.EncodeUtils;
+import com.hy.modules.bz.domain.BzAnchorStudio;
 import com.hy.modules.bz.domain.BzPlayer;
 import com.hy.modules.bz.service.IBzAnchorStudioService;
 import com.hy.modules.bz.service.IBzPlayerService;
@@ -63,18 +64,23 @@ public class WebApiServiceImpl implements WebApiService {
 
     @Override
     public void logout(LogoutDto logoutDto) {
-        QueryWrapper<BzPlayer> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("card_no",logoutDto.getCardNo())
-                .eq("status","normal");
-        BzPlayer player = playerService.getOne(queryWrapper,false);
-        Assert.notNull(player,"No player found");
+
+        BzAnchorStudio anchorStudio = anchorStudioService.stopStudio(logoutDto.getToken());
+        String carNo = null;
+        if(null != anchorStudio){
+            carNo = anchorStudio.getAnchorName();
+        }else{
+            carNo = logoutDto.getCardNo();
+        }
 
         String token = stringRedisTemplate.opsForValue().get(TOKEN_PRIFIX.concat(logoutDto.getCardNo()));
+
         if(null!=token){
             if(!token.equals(logoutDto.getToken())){
                 throw new RuntimeException("Illegal request for user: " + logoutDto.getCardNo());
             }
         }
+
         stringRedisTemplate.delete(TOKEN_PRIFIX.concat(logoutDto.getCardNo()));
     }