From 058b15be40c09344b1df6126a4d96b1342e6461f Mon Sep 17 00:00:00 2001 From: khalil <842328916@qq.com> Date: Mon, 4 Aug 2025 19:39:11 +0800 Subject: [PATCH] =?UTF-8?q?sud=E5=B0=8F=E6=B8=B8=E6=88=8F-vo-=E9=97=A8?= =?UTF-8?q?=E7=A5=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../accompany/common/constant/Constant.java | 2 + .../dto/miniGame/MiniGameLudoConfigDto.java | 16 +++ .../business/vo/miniGame/MiniGameNavVo.java | 25 +++++ .../business/vo/miniGame/MiniGameVo.java | 102 +++++++++++++++--- .../miniGame/MiniGameForNavService.java | 4 +- .../service/miniGame/MiniGameService.java | 4 +- .../impl/MiniGameForNavServiceImpl.java | 18 ++-- .../miniGame/impl/MiniGameLudoService.java | 38 +++++++ .../miniGame/impl/MiniGameServiceImpl.java | 64 ++++++++++- .../miniGame/MiniGameController.java | 60 +++-------- .../miniGame/MiniGameForNavController.java | 4 +- 11 files changed, 260 insertions(+), 77 deletions(-) create mode 100644 accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/dto/miniGame/MiniGameLudoConfigDto.java create mode 100644 accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/miniGame/MiniGameNavVo.java create mode 100644 accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/miniGame/impl/MiniGameLudoService.java diff --git a/accompany-base/accompany-core/src/main/java/com/accompany/common/constant/Constant.java b/accompany-base/accompany-core/src/main/java/com/accompany/common/constant/Constant.java index 1beb4a298..b9c1c9687 100644 --- a/accompany-base/accompany-core/src/main/java/com/accompany/common/constant/Constant.java +++ b/accompany-base/accompany-core/src/main/java/com/accompany/common/constant/Constant.java @@ -1388,6 +1388,8 @@ public class Constant { public static final String OFFICIAL_GOLD_ROLE_LIMIT_CONFIG = "official_gold_role_limit_config"; public static final String GAME_USD_TO_RECHARGE_USER_LIMIT = "game_usd_to_recharge_user_limit"; + + public static final String MINI_GAME_SUD_LUDO_CONFIG = "mini_game_sud_ludo_config"; } public static class WithDrawStatus { diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/dto/miniGame/MiniGameLudoConfigDto.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/dto/miniGame/MiniGameLudoConfigDto.java new file mode 100644 index 000000000..d42cd2f6f --- /dev/null +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/dto/miniGame/MiniGameLudoConfigDto.java @@ -0,0 +1,16 @@ +package com.accompany.business.dto.miniGame; + +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Map; + +@Data +public class MiniGameLudoConfigDto { + + private String mgIdStr; + private Map partitionMap; + private Boolean canWithoutTicket; + private BigDecimal ticket; + +} diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/miniGame/MiniGameNavVo.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/miniGame/MiniGameNavVo.java new file mode 100644 index 000000000..206292aca --- /dev/null +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/miniGame/MiniGameNavVo.java @@ -0,0 +1,25 @@ +package com.accompany.business.vo.miniGame; + +import com.accompany.business.model.miniGame.MiniGame; +import lombok.Data; + +import java.util.List; + +/** + * @author: liaozetao + * @date: 2024/5/20 10:29 + * @description: + */ +@Data +public class MiniGameNavVo extends MiniGame { + + /** + * 游戏模式 + */ + private List gameModes; + + /** + * 房间内ICON + */ + private String gameRoomIcon; +} diff --git a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/miniGame/MiniGameVo.java b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/miniGame/MiniGameVo.java index bf6f4cf99..c3680268f 100644 --- a/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/miniGame/MiniGameVo.java +++ b/accompany-business/accompany-business-sdk/src/main/java/com/accompany/business/vo/miniGame/MiniGameVo.java @@ -1,25 +1,103 @@ package com.accompany.business.vo.miniGame; -import com.accompany.business.model.miniGame.MiniGame; +import com.accompany.common.annotation.ReplaceAppDomain; +import com.accompany.core.annotation.I18n; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import java.util.List; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; -/** - * @author: liaozetao - * @date: 2024/5/20 10:29 - * @description: - */ +@ApiModel @Data -public class MiniGameVo extends MiniGame { +public class MiniGameVo { + /** + * 第三方游戏ID + */ + @ApiModelProperty("第三方游戏ID") + @TableId(value = "mg_id", type = IdType.INPUT) + private Long mgId; /** - * 游戏模式 + * 游戏id字符串(避免js丢失精度问题) */ - private List gameModes; + @ApiModelProperty("游戏id字符串(避免js丢失精度问题)") + private String mgIdStr; /** - * 房间内ICON + * 游戏名称 */ - private String gameRoomIcon; + @ApiModelProperty("游戏名称") + @I18n(className = "MiniGame", fieldName = "name") + private String name; + + /** + * 图片 + */ + @ApiModelProperty("图片") + @I18n(className = "MiniGame", fieldName = "pic") + @ReplaceAppDomain + private String pic; + + /** + * 图片2 + */ + @ApiModelProperty("图片2") + @I18n(className = "MiniGame", fieldName = "pic2") + @ReplaceAppDomain + private String pic2; + + /** + * 是否展示 + */ + @ApiModelProperty("是否展示") + private Boolean isShow; + + /** + * 顺序 + */ + @ApiModelProperty("顺序") + private Integer seq; + + /** + * 游戏房麦位数量 + */ + @ApiModelProperty("游戏房麦位数量") + private Integer micNum; + + /** + * 游戏配置 + */ + @ApiModelProperty("游戏配置") + private String configJson; + + /** + * 是否限制 + */ + @ApiModelProperty("是否限制") + private Integer isAuthority; + + /** + * 角色标识 0b1 房主 0b10 管理员 + */ + @ApiModelProperty("角色标识 0b1 房主 0b10 管理员") + private Integer roleFlag; + + /** + * 房间标识 0b1 游戏房 0b10 牌照房 0b100 普通房 + */ + @ApiModelProperty("房间标识 0b1 游戏房 0b10 牌照房 0b100 普通房") + private Integer roomFlag; + + @ApiModelProperty("是否可以不需要门票就玩") + private Boolean canWithoutTicket; + + @ApiModelProperty("门票") + private BigDecimal ticket; + } diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/miniGame/MiniGameForNavService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/miniGame/MiniGameForNavService.java index 9471a078d..76938ee56 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/miniGame/MiniGameForNavService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/miniGame/MiniGameForNavService.java @@ -3,7 +3,7 @@ package com.accompany.business.service.miniGame; import com.accompany.business.dto.miniGame.MiniGameForNavConfigDto; import com.accompany.business.model.miniGame.MiniGameMatch; import com.accompany.business.vo.chat.ChatRoomVo; -import com.accompany.business.vo.miniGame.MiniGameVo; +import com.accompany.business.vo.miniGame.MiniGameNavVo; /** * @author: liaozetao @@ -16,7 +16,7 @@ public interface MiniGameForNavService { * 获取游戏配置 * @return */ - MiniGameVo getConfig(); + MiniGameNavVo getConfig(); /** * 开始游戏 diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/miniGame/MiniGameService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/miniGame/MiniGameService.java index 4b726594a..0a4cda14e 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/miniGame/MiniGameService.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/miniGame/MiniGameService.java @@ -2,6 +2,7 @@ package com.accompany.business.service.miniGame; import com.accompany.business.model.miniGame.MiniGame; +import com.accompany.business.vo.miniGame.MiniGameVo; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; @@ -17,7 +18,6 @@ public interface MiniGameService extends IService { MiniGame queryMiniGameByMgId(Long mgId); - List queryMiniGameByMgIdList(List mgIdList); List miniGameListByIsSHow(boolean isShow); @@ -25,5 +25,7 @@ public interface MiniGameService extends IService { List miniGameAllList(Integer partitionFlag); Integer getMiniGameMinMicNum(); + + List listVoByRoomUid(Long uid, Long roomUid); } diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/miniGame/impl/MiniGameForNavServiceImpl.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/miniGame/impl/MiniGameForNavServiceImpl.java index 4154027de..8ba41b028 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/miniGame/impl/MiniGameForNavServiceImpl.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/miniGame/impl/MiniGameForNavServiceImpl.java @@ -27,7 +27,7 @@ import com.accompany.business.service.user.UserInRoomService; import com.accompany.business.service.user.UsersService; import com.accompany.business.vo.chat.ChatRoomVo; import com.accompany.business.vo.miniGame.GameModePlayVo; -import com.accompany.business.vo.miniGame.MiniGameVo; +import com.accompany.business.vo.miniGame.MiniGameNavVo; import com.accompany.common.constant.Constant; import com.accompany.common.netease.ErBanNetEaseService; import com.accompany.common.redis.RedisKey; @@ -117,29 +117,29 @@ public class MiniGameForNavServiceImpl implements MiniGameForNavService { private RedissonClient redissonClient; @Override - public MiniGameVo getConfig() { + public MiniGameNavVo getConfig() { MiniGameForNavConfigDto config = getConfigDto(); String mgId = config.getMgId(); - MiniGameVo miniGameVo = new MiniGameVo(); + MiniGameNavVo miniGameNavVo = new MiniGameNavVo(); MiniGame miniGame = miniGameService.getOne(Wrappers.lambdaQuery() .eq(MiniGame::getMgIdStr, mgId), false); if (null == miniGame){ - return miniGameVo; + return miniGameNavVo; } - BeanUtils.copyProperties(miniGame, miniGameVo); + BeanUtils.copyProperties(miniGame, miniGameNavVo); String locale = LocaleContextHolder.getLocale().getLanguage(); Map gameIcon = config.getGameIcon(); if (CollectionUtil.isNotEmpty(gameIcon)) { - miniGameVo.setPic(gameIcon.get(locale)); + miniGameNavVo.setPic(gameIcon.get(locale)); } Map gameRoomIcon = config.getGameRoomIcon(); if (CollectionUtil.isNotEmpty(gameRoomIcon)) { - miniGameVo.setGameRoomIcon(gameRoomIcon.get(locale)); + miniGameNavVo.setGameRoomIcon(gameRoomIcon.get(locale)); } List gameModes = new ArrayList<>(); @@ -179,9 +179,9 @@ public class MiniGameForNavServiceImpl implements MiniGameForNavService { gameModes.add(gameModePlay); } - miniGameVo.setGameModes(gameModes); + miniGameNavVo.setGameModes(gameModes); - return miniGameVo; + return miniGameNavVo; } @Transactional(rollbackFor = Exception.class) diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/miniGame/impl/MiniGameLudoService.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/miniGame/impl/MiniGameLudoService.java new file mode 100644 index 000000000..b1a4943be --- /dev/null +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/miniGame/impl/MiniGameLudoService.java @@ -0,0 +1,38 @@ +package com.accompany.business.service.miniGame.impl; + +import com.accompany.business.dto.miniGame.MiniGameLudoConfigDto; +import com.accompany.common.constant.Constant; +import com.accompany.common.status.BusiStatus; +import com.accompany.core.exception.ServiceException; +import com.accompany.core.service.SysConfService; +import com.alibaba.fastjson.JSON; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +@Service +public class MiniGameLudoService { + + @Autowired + private SysConfService sysConfService; + + public MiniGameLudoConfigDto getConfig(){ + String configStr = sysConfService.getSysConfValueById(Constant.SysConfId.MINI_GAME_SUD_LUDO_CONFIG); + if (!StringUtils.hasText(configStr)){ + throw new ServiceException(BusiStatus.ALREADY_NOTEXISTS_CONFIG); + } + return JSON.parseObject(configStr, MiniGameLudoConfigDto.class); + } + + public MiniGameLudoConfigDto getConfigByPartitionId(int partitionId){ + MiniGameLudoConfigDto configDto = getConfig(); + if (!configDto.getPartitionMap().containsKey(partitionId)){ + return configDto; + } + MiniGameLudoConfigDto partitionConfigDto = configDto.getPartitionMap().get(partitionId); + partitionConfigDto.setMgIdStr(configDto.getMgIdStr()); + return partitionConfigDto; + } + + +} diff --git a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/miniGame/impl/MiniGameServiceImpl.java b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/miniGame/impl/MiniGameServiceImpl.java index 0e91fb137..aaca7881e 100644 --- a/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/miniGame/impl/MiniGameServiceImpl.java +++ b/accompany-business/accompany-business-service/src/main/java/com/accompany/business/service/miniGame/impl/MiniGameServiceImpl.java @@ -1,16 +1,27 @@ package com.accompany.business.service.miniGame.impl; import cn.hutool.core.collection.CollectionUtil; -import com.accompany.business.config.BaiShunMiniGameConfig; +import com.accompany.business.constant.RoomTypeEnum; +import com.accompany.business.constant.game.MiniGameRoomFlagConstant; +import com.accompany.business.dto.miniGame.MiniGameLudoConfigDto; import com.accompany.business.model.miniGame.MiniGame; import com.accompany.business.mybatismapper.miniGame.MiniGameMapper; import com.accompany.business.service.miniGame.MiniGameService; +import com.accompany.business.service.room.RoomService; +import com.accompany.business.service.user.UsersService; +import com.accompany.business.vo.miniGame.MiniGameNavVo; +import com.accompany.business.vo.miniGame.MiniGameVo; +import com.accompany.core.base.UidContextHolder; +import com.accompany.core.model.Room; +import com.accompany.core.model.Users; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -26,9 +37,55 @@ public class MiniGameServiceImpl extends ServiceImpl i @Autowired private MiniGameMapper miniGameMapper; - @Autowired - private BaiShunMiniGameConfig baiShunMiniGameConfig; + private UsersService usersService; + @Autowired + private RoomService roomService; + @Autowired + private MiniGameLudoService miniGameLudoService; + + @Override + public List listVoByRoomUid(Long uid, Long roomUid) { + List poList = miniGameListByIsSHow(true); + if (CollectionUtil.isEmpty(poList)) { + return Collections.emptyList(); + } + Users users = usersService.getNotNullUsersByUid(uid); + Integer partitionId = users.getPartitionId(); + poList = poList.stream().filter(v -> v.getPartitionFlag() == null || v.getPartitionFlag() == 0 || (v.getPartitionFlag() & partitionId) != 0).collect(Collectors.toList()); + + if (roomUid != null) { + Room room = roomService.getRoomByUid(roomUid); + if (room != null) { + Byte roomType = room.getType(); + poList = poList.stream().filter(v -> { + Integer roomFlag = v.getRoomFlag(); + if (roomFlag == null || roomFlag == 0) { + return true; + } + if ((roomFlag & MiniGameRoomFlagConstant.MINI_GAME) != 0) { + return roomType.equals(RoomTypeEnum.MINI_GAME.getCode()); + } + if ((roomFlag & MiniGameRoomFlagConstant.PERMIT) != 0 || (roomFlag & MiniGameRoomFlagConstant.NOT_PERMIT) != 0) { + return roomType.equals(RoomTypeEnum.NORMAL.getCode()); + } + return true; + }).collect(Collectors.toList()); + } + } + + MiniGameLudoConfigDto ludoConfigDto = miniGameLudoService.getConfigByPartitionId(partitionId); + + return poList.stream().map(miniGame -> { + MiniGameVo vo = new MiniGameVo(); + BeanUtils.copyProperties(miniGame, vo); + if (miniGame.getMgIdStr().equals(ludoConfigDto.getMgIdStr())) { + vo.setCanWithoutTicket(ludoConfigDto.getCanWithoutTicket()); + vo.setTicket(ludoConfigDto.getTicket()); + } + return vo; + }).toList(); + } public MiniGame queryMiniGameByMgId(Long mgId) { QueryWrapper queryWrapper = new QueryWrapper<>(); @@ -67,4 +124,5 @@ public class MiniGameServiceImpl extends ServiceImpl i public Integer getMiniGameMinMicNum() { return miniGameMapper.getMiniGameMinMicNum(); } + } \ No newline at end of file diff --git a/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/miniGame/MiniGameController.java b/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/miniGame/MiniGameController.java index ee512a0e1..c311102da 100644 --- a/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/miniGame/MiniGameController.java +++ b/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/miniGame/MiniGameController.java @@ -1,18 +1,13 @@ package com.accompany.business.controller.miniGame; -import cn.hutool.core.collection.CollectionUtil; import com.accompany.business.common.BaseController; -import com.accompany.business.constant.RoomTypeEnum; -import com.accompany.business.constant.game.MiniGameRoomFlagConstant; -import com.accompany.business.model.miniGame.MiniGame; import com.accompany.business.service.miniGame.MiniGameService; -import com.accompany.business.service.room.RoomService; +import com.accompany.business.vo.miniGame.MiniGameVo; +import com.accompany.common.annotation.Authorization; import com.accompany.common.result.BusiResult; -import com.accompany.core.base.UidContextHolder; -import com.accompany.core.model.Room; -import com.accompany.core.model.Users; -import com.accompany.core.service.user.UsersBaseService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; @@ -20,7 +15,6 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; -import java.util.stream.Collectors; /** @@ -37,46 +31,16 @@ public class MiniGameController extends BaseController { @Autowired private MiniGameService miniGameService; - @Autowired - private UsersBaseService usersBaseService; - - @Autowired - private RoomService roomService; - @ApiOperation("游戏列表") + @ApiImplicitParams({ + @ApiImplicitParam(name = "userErBanNo", value = "用户平台ID"), + }) + @Authorization @PostMapping("/miniGameList") - public BusiResult> miniGameShowList(Long roomUid) { - List miniGames = miniGameService.miniGameListByIsSHow(true); - if (CollectionUtil.isNotEmpty(miniGames)) { - Long uid = UidContextHolder.get(); - if (uid != null) { - Users users = usersBaseService.getUsersByUid(uid); - if (users != null) { - Integer partitionId = users.getPartitionId(); - miniGames = miniGames.stream().filter(v -> v.getPartitionFlag() == null || v.getPartitionFlag() == 0 || (v.getPartitionFlag() & partitionId) != 0).collect(Collectors.toList()); - } - } - if (roomUid != null) { - Room room = roomService.getRoomByUid(roomUid); - if (room != null) { - Byte roomType = room.getType(); - miniGames = miniGames.stream().filter(v -> { - Integer roomFlag = v.getRoomFlag(); - if (roomFlag == null || roomFlag == 0) { - return true; - } - if ((roomFlag & MiniGameRoomFlagConstant.MINI_GAME) != 0) { - return roomType.equals(RoomTypeEnum.MINI_GAME.getCode()); - } - if ((roomFlag & MiniGameRoomFlagConstant.PERMIT) != 0 || (roomFlag & MiniGameRoomFlagConstant.NOT_PERMIT) != 0) { - return roomType.equals(RoomTypeEnum.NORMAL.getCode()); - } - return true; - }).collect(Collectors.toList()); - } - } - } - return BusiResult.success(miniGames); + public BusiResult> miniGameShowList(Long roomUid) { + Long uid = getUid(); + List voList = miniGameService.listVoByRoomUid(uid, roomUid); + return BusiResult.success(voList); } } diff --git a/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/miniGame/MiniGameForNavController.java b/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/miniGame/MiniGameForNavController.java index 497e3b13f..14898be98 100644 --- a/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/miniGame/MiniGameForNavController.java +++ b/accompany-business/accompany-business-web/src/main/java/com/accompany/business/controller/miniGame/MiniGameForNavController.java @@ -3,7 +3,7 @@ package com.accompany.business.controller.miniGame; import com.accompany.business.service.chat.ChatRoomManageService; import com.accompany.business.service.miniGame.MiniGameForNavService; import com.accompany.business.vo.chat.ChatRoomVo; -import com.accompany.business.vo.miniGame.MiniGameVo; +import com.accompany.business.vo.miniGame.MiniGameNavVo; import com.accompany.common.result.BusiResult; import com.accompany.core.base.UidContextHolder; import io.swagger.annotations.Api; @@ -37,7 +37,7 @@ public class MiniGameForNavController { */ @ApiOperation("游戏配置") @GetMapping("/config") - public BusiResult config() { + public BusiResult config() { return BusiResult.success(miniGameForNavService.getConfig()); }