房间麦位资源

房间麦位资源

房间麦位资源
This commit is contained in:
2024-12-25 14:31:25 +08:00
parent 0e88f1a90d
commit 716e04803c
16 changed files with 163 additions and 14 deletions

View File

@@ -35,9 +35,21 @@ public class RoomMicDress implements Serializable {
*/
private Integer reachLevel;
/**
* 麦位皮肤特效图片
* 普通麦位皮肤/特效图片
*/
private String dressUrl;
private String normalMicUrl;
/**
* 普通锁麦皮肤/特效图片
*/
private String normalMicLockUrl;
/**
* 老板麦位皮肤/特效图片
*/
private String bossMicUrl;
/**
* 老板锁麦皮肤/特效图片
*/
private String bossMicLockUrl;
/**
* 是否有效1-有效0-无效
*/

View File

@@ -8,5 +8,6 @@ import lombok.Data;
*/
@Data
public class RoomParam extends Room {
private Integer usedMicSkinId;
private Integer usedMicEffectId;
}

View File

@@ -0,0 +1,12 @@
package com.accompany.business.vo;
import com.accompany.business.model.room.RoomMicDress;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class AppResourceVo {
List<RoomMicDress> roomMicDressList = new ArrayList<>();
}

View File

@@ -484,6 +484,9 @@ public class RoomVo implements Comparable<RoomVo> {
private RoomRightBottomIconVo rightBottomIconConfig;
private String roomLevelIcon;//房间等级图标
private Integer usedMicSkinId;//使用中的麦位皮肤id
private Integer usedMicEffectId;//使用中的麦位特效id
@Override

View File

@@ -16,7 +16,5 @@ public class RoomLevelVo {
private BigDecimal nextLevelExp = BigDecimal.ZERO;
private Integer usedMicSkinId;
private List<RoomMicDress> micEffects;
private Integer usedMicEffectId;
private List<RoomMicDress> micSkins;
}

View File

@@ -0,0 +1,12 @@
package com.accompany.business.vo.room;
import com.accompany.core.model.Room;
import lombok.Data;
@Data
public class RoomPushInfo extends Room {
private String roomLevelIcon;//房间等级图标
private Integer usedMicSkinId;//使用中的麦位皮肤id
private Integer usedMicEffectId;//使用中的麦位特效id
}

View File

@@ -2,6 +2,8 @@ package com.accompany.business.service.client;
import com.accompany.business.vo.AppConfigVo;
import com.accompany.business.vo.AppInitVo;
import com.accompany.business.vo.AppResourceVo;
import com.accompany.common.result.BusiResult;
/**
* @author: liaozetao
@@ -18,4 +20,6 @@ public interface ClientService {
AppInitVo init();
AppConfigVo config();
BusiResult<AppResourceVo> resourceVo();
}

View File

@@ -9,13 +9,16 @@ import com.accompany.business.service.purse.DiamondGiveHistoryService;
import com.accompany.business.service.redenvelope.RedEnvelopeService;
import com.accompany.business.service.resource.ResourceService;
import com.accompany.business.service.room.FaceJsonService;
import com.accompany.business.service.room.RoomMicDressService;
import com.accompany.business.vo.AppConfigVo;
import com.accompany.business.vo.AppInitVo;
import com.accompany.business.vo.AppResourceVo;
import com.accompany.common.config.SystemConfig;
import com.accompany.common.config.TencentTRCTConfig;
import com.accompany.common.config.YidunCheckConfig;
import com.accompany.common.constant.Constant;
import com.accompany.common.device.DeviceInfo;
import com.accompany.common.result.BusiResult;
import com.accompany.core.base.DeviceInfoContextHolder;
import com.accompany.core.base.SpringContextHolder;
import com.accompany.core.service.SysConfService;
@@ -56,6 +59,8 @@ public class ClientServiceImpl implements ClientService {
private PartitionInfoService partitionInfoService;
@Autowired
private AppUiSettingService appUiSettingService;
@Autowired
private RoomMicDressService roomMicDressService;
@Override
public AppInitVo init() {
@@ -117,4 +122,15 @@ public class ClientServiceImpl implements ClientService {
}
return appConfigVo;
}
public BusiResult<AppResourceVo> resourceVo() {
AppResourceVo appResourceVo = new AppResourceVo();
try {
appResourceVo.setRoomMicDressList(roomMicDressService.getRoomMicDressCacheOrDbAllList());
} catch (Exception e) {
log.error("ClientServiceImpl.resourceVo,e:{}", e.getMessage(), e);
}
return BusiResult.success(appResourceVo);
}
}

View File

@@ -79,12 +79,10 @@ public class RoomLevelService {
roomLevelVo.setNextLevel(nextleveInfo.getValue().getLevelSeq());
roomLevelVo.setNextLevelExp(nextleveInfo.getValue().getLevelExp());
}
roomLevelVo.setMicEffects(roomMicDressService.getRoomMicDressCacheOrDbList(RoomConstant.MicDressType.EFFECT));
RoomMicDress roomMicDress = roomMicDressService.roomMicDressUsed(RoomConstant.MicDressType.EFFECT, roomUid, roomLevelVo.getCurrentLevel());
if (roomMicDress != null) {
roomLevelVo.setUsedMicEffectId(roomMicDress.getId());
}
roomLevelVo.setMicSkins(roomMicDressService.getRoomMicDressCacheOrDbList(RoomConstant.MicDressType.SKIN));
RoomMicDress roomMicSkin = roomMicDressService.roomMicDressUsed(RoomConstant.MicDressType.SKIN, roomUid, roomLevelVo.getCurrentLevel());
if (roomMicSkin != null) {
roomLevelVo.setUsedMicSkinId(roomMicSkin.getId());
@@ -92,8 +90,8 @@ public class RoomLevelService {
return BusiResult.success(roomLevelVo);
}
public BusiResult<Void> useMicSkinEffect(Long uid, Long roomUid, Integer micDressType, Integer micDressId) {
log.info("useMicSkinEffect,pubUid:{},roomUid:{}, micDressType:{},micDressType:{}", uid, roomUid, micDressType, micDressId);
public BusiResult<Void> useMicSkinEffect(Long roomUid, Integer micDressType, Integer micDressId) {
log.info("useMicSkinEffect,roomUid:{}, micDressType:{},micDressType:{}", roomUid, micDressType, micDressId);
List<RoomMicDress> roomMicDressCacheOrDbList1 = roomMicDressService.getRoomMicDressCacheOrDbList(micDressType);
if (CollectionUtils.isEmpty(roomMicDressCacheOrDbList1)) {
throw new ServiceException(BusiStatus.SERVERERROR);

View File

@@ -2,8 +2,11 @@ package com.accompany.business.service.room;
import cn.hutool.core.util.StrUtil;
import com.accompany.business.constant.LimitTypeEnum;
import com.accompany.business.constant.RoomConstant;
import com.accompany.business.event.RoomOpenEvent;
import com.accompany.business.event.room.RoomPasswordChangeEvent;
import com.accompany.business.model.room.RoomLevelInfo;
import com.accompany.business.model.room.RoomMicDress;
import com.accompany.business.param.RoomParam;
import com.accompany.business.sensitvienew.SensitiveFilterUtil;
import com.accompany.business.service.dfa.DfaService;
@@ -23,7 +26,9 @@ import com.accompany.core.model.Room;
import com.accompany.core.model.Users;
import com.accompany.core.service.common.JedisLockService;
import com.accompany.core.service.common.JedisService;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -58,6 +63,10 @@ public class RoomManageService {
@Autowired
private DfaService dfaService;
@Autowired
private RoomMicDressService roomMicDressService;
@Autowired
private RoomLevelService roomLevelService;
@Transactional(rollbackFor = Exception.class)
public void switchType(Long roomUid, Byte newRoomType, Byte newPermitType) {
@@ -223,6 +232,13 @@ public class RoomManageService {
newRoom.setAvatar(null);
}
if (newRoom.getUsedMicEffectId() != null && newRoom.getUsedMicEffectId() != 0) {
roomLevelService.useMicSkinEffect(roomUid, RoomConstant.MicDressType.EFFECT, newRoom.getUsedMicEffectId());
}
if (newRoom.getUsedMicSkinId() != null && newRoom.getUsedMicSkinId() != 0) {
roomLevelService.useMicSkinEffect(roomUid, RoomConstant.MicDressType.SKIN, newRoom.getUsedMicEffectId());
}
//是否切换房间类型
boolean isSwitchRoomType = newRoomType != null && !oldRoomType.equals(newRoomType);
if (newRoomType != null) {

View File

@@ -15,6 +15,7 @@ import java.util.List;
public interface RoomMicDressService extends IService<RoomMicDress> {
List<RoomMicDress> getRoomMicDressCacheOrDbList(Integer dressType);
List<RoomMicDress> getRoomMicDressCacheOrDbAllList();
RBucket<String> getCacheBucket(Integer dressType);

View File

@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.accompany.business.constant.LimitTypeEnum;
import com.accompany.business.constant.RoomConstant;
import com.accompany.business.constant.RoomTypeEnum;
import com.accompany.business.constant.SuperOperateEnum;
import com.accompany.business.dto.QueueDTO;
@@ -19,6 +20,8 @@ import com.accompany.business.model.miniGame.MiniGameRoom;
import com.accompany.business.model.miniGame.MiniGameSwitchRecord;
import com.accompany.business.model.netease.MembersByPage;
import com.accompany.business.model.room.RobotUsing;
import com.accompany.business.model.room.RoomLevelInfo;
import com.accompany.business.model.room.RoomMicDress;
import com.accompany.business.model.room.SingleBroadcastSort;
import com.accompany.business.mybatismapper.FansMapperExpand;
import com.accompany.business.mybatismapper.RoomInviteRecordMapper;
@@ -45,6 +48,7 @@ import com.accompany.business.util.TLSSigAPIv2;
import com.accompany.business.vo.*;
import com.accompany.business.vo.home.PlayRoomVo;
import com.accompany.business.vo.home.SimplePlayRoomVo;
import com.accompany.business.vo.room.RoomPushInfo;
import com.accompany.common.config.NetEaseConfig;
import com.accompany.common.config.SystemConfig;
import com.accompany.common.config.TencentTRCTConfig;
@@ -180,6 +184,10 @@ public class RoomService extends BaseService {
@Autowired
private RegionInfoService regionInfoService;
@Autowired
private RoomLevelService roomLevelService;
@Autowired
private RoomMicDressService roomMicDressService;
@Autowired
private RedissonClient redissonClient;
private static Long encodeNum = 1000L;
@@ -781,10 +789,10 @@ public class RoomService extends BaseService {
*/
public RoomRet updateNetEaseRoomInfo(Room room, String notifyExt) throws Exception {
Byte roomType = room.getType();
Long roomUid = room.getUid();
if (roomType != null) {
RoomServiceFactory.getServiceByType(roomType).wrapRoom(room);
} else {
Long roomUid = room.getUid();
Room roomDb = roomMapper.selectById(roomUid);
if (roomDb != null) {
//动态填充为空的值
@@ -801,12 +809,30 @@ public class RoomService extends BaseService {
}
}
}
RoomPushInfo roomPushVo = new RoomPushInfo();
org.springframework.beans.BeanUtils.copyProperties(room, roomPushVo);
Long uid = room.getUid();
Users users = usersService.getUsersByUid(uid);
RoomLevelInfo roomLevelInfo = roomLevelService.getRoomLevelByRoomUid(users.getPartitionId(), uid);
Integer roomLevel = 1;
if (roomLevelInfo != null) {
roomLevel = roomLevelInfo.getLevelSeq();
roomPushVo.setRoomLevelIcon(roomLevelInfo.getLevelIcon());
}
RoomMicDress roomMicDress = roomMicDressService.roomMicDressUsed(RoomConstant.MicDressType.EFFECT, uid, roomLevel);
if (roomMicDress != null) {
roomPushVo.setUsedMicEffectId(roomMicDress.getId());
}
RoomMicDress roomMicSkin = roomMicDressService.roomMicDressUsed(RoomConstant.MicDressType.SKIN, uid, roomLevel);
if (roomMicSkin != null) {
roomPushVo.setUsedMicSkinId(roomMicSkin.getId());
}
if (StrUtil.isNotEmpty(notifyExt)) {
RoomNotifyVo roomNotify = GsonUtil.getDefGson().fromJson(notifyExt, RoomNotifyVo.class);
roomNotify.setRoomInfo(GsonUtil.getDefGson().toJson(room));
roomNotify.setRoomInfo(GsonUtil.getDefGson().toJson(roomPushVo));
notifyExt = GsonUtil.getDefGson().toJson(roomNotify);
}
RoomRet roomRet = erBanNetEaseService.updateRoomInfo(room.getRoomId(), room.getTitle(), buildRoomInfoExtend(room), notifyExt);
RoomRet roomRet = erBanNetEaseService.updateRoomInfo(room.getRoomId(), room.getTitle(), buildPushRoomInfoExtend(roomPushVo), notifyExt);
if (!roomRet.isSuccess()) {
log.error("updateNetEaseRoomInfo error code:{}, roomId:{}, roomUid:{}", roomRet.getCode(), room.getRoomId(), room.getUid());
}
@@ -847,6 +873,14 @@ public class RoomService extends BaseService {
return jsonObject.toJSONString();
}
private String buildPushRoomInfoExtend(RoomPushInfo roomPushVo) {
Map<String, String> roomMicMap = roomMicService.getRoomMicByUid(roomPushVo.getUid());
JSONObject jsonObject = new JSONObject();
jsonObject.put(Constant.RoomMic.ROOM_INFO, GsonUtil.getDefGson().toJson(roomPushVo));
jsonObject.put(Constant.RoomMic.MIC_QUEUE, GsonUtil.getDefGson().toJson(roomMicMap));
return jsonObject.toJSONString();
}
private void updateCloseRoomDbInfo(Room room) {
roomMapper.updateByPrimaryKeySelective(room);
saveRoomCacheByUid(room.getUid());

View File

@@ -16,6 +16,8 @@ import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -33,6 +35,20 @@ public class RoomMicDressServiceImpl extends ServiceImpl<RoomMicDressMapper, Roo
@Autowired
private RedissonClient redissonClient;
@Override
public List<RoomMicDress> getRoomMicDressCacheOrDbAllList() {
List<RoomMicDress> resultList = new ArrayList<>();
List<RoomMicDress> roomMicDresses = this.listRecords(RoomConstant.MicDressType.EFFECT);
if (CollectionUtils.isNotEmpty(roomMicDresses)) {
resultList.addAll(roomMicDresses);
}
List<RoomMicDress> roomMicDresses1 = this.listRecords(RoomConstant.MicDressType.SKIN);
if (CollectionUtils.isNotEmpty(roomMicDresses1)) {
resultList.addAll(roomMicDresses1);
}
return resultList;
}
@Override
public List<RoomMicDress> getRoomMicDressCacheOrDbList(Integer dressType) {
RBucket<String> cacheBucket = getCacheBucket(dressType);
@@ -59,7 +75,13 @@ public class RoomMicDressServiceImpl extends ServiceImpl<RoomMicDressMapper, Roo
private List<RoomMicDress> listRecords(Integer dressType) {
LambdaQueryWrapper<RoomMicDress> wrapper = Wrappers.lambdaQuery();
wrapper.select(RoomMicDress::getId, RoomMicDress::getDressUrl, RoomMicDress::getReachLevel)
wrapper.select(RoomMicDress::getId,
RoomMicDress::getDressType,
RoomMicDress::getReachLevel,
RoomMicDress::getNormalMicUrl,
RoomMicDress::getNormalMicLockUrl,
RoomMicDress::getBossMicUrl,
RoomMicDress::getBossMicLockUrl)
.eq(RoomMicDress::getStatus, Constant.StatusV2.valid)
.eq(RoomMicDress::getDressType, dressType)
.orderByAsc(RoomMicDress::getReachLevel);

View File

@@ -3,6 +3,7 @@ package com.accompany.business.controller.home;
import com.accompany.business.common.BaseController;
import com.accompany.business.service.client.ClientService;
import com.accompany.business.vo.AppInitVo;
import com.accompany.business.vo.AppResourceVo;
import com.accompany.business.vo.PropVo;
import com.accompany.common.config.SystemConfig;
import com.accompany.common.result.BusiResult;
@@ -49,4 +50,9 @@ public class ClientController extends BaseController {
.build());
}
@ApiOperation("APP启动拉取房间资源信息")
@GetMapping("/resource")
public BusiResult<AppResourceVo> resourceVo() {
return clientService.resourceVo();
}
}

View File

@@ -2,8 +2,10 @@ package com.accompany.business.controller.room;
import com.accompany.business.common.BaseController;
import com.accompany.business.constant.LimitTypeEnum;
import com.accompany.business.constant.RoomConstant;
import com.accompany.business.constant.RoomTypeEnum;
import com.accompany.business.model.room.RoomLevelInfo;
import com.accompany.business.model.room.RoomMicDress;
import com.accompany.business.param.RoomAdminParam;
import com.accompany.business.param.RoomParam;
import com.accompany.business.sensitvienew.SensitiveFilterUtil;
@@ -89,6 +91,8 @@ public class RoomController extends BaseController {
private RoomLevelService roomLevelService;
@Autowired
private UsersService usersService;
@Autowired
private RoomMicDressService roomMicDressService;
private RateLimiter roomGetLimiter = RateLimiter.create(1000);
@@ -236,9 +240,19 @@ public class RoomController extends BaseController {
roomVo.setRightBottomIconConfig(roomRightBottomIconService.getConfig(uid));
Users users = usersService.getUsersByUid(uid);
RoomLevelInfo roomLevelInfo = roomLevelService.getRoomLevelByRoomUid(users.getPartitionId(), uid);
Integer roomLevel = 1;
if (roomLevelInfo != null) {
roomLevel = roomLevelInfo.getLevelSeq();
roomVo.setRoomLevelIcon(roomLevelInfo.getLevelIcon());
}
RoomMicDress roomMicDress = roomMicDressService.roomMicDressUsed(RoomConstant.MicDressType.EFFECT, uid, roomLevel);
if (roomMicDress != null) {
roomVo.setUsedMicEffectId(roomMicDress.getId());
}
RoomMicDress roomMicSkin = roomMicDressService.roomMicDressUsed(RoomConstant.MicDressType.SKIN, uid, roomLevel);
if (roomMicSkin != null) {
roomVo.setUsedMicSkinId(roomMicSkin.getId());
}
return BusiResult.success(roomVo);
}

View File

@@ -45,7 +45,7 @@ public class RoomLevelController {
@Authorization
public BusiResult<Void> useMicSkinEffect(@RequestHeader(value = PUB_UID) Long uid, @RequestParam Long roomUid,
Integer micDressType, Integer micDressId) {
return roomLevelService.useMicSkinEffect(uid, roomUid, micDressType, micDressId);
return roomLevelService.useMicSkinEffect(roomUid, micDressType, micDressId);
}
@ApiImplicitParams({