|
@@ -1,17 +1,34 @@
|
|
|
package com.hy.modules.bz.websocket;
|
|
package com.hy.modules.bz.websocket;
|
|
|
|
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.hy.common.websocket.AbstractWebSocketServer;
|
|
import com.hy.common.websocket.AbstractWebSocketServer;
|
|
|
|
|
+import com.hy.modules.bz.domain.BzAnchorStudio;
|
|
|
|
|
+import com.hy.modules.bz.domain.BzGiftRecord;
|
|
|
import com.hy.modules.bz.service.IBzAnchorStudioService;
|
|
import com.hy.modules.bz.service.IBzAnchorStudioService;
|
|
|
import com.hy.modules.bz.service.IBzGiftRecordService;
|
|
import com.hy.modules.bz.service.IBzGiftRecordService;
|
|
|
import com.hy.modules.bz.service.IBzPlayerService;
|
|
import com.hy.modules.bz.service.IBzPlayerService;
|
|
|
|
|
+import com.hy.modules.bz.websocket.message.GiftMessage;
|
|
|
|
|
+import com.hy.modules.bz.websocket.message.MessageType;
|
|
|
|
|
+import com.hy.modules.sys.domain.SysDictData;
|
|
|
|
|
+import com.hy.modules.sys.service.SysDictDataService;
|
|
|
|
|
+import org.slf4j.Logger;
|
|
|
|
|
+import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.web.socket.WebSocketSession;
|
|
import org.springframework.web.socket.WebSocketSession;
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
|
|
+import java.util.Date;
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+
|
|
|
|
|
+import static com.hy.modules.bz.utils.Constants.*;
|
|
|
|
|
|
|
|
public class BarrageWebSocketServer extends AbstractWebSocketServer {
|
|
public class BarrageWebSocketServer extends AbstractWebSocketServer {
|
|
|
|
|
|
|
|
private static final String PLATFORM = "tiktok";
|
|
private static final String PLATFORM = "tiktok";
|
|
|
|
|
|
|
|
|
|
+ private final Logger logger = LoggerFactory.getLogger(getClass());
|
|
|
|
|
+
|
|
|
@Resource
|
|
@Resource
|
|
|
private IBzPlayerService playerService;
|
|
private IBzPlayerService playerService;
|
|
|
|
|
|
|
@@ -21,6 +38,9 @@ public class BarrageWebSocketServer extends AbstractWebSocketServer {
|
|
|
@Resource
|
|
@Resource
|
|
|
private IBzGiftRecordService giftRecordService;
|
|
private IBzGiftRecordService giftRecordService;
|
|
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private SysDictDataService sysDictDataService;
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public void handleOpen(WebSocketSession session) {
|
|
public void handleOpen(WebSocketSession session) {
|
|
|
|
|
|
|
@@ -28,12 +48,54 @@ public class BarrageWebSocketServer extends AbstractWebSocketServer {
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public void handleClose(WebSocketSession session) {
|
|
public void handleClose(WebSocketSession session) {
|
|
|
-
|
|
|
|
|
|
|
+ anchorStudioService.stopStudio(session.getAttributes().get(TOKEN_PRIFIX).toString());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public void handleMessage(String message, WebSocketSession session) {
|
|
public void handleMessage(String message, WebSocketSession session) {
|
|
|
|
|
+ JSONObject object = JSON.parseObject(message);
|
|
|
|
|
+ if(MessageType.GiftMessage.equals(MessageType.getMessageType(object.getString(MESSAGE_TYPE_CODE)))){
|
|
|
|
|
+ // 暂时只处理礼物消息
|
|
|
|
|
+ GiftMessage giftMessage = JSON.parseObject(message, GiftMessage.class);
|
|
|
|
|
+ if(!session.getAttributes().containsKey(TOKEN_PRIFIX)){
|
|
|
|
|
+ session.getAttributes().put(TOKEN_PRIFIX, giftMessage.getToken());
|
|
|
|
|
+ }
|
|
|
|
|
+ saveGiftRecord(giftMessage);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private BigDecimal getGiftScore(String giftName) throws RuntimeException{
|
|
|
|
|
+ List<SysDictData> giftList = sysDictDataService.selectByCode(GIFT_CODE);
|
|
|
|
|
+
|
|
|
|
|
+ for (SysDictData dictData : giftList) {
|
|
|
|
|
+ if(dictData.getDataLabel().equals(giftName)){
|
|
|
|
|
+ return new BigDecimal(dictData.getDataValue());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ throw new RuntimeException("No such gift: "+giftName);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
+ private void saveGiftRecord(GiftMessage giftMessage){
|
|
|
|
|
+ BigDecimal score = getGiftScore(giftMessage.getGiftName());
|
|
|
|
|
+ BzAnchorStudio anchorStudio = anchorStudioService.getByRoomId(giftMessage.getToken());
|
|
|
|
|
+ BzGiftRecord giftRecord = new BzGiftRecord();
|
|
|
|
|
+ giftRecord.setAnchorCode(anchorStudio.getCode());
|
|
|
|
|
+ giftRecord.setAnchorId(anchorStudio.getAnchorId());
|
|
|
|
|
+ giftRecord.setAnchorNickName(anchorStudio.getAnchorNickName());
|
|
|
|
|
+ giftRecord.setGiftCount(Long.valueOf(giftMessage.getGiftCount()));
|
|
|
|
|
+ giftRecord.setGiftInfo(giftMessage.getGiftName());
|
|
|
|
|
+ giftRecord.setGiftValue(score);
|
|
|
|
|
+ giftRecord.setPlatform(anchorStudio.getPlatform());
|
|
|
|
|
+ giftRecord.setPublishTime(new Date());
|
|
|
|
|
+ giftRecord.setRoomId(giftMessage.getToken());
|
|
|
|
|
+ giftRecord.setStatus("finished");
|
|
|
|
|
+ giftRecord.setStudioId(anchorStudio.getId());
|
|
|
|
|
+ giftRecord.setGame(anchorStudio.getGameName());
|
|
|
|
|
+ giftRecord.setUserId(giftMessage.getName());
|
|
|
|
|
+ giftRecord.setUserNickName(giftMessage.getName());
|
|
|
|
|
+ giftRecordService.save(giftRecord);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|