From 96a6e0d312a35f4e9fc16d0c6c757768b9bfeb6e Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Mon, 24 Jun 2024 11:18:09 +0800 Subject: [PATCH] websocket推送消息 --- src/main/java/cc/mrbird/febs/mall/vo/ApiGamePlayerVo.java | 48 src/main/java/cc/mrbird/febs/mall/service/impl/GameServiceImpl.java | 795 +++++++++++++ src/main/java/cc/mrbird/febs/mall/vo/MyTeamVo.java | 9 src/main/java/cc/mrbird/febs/mall/vo/ApiEndGameVo.java | 14 src/main/java/cc/mrbird/febs/mall/mapper/GameRoomChildMapper.java | 7 src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java | 4 src/main/java/cc/mrbird/febs/mall/controller/ApiGameController.java | 58 + src/main/java/cc/mrbird/febs/mall/vo/ApiRegisterVo.java | 2 src/main/java/cc/mrbird/febs/mall/vo/ApiStartGameVo.java | 29 src/main/java/cc/mrbird/febs/mall/dto/ApiFlashGameDto.java | 16 src/main/java/cc/mrbird/febs/mall/vo/MyFcmTeamVo.java | 33 src/main/resources/mapper/modules/MallMoneyFlowMapper.xml | 36 src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java | 4 src/main/java/cc/mrbird/febs/mall/entity/GameGame.java | 34 src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java | 2 src/main/resources/mapper/modules/MallMemberMapper.xml | 13 src/main/java/cc/mrbird/febs/mall/dto/ApiCreateRoomDto.java | 22 src/main/java/cc/mrbird/febs/mall/mapper/GameGameChildMapper.java | 7 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 269 +--- src/main/java/cc/mrbird/febs/mall/vo/ApiNextGameVo.java | 47 src/main/java/cc/mrbird/febs/mall/vo/ApiCreateRoomVo.java | 23 src/main/java/cc/mrbird/febs/mall/dto/ApiGameDto.java | 17 src/main/java/cc/mrbird/febs/mall/dto/ApiNextGameDto.java | 16 src/main/java/cc/mrbird/febs/mall/dto/ApiChooseNumDto.java | 32 src/main/java/cc/mrbird/febs/mall/vo/RoomTypeVo.java | 24 src/main/java/cc/mrbird/febs/mall/entity/GameRoomChild.java | 18 src/main/java/cc/mrbird/febs/mall/vo/ApiFlashGameVo.java | 45 src/main/java/cc/mrbird/febs/mall/vo/MoneyFlowVo.java | 3 src/main/java/cc/mrbird/febs/mall/mapper/GameGameMapper.java | 7 src/main/java/cc/mrbird/febs/mall/dto/ApiEndGameDto.java | 21 src/main/java/cc/mrbird/febs/mall/dto/RegisterDto.java | 8 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java | 7 src/main/java/cc/mrbird/febs/mall/vo/ApiGameGameVo.java | 27 src/main/java/cc/mrbird/febs/common/enumerates/GameRoomTypeEnum.java | 69 + src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java | 215 --- src/main/java/cc/mrbird/febs/common/enumerates/GameFlowTypeEnum.java | 24 src/main/java/cc/mrbird/febs/mall/dto/ApiExistGameDto.java | 17 src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java | 7 src/main/java/cc/mrbird/febs/mall/controller/ApiGamePlayerController.java | 73 + src/main/resources/templates/febs/views/modules/mallMember/mallSystemPay.html | 10 src/main/java/cc/mrbird/febs/mall/service/GameService.java | 48 src/test/java/cc/mrbird/febs/AgentTest.java | 603 ---------- src/main/java/cc/mrbird/febs/mall/controller/ApiLoginController.java | 58 src/main/java/cc/mrbird/febs/mall/mapper/GameRoomMapper.java | 7 src/main/java/cc/mrbird/febs/mall/service/impl/MallMoneyFlowServiceImpl.java | 5 src/main/java/cc/mrbird/febs/mall/dto/MoneyFlowDto.java | 9 src/main/java/cc/mrbird/febs/common/enumerates/GamePNGEnum.java | 57 + src/main/java/cc/mrbird/febs/mall/entity/GameRoom.java | 23 src/main/java/cc/mrbird/febs/mall/dto/ApiStartGameDto.java | 16 src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html | 304 ----- src/main/java/cc/mrbird/febs/mall/entity/GameGameChild.java | 31 src/main/java/cc/mrbird/febs/mall/vo/AdminMallMemberVo.java | 1 src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java | 96 - src/main/java/cc/mrbird/febs/mall/entity/MallMember.java | 2 src/main/java/cc/mrbird/febs/common/utils/AppContants.java | 3 src/main/java/cc/mrbird/febs/common/interceptor/LoginInterceptor.java | 2 src/main/java/cc/mrbird/febs/mall/service/IMallMoneyFlowService.java | 2 57 files changed, 1,873 insertions(+), 1,506 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java b/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java index 290be41..af62871 100644 --- a/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java +++ b/src/main/java/cc/mrbird/febs/common/configure/WebMvcConfigure.java @@ -20,8 +20,7 @@ registration.addPathPatterns("/api/**"); registration.excludePathPatterns("/api/login/register"); registration.excludePathPatterns("/api/login/toLogin"); - registration.excludePathPatterns("/api/login/pwdForget"); - registration.excludePathPatterns("/api/login/addRegisterAppeal"); + registration.excludePathPatterns("/api/login/roomType"); registration.excludePathPatterns("/api/common/**"); registration.excludePathPatterns("/api/category/**"); registration.excludePathPatterns("/api/goods/**"); @@ -32,10 +31,6 @@ registration.excludePathPatterns("/api/unipay/agreeMentPayCallBack"); registration.excludePathPatterns("/api/unipay/singlePayCallBack"); registration.excludePathPatterns("/api/order/myScoreSet"); - registration.excludePathPatterns("/api/login/createAccount"); - registration.excludePathPatterns("/api/login/createKey"); - registration.excludePathPatterns("/api/login/memberSpeak"); -// registration.excludePathPatterns("/api/member/teamFcmList"); } @Override diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/GameFlowTypeEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/GameFlowTypeEnum.java new file mode 100644 index 0000000..683dacd --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/enumerates/GameFlowTypeEnum.java @@ -0,0 +1,24 @@ +package cc.mrbird.febs.common.enumerates; + +import lombok.Getter; + +/** + * + * @author wzy + * @date 2021-09-24 + **/ +@Getter +public enum GameFlowTypeEnum { + PLAYER_CHARGE(4,"充值"), + OWNER_PERK(3,"开奖结果:{},{}"), + PLAYER_PERK(2,"开奖结果:{},{},您的选择:{}"), + PLAYER_PICK_NUM(1,"房间:{},选择:{}"); + + private int value; + private String descrition; + + GameFlowTypeEnum(int value, String descrition) { + this.value = value; + this.descrition = descrition; + } +} diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/GamePNGEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/GamePNGEnum.java new file mode 100644 index 0000000..089f2da --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/enumerates/GamePNGEnum.java @@ -0,0 +1,57 @@ +package cc.mrbird.febs.common.enumerates; + +import lombok.Getter; + +import java.util.ArrayList; +import java.util.List; + +@Getter +public enum GamePNGEnum { + + HU_LU(6, "葫芦",6), + XIA(5, "虾",5), + PANG_XIE(4, "螃蟹",4), + YU(3, "鱼",3), + LAO_HU(2, "老虎",2), + SHI_ZI(1, "狮子",1); + + private Integer pngCode;//号码 + private String pngName;//名称 + private Integer pngTimes;//倍数 + + GamePNGEnum(Integer pngCode,String pngName,Integer pngTimes) { + this.pngCode = pngCode; + this.pngName = pngName; + this.pngTimes = pngTimes; + } + + /** + * 获取全部列表 + * @return + */ + public List<GamePNGEnum> getGamePng() { + List<GamePNGEnum> objects = new ArrayList<>(); + for (GamePNGEnum value : GamePNGEnum.values()) { + objects.add(value); + } + return objects; + } + + public GamePNGEnum getPng(int pngCode) { + for (GamePNGEnum value : GamePNGEnum.values()) { + if (value.pngCode == pngCode) { + return value; + } + } + return null; + } + + public String getPngName(int pngCode) { + for (GamePNGEnum value : GamePNGEnum.values()) { + if (value.pngCode == pngCode) { + return value.pngName; + } + } + return null; + } +} diff --git a/src/main/java/cc/mrbird/febs/common/enumerates/GameRoomTypeEnum.java b/src/main/java/cc/mrbird/febs/common/enumerates/GameRoomTypeEnum.java new file mode 100644 index 0000000..6e56b68 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/enumerates/GameRoomTypeEnum.java @@ -0,0 +1,69 @@ +package cc.mrbird.febs.common.enumerates; + +import lombok.Getter; + +import java.util.ArrayList; +import java.util.List; + +@Getter +public enum GameRoomTypeEnum { + /** + private String roomName;//名称 + private Integer roomType;//房间类型 1-初级房2-土豪房3-尊爵房 + private BigDecimal roomAmount;//进入最小金额 + private BigDecimal minAmount;//投注最小金额 + private BigDecimal maxAmount;//投注最大金额 + + private List<BigDecimal> amounts;//投注金额 + */ + + ROOM_THREE("ROOM_THREE", "尊爵房",3,20000,1000,5000,"1000,2000,3000,4000,5000"), + ROOM_TWO("ROOM_TWO", "土豪房",2,5000,100,500,"100,200,300,400,500"), + ROOM_ONE("ROOM_ONE", "初级房",1,1000,10,50,"10,20,30,40,50"); + + private String roomCode;//名称 + private String roomName;//名称 + private Integer roomType;//房间类型 1-初级房2-土豪房3-尊爵房 + private Integer roomAmount;//进入最小金额 + private Integer minAmount;//投注最小金额 + private Integer maxAmount;//投注最大金额 + + private String amounts;//投注金额 + + GameRoomTypeEnum(String roomCode, + String roomName, + Integer roomType, + Integer roomAmount, + Integer minAmount, + Integer maxAmount, + String amounts) { + this.roomCode = roomCode; + this.roomName = roomName; + this.roomType = roomType; + this.roomAmount = roomAmount; + this.minAmount = minAmount; + this.maxAmount = maxAmount; + this.amounts = amounts; + } + + /** + * 获取全部列表 + * @return + */ + public List<GameRoomTypeEnum> getRoomList() { + List<GameRoomTypeEnum> objects = new ArrayList<>(); + for (GameRoomTypeEnum value : GameRoomTypeEnum.values()) { + objects.add(value); + } + return objects; + } + + public GameRoomTypeEnum getRoom(int roomType) { + for (GameRoomTypeEnum value : GameRoomTypeEnum.values()) { + if (value.roomType == roomType) { + return value; + } + } + return null; + } +} diff --git a/src/main/java/cc/mrbird/febs/common/interceptor/LoginInterceptor.java b/src/main/java/cc/mrbird/febs/common/interceptor/LoginInterceptor.java index f18ea04..5f01f06 100644 --- a/src/main/java/cc/mrbird/febs/common/interceptor/LoginInterceptor.java +++ b/src/main/java/cc/mrbird/febs/common/interceptor/LoginInterceptor.java @@ -92,7 +92,7 @@ boolean isDebug = true; if (!isDebug) { long currentTime = System.currentTimeMillis(); - return currentTime - time <= 30000; + return currentTime - time <= 3600000; } return true; } diff --git a/src/main/java/cc/mrbird/febs/common/utils/AppContants.java b/src/main/java/cc/mrbird/febs/common/utils/AppContants.java index 9dfe49a..d833bda 100644 --- a/src/main/java/cc/mrbird/febs/common/utils/AppContants.java +++ b/src/main/java/cc/mrbird/febs/common/utils/AppContants.java @@ -85,4 +85,7 @@ public static final int MEMBER_FLOW_DONE = 2; + public static final int MEMBER_PARTNER_YES = 1; + public static final int MEMBER_PARTNER_NO = 2; + } diff --git a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java index 84d5b96..7b8609b 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/AdminMallMemberController.java @@ -646,9 +646,7 @@ String account = new StringBuilder().append("bbsz").append(ShareCodeUtil.toSerialNumberCode(selectCount)).toString(); String key = ShareCodeUtil.toSerialNumberCode(selectCount); registerDto.setAccountLogin(account); - registerDto.setUserKey(key); registerDto.setPassword("a123456"); - registerDto.setTradePassword("123456"); registerDto.setInviteId(member.getInviteId()); apiMallMemberService.register(registerDto); return new FebsResponse().success(); diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiGameController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiGameController.java new file mode 100644 index 0000000..e9d0a85 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiGameController.java @@ -0,0 +1,58 @@ +package cc.mrbird.febs.mall.controller; + +import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.mall.dto.*; +import cc.mrbird.febs.mall.service.GameService; +import cc.mrbird.febs.mall.vo.*; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +/** + * @author wzy + * @date 2021-09-16 + **/ +@Slf4j +@RestController +@CrossOrigin("*") +@RequestMapping(value = "/api/gameOwner") +@RequiredArgsConstructor +@Api(value = "ApiGameController", tags = "GUESS游戏房主接口类") +public class ApiGameController { + + private final GameService gameService; + + @ApiOperation(value = "GUESS创建房间", notes = "GUESS创建房间") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiCreateRoomVo.class) + }) + @PostMapping(value = "/createRoom") + public FebsResponse createRoom(@RequestBody @Valid ApiCreateRoomDto apiCreateRoomDto) { + return gameService.createRoom(apiCreateRoomDto); + } + + @ApiOperation(value = "GUESS点击开始", notes = "GUESS点击开始") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiStartGameVo.class) + }) + @PostMapping(value = "/startGame") + public FebsResponse startGame(@RequestBody @Valid ApiStartGameDto startGameDto) { + return gameService.startGame(startGameDto); + } + + @ApiOperation(value = "GUESS点击结束", notes = "GUESS点击结束") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiEndGameVo.class) + }) + @PostMapping(value = "/endGame") + public FebsResponse endGame(@RequestBody @Valid ApiEndGameDto endGameDto) { + return gameService.endGame(endGameDto); + } + +} diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiGamePlayerController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiGamePlayerController.java new file mode 100644 index 0000000..cadbef9 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiGamePlayerController.java @@ -0,0 +1,73 @@ +package cc.mrbird.febs.mall.controller; + +import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.mall.dto.*; +import cc.mrbird.febs.mall.service.GameService; +import cc.mrbird.febs.mall.vo.ApiCreateRoomVo; +import cc.mrbird.febs.mall.vo.ApiFlashGameVo; +import cc.mrbird.febs.mall.vo.ApiGamePlayerVo; +import cc.mrbird.febs.mall.vo.ApiNextGameVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +/** + * @author wzy + * @date 2021-09-16 + **/ +@Slf4j +@RestController +@CrossOrigin("*") +@RequestMapping(value = "/api/gamePlayer") +@RequiredArgsConstructor +@Api(value = "ApiGamePlayerController", tags = "GUESS游戏玩家接口类") +public class ApiGamePlayerController { + + private final GameService gameService; + + @ApiOperation(value = "GUESS进入游戏", notes = "GUESS进入游戏") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiGamePlayerVo.class) + }) + @PostMapping(value = "/gameIn") + public FebsResponse gameIn(@RequestBody @Valid ApiGameDto apiGameDto) { + return gameService.gameIn(apiGameDto); + } + + @ApiOperation(value = "GUESS投注", notes = "GUESS投注") + @PostMapping(value = "/chooseNum") + public FebsResponse chooseNum(@RequestBody @Valid ApiChooseNumDto apiChooseNumDto) { + return gameService.chooseNum(apiChooseNumDto); + } + + @ApiOperation(value = "GUESS刷新当前一局", notes = "GUESS刷新当前一局") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiNextGameVo.class) + }) + @PostMapping(value = "/nextGame") + public FebsResponse nextGame(@RequestBody @Valid ApiNextGameDto apiNextGameDto) { + return gameService.nextGame(apiNextGameDto); + } + + @ApiOperation(value = "GUESS刷新当前投注信息", notes = "GUESS刷新当前投注信息") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = ApiFlashGameVo.class) + }) + @PostMapping(value = "/flashGame") + public FebsResponse flashGame(@RequestBody @Valid ApiFlashGameDto apiFlashGameDto) { + return gameService.flashGame(apiFlashGameDto); + } + + @ApiOperation(value = "GUESS退出", notes = "GUESS退出") + @PostMapping(value = "/existGame") + public FebsResponse existGame(@RequestBody @Valid ApiExistGameDto apiExistGameDto) { + return gameService.existGame(apiExistGameDto); + } + +} diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiLoginController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiLoginController.java index b01e47e..40fe4a9 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ApiLoginController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiLoginController.java @@ -3,9 +3,12 @@ import cc.mrbird.febs.common.annotation.Limit; import cc.mrbird.febs.common.entity.FebsResponse; import cc.mrbird.febs.mall.dto.*; +import cc.mrbird.febs.mall.service.GameService; import cc.mrbird.febs.mall.service.IApiMallMemberService; import cc.mrbird.febs.mall.vo.ApiRegisterVo; import cc.mrbird.febs.mall.vo.MallMemberPaymentVo; +import cc.mrbird.febs.mall.vo.MallMemberVo; +import cc.mrbird.febs.mall.vo.RoomTypeVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiResponse; @@ -26,26 +29,13 @@ @RequiredArgsConstructor @RestController @RequestMapping(value = "/api/login") -@Api(value = "ApiLoginController", tags = "登录注册类") +@Api(value = "ApiLoginController", tags = "GUESS登录注册类") public class ApiLoginController { private final IApiMallMemberService memberService; + private final GameService gameService; - @ApiOperation(value = "FCM-点击生成账号", notes = "FCM-点击生成账号") - @GetMapping(value = "/createAccount") - @Limit(key = "createAccount", period = 60, count = 5, name = "点击生成账号", prefix = "limit") - public FebsResponse createAccount() { - return memberService.createAccount(); - } - - @ApiOperation(value = "FCM-点击生成密钥", notes = "FCM-点击生成密钥") - @GetMapping(value = "/createKey") - @Limit(key = "createKey", period = 60, count = 5, name = "点击生成密钥", prefix = "limit") - public FebsResponse createKey() { - return memberService.createKey(); - } - - @ApiOperation(value = "FCM-app注册接口", notes = "FCM-app注册接口") + @ApiOperation(value = "GUESS注册接口", notes = "GUESS注册接口") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = ApiRegisterVo.class) }) @@ -54,39 +44,19 @@ return memberService.register(registerDto); } - - @ApiOperation(value = "FCM-账号密码登录接口", notes = "FCM-账号密码登录接口") + @ApiOperation(value = "GUESS账号密码登录接口", notes = "GUESS账号密码登录接口") @PostMapping(value = "/toLogin") public FebsResponse login(@RequestBody @Valid LoginDto loginDto) { return memberService.toLogin(loginDto); } - @ApiOperation(value = "FCM-忘记/修改密码", notes = "FCM-忘记/修改密码") - @PostMapping(value = "/forgetPwd") - public FebsResponse forgetPwd(@RequestBody @Valid ForgetPwdDto forgetPwdDto) { - return memberService.forgetPwd(forgetPwdDto); + @ApiOperation(value = "GUES获取大厅信息", notes = "GUES获取大厅信息") + @ApiResponses({ + @ApiResponse(code = 200, message = "success", response = RoomTypeVo.class) + }) + @PostMapping(value = "/roomType") + public FebsResponse roomType() { + return gameService.roomType(); } - - @ApiOperation(value = "FCM-忘记密码", notes = "FCM-忘记/修改密码") - @PostMapping(value = "/pwdForget") - public FebsResponse pwdForget(@RequestBody @Valid ForgetPwdDto forgetPwdDto) { - return memberService.pwdForget(forgetPwdDto); - } - - @ApiOperation(value = "提交注册申诉", notes = "提交注册申诉") - @PostMapping(value = "addRegisterAppeal") - public FebsResponse addRegisterAppeal(@RequestBody @Valid RegisterAppealDto registerAppeal) { - memberService.addRegisterAppeal(registerAppeal); - return new FebsResponse().success().message("申请成功"); - } - - @ApiOperation(value = "客户留言", notes = "客户留言") - @PostMapping(value = "memberSpeak") - @Limit(key = "memberSpeak", period = 60, count = 2, name = "客户留言", prefix = "limit") - public FebsResponse memberSpeak(@RequestBody @Valid ApiMemberSpeakDto memberSpeakDto) { - return memberService.memberSpeak(memberSpeakDto); - } - - } diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java index d24aea4..1a6c9f6 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java @@ -29,14 +29,14 @@ @CrossOrigin("*") @RequestMapping(value = "/api/member") @RequiredArgsConstructor -@Api(value = "ApiMallMemberController", tags = "商城用户接口类") +@Api(value = "ApiMallMemberController", tags = "GUESS用户接口类") public class ApiMallMemberController { private final IApiMallMemberService memberService; private final IMallMemberWithdrawService mallMemberWithdrawService; private final IApiMallMemberWalletService walletService; - @ApiOperation(value = "FCM-获取商城用户信息", notes = "FCM-获取商城用户信息") + @ApiOperation(value = "GUESS用户信息", notes = "GUESS用户信息") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = MallMemberVo.class) }) @@ -45,47 +45,13 @@ return memberService.findMemberInfo(); } - @ApiOperation(value = "FCM-修改用户信息") - @PostMapping(value = "/modifyInfo") - public FebsResponse modifyInfo(@RequestBody @Valid ModifyMemberInfoDto modifyMemberInfoDto) { - return memberService.modifyMemberInfo(modifyMemberInfoDto); - } - - @ApiOperation(value = "FCM-解除冻结") - @PostMapping(value = "/unfreeze") - public FebsResponse unfreeze(@RequestBody @Valid UnfreezeDto unfreezeDto) { - return memberService.unfreeze(unfreezeDto); - } - - @ApiOperation(value = "FCM-找回密钥") - @PostMapping(value = "/getKey") - public FebsResponse getKey(@RequestBody @Valid GetKeyDto getKeyDto) { - return memberService.getKey(getKeyDto); - } - - @ApiOperation(value = "FCM-获取收款信息", notes = "FCM-获取收款信息") - @ApiResponses({ - @ApiResponse(code = 200, message = "success", response = MallMemberPaymentVo.class) - }) - @GetMapping(value = "/getPayment") - public FebsResponse getPayment() { - return memberService.getPayment(); - } - - @ApiOperation(value = "FCM-修改收款信息", notes = "FCM-修改收款信息") - @PostMapping(value = "/updatePayment") - public FebsResponse updatePayment(@RequestBody @Valid UpdatePaymentDto updatePaymentDto) { - return memberService.updatePayment(updatePaymentDto); - } - - - @ApiOperation(value = "FCM-充值", notes = "FCM-充值") + @ApiOperation(value = "GUESS充值", notes = "GUESS充值") @PostMapping(value = "/chargeBalance") public FebsResponse chargeBalance(@RequestBody @Valid ApiChargeBalanceDto apiChargeBalanceDto) { return memberService.chargeBalance(apiChargeBalanceDto); } - @ApiOperation(value = "FCM-提现") + @ApiOperation(value = "GUESS提现") @PostMapping(value = "/withdrawalBalance") public FebsResponse withdrawalBalance(@RequestBody @Validated WithdrawalBalanceDto withdrawalBalanceDto) { mallMemberWithdrawService.withdrawalBalance(withdrawalBalanceDto); @@ -93,193 +59,40 @@ } - @ApiOperation(value = "FCM-推出登录", notes = "FCM-推出登录") + @ApiOperation(value = "GUESS推出登录", notes = "GUESS推出登录") @PostMapping(value = "/logout") public FebsResponse logout() { return memberService.logout(); } - @ApiOperation(value = "获取购物车、订单等角标数量") - @GetMapping(value = "/findMarkCnt") - public FebsResponse findMarkCnt() { - return memberService.findMemberMarkCnt(); - } - @ApiOperation(value = "FCM-设置支付密码") - @PostMapping(value = "/setTradePwd") - public FebsResponse setTradePwd(@RequestBody ForgetPwdDto forgetPwdDto) { - return memberService.setTradePwd(forgetPwdDto); - } - - @ApiOperation(value = "我的团队列表") + @ApiOperation(value = "GUESS我的团队规模") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = MyTeamVo.class) }) @PostMapping(value = "/teamList") - public FebsResponse teamList(@RequestBody TeamListDto teamListDto) { - return memberService.teamList(teamListDto); + public FebsResponse teamList() { + return memberService.teamList(); } - @ApiOperation(value = "FCM-我的团队列表") + + @ApiOperation(value = "GUESS我的团队详情") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = MyFcmTeamVo.class) }) - @PostMapping(value = "/teamFcmList") - public FebsResponse teamFcmList(@RequestBody TeamListDto teamListDto) { - return memberService.teamFcmList(teamListDto); + @PostMapping(value = "/teamInfo") + public FebsResponse teamInfo() { + return memberService.teamFcmList(); } - @ApiOperation(value = "FCM-资金流水列表") + @ApiOperation(value = "GUESS资金流水列表") @ApiResponses({ @ApiResponse(code = 200, message = "success", response = MoneyFlowVo.class) }) @PostMapping(value = "/moneyFlow") public FebsResponse moneyFlow(@RequestBody MoneyFlowDto moneyFlowDto) { return memberService.moneyFlows(moneyFlowDto); - } - - - @ApiOperation(value = "FCM-资金流水列表-互转记录") - @ApiResponses({ - @ApiResponse(code = 200, message = "success", response = MoneyFlowVo.class) - }) - @PostMapping(value = "/moneyFlowInside") - public FebsResponse moneyFlowInside(@RequestBody MoneyFlowDto moneyFlowDto) { - return memberService.moneyFlowInside(moneyFlowDto); - } - - @ApiOperation(value = "FCM-转账") - @PostMapping(value = "/transfer") - public FebsResponse transfer(@RequestBody @Validated TransferDto transferDto) { - memberService.transfer(transferDto); - return new FebsResponse().success().message("操作成功"); - } - - @ApiOperation(value = "提现规则", notes = "提现规则") - @ApiResponses({ - @ApiResponse(code = 200, message = "success", response = CashOutSettingVo.class) - }) - @GetMapping(value = "/cashOutSetting") - public FebsResponse cashOutSetting() { - return new FebsResponse().success().data(memberService.cashOutSetting()); - } - - @ApiOperation(value = "提现") - @PostMapping(value = "/withdrawal") - public FebsResponse withdrawal(@RequestBody @Validated WithdrawalDto withdrawalDto) { - mallMemberWithdrawService.withdrawal(withdrawalDto); - return new FebsResponse().success().message("提交成功"); - } - - @ApiOperation(value = "设置收款方式") - @PostMapping(value = "/setPayment") - public FebsResponse setPayment(@RequestBody MallMemberPayment mallMemberPayment) { - memberService.setPayment(mallMemberPayment); - return new FebsResponse().success().message("设置成功"); - } - - @ApiOperation(value = "获取收款方式") - @GetMapping(value = "/findPayment") - public FebsResponse findPayment() { - return new FebsResponse().success().data(memberService.findMemberPayment()); - } - - @ApiOperation(value = "绑定手机号") - @PostMapping(value = "/bindPhone") - public FebsResponse bindPhone(@RequestBody AccountAndCodeDto accountAndCodeDto) { - memberService.bindPhone(accountAndCodeDto); - return new FebsResponse().success().message("绑定成功"); - } - - @ApiOperation(value = "可提现金额") - @GetMapping(value = "/canWithdrawal") - public FebsResponse canWithdrawal() { - return new FebsResponse().success().data(memberService.canMoney()); - } - - @ApiOperation(value = "用户消费排名") - @PostMapping(value = "/findRankList") - public FebsResponse findRankList(@RequestBody RankListDto rankListDto) { -// return new FebsResponse().success().data(memberService.findRankList(rankListDto)); - return new FebsResponse().success(); - } - - @ApiOperation(value = "根据邀请码或者手机号获取昵称") - @PostMapping(value = "/findMemberInfoByAccount/{phone}") - public FebsResponse findMemberInfoByAccount(@PathVariable("phone") String phone) { - MallMember account = memberService.findMemberInfoByAccount(phone); - if (account == null) { - return new FebsResponse().fail().message("用户不存在"); - } - - MallMemberVo member = new MallMemberVo(); - member.setName(account.getName()); - return new FebsResponse().success().data(member); - } - - @ApiOperation(value = "佣金划转") - @PostMapping(value = "/commissionChange") - public FebsResponse commissionChange(@RequestBody @Validated CommissionChangeDto commissionChange) { - walletService.commissionChange(commissionChange); - return new FebsResponse().success(); - } - - @ApiOperation(value = "我的权益") - @ApiResponses( - @ApiResponse(code = 200, message = "success", response = MyCommissionVo.class) - ) - @PostMapping(value = "/myCommission") - public FebsResponse myCommission() { - return new FebsResponse().success().data(memberService.myCommission()); - } - - @ApiOperation(value = "商铺申请是否存在") - @PostMapping(value = "/shopApplyIsExist") - public FebsResponse shopApplyIsExist() { - return null; - } - - @ApiOperation(value = "新增银行卡") - @PostMapping(value = "/addMemberBank") - public FebsResponse addMemberBank(@RequestBody AddMemberBankDto addMemberBankDto) { - return memberService.addMemberBank(addMemberBankDto); - } - - @ApiOperation(value = "银行卡列表", notes = "银行卡列表") - @ApiResponses({ - @ApiResponse(code = 200, message = "success", response = MemberBankListVo.class) - }) - @PostMapping(value = "/memberBankList") - public FebsResponse memberBankList(@RequestBody MemberBankListDto memberBankListDto) { - return memberService.findMemberBankList(memberBankListDto); - } - - @ApiOperation(value = "银行卡详情", notes = "银行卡详情") - @ApiResponses({ - @ApiResponse(code = 200, message = "success", response = MemberBankListVo.class) - }) - @GetMapping(value = "/memberBankDetails/{id}") - public FebsResponse memberBankDetails(@PathVariable("id") Long id) { - return memberService.findBankDetailsById(id); - } - - @ApiOperation(value = "更新银行卡") - @PostMapping(value = "/updateMemberBank") - public FebsResponse updateMemberBank(@RequestBody UpdateMemberBankDto updateMemberBankDto) { - return memberService.updateMemberBank(updateMemberBankDto); - } - - @ApiOperation(value = "删除银行卡", notes = "删除银行卡") - @PostMapping(value = "/delMemberBank/{id}") - public FebsResponse delMemberBank(@PathVariable("id") Long id) { - return memberService.delMemberBank(id); - } - - @ApiOperation(value = "银行名称列表", notes = "银行名称列表") - @GetMapping(value = "/memberBankName") - public FebsResponse memberBankDetails() { - return memberService.findBankName(); } } diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiChooseNumDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiChooseNumDto.java new file mode 100644 index 0000000..928d57a --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiChooseNumDto.java @@ -0,0 +1,32 @@ +package cc.mrbird.febs.mall.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +@Data +@ApiModel(value = "ApiChooseNumDto", description = "参数接收类") +public class ApiChooseNumDto { + + @NotNull(message = "参数不能为空") + @ApiModelProperty(value = "房间ID") + private Long roomId; + + @NotNull(message = "参数不能为空") + @ApiModelProperty(value = "游戏ID") + private Long gameId; + + @NotNull(message = "参数不能为空") + @ApiModelProperty(value = "投注数字") + private Integer chooseNum; + + @Min(10) + @NotNull(message = "参数不能为空") + @ApiModelProperty(value = "投注金额") + private BigDecimal amount; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiCreateRoomDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiCreateRoomDto.java new file mode 100644 index 0000000..44a23a8 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiCreateRoomDto.java @@ -0,0 +1,22 @@ +package cc.mrbird.febs.mall.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +@Data +@ApiModel(value = "ApiCreateRoomDto", description = "参数接收类") +public class ApiCreateRoomDto { + + @NotNull(message = "参数不能为空") + @ApiModelProperty(value = "房间类型 1-初级房2-土豪房3-尊爵房", example = "1") + private Integer roomType; + + @NotNull(message = "参数不能为空") + @ApiModelProperty(value = "一局游戏时长", example = "1") + private Integer gameTime; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiEndGameDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiEndGameDto.java new file mode 100644 index 0000000..1c08c3f --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiEndGameDto.java @@ -0,0 +1,21 @@ +package cc.mrbird.febs.mall.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +@ApiModel(value = "ApiEndGameDto", description = "参数接收类") +public class ApiEndGameDto { + + @NotNull(message = "参数不能为空") + @ApiModelProperty(value = "房间ID") + private Long roomId; + + @NotNull(message = "参数不能为空") + @ApiModelProperty(value = "游戏ID") + private Long gameId; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiExistGameDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiExistGameDto.java new file mode 100644 index 0000000..b16fb98 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiExistGameDto.java @@ -0,0 +1,17 @@ +package cc.mrbird.febs.mall.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +@ApiModel(value = "ApiExistGameDto", description = "参数接收类") +public class ApiExistGameDto { + + @NotNull(message = "参数不能为空") + @ApiModelProperty(value = "房间ID") + private Long roomId; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiFlashGameDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiFlashGameDto.java new file mode 100644 index 0000000..cdb1d6c --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiFlashGameDto.java @@ -0,0 +1,16 @@ +package cc.mrbird.febs.mall.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +@ApiModel(value = "ApiFlashGameDto", description = "参数接收类") +public class ApiFlashGameDto { + + @NotNull(message = "参数不能为空") + @ApiModelProperty(value = "游戏ID") + private Long gameId; +} diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiGameDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiGameDto.java new file mode 100644 index 0000000..1d24fe2 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiGameDto.java @@ -0,0 +1,17 @@ +package cc.mrbird.febs.mall.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +@ApiModel(value = "ApiGameDto", description = "参数接收类") +public class ApiGameDto { + + @NotNull(message = "参数不能为空") + @ApiModelProperty(value = "房间唯一编码,自动生成", example = "1") + private String password; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiNextGameDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiNextGameDto.java new file mode 100644 index 0000000..8b91c8e --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiNextGameDto.java @@ -0,0 +1,16 @@ +package cc.mrbird.febs.mall.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +@ApiModel(value = "ApiNextGameDto", description = "参数接收类") +public class ApiNextGameDto { + + @NotNull(message = "参数不能为空") + @ApiModelProperty(value = "游戏ID") + private Long gameId; +} diff --git a/src/main/java/cc/mrbird/febs/mall/dto/ApiStartGameDto.java b/src/main/java/cc/mrbird/febs/mall/dto/ApiStartGameDto.java new file mode 100644 index 0000000..019d290 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/dto/ApiStartGameDto.java @@ -0,0 +1,16 @@ +package cc.mrbird.febs.mall.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +@ApiModel(value = "ApiStartGameDto", description = "请求类") +public class ApiStartGameDto { + + @NotNull(message = "参数不能为空") + @ApiModelProperty(value = "房间ID") + private Long roomId; +} diff --git a/src/main/java/cc/mrbird/febs/mall/dto/MoneyFlowDto.java b/src/main/java/cc/mrbird/febs/mall/dto/MoneyFlowDto.java index 3772d65..326eaa8 100644 --- a/src/main/java/cc/mrbird/febs/mall/dto/MoneyFlowDto.java +++ b/src/main/java/cc/mrbird/febs/mall/dto/MoneyFlowDto.java @@ -19,15 +19,6 @@ @ApiModelProperty(value = "页码", example = "1") private Integer pageNum; - @ApiModelProperty(value = "类型 ") - private Integer type; - - @ApiModelProperty(value = "类型 1-全部 2-支出 3-收入") - private Integer inOrOut; - - @ApiModelProperty(value = "流水类型 1-FCM代币 2-令牌 3-NFT") - private Integer flowType; - @ApiModelProperty(hidden = true) private Long memberId; } diff --git a/src/main/java/cc/mrbird/febs/mall/dto/RegisterDto.java b/src/main/java/cc/mrbird/febs/mall/dto/RegisterDto.java index e931466..af9bd2f 100644 --- a/src/main/java/cc/mrbird/febs/mall/dto/RegisterDto.java +++ b/src/main/java/cc/mrbird/febs/mall/dto/RegisterDto.java @@ -18,17 +18,9 @@ @ApiModelProperty(value = "账号", example = "hjsj") private String accountLogin; -// @NotBlank(message = "密钥不能为空") - @ApiModelProperty(value = "密钥", example = "15773001234") - private String userKey; - @NotBlank(message = "登录密码不能为空") @ApiModelProperty(value = "登录密码", example = "123456") private String password; - - @NotBlank(message = "交易密码不能为空") - @ApiModelProperty(value = "交易密码", example = "123456") - private String tradePassword; @NotBlank(message = "邀请码不能为空") @ApiModelProperty(value = "邀请码") diff --git a/src/main/java/cc/mrbird/febs/mall/entity/GameGame.java b/src/main/java/cc/mrbird/febs/mall/entity/GameGame.java new file mode 100644 index 0000000..8ff5096 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/entity/GameGame.java @@ -0,0 +1,34 @@ +package cc.mrbird.febs.mall.entity; + +import cc.mrbird.febs.common.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +@Data +@TableName("game_game") +public class GameGame extends BaseEntity { + + + private Long roomId;// + private Long memberId;//房主用户表ID + private Integer firstNum;//第一个数 + private Integer secondNum;//第二个数 + + private Integer state;//1-等待投注中 2-结束投注(10秒倒计时,结束投注) 3-结算中 4-已结算 + public static final Integer STATE_READY = 1; + public static final Integer STATE_DONE = 2; + public static final Integer STATE_PERK = 3; + public static final Integer STATE_OVER = 4; + + private BigDecimal pickOne;//投注1的总金额 + private BigDecimal pickTwo; + private BigDecimal pickThree; + private BigDecimal pickFour; + private BigDecimal pickFive; + private BigDecimal pickSix; + private Date perkTime;//开奖时间 + +} diff --git a/src/main/java/cc/mrbird/febs/mall/entity/GameGameChild.java b/src/main/java/cc/mrbird/febs/mall/entity/GameGameChild.java new file mode 100644 index 0000000..47f3195 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/entity/GameGameChild.java @@ -0,0 +1,31 @@ +package cc.mrbird.febs.mall.entity; + +import cc.mrbird.febs.common.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@TableName("game_game_child") +public class GameGameChild extends BaseEntity { + + + private Long gameId;// + private Long memberId;//用户表ID + private BigDecimal amount;//投注金额 + private Integer pickNum;//投注数字 + + private Integer state;//投注状态1-待结算2-已结算 + public static final Integer STATE_ING = 1; + public static final Integer STATE_DONE = 2; + + private Integer perkNumOne;//开出来的号码1 + private Integer perkNumTwo;//开出来的号码2 + + private Integer perkState;//中奖状态 1-中奖 2-未中奖 + public static final Integer PERK_STATE_YES = 1; + public static final Integer PERK_STATE_NO = 2; + + private BigDecimal perkAmount;//中奖金额 +} diff --git a/src/main/java/cc/mrbird/febs/mall/entity/GameRoom.java b/src/main/java/cc/mrbird/febs/mall/entity/GameRoom.java new file mode 100644 index 0000000..6355859 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/entity/GameRoom.java @@ -0,0 +1,23 @@ +package cc.mrbird.febs.mall.entity; + +import cc.mrbird.febs.common.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +@Data +@TableName("game_room") +public class GameRoom extends BaseEntity { + + private Integer roomType;//房间类型 1-初级房2-土豪房3-尊爵房 + private String password;//房间密码(房间唯一编码,自动生成) + private Long ownerMemberId;//房主用户表ID + + private Integer state;//房间状态0-未开始1-正常2-结束 + public static final Integer STATE_READY = 0; + public static final Integer STATE_ING = 1; + public static final Integer STATE_DONE = 2; + + private Integer gameTime;//游戏时长 + + +} diff --git a/src/main/java/cc/mrbird/febs/mall/entity/GameRoomChild.java b/src/main/java/cc/mrbird/febs/mall/entity/GameRoomChild.java new file mode 100644 index 0000000..f7b8414 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/entity/GameRoomChild.java @@ -0,0 +1,18 @@ +package cc.mrbird.febs.mall.entity; + +import cc.mrbird.febs.common.entity.BaseEntity; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +@Data +@TableName("game_room_child") +public class GameRoomChild extends BaseEntity { + + private Long roomId;// + private Long memberId;//用户表ID + private Integer ownerState;//1-房主 2-玩家 + public static final Integer OWNER_TRUE = 1; + public static final Integer OWNER_FALSE = 2; + + +} diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java index 1db5513..db2107a 100644 --- a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java +++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java @@ -148,7 +148,7 @@ private Integer creater; /** - * 合伙人 1-是 2-否 节点 + * 代理 1-是 2-否(初始化) */ private Integer partner; /** diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/GameGameChildMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/GameGameChildMapper.java new file mode 100644 index 0000000..1a95766 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/mapper/GameGameChildMapper.java @@ -0,0 +1,7 @@ +package cc.mrbird.febs.mall.mapper; + +import cc.mrbird.febs.mall.entity.GameGameChild; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface GameGameChildMapper extends BaseMapper<GameGameChild> { +} diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/GameGameMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/GameGameMapper.java new file mode 100644 index 0000000..ea1c3ec --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/mapper/GameGameMapper.java @@ -0,0 +1,7 @@ +package cc.mrbird.febs.mall.mapper; + +import cc.mrbird.febs.mall.entity.GameGame; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface GameGameMapper extends BaseMapper<GameGame> { +} diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/GameRoomChildMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/GameRoomChildMapper.java new file mode 100644 index 0000000..57d3e0d --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/mapper/GameRoomChildMapper.java @@ -0,0 +1,7 @@ +package cc.mrbird.febs.mall.mapper; + +import cc.mrbird.febs.mall.entity.GameRoomChild; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface GameRoomChildMapper extends BaseMapper<GameRoomChild> { +} diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/GameRoomMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/GameRoomMapper.java new file mode 100644 index 0000000..62059cd --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/mapper/GameRoomMapper.java @@ -0,0 +1,7 @@ +package cc.mrbird.febs.mall.mapper; + +import cc.mrbird.febs.mall.entity.GameRoom; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +public interface GameRoomMapper extends BaseMapper<GameRoom> { +} diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java index 9c59630..15eb000 100644 --- a/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMoneyFlowMapper.java @@ -55,4 +55,8 @@ MallMoneyFlow selectByOrderAndType(@Param("orderNo")String orderNo, @Param("type")int type, @Param("flowType")int flowType, @Param("memberId")Long memberId); IPage<MoneyFlowVo> selectApiFcmMoneyFlowInsideInPage(IPage<MoneyFlowVo> page, @Param("record") MoneyFlowDto moneyFlowDto); + + BigDecimal selectSumAmountByMemberIdAndType(@Param("list")List<Long> memberId, @Param("type")int type); + + BigDecimal selectSumByMemberIdAndType(@Param("memberId")Long memberId, @Param("type")int type); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/GameService.java b/src/main/java/cc/mrbird/febs/mall/service/GameService.java new file mode 100644 index 0000000..e873ac6 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/service/GameService.java @@ -0,0 +1,48 @@ +package cc.mrbird.febs.mall.service; + +import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.mall.dto.*; +import cc.mrbird.febs.mall.entity.GameRoom; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.math.BigDecimal; +import java.util.List; + +public interface GameService extends IService<GameRoom> { + + FebsResponse roomType(); + + FebsResponse createRoom(ApiCreateRoomDto apiCreateRoomDto); + + FebsResponse startGame(ApiStartGameDto startGameDto); + + /** + * 给房间的每一个人发消息 + * @param roomId + * @param msg 消息:房间ID + */ + void sendMsgByRoomId(Long roomId,String msg); + + void sendMsgByMemberIds(List<Long> memberIds,String msg); + + /** + * 给每一个人发消息 + * @param memberId + * @param msg 自定义消息 + */ + void sendMsgByMemberId(Long memberId,String msg); + + FebsResponse chooseNum(ApiChooseNumDto apiChooseNumDto); + + FebsResponse gameIn(ApiGameDto apiGameDto); + + FebsResponse endGame(ApiEndGameDto endGameDto); + + BigDecimal perkGameGameChild(Long gameId,int firstNum,int secondNum); + + FebsResponse nextGame(ApiNextGameDto apiNextGameDto); + + FebsResponse existGame(ApiExistGameDto apiExistGameDto); + + FebsResponse flashGame(ApiFlashGameDto apiFlashGameDto); +} diff --git a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java index 4a4965d..99c31b3 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IApiMallMemberService.java @@ -31,9 +31,9 @@ FebsResponse modifyMemberInfo(ModifyMemberInfoDto modifyMemberInfoDto); - FebsResponse teamList(TeamListDto teamListDto); + FebsResponse teamList(); - FebsResponse teamFcmList(TeamListDto teamListDto); + FebsResponse teamFcmList(); MyTeamVo teamListForMine(TeamListDto teamListDto); diff --git a/src/main/java/cc/mrbird/febs/mall/service/IMallMoneyFlowService.java b/src/main/java/cc/mrbird/febs/mall/service/IMallMoneyFlowService.java index 9e2e106..3dcac05 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/IMallMoneyFlowService.java +++ b/src/main/java/cc/mrbird/febs/mall/service/IMallMoneyFlowService.java @@ -11,6 +11,8 @@ void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, Integer flowType); + void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, String description); + void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, Integer flowType, Integer isReturn); void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, Long rtMemberId, Integer flowType); diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java index 58239fc..1f36f41 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java @@ -475,7 +475,12 @@ } else { iApiMallMemberWalletService.add(mallSystemPayDto.getAddBalance(), mallSystemPayDto.getId(), filedType); } - mallMoneyFlowService.addMoneyFlow(memberId, bigDecimal, MoneyFlowTypeEnum.SYSTEM.getValue(), null, type); + mallMoneyFlowService.addMoneyFlow( + memberId, + bigDecimal, + GameFlowTypeEnum.PLAYER_CHARGE.getValue(), + MallUtils.getOrderNum("CZ"), + GameFlowTypeEnum.PLAYER_CHARGE.getDescrition()); return new FebsResponse().success(); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java index 7e3ce7b..f4abe29 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java @@ -114,7 +114,6 @@ mallMember.setAccountLogin(accountLogin); mallMember.setPassword(SecureUtil.md5(registerDto.getPassword())); mallMember.setUserKey(userKey); - mallMember.setTradePassword(SecureUtil.md5(registerDto.getTradePassword())); Integer count = this.baseMapper.selectCount(null); if (count != null && count != 0) { @@ -124,16 +123,11 @@ } mallMember.setReferrerId(registerDto.getInviteId()); } -// mallMember.setName(registerDto.getName()); -// mallMember.setAccountStatus(MallMember.ACCOUNT_STATUS_ENABLE); mallMember.setAccountStatus(MallMember.ACCOUNT_STATUS_ENABLE); mallMember.setAccountType(MallMember.ACCOUNT_TYPE_NORMAL); mallMember.setLevel(AgentLevelEnum.ZERO_LEVEL.getCode()); mallMember.setIsFrozen(ProductEnum.MEMBER_UNFROZEN.getValue()); mallMember.setPartner(2); -// mallMember.setSex("男"); -// mallMember.setBindPhone(registerDto.getAccount()); - this.baseMapper.insert(mallMember); String inviteId = ShareCodeUtil.toSerialNumberCodeTwo(mallMember.getId()); @@ -170,17 +164,10 @@ MallMemberWallet wallet = new MallMemberWallet(); wallet.setMemberId(mallMember.getId()); mallMemberWalletMapper.insert(wallet); - MallMemberAmount mallMemberAmount = new MallMemberAmount(); - mallMemberAmount.setMemberId(mallMember.getId()); - mallMemberAmountMapper.insert(mallMemberAmount); - - MallMemberPayment mallMemberPayment = new MallMemberPayment(); - mallMemberPayment.setMemberId(mallMember.getId()); - mallMemberPaymentMapper.insert(mallMemberPayment); ApiRegisterVo apiRegisterVo = new ApiRegisterVo(); apiRegisterVo.setAccount(mallMember.getAccountLogin()); - apiRegisterVo.setUserKey(mallMember.getUserKey()); + apiRegisterVo.setUserKey(registerDto.getPassword()); return new FebsResponse().success().data(apiRegisterVo); } @@ -253,115 +240,8 @@ MallMember mallMember = this.baseMapper.selectById(id); MallMemberVo mallMemberVo = MallMemberConversion.INSTANCE.entityToVo(mallMember); - - MallMember referMember = this.baseMapper.selectInfoByInviteId(mallMember.getReferrerId()); - if (referMember != null) { - mallMemberVo.setReferrerName(referMember.getName()); - } - - MallMemberPayment payment = mallMemberPaymentMapper.selectByMemberId(id); - if (payment != null) { - mallMemberVo.setHasPayment(1); - } - - DataDictionaryCustom nftMinDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( - DataDictionaryEnum.NFT_MIN.getType(), - DataDictionaryEnum.NFT_MIN.getCode()); - mallMemberVo.setNftMin(ObjectUtil.isEmpty(nftMinDic) ? new BigDecimal(100) : new BigDecimal(nftMinDic.getValue())); - - DataDictionaryCustom outFcmMinDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( - DataDictionaryEnum.OUT_FCM_MIN.getType(), - DataDictionaryEnum.OUT_FCM_MIN.getCode()); - mallMemberVo.setOutFcmMin(ObjectUtil.isEmpty(outFcmMinDic) ? new BigDecimal(100) : new BigDecimal(outFcmMinDic.getValue())); - - DataDictionaryCustom fcmPriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( - DataDictionaryEnum.FCM_PRICE.getType(), - DataDictionaryEnum.FCM_PRICE.getCode()); - mallMemberVo.setFcmPrice(ObjectUtil.isEmpty(fcmPriceDic) ? new BigDecimal(8) : new BigDecimal(fcmPriceDic.getValue())); - - DataDictionaryCustom outFcmFeeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( - DataDictionaryEnum.OUT_FCM_FEE.getType(), - DataDictionaryEnum.OUT_FCM_FEE.getCode()); - mallMemberVo.setOutFcmFee(ObjectUtil.isEmpty(outFcmFeeDic) ? new BigDecimal(20) : new BigDecimal(outFcmFeeDic.getValue())); - - DataDictionaryCustom nftFeeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( - DataDictionaryEnum.NFT_FEE.getType(), - DataDictionaryEnum.NFT_FEE.getCode()); - BigDecimal nftFeePercent = ObjectUtil.isEmpty(nftFeeDic) ? new BigDecimal(20) : new BigDecimal(nftFeeDic.getValue()); - mallMemberVo.setNftFee(nftFeePercent); - - DataDictionaryCustom memberFrozenFcmCntDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( - DataDictionaryEnum.MEMBER_FROZEN_FCM_CNT.getType(), - DataDictionaryEnum.MEMBER_FROZEN_FCM_CNT.getCode() - ); - BigDecimal memberFrozenFcmCnt = ObjectUtil.isEmpty(memberFrozenFcmCntDic) ? new BigDecimal(100) : new BigDecimal(memberFrozenFcmCntDic.getValue()); - mallMemberVo.setUnfrozenCnt(memberFrozenFcmCnt); - - DataDictionaryCustom insureMinuteDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( - DataDictionaryEnum.INSURE_END_MINUTE.getType(), - DataDictionaryEnum.INSURE_END_MINUTE.getCode() - ); - Integer insureMinute = Integer.parseInt(ObjectUtil.isEmpty(insureMinuteDic) ? "60" : insureMinuteDic.getValue()); - mallMemberVo.setMinuteCnt(insureMinute); - - DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(mallMember.getLevel(), mallMember.getLevel()); - if (dic != null) { - mallMemberVo.setLevelName(dic.getDescription()); - }else{ - mallMemberVo.setLevelName("非会员"); - } - MallMemberAmount mallMemberAmount = mallMemberAmountMapper.selectByMemberId(mallMember.getId()); - mallMemberVo.setGsd(mallMemberAmount.getGsd()); - mallMemberVo.setStaticNft(mallMemberAmount.getStaticNft()); - mallMemberVo.setTrendsNft(mallMemberAmount.getTrendsNft()); - mallMemberVo.setFrozenNft(mallMemberAmount.getFrozenNft()); - mallMemberVo.setFcmCntAva(mallMemberAmount.getFcmCntAva()); - mallMemberVo.setFcmCntFrozen(mallMemberAmount.getFcmCntFrozen()); - mallMemberVo.setTokenAva(mallMemberAmount.getTokenAva()); - mallMemberVo.setTokenFrozen(mallMemberAmount.getTokenFrozen()); - mallMemberVo.setTotalPerk(mallMemberAmount.getTotalPerk()); - DataDictionaryCustom startTimeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( - DataDictionaryEnum.YU_YUE_START_TIME.getType(), - DataDictionaryEnum.YU_YUE_START_TIME.getCode() - ); - mallMemberVo.setStartTime(startTimeDic.getValue()); - DataDictionaryCustom endTimeDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( - DataDictionaryEnum.YU_YUE_END_TIME.getType(), - DataDictionaryEnum.YU_YUE_END_TIME.getCode() - ); - mallMemberVo.setEndTime(endTimeDic.getValue()); - - Integer pickCount = mallProductBuyMapper.selectListByMemberIdAndState(id); - mallMemberVo.setPickCount(pickCount); - -// BigDecimal totalPerk = mallProductBuyMapper.selectTotalPerkByMemberId(mallMember.getId()); -// mallMemberVo.setTotalPerk(totalPerk); - - DataDictionaryCustom insideNFTPercentDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( - DataDictionaryEnum.FCM_INSIDE_NFT_PERCENT.getType(), - DataDictionaryEnum.FCM_INSIDE_NFT_PERCENT.getCode() - ); - mallMemberVo.setInsideNFTPercent(insideNFTPercentDic.getValue()); - - DataDictionaryCustom chargeAddressDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( - DataDictionaryEnum.CHARGE_ADDRESS.getType(), - DataDictionaryEnum.CHARGE_ADDRESS.getCode() - ); - mallMemberVo.setChargeAddress(chargeAddressDic.getValue()); - - DataDictionaryCustom withdrawAmountDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( - DataDictionaryEnum.WITHDRAW_AMOUNT.getType(), - DataDictionaryEnum.WITHDRAW_AMOUNT.getCode() - ); - BigDecimal withdrawAmount = new BigDecimal(withdrawAmountDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN); - mallMemberVo.setWithdrawAmount(withdrawAmount); - - DataDictionaryCustom usdtPriceDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( - DataDictionaryEnum.USDT_PRICE.getType(), - DataDictionaryEnum.USDT_PRICE.getCode() - ); - BigDecimal usdtPrice = new BigDecimal(usdtPriceDic.getValue()).setScale(2, BigDecimal.ROUND_DOWN); - mallMemberVo.setUsdtPrice(usdtPrice); + MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(mallMember.getId()); + mallMemberVo.setBalance(mallMemberWallet.getBalance()); return new FebsResponse().success().data(mallMemberVo); } @@ -416,90 +296,98 @@ } @Override - public FebsResponse teamList(TeamListDto teamListDto) { - Long memberId = null; - if (teamListDto.getId() == null) { - memberId = LoginUserUtil.getLoginUser().getId(); - } else { - memberId = teamListDto.getId(); - } - + public FebsResponse teamList() { + Long memberId = LoginUserUtil.getLoginUser().getId(); MallMember mallMember = this.baseMapper.selectById(memberId); - List<TeamListVo> list = this.baseMapper.selectTeamListByInviteId(mallMember.getInviteId()); - MyTeamVo myTeamVo = new MyTeamVo(); - myTeamVo.setTeam(list); - BigDecimal myAchieve = this.baseMapper.selectAchieveByMemberId(mallMember.getInviteId(), 1); - myTeamVo.setMyAchieve(myAchieve); - BigDecimal myTeamAchieve = this.baseMapper.selectAchieveByMemberId(mallMember.getInviteId(), 2); - myTeamVo.setMyTeamAchieve(myTeamAchieve.add(myAchieve)); - myTeamVo.setMyTeamCnt(this.baseMapper.selectAllChildAgentListByInviteId(mallMember.getInviteId()).size()); + /** + * 团队人数,只有直属两级 + */ + ArrayList<Long> memberIdList = new ArrayList<>(); + memberIdList.add(memberId); + + QueryWrapper<MallMember> objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.eq("referrer_id",mallMember.getInviteId()); + List<MallMember> mallMembers = this.baseMapper.selectList(objectQueryWrapper); + if(CollUtil.isNotEmpty(mallMembers)){ + for(MallMember directMember : mallMembers){ + //第一代 + memberIdList.add(directMember.getId()); + + QueryWrapper<MallMember> directWrapper = new QueryWrapper<>(); + directWrapper.eq("referrer_id",directMember.getInviteId()); + List<MallMember> refMembers = this.baseMapper.selectList(directWrapper); + if(CollUtil.isNotEmpty(refMembers)){ + for(MallMember refMember : refMembers){ + //第二代 + memberIdList.add(refMember.getId()); + } + } + } + } + BigDecimal chargeAmount = mallMoneyFlowMapper.selectSumAmountByMemberIdAndType(memberIdList,GameFlowTypeEnum.PLAYER_CHARGE.getValue()); + + myTeamVo.setMyTeamCnt(memberIdList.size()); + myTeamVo.setMyAchieve(chargeAmount); return new FebsResponse().success().data(myTeamVo); } @Override - public FebsResponse teamFcmList(TeamListDto teamListDto) { - Long memberId = null; - if (ObjectUtil.isEmpty(teamListDto.getId())) { - memberId = LoginUserUtil.getLoginUser().getId(); - } else { - memberId = teamListDto.getId(); - } - + public FebsResponse teamFcmList() { + Long memberId = LoginUserUtil.getLoginUser().getId(); MallMember mallMember = this.baseMapper.selectById(memberId); - MyFcmTeamVo myTeamVo = new MyFcmTeamVo(); - myTeamVo.setMemberId(mallMember.getId()); - myTeamVo.setAccountLogin(mallMember.getAccountLogin()); - myTeamVo.setIsFrozen(mallMember.getIsFrozen()); - myTeamVo.setLevelName(MemberLevelNewEnum.ZERO_LEVEL.getLevelName(mallMember.getLevel())); - BigDecimal myAchieveBuy = this.baseMapper.selectAchieveBuyByMemberId(mallMember.getInviteId(), 1); - myTeamVo.setMyAchieveBuy(myAchieveBuy); - BigDecimal myAchieveSell = this.baseMapper.selectAchieveSellByMemberId(mallMember.getInviteId(), 1); - myTeamVo.setMyAchieveSell(myAchieveSell); - BigDecimal myTeamAchieveBuy = this.baseMapper.selectAchieveBuyByMemberId(mallMember.getInviteId(), 2); - myTeamVo.setMyTeamAchieveBuy(myTeamAchieveBuy.add(myAchieveBuy)); - BigDecimal myTeamAchieveSell = this.baseMapper.selectAchieveSellByMemberId(mallMember.getInviteId(), 2); - myTeamVo.setMyTeamAchieveSell(myTeamAchieveSell.add(myAchieveSell)); - myTeamVo.setMyTeamMemberCnt(this.baseMapper.selectAllChildAgentListByInviteId(mallMember.getInviteId()).size()); - Integer buyCnt = this.baseMapper.selectAchieveBuyOrderCntByMemberId(mallMember.getInviteId()); - Integer sellCnt = this.baseMapper.selectAchieveSellOrderCntByMemberId(mallMember.getInviteId()); - myTeamVo.setMyTeamOrderCnt(buyCnt+sellCnt); + ArrayList<MyFcmTeamVo> myFcmTeamVos = new ArrayList<>(); + /** + * 团队人数,只有直属两级 + */ + ArrayList<Long> memberIdList = new ArrayList<>(); + memberIdList.add(memberId); - List<MallMember> mallMembersDirects = this.baseMapper.selectChildAgentListByInviteId(mallMember.getInviteId()); - List<MyFcmTeamVo> list = new ArrayList<>(); - if(CollUtil.isNotEmpty(mallMembersDirects)){ - for(MallMember mallMembersDirect : mallMembersDirects){ - MyFcmTeamVo myTeamDirectVo = new MyFcmTeamVo(); - myTeamDirectVo.setMemberId(mallMembersDirect.getId()); - myTeamDirectVo.setAccountLogin(mallMembersDirect.getAccountLogin()); - myTeamDirectVo.setIsFrozen(mallMembersDirect.getIsFrozen()); - myTeamDirectVo.setLevelName( - dataDictionaryCustomMapper.selectDicDataByTypeAndCode(mallMembersDirect.getLevel(),mallMembersDirect.getLevel()).getDescription() - ); + QueryWrapper<MallMember> objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.eq("referrer_id",mallMember.getInviteId()); + List<MallMember> mallMembers = this.baseMapper.selectList(objectQueryWrapper); + if(CollUtil.isNotEmpty(mallMembers)){ + for(MallMember directMember : mallMembers){ + //第一代 + memberIdList.add(directMember.getId()); - BigDecimal myAchieveBuyDirect = this.baseMapper.selectAchieveBuyByMemberId(mallMembersDirect.getInviteId(), 1); - myTeamDirectVo.setMyAchieveBuy(myAchieveBuyDirect); - BigDecimal myAchieveSellDirect = this.baseMapper.selectAchieveSellByMemberId(mallMembersDirect.getInviteId(), 1); - myTeamDirectVo.setMyAchieveSell(myAchieveSellDirect); - BigDecimal myTeamAchieveBuyDirect = this.baseMapper.selectAchieveBuyByMemberId(mallMembersDirect.getInviteId(), 2); - myTeamDirectVo.setMyTeamAchieveBuy(myTeamAchieveBuyDirect.add(myAchieveBuyDirect)); - BigDecimal myTeamAchieveSellDirect = this.baseMapper.selectAchieveSellByMemberId(mallMembersDirect.getInviteId(), 2); - myTeamDirectVo.setMyTeamAchieveSell(myTeamAchieveSellDirect.add(myAchieveSellDirect)); - myTeamDirectVo.setMyTeamMemberCnt(this.baseMapper.selectAllChildAgentListByInviteId(mallMembersDirect.getInviteId()).size()); - Integer buyCntDirect = this.baseMapper.selectAchieveBuyOrderCntByMemberId(mallMembersDirect.getInviteId()); - Integer sellCntDirect = this.baseMapper.selectAchieveSellOrderCntByMemberId(mallMembersDirect.getInviteId()); - myTeamDirectVo.setMyTeamOrderCnt(buyCntDirect+sellCntDirect); - list.add(myTeamDirectVo); + QueryWrapper<MallMember> directWrapper = new QueryWrapper<>(); + directWrapper.eq("referrer_id",directMember.getInviteId()); + List<MallMember> refMembers = this.baseMapper.selectList(directWrapper); + if(CollUtil.isNotEmpty(refMembers)){ + for(MallMember refMember : refMembers){ + //第二代 + memberIdList.add(refMember.getId()); + } + } } } - myTeamVo.setTeam(list); + for(Long id : memberIdList){ + MyFcmTeamVo myFcmTeamVo = new MyFcmTeamVo(); + MallMember member = this.baseMapper.selectById(id); + myFcmTeamVo.setAccountLogin(member.getAccountLogin()); + BigDecimal chargeAmount = mallMoneyFlowMapper.selectSumByMemberIdAndType(id,GameFlowTypeEnum.PLAYER_CHARGE.getValue()); + myFcmTeamVo.setChargeAmount(chargeAmount); - return new FebsResponse().success().data(myTeamVo); + MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(id); + myFcmTeamVo.setBalance(mallMemberWallet.getBalance()); + + BigDecimal amountBuy = mallMoneyFlowMapper.selectSumByMemberIdAndType(id,GameFlowTypeEnum.PLAYER_PICK_NUM.getValue()); + myFcmTeamVo.setAmountBuy(amountBuy); + + BigDecimal playerPerk = mallMoneyFlowMapper.selectSumByMemberIdAndType(id,GameFlowTypeEnum.PLAYER_PERK.getValue()); + BigDecimal ownerPerk = mallMoneyFlowMapper.selectSumByMemberIdAndType(id,GameFlowTypeEnum.OWNER_PERK.getValue()); + myFcmTeamVo.setAmountPerk(amountBuy.add(playerPerk).add(ownerPerk)); + + myFcmTeamVos.add(myFcmTeamVo); + } + + return new FebsResponse().success().data(myFcmTeamVos); } @Override @@ -512,7 +400,6 @@ IPage<MoneyFlowVo> page = new Page<>(moneyFlowDto.getPageNum(), moneyFlowDto.getPageSize()); Long id = LoginUserUtil.getLoginUser().getId(); moneyFlowDto.setMemberId(id); -// IPage<MoneyFlowVo> pages = mallMoneyFlowMapper.selectApiMoneyFlowInPage(page, moneyFlowDto); IPage<MoneyFlowVo> pages = mallMoneyFlowMapper.selectApiFcmMoneyFlowInPage(page, moneyFlowDto); return new FebsResponse().success().data(pages); } diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/GameServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/GameServiceImpl.java new file mode 100644 index 0000000..8f347cc --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/GameServiceImpl.java @@ -0,0 +1,795 @@ +package cc.mrbird.febs.mall.service.impl; + +import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.common.enumerates.*; +import cc.mrbird.febs.common.exception.FebsException; +import cc.mrbird.febs.common.utils.AppContants; +import cc.mrbird.febs.common.utils.LoginUserUtil; +import cc.mrbird.febs.common.utils.MallUtils; +import cc.mrbird.febs.common.utils.ShareCodeUtil; +import cc.mrbird.febs.mall.dto.*; +import cc.mrbird.febs.mall.entity.*; +import cc.mrbird.febs.mall.mapper.*; +import cc.mrbird.febs.mall.service.GameService; +import cc.mrbird.febs.mall.service.IApiMallMemberWalletService; +import cc.mrbird.febs.mall.service.IMallMoneyFlowService; +import cc.mrbird.febs.mall.vo.*; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.RandomUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.ss.formula.functions.Choose; +import org.springframework.stereotype.Service; +import cc.mrbird.febs.websocket.WsSessionManager; +import org.springframework.transaction.annotation.Transactional; +import sun.net.www.content.image.png; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +@Slf4j +@Service +@RequiredArgsConstructor +public class GameServiceImpl extends ServiceImpl<GameRoomMapper, GameRoom> implements GameService { + + private final DataDictionaryCustomMapper dataDictionaryCustomMapper; + private final MallMemberMapper mallMemberMapper; + private final MallMemberWalletMapper mallMemberWalletMapper; + private final GameRoomMapper gameRoomMapper; + private final GameRoomChildMapper gameRoomChildMapper; + private final GameGameMapper gameGameMapper; + private final GameGameChildMapper gameGameChildMapper; + private final IApiMallMemberWalletService memberWalletService; + private final IMallMoneyFlowService mallMoneyFlowService; + @Override + public FebsResponse roomType() { + ArrayList<RoomTypeVo> objects = new ArrayList<>(); + + List<GameRoomTypeEnum> roomLists = GameRoomTypeEnum.ROOM_ONE.getRoomList(); + if(CollUtil.isNotEmpty(roomLists)){ + for(GameRoomTypeEnum gameRoomTypeEnum : roomLists){ + RoomTypeVo roomTypeVo = new RoomTypeVo(); + roomTypeVo.setRoomName(gameRoomTypeEnum.getRoomName()); + roomTypeVo.setRoomType(gameRoomTypeEnum.getRoomType()); + roomTypeVo.setRoomAmount(new BigDecimal(gameRoomTypeEnum.getRoomAmount())); + roomTypeVo.setMinAmount(new BigDecimal(gameRoomTypeEnum.getMinAmount())); + roomTypeVo.setMaxAmount(new BigDecimal(gameRoomTypeEnum.getMaxAmount())); + String amounts = gameRoomTypeEnum.getAmounts(); + // 使用split方法将字符串按照逗号分割成数组 + String[] numbersArray = amounts.split(","); + + // 将数组转换成Stream + List<BigDecimal> numbersList = Arrays.stream(numbersArray) + // 使用map方法将每个字符串元素转换成BigDecimal + .map(BigDecimal::new) + // 收集到List中 + .collect(Collectors.toList()); + roomTypeVo.setAmounts(numbersList); + objects.add(roomTypeVo); + } + } + return new FebsResponse().success().data(objects); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public FebsResponse createRoom(ApiCreateRoomDto apiCreateRoomDto) { + /** + * 用户登录 + * 判断是否是代理,只有代理才能创建房间 + * 初始化一条主房间记录 + * 初始化一条子房间记录 + * 返回房间信息 + */ + Long memberId = LoginUserUtil.getLoginUser().getId(); + //每局时间倒计时 + Integer gameTime = apiCreateRoomDto.getGameTime(); + if(1 > gameTime || 60 < gameTime){ + throw new FebsException("请输入合适的数字"); + } + //代理身份才能创建房间 + MallMember mallMember = mallMemberMapper.selectById(memberId); + Integer partner = ObjectUtil.isEmpty(mallMember.getPartner()) ? 2 : mallMember.getPartner(); + if(AppContants.MEMBER_PARTNER_NO == partner){ + throw new FebsException("用户没有创建房间的权限!"); + } + + Integer roomType = apiCreateRoomDto.getRoomType(); + GameRoomTypeEnum room = GameRoomTypeEnum.ROOM_ONE.getRoom(roomType); + if(ObjectUtil.isEmpty(room)){ + throw new FebsException("请选择正确的房间类型!"); + } + //创建房间的最小金额 + BigDecimal roomAmount = new BigDecimal(room.getRoomAmount()).setScale(2, BigDecimal.ROUND_DOWN); + MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); + if(roomAmount.compareTo(mallMemberWallet.getBalance()) > 0){ + throw new FebsException("金额不足,请充值!"); + } + //初始化一条主房间记录 + GameRoom gameRoom = new GameRoom(); + gameRoom.setRoomType(roomType); + gameRoom.setState(GameRoom.STATE_READY); + gameRoom.setOwnerMemberId(memberId); + gameRoom.setGameTime(gameTime); + gameRoomMapper.insert(gameRoom); + + boolean flag = false; + String password = ShareCodeUtil.toSerialNumberCodeTwo(gameRoom.getId()); + while (!flag){ + QueryWrapper<GameRoom> objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.eq("password",password); + List<GameRoom> gameRooms = gameRoomMapper.selectList(objectQueryWrapper); + if(CollUtil.isEmpty(gameRooms)){ + flag = true; + }else{ + password = ShareCodeUtil.toSerialNumberCodeTwo(gameRoom.getId()); + } + } + gameRoom.setPassword(password); + gameRoomMapper.updateById(gameRoom); + //初始化一条子房间记录 + GameRoomChild gameRoomChild = new GameRoomChild(); + gameRoomChild.setRoomId(gameRoom.getId()); + gameRoomChild.setOwnerState(GameRoomChild.OWNER_TRUE); + gameRoomChild.setMemberId(memberId); + gameRoomChildMapper.insert(gameRoomChild); + + ApiCreateRoomVo apiCreateRoomVo = new ApiCreateRoomVo(); + apiCreateRoomVo.setRoomType(roomType); + apiCreateRoomVo.setRoomId(gameRoom.getId()); + apiCreateRoomVo.setPassword(password); + apiCreateRoomVo.setState(gameRoom.getState()); + return new FebsResponse().success().data(apiCreateRoomVo); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public FebsResponse startGame(ApiStartGameDto startGameDto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + MallMember mallMember = mallMemberMapper.selectById(memberId); + + Long roomId = startGameDto.getRoomId(); + QueryWrapper<GameRoom> roomQueryWrapper = new QueryWrapper<>(); + roomQueryWrapper.eq("owner_member_id",memberId); + roomQueryWrapper.eq("id",roomId); + GameRoom gameRoom = gameRoomMapper.selectOne(roomQueryWrapper); + if(ObjectUtil.isEmpty(gameRoom)){ + throw new FebsException("房间不存在"); + } + if(GameRoom.STATE_READY != gameRoom.getState()){ + throw new FebsException("游戏已开始"); + } + + Integer roomType = gameRoom.getRoomType(); + GameRoomTypeEnum room = GameRoomTypeEnum.ROOM_ONE.getRoom(roomType); + if(ObjectUtil.isEmpty(room)){ + throw new FebsException("请选择正确的房间类型!"); + } + //创建房间的最小金额 + BigDecimal roomAmount = new BigDecimal(room.getRoomAmount()).setScale(2, BigDecimal.ROUND_DOWN); + MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); + if(roomAmount.compareTo(mallMemberWallet.getBalance()) > 0){ + throw new FebsException("金额不足,请充值!"); + } + + gameRoom.setState(GameRoom.STATE_ING); + gameRoomMapper.updateById(gameRoom); + + GameGame gameGame = new GameGame(); + gameGame.setMemberId(memberId); + gameGame.setRoomId(roomId); + gameGame.setState(GameGame.STATE_READY); + gameGameMapper.insert(gameGame); + + /** + * 给房间里面的所有人发送一个开始的信息 + */ + this.sendMsgByRoomId(roomId,"START:"+gameGame.getId()); + + ApiStartGameVo apiStartGameVo = new ApiStartGameVo(); + apiStartGameVo.setRoomType(gameRoom.getRoomType()); + apiStartGameVo.setRoomId(gameRoom.getId()); + apiStartGameVo.setPassword(gameRoom.getPassword()); + apiStartGameVo.setState(gameRoom.getState()); + apiStartGameVo.setCreatedTime(gameGame.getCreatedTime()); + return new FebsResponse().success().data(apiStartGameVo); + } + + @Override + public void sendMsgByRoomId(Long roomId,String msg) { + QueryWrapper<GameRoomChild> gameRoomChildQueryWrapper = new QueryWrapper<>(); + gameRoomChildQueryWrapper.eq("room_id",roomId); + List<GameRoomChild> gameRoomChildrens = gameRoomChildMapper.selectList(gameRoomChildQueryWrapper); + if(CollUtil.isEmpty(gameRoomChildrens)){ + return; + } + List<Long> playerMemberIds = gameRoomChildrens.stream().map(GameRoomChild::getMemberId).collect(Collectors.toList()); + this.sendMsgByMemberIds(playerMemberIds,msg); + } + + @Override + public void sendMsgByMemberIds(List<Long> memberIds,String msg) { + QueryWrapper<MallMember> memberQueryWrapper = new QueryWrapper<>(); + memberQueryWrapper.in("id",memberIds); + List<MallMember> mallMembers = mallMemberMapper.selectList(memberQueryWrapper); + if(CollUtil.isEmpty(mallMembers)){ + return; + } + String inviteIdsString = mallMembers.stream() + .map(MallMember::getInviteId) // 提取每个MallMember的inviteId + .collect(Collectors.joining(",")); // 使用逗号连接所有inviteId + WsSessionManager.sendMsgToMany(inviteIdsString,msg); + } + + @Override + public void sendMsgByMemberId(Long memberId,String msg) { + MallMember mallMembers = mallMemberMapper.selectById(memberId); + if(ObjectUtil.isEmpty(mallMembers)){ + return; + } + WsSessionManager.sendMsgToOne(mallMembers.getInviteId(),msg); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public FebsResponse chooseNum(ApiChooseNumDto apiChooseNumDto) { + /** + * 判断这个房间投注人是否在房间中 + * 判断游戏的状态是否是投注中 + * 判断房间类型是否满足投注金额 + * 判断游戏的投注金额是否足够 + */ + Long memberId = LoginUserUtil.getLoginUser().getId(); + + Long roomId = apiChooseNumDto.getRoomId(); + Integer chooseNum = apiChooseNumDto.getChooseNum(); + BigDecimal amount = apiChooseNumDto.getAmount(); + Long gameId = apiChooseNumDto.getGameId(); + + GameRoom gameRoom = gameRoomMapper.selectById(roomId); + if(ObjectUtil.isEmpty(gameRoom)){ + throw new FebsException("房间不存在"); + } + if(GameRoom.STATE_DONE == gameRoom.getState()){ + throw new FebsException("房主关闭了房间"); + } + if(GameRoom.STATE_READY == gameRoom.getState()){ + throw new FebsException("请等待房主开始游戏"); + } + + QueryWrapper<GameRoomChild> gameRoomChildQueryWrapper = new QueryWrapper<>(); + gameRoomChildQueryWrapper.eq("room_id",gameRoom.getId()); + gameRoomChildQueryWrapper.eq("member_id",memberId); + GameRoomChild gameRoomChildExist = gameRoomChildMapper.selectOne(gameRoomChildQueryWrapper); + if(ObjectUtil.isEmpty(gameRoomChildExist)){ + throw new FebsException("请重新进入房间"); + } + + MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); + BigDecimal balance = mallMemberWallet.getBalance(); + if(BigDecimal.ZERO.compareTo(balance) > 0){ + throw new FebsException("余额不足"); + } + if(amount.compareTo(balance) > 0){ + throw new FebsException("请减小金额"); + } + + GameRoomTypeEnum room = GameRoomTypeEnum.ROOM_ONE.getRoom(gameRoom.getRoomType()); + // 使用split方法将字符串按照逗号分割成数组 + String[] numbersArray = room.getAmounts().split(","); + // 将数组转换成Stream + List<BigDecimal> numbersList = Arrays.stream(numbersArray) + // 使用map方法将每个字符串元素转换成BigDecimal + .map(BigDecimal::new) + // 收集到List中 + .collect(Collectors.toList()); + boolean contains = numbersList.contains(amount); + if(!contains){ + throw new FebsException("请选择正确的金额"); + } + if(chooseNum < 1 || chooseNum > 6){ + throw new FebsException("请选择正确的投注"); + } + + GameGame gameGame = gameGameMapper.selectById(gameId); + if(ObjectUtil.isEmpty(gameGame)){ + throw new FebsException("请重新进入游戏"); + } + if(GameGame.STATE_READY != gameGame.getState()){ + throw new FebsException("本轮已结束"); + } + + /** + * 开始投注 + * 初始化一条投注子记录 + * 更新游戏主记录 + * 通知房主,更新页面。 + * 减少用户的金额 + * 初始化一条流水记录 + */ + memberWalletService.reduceBalance(amount,memberId); + mallMoneyFlowService.addMoneyFlow( + mallMemberWallet.getMemberId(), + amount.negate(), + GameFlowTypeEnum.PLAYER_PICK_NUM.getValue(), + MallUtils.getOrderNum("TZ"), + StrUtil.format( + GameFlowTypeEnum.PLAYER_PICK_NUM.getDescrition(), + gameRoom.getPassword(), + GamePNGEnum.SHI_ZI.getPngName(chooseNum))); + + GameGameChild gameGameChild = new GameGameChild(); + gameGameChild.setGameId(gameId); + gameGameChild.setMemberId(memberId); + gameGameChild.setAmount(amount); + gameGameChild.setPickNum(chooseNum); + gameGameChild.setState(GameGameChild.STATE_ING); + gameGameChildMapper.insert(gameGameChild); + + if(1 == chooseNum){ + BigDecimal add = gameGame.getPickOne().add(amount).setScale(2,BigDecimal.ROUND_DOWN); + gameGame.setPickOne(add); + } + if(2 == chooseNum){ + BigDecimal add = gameGame.getPickTwo().add(amount).setScale(2,BigDecimal.ROUND_DOWN); + gameGame.setPickTwo(add); + } + if(3 == chooseNum){ + BigDecimal add = gameGame.getPickThree().add(amount).setScale(2,BigDecimal.ROUND_DOWN); + gameGame.setPickThree(add); + } + if(4 == chooseNum){ + BigDecimal add = gameGame.getPickFour().add(amount).setScale(2,BigDecimal.ROUND_DOWN); + gameGame.setPickFour(add); + } + if(5 == chooseNum){ + BigDecimal add = gameGame.getPickFive().add(amount).setScale(2,BigDecimal.ROUND_DOWN); + gameGame.setPickFive(add); + } + if(6 == chooseNum){ + BigDecimal add = gameGame.getPickSix().add(amount).setScale(2,BigDecimal.ROUND_DOWN); + gameGame.setPickSix(add); + } + gameGameMapper.updateById(gameGame); + + /** + * 给房间里面的所有人发送一个开始的信息 + */ + this.sendMsgByRoomId(roomId,"TZ:"+gameGame.getId()); + + return new FebsResponse().success().message("操作成功"); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public FebsResponse gameIn(ApiGameDto apiGameDto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + /** + * 验证唯一房间编码是否存在 + * 验证当前是否已经加入过该房间 + * 验证当前用户的钱是否足够进入该房间 + * 获取房间状态信息、房间游戏信息 + * 初始化房间子表的数据 + */ + String password = apiGameDto.getPassword(); + QueryWrapper<GameRoom> objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.eq("password", password); + GameRoom gameRoom = gameRoomMapper.selectOne(objectQueryWrapper); + if(ObjectUtil.isEmpty(gameRoom)){ + throw new FebsException("房间不存在"); + } + + if(GameRoom.STATE_DONE == gameRoom.getState()){ + throw new FebsException("房间已失效"); + } + + ApiGamePlayerVo apiGamePlayerVo = new ApiGamePlayerVo(); + + QueryWrapper<GameRoomChild> gameRoomChildQueryWrapper = new QueryWrapper<>(); + gameRoomChildQueryWrapper.eq("room_id",gameRoom.getId()); + gameRoomChildQueryWrapper.eq("member_id",memberId); + GameRoomChild gameRoomChildExist = gameRoomChildMapper.selectOne(gameRoomChildQueryWrapper); + + MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); + BigDecimal balance = mallMemberWallet.getBalance(); + GameRoomTypeEnum room = GameRoomTypeEnum.ROOM_ONE.getRoom(gameRoom.getRoomType()); + if(ObjectUtil.isNotEmpty(gameRoomChildExist)){ + Integer ownerState = gameRoomChildExist.getOwnerState(); + if(GameRoomChild.OWNER_TRUE == ownerState){ + BigDecimal roomAmount = new BigDecimal(room.getRoomAmount()).setScale(2,BigDecimal.ROUND_DOWN); + if(roomAmount.compareTo(balance) > 0){ + throw new FebsException("进入房间,需要"+roomAmount+",请先充值"); + } + }else{ + BigDecimal minAmount = new BigDecimal(room.getMinAmount()).setScale(2,BigDecimal.ROUND_DOWN); + if(minAmount.compareTo(balance) > 0){ + throw new FebsException("继续游戏需要"+minAmount+",请先充值"); + } + } + }else{ + BigDecimal minAmount = new BigDecimal(room.getMinAmount()).setScale(2,BigDecimal.ROUND_DOWN); + if(minAmount.compareTo(balance) > 0){ + throw new FebsException("继续游戏需要"+minAmount+",请先充值"); + } + } + + if(ObjectUtil.isNotEmpty(gameRoomChildExist)){ + apiGamePlayerVo.setPlayerType(gameRoomChildExist.getOwnerState()); + }else{ + + GameRoomChild gameRoomChild = new GameRoomChild(); + gameRoomChild.setRoomId(gameRoom.getId()); + gameRoomChild.setMemberId(memberId); + gameRoomChild.setOwnerState(GameRoomChild.OWNER_FALSE); + gameRoomChildMapper.insert(gameRoomChild); + apiGamePlayerVo.setPlayerType(gameRoomChild.getOwnerState()); + } + apiGamePlayerVo.setBalance(balance); + + apiGamePlayerVo.setRoomType(gameRoom.getRoomType()); + apiGamePlayerVo.setRoomId(gameRoom.getId()); + apiGamePlayerVo.setPassword(gameRoom.getPassword()); + apiGamePlayerVo.setState(gameRoom.getState()); + apiGamePlayerVo.setGameTime(gameRoom.getGameTime()); + + QueryWrapper<GameGame> gameGameQueryWrapper = new QueryWrapper<>(); + gameGameQueryWrapper.eq("room_id",gameRoom.getId()); + gameGameQueryWrapper.orderByDesc("CREATED_TIME"); + gameGameQueryWrapper.last("limit 5"); + List<GameGame> gameGames = gameGameMapper.selectList(gameGameQueryWrapper); + List<ApiGameGameVo> apiGameGameVos = new ArrayList<>(); + if(CollUtil.isNotEmpty(gameGames)){ + for(GameGame gameGame : gameGames){ + ApiGameGameVo apiGameGameVo = new ApiGameGameVo(); + apiGameGameVo.setFirstNum(ObjectUtil.isEmpty(gameGame.getFirstNum()) ? 0 : gameGame.getFirstNum()); + apiGameGameVo.setSecondNum(ObjectUtil.isEmpty(gameGame.getSecondNum()) ? 0 : gameGame.getSecondNum()); + apiGameGameVo.setState(gameGame.getState()); + apiGameGameVo.setPerkTime(gameGame.getPerkTime()); + if(GameGame.STATE_READY == gameGame.getState()){ + apiGamePlayerVo.setGameId(gameGame.getId()); + apiGamePlayerVo.setCreatedTime(gameGame.getCreatedTime()); + } + apiGameGameVos.add(apiGameGameVo); + } + } + apiGamePlayerVo.setApiGameGameVos(apiGameGameVos); + + return new FebsResponse().success().data(apiGamePlayerVo); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public FebsResponse endGame(ApiEndGameDto endGameDto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + Long roomId = endGameDto.getRoomId(); + Long gameId = endGameDto.getGameId(); + /** + * 只有房主才能结束本轮游戏 + * 判断本轮游戏状态 + * 结算 + * 判断房主是否还够资金开启下一轮游戏 + * 等待房主开始 + */ + GameRoom gameRoom = gameRoomMapper.selectById(roomId); + if(ObjectUtil.isEmpty(gameRoom)){ + throw new FebsException("房间不存在"); + } + + QueryWrapper<GameRoomChild> gameRoomChildQueryWrapper = new QueryWrapper<>(); + gameRoomChildQueryWrapper.eq("room_id",roomId); + gameRoomChildQueryWrapper.eq("member_id",memberId); + gameRoomChildQueryWrapper.eq("owner_state",GameRoomChild.OWNER_TRUE); + GameRoomChild gameRoomChildExist = gameRoomChildMapper.selectOne(gameRoomChildQueryWrapper); + if(ObjectUtil.isEmpty(gameRoomChildExist)){ + throw new FebsException("房间不存在"); + } + + QueryWrapper<GameGame> gameGameQueryWrapper = new QueryWrapper<>(); + gameGameQueryWrapper.eq("id",gameId); + gameGameQueryWrapper.eq("room_id",roomId); + gameGameQueryWrapper.eq("member_id",memberId); + gameGameQueryWrapper.eq("state",GameGame.STATE_READY); + GameGame gameGameExist = gameGameMapper.selectOne(gameGameQueryWrapper); + if(ObjectUtil.isEmpty(gameGameExist)){ + throw new FebsException("本轮游戏已结束"); + } + + //将游戏房间更新为准备中 + gameRoom.setState(GameRoom.STATE_READY); + gameRoomMapper.updateById(gameRoom); + //产生两个随机的1-6的数字 + int firstNum = RandomUtil.randomInt(1, 7); + int secondNum = RandomUtil.randomInt(1, 7); + gameGameExist.setFirstNum(firstNum); + gameGameExist.setSecondNum(secondNum); + gameGameExist.setState(GameGame.STATE_DONE); + gameGameExist.setPerkTime(new Date()); + gameGameMapper.updateById(gameGameExist); + //结算 todo 改成rabbitMq消息推送,注意游戏主表的状态变化 + this.perkGameGameChild(gameId,firstNum,secondNum); + + this.sendMsgByRoomId(roomId,"DONE:"+gameId); + + ApiEndGameVo apiEndGameVo = new ApiEndGameVo(); + apiEndGameVo.setRoomId(roomId); + return new FebsResponse().success().data(apiEndGameVo); + } + + @Override + public BigDecimal perkGameGameChild(Long gameId,int firstNum,int secondNum) { + BigDecimal totalPerk = BigDecimal.ZERO; + /** + * 获取本局游戏的全部参与人员 + * 结算金额 + */ + QueryWrapper<GameGameChild> objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.eq("game_id",gameId); + objectQueryWrapper.eq("state",GameGameChild.STATE_ING); + List<GameGameChild> gameGameChildrens = gameGameChildMapper.selectList(objectQueryWrapper); + if(CollUtil.isEmpty(gameGameChildrens)){ + return totalPerk; + } + for(GameGameChild gameChild : gameGameChildrens){ + Long memberId = gameChild.getMemberId(); + //投入金额 + BigDecimal amount = gameChild.getAmount(); + //投注号码 + Integer pickNum = gameChild.getPickNum(); + //中奖金额 + BigDecimal perkAmount = BigDecimal.ZERO; + if(pickNum == firstNum){ + GamePNGEnum png = GamePNGEnum.SHI_ZI.getPng(firstNum); + if(ObjectUtil.isNotEmpty(png)){ + Integer pngTimes = png.getPngTimes(); + perkAmount = perkAmount.add(amount.multiply(new BigDecimal(pngTimes)).setScale(2,BigDecimal.ROUND_DOWN)); + } + } + if(pickNum == secondNum){ + GamePNGEnum png = GamePNGEnum.SHI_ZI.getPng(secondNum); + if(ObjectUtil.isNotEmpty(png)){ + Integer pngTimes = png.getPngTimes(); + perkAmount = perkAmount.add(amount.multiply(new BigDecimal(pngTimes)).setScale(2,BigDecimal.ROUND_DOWN)); + } + } + if(BigDecimal.ZERO.compareTo(perkAmount) >= 0){//说明两个号码没中, + gameChild.setPerkState(GameGameChild.PERK_STATE_NO); + gameChild.setPerkAmount(amount.negate()); + + mallMoneyFlowService.addMoneyFlow( + gameChild.getMemberId(), + BigDecimal.ZERO, + GameFlowTypeEnum.PLAYER_PERK.getValue(), + MallUtils.getOrderNum("ZJ"), + StrUtil.format( + GameFlowTypeEnum.PLAYER_PERK.getDescrition(), + GamePNGEnum.SHI_ZI.getPngName(firstNum), + GamePNGEnum.SHI_ZI.getPngName(secondNum), + GamePNGEnum.SHI_ZI.getPngName(pickNum) + )); + + totalPerk = totalPerk.add(amount); + }else{ + gameChild.setPerkState(GameGameChild.PERK_STATE_YES); + gameChild.setPerkAmount(perkAmount); + + BigDecimal memberTotalPerk = perkAmount.add(amount); + memberWalletService.addBalance(memberTotalPerk,gameChild.getMemberId()); + + mallMoneyFlowService.addMoneyFlow( + gameChild.getMemberId(), + memberTotalPerk, + GameFlowTypeEnum.PLAYER_PERK.getValue(), + MallUtils.getOrderNum("ZJ"), + StrUtil.format( + GameFlowTypeEnum.PLAYER_PERK.getDescrition(), + GamePNGEnum.SHI_ZI.getPngName(firstNum), + GamePNGEnum.SHI_ZI.getPngName(secondNum), + GamePNGEnum.SHI_ZI.getPngName(pickNum) + )); + + totalPerk = totalPerk.subtract(perkAmount); + } + gameChild.setPerkNumOne(firstNum); + gameChild.setPerkNumTwo(secondNum); + gameChild.setState(GameGameChild.STATE_DONE); + gameGameChildMapper.updateById(gameChild); + } + + GameGame gameGame = gameGameMapper.selectById(gameId); + + Long memberId = gameGame.getMemberId(); + memberWalletService.addBalance(totalPerk,memberId); + mallMoneyFlowService.addMoneyFlow( + memberId, + totalPerk, + GameFlowTypeEnum.OWNER_PERK.getValue(), + MallUtils.getOrderNum("KJ"), + StrUtil.format( + GameFlowTypeEnum.OWNER_PERK.getDescrition(), + GamePNGEnum.SHI_ZI.getPngName(firstNum), + GamePNGEnum.SHI_ZI.getPngName(secondNum) + )); + + gameGame.setState(GameGame.STATE_OVER); + gameGameMapper.updateById(gameGame); + return totalPerk; + } + + @Override + public FebsResponse nextGame(ApiNextGameDto apiNextGameDto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + /** + * 验证唯一房间编码是否存在 + * 验证当前是否已经加入过该房间 + * 验证当前用户的钱是否足够进入该房间 + * 获取房间状态信息、房间游戏信息 + * 初始化房间子表的数据 + */ + Long gameId = apiNextGameDto.getGameId(); + GameGame gameGameNow = gameGameMapper.selectById(gameId); + if(ObjectUtil.isEmpty(gameGameNow)){ + throw new FebsException("游戏等待中"); + } + GameRoom gameRoom = gameRoomMapper.selectById(gameGameNow.getRoomId()); + if(ObjectUtil.isEmpty(gameRoom)){ + throw new FebsException("房间不存在"); + } + + if(GameRoom.STATE_DONE == gameRoom.getState()){ + throw new FebsException("房间已失效"); + } + + ApiNextGameVo apiGamePlayerVo = new ApiNextGameVo(); + + QueryWrapper<GameRoomChild> gameRoomChildQueryWrapper = new QueryWrapper<>(); + gameRoomChildQueryWrapper.eq("room_id",gameRoom.getId()); + gameRoomChildQueryWrapper.eq("member_id",memberId); + GameRoomChild gameRoomChildExist = gameRoomChildMapper.selectOne(gameRoomChildQueryWrapper); + + MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); + BigDecimal balance = mallMemberWallet.getBalance(); + GameRoomTypeEnum room = GameRoomTypeEnum.ROOM_ONE.getRoom(gameRoom.getRoomType()); + if(ObjectUtil.isNotEmpty(gameRoomChildExist)){ + Integer ownerState = gameRoomChildExist.getOwnerState(); + if(GameRoomChild.OWNER_TRUE == ownerState){ + BigDecimal roomAmount = new BigDecimal(room.getRoomAmount()).setScale(2,BigDecimal.ROUND_DOWN); + if(roomAmount.compareTo(balance) > 0){ + throw new FebsException("进入房间,需要"+roomAmount+",请先充值"); + } + }else{ + BigDecimal minAmount = new BigDecimal(room.getMinAmount()).setScale(2,BigDecimal.ROUND_DOWN); + if(minAmount.compareTo(balance) > 0){ + throw new FebsException("继续游戏需要"+minAmount+",请先充值"); + } + } + }else{ + BigDecimal minAmount = new BigDecimal(room.getMinAmount()).setScale(2,BigDecimal.ROUND_DOWN); + if(minAmount.compareTo(balance) > 0){ + throw new FebsException("继续游戏需要"+minAmount+",请先充值"); + } + } + + if(ObjectUtil.isNotEmpty(gameRoomChildExist)){ + apiGamePlayerVo.setPlayerType(gameRoomChildExist.getOwnerState()); + }else{ + GameRoomChild gameRoomChild = new GameRoomChild(); + gameRoomChild.setRoomId(gameRoom.getId()); + gameRoomChild.setMemberId(memberId); + gameRoomChild.setOwnerState(GameRoomChild.OWNER_FALSE); + gameRoomChildMapper.insert(gameRoomChild); + apiGamePlayerVo.setPlayerType(gameRoomChild.getOwnerState()); + } + apiGamePlayerVo.setBalance(balance); + apiGamePlayerVo.setRoomType(gameRoom.getRoomType()); + apiGamePlayerVo.setRoomId(gameRoom.getId()); + apiGamePlayerVo.setPassword(gameRoom.getPassword()); + apiGamePlayerVo.setState(gameRoom.getState()); + apiGamePlayerVo.setGameTime(gameRoom.getGameTime()); + + QueryWrapper<GameGame> gameGameQueryWrapper = new QueryWrapper<>(); + gameGameQueryWrapper.eq("room_id",gameRoom.getId()); + gameGameQueryWrapper.orderByDesc("CREATED_TIME"); + gameGameQueryWrapper.last("limit 5"); + List<GameGame> gameGames = gameGameMapper.selectList(gameGameQueryWrapper); + List<ApiGameGameVo> apiGameGameVos = new ArrayList<>(); + if(CollUtil.isNotEmpty(gameGames)){ + for(GameGame gameGame : gameGames){ + ApiGameGameVo apiGameGameVo = new ApiGameGameVo(); + apiGameGameVo.setFirstNum(ObjectUtil.isEmpty(gameGame.getFirstNum()) ? 0 : gameGame.getFirstNum()); + apiGameGameVo.setSecondNum(ObjectUtil.isEmpty(gameGame.getSecondNum()) ? 0 : gameGame.getSecondNum()); + apiGameGameVo.setState(gameGame.getState()); + apiGameGameVo.setPerkTime(gameGame.getPerkTime()); + if(GameGame.STATE_READY == gameGame.getState()){ + apiGamePlayerVo.setGameId(gameGame.getId()); + apiGamePlayerVo.setCreatedTime(gameGame.getCreatedTime()); + } + apiGameGameVos.add(apiGameGameVo); + } + } + apiGamePlayerVo.setApiGameGameVos(apiGameGameVos); + + return new FebsResponse().success().data(apiGamePlayerVo); + } + + @Override + public FebsResponse existGame(ApiExistGameDto apiExistGameDto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + Long roomId = apiExistGameDto.getRoomId(); + /** + * 删除房间子表的数据 + */ + MallMember mallMember = mallMemberMapper.selectById(memberId); + QueryWrapper<GameRoomChild> gameRoomChildQueryWrapper = new QueryWrapper<>(); + gameRoomChildQueryWrapper.eq("room_id",roomId); + gameRoomChildQueryWrapper.eq("member_id",memberId); + GameRoomChild gameRoomChildExist = gameRoomChildMapper.selectOne(gameRoomChildQueryWrapper); + if(ObjectUtil.isEmpty(gameRoomChildExist)){ + throw new FebsException("房间不存在"); + } + Integer ownerState = gameRoomChildExist.getOwnerState(); + //如果退出的是房主,那么游戏结束 + if(GameRoomChild.OWNER_TRUE == ownerState){ + GameRoom gameRoom = gameRoomMapper.selectById(roomId); + if(ObjectUtil.isNotEmpty(gameRoom)){ + gameRoom.setState(GameRoom.STATE_DONE); + gameRoomMapper.updateById(gameRoom); + + this.sendMsgByRoomId(roomId,"OVER"); + } + } + //断开websocket + WsSessionManager.remove(mallMember.getInviteId()); + + return new FebsResponse().success(); + } + + @Override + public FebsResponse flashGame(ApiFlashGameDto apiFlashGameDto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + Long gameId = apiFlashGameDto.getGameId(); + + GameGame gameGame = gameGameMapper.selectById(gameId); + if(ObjectUtil.isEmpty(gameGame)){ + throw new FebsException("游戏已结束"); + } + ApiFlashGameVo apiFlashGameVo = new ApiFlashGameVo(); + apiFlashGameVo.setRoomId(gameGame.getRoomId()); + apiFlashGameVo.setFirstNum(gameGame.getFirstNum()); + apiFlashGameVo.setSecondNum(gameGame.getSecondNum()); + apiFlashGameVo.setState(gameGame.getState()); + apiFlashGameVo.setPickOne(gameGame.getPickOne()); + apiFlashGameVo.setPickTwo(gameGame.getPickTwo()); + apiFlashGameVo.setPickThree(gameGame.getPickThree()); + apiFlashGameVo.setPickFour(gameGame.getPickFour()); + apiFlashGameVo.setPickFive(gameGame.getPickFive()); + apiFlashGameVo.setPickSix(gameGame.getPickSix()); + + return new FebsResponse().success().data(apiFlashGameVo); + } + + public static void main(String[] args) { + System.out.println(ShareCodeUtil.toSerialNumberCodeTwo(1L)); + List<GameRoomTypeEnum> roomLists = GameRoomTypeEnum.ROOM_ONE.getRoomList(); + for(GameRoomTypeEnum gameRoomTypeEnum : roomLists){ + String amounts = gameRoomTypeEnum.getAmounts(); + // 使用split方法将字符串按照逗号分割成数组 + String[] numbersArray = amounts.split(","); + + // 将数组转换成Stream + List<BigDecimal> numbersList = Arrays.stream(numbersArray) + // 使用map方法将每个字符串元素转换成BigDecimal + .map(BigDecimal::new) + // 收集到List中 + .collect(Collectors.toList()); + numbersList.forEach(System.out::println); + } + } +} diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/MallMoneyFlowServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/MallMoneyFlowServiceImpl.java index 8d78336..b10d39c 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/MallMoneyFlowServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/MallMoneyFlowServiceImpl.java @@ -41,6 +41,11 @@ } @Override + public void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, String description) { + this.addMoneyFlow(memberId, amount, type, orderNo, description, null, null, null, null, null); + } + + @Override public void addMoneyFlow(Long memberId, BigDecimal amount, Integer type, String orderNo, Integer flowType, Integer isReturn) { this.addMoneyFlow(memberId, amount, type, orderNo, null, null, null, null, flowType, isReturn); } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallMemberVo.java b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallMemberVo.java index 802aa01..88991ae 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/AdminMallMemberVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/AdminMallMemberVo.java @@ -102,6 +102,7 @@ private Integer isFrozen;//是否冻结 1:是 0 :否 + private BigDecimal balance; private BigDecimal staticNft; private BigDecimal trendsNft; private BigDecimal frozenNft; diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiCreateRoomVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiCreateRoomVo.java new file mode 100644 index 0000000..1968b3c --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiCreateRoomVo.java @@ -0,0 +1,23 @@ +package cc.mrbird.febs.mall.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "ApiCreateRoomVo", description = "信息返回类") +public class ApiCreateRoomVo { + + @ApiModelProperty(value = "房间ID") + private Long roomId; + + @ApiModelProperty(value = "房间类型 1-初级房2-土豪房3-尊爵房") + private Integer roomType;//房间类型 1-初级房2-土豪房3-尊爵房 + + @ApiModelProperty(value = "房间状态0-未开始1-正常2-结束") + private Integer state;//房间状态0-未开始1-正常2-结束 + + @ApiModelProperty(value = "房间唯一编码,自动生成") + private String password;//房间密码(房间唯一编码,自动生成) + +} diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiEndGameVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiEndGameVo.java new file mode 100644 index 0000000..87c872d --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiEndGameVo.java @@ -0,0 +1,14 @@ +package cc.mrbird.febs.mall.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel(value = "ApiEndGameVo", description = "信息返回类") +public class ApiEndGameVo { + + @ApiModelProperty(value = "房间ID") + private Long roomId; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiFlashGameVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiFlashGameVo.java new file mode 100644 index 0000000..c8952ed --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiFlashGameVo.java @@ -0,0 +1,45 @@ +package cc.mrbird.febs.mall.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@ApiModel(value = "ApiFlashGameVo", description = "信息返回类") +public class ApiFlashGameVo { + + @ApiModelProperty(value = "房间ID") + private Long roomId;// + + @ApiModelProperty(value = "第一个数") + private Integer firstNum;//第一个数 + + @ApiModelProperty(value = "第二个数") + private Integer secondNum;//第二个数 + + + @ApiModelProperty(value = "1-等待投注中 2-结束投注(10秒倒计时,结束投注) 3-结算中 4-已结算") + private Integer state; + + + @ApiModelProperty(value = "投注1的总金额") + private BigDecimal pickOne;//投注1的总金额 + + @ApiModelProperty(value = "投注2的总金额") + private BigDecimal pickTwo; + + @ApiModelProperty(value = "投注3的总金额") + private BigDecimal pickThree; + + @ApiModelProperty(value = "投注4的总金额") + private BigDecimal pickFour; + + @ApiModelProperty(value = "投注5的总金额") + private BigDecimal pickFive; + + @ApiModelProperty(value = "投注6的总金额") + private BigDecimal pickSix; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiGameGameVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiGameGameVo.java new file mode 100644 index 0000000..4b58173 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiGameGameVo.java @@ -0,0 +1,27 @@ +package cc.mrbird.febs.mall.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +@ApiModel(value = "ApiGameGameVo", description = "信息返回类") +public class ApiGameGameVo { + + @ApiModelProperty(value = "第一个数") + private Integer firstNum;//第一个数 + + @ApiModelProperty(value = "第二个数") + private Integer secondNum;//第二个数 + + @ApiModelProperty(value = "房间状态1-等待投注中 2-结束投注(10秒倒计时,结束投注) 3-结算中 4-已结算") + private Integer state;//1-等待投注中 2-结束投注(10秒倒计时,结束投注) 3-结算中 4-已结算 + + @ApiModelProperty(value = "时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date perkTime; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiGamePlayerVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiGamePlayerVo.java new file mode 100644 index 0000000..7faa634 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiGamePlayerVo.java @@ -0,0 +1,48 @@ +package cc.mrbird.febs.mall.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +@Data +@ApiModel(value = "ApiGamePlayerVo", description = "信息返回类") +public class ApiGamePlayerVo { + + @ApiModelProperty(value = "房间ID") + private Long roomId; + + @ApiModelProperty(value = "当前局游戏ID") + private Long gameId; + + @ApiModelProperty(value = "身份类型 1-房主 2-玩家") + private Integer playerType;//房间类型 1-初级房2-土豪房3-尊爵房 + + @ApiModelProperty(value = "余额") + private BigDecimal balance; + + @ApiModelProperty(value = "时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createdTime; + + @ApiModelProperty(value = "一局游戏时长") + private Integer gameTime; + + @ApiModelProperty(value = "房间类型 1-初级房2-土豪房3-尊爵房") + private Integer roomType;//房间类型 1-初级房2-土豪房3-尊爵房 + + @ApiModelProperty(value = "房间状态0-未开始1-正常2-结束") + private Integer state;//房间状态0-未开始1-正常2-结束 + + @ApiModelProperty(value = "房间唯一编码,自动生成") + private String password;//房间密码(房间唯一编码,自动生成) + + @ApiModelProperty(value = "历史开奖记录目前是5局") + private List<ApiGameGameVo> apiGameGameVos;//房间密码(房间唯一编码,自动生成) + + +} diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiNextGameVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiNextGameVo.java new file mode 100644 index 0000000..e411fb9 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiNextGameVo.java @@ -0,0 +1,47 @@ +package cc.mrbird.febs.mall.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +@Data +@ApiModel(value = "ApiNextGameVo", description = "信息返回类") +public class ApiNextGameVo { + + @ApiModelProperty(value = "房间ID") + private Long roomId; + + @ApiModelProperty(value = "当前局游戏ID") + private Long gameId; + + @ApiModelProperty(value = "身份类型 1-房主 2-玩家") + private Integer playerType;//房间类型 1-初级房2-土豪房3-尊爵房 + + @ApiModelProperty(value = "余额") + private BigDecimal balance; + + @ApiModelProperty(value = "时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createdTime; + + @ApiModelProperty(value = "一局游戏时长") + private Integer gameTime; + + @ApiModelProperty(value = "房间类型 1-初级房2-土豪房3-尊爵房") + private Integer roomType;//房间类型 1-初级房2-土豪房3-尊爵房 + + @ApiModelProperty(value = "房间状态0-未开始1-正常2-结束") + private Integer state;//房间状态0-未开始1-正常2-结束 + + @ApiModelProperty(value = "房间唯一编码,自动生成") + private String password;//房间密码(房间唯一编码,自动生成) + + @ApiModelProperty(value = "历史开奖记录目前是5局") + private List<ApiGameGameVo> apiGameGameVos;//房间密码(房间唯一编码,自动生成) + +} diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiRegisterVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiRegisterVo.java index 5a5302a..8bcc96e 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/ApiRegisterVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiRegisterVo.java @@ -11,7 +11,7 @@ @ApiModelProperty(value = "账号") private String account; - @ApiModelProperty(value = "密钥") + @ApiModelProperty(value = "密码") private String userKey; } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/ApiStartGameVo.java b/src/main/java/cc/mrbird/febs/mall/vo/ApiStartGameVo.java new file mode 100644 index 0000000..ed5b9ef --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/ApiStartGameVo.java @@ -0,0 +1,29 @@ +package cc.mrbird.febs.mall.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +@ApiModel(value = "ApiStartGameVo", description = "返回参数类") +public class ApiStartGameVo { + + @ApiModelProperty(value = "房间ID") + private Long roomId; + + @ApiModelProperty(value = "房间类型 1-初级房2-土豪房3-尊爵房") + private Integer roomType;//房间类型 1-初级房2-土豪房3-尊爵房 + + @ApiModelProperty(value = "房间状态0-未开始1-正常2-结束") + private Integer state;//房间状态0-未开始1-正常2-结束 + + @ApiModelProperty(value = "房间唯一编码,自动生成") + private String password;//房间密码(房间唯一编码,自动生成) + + @ApiModelProperty(value = "时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createdTime; +} diff --git a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java index 6b1070f..4dd994d 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java @@ -16,32 +16,14 @@ @ApiModelProperty(value = "id") private Long id; + @ApiModelProperty(value = "memberId") + private Long memberId; + @ApiModelProperty(value = "登录账号") private String accountLogin; - @ApiModelProperty(value = "头像") - private String avatar; - - @ApiModelProperty(value = "用户名") - private String name; - - @ApiModelProperty(value = "手机号") - private String phone; - @ApiModelProperty(value = "邀请码") private String inviteId; - - @ApiModelProperty(value = "代理层级") - private String level; - - @ApiModelProperty(value = "代理等级") - private String levelName; - - @ApiModelProperty(value = "推荐人昵称") - private String referrerName; - - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date createdTime; /** * 账户状态;1-正常 2-禁用 @@ -50,79 +32,13 @@ public static final int ACCOUNTSTATUS_Y = 1; public static final int ACCOUNTSTATUS_N = 2; - @ApiModelProperty(value = "是否设置收款信息", example = "1是2否") - private Integer hasPayment = 2; - - /** - * 董事 - */ - @ApiModelProperty(value = "是否为董事 1-是 2-否") - private Integer director; - - /** - * 董事 - */ - @ApiModelProperty(value = "是否为节点 1-是 2-否") + @ApiModelProperty(value = "是否为代理 1-是 2-否") private Integer partner; - - /** - * 店长 - */ - @ApiModelProperty(value = "是否店长 1-是 2-否") - private Integer storeMaster; - - @ApiModelProperty(value = "内转标识 1:开启 2:关闭") - private Integer insideWith; - - @ApiModelProperty(value = "GFD") - private BigDecimal gsd;//GFD - @ApiModelProperty(value = "静态NFT") - private BigDecimal staticNft;//静态NFT - @ApiModelProperty(value = "动态NFT") - private BigDecimal trendsNft;//动态NFT - @ApiModelProperty(value = "冻结NFT") - private BigDecimal frozenNft;//冻结NFT - @ApiModelProperty(value = "FCM代币可用") - private BigDecimal fcmCntAva;//FCM代币可用 - @ApiModelProperty(value = "FCM代币冻结") - private BigDecimal fcmCntFrozen;//FCM代币冻结 - @ApiModelProperty(value = "令牌可用") - private BigDecimal tokenAva;//令牌可用 - @ApiModelProperty(value = "令牌冻结") - private BigDecimal tokenFrozen;//令牌冻结 - @ApiModelProperty(value = "FCM提现收续费") - private BigDecimal outFcmFee;//FCM提现收续费 - @ApiModelProperty(value = "FCM提现最小数量") - private BigDecimal outFcmMin;//FCM提现收续费 - @ApiModelProperty(value = "NFT提现收续费") - private BigDecimal nftFee;//FCM提现收续费 - @ApiModelProperty(value = "NFT提现最小数量") - private BigDecimal nftMin;//FCM提现收续费 - @ApiModelProperty(value = "FCM价格") - private BigDecimal fcmPrice;//FCM价格 - @ApiModelProperty(value = "预约开始时间") - private String startTime;//FCM价格 - @ApiModelProperty(value = "预约结束时间") - private String endTime;//FCM价格 - @ApiModelProperty(value = "解冻收费FCM") - private BigDecimal unfrozenCnt;//FCM提现收续费 @ApiModelProperty(value = "是否冻结 1:是 0 :否") private Integer isFrozen; - @ApiModelProperty(value = "已排单") - private Integer pickCount; - @ApiModelProperty(value = "支付后,确认倒计时的分钟数,60,为paytime开始计算60分钟的倒计时") - private Integer minuteCnt; - @ApiModelProperty(value = "收益总额") - private BigDecimal totalPerk; - @ApiModelProperty(value = "卡牌互转手续费") - private String insideNFTPercent; - @ApiModelProperty(value = "充值地址") - private String chargeAddress; - @ApiModelProperty(value = "最小提现金额") - private BigDecimal withdrawAmount; - @ApiModelProperty(value = "USDT价格") - private BigDecimal usdtPrice; + @ApiModelProperty(value = "余额") + private BigDecimal balance; } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/MoneyFlowVo.java b/src/main/java/cc/mrbird/febs/mall/vo/MoneyFlowVo.java index 666ffd7..86e5ae2 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/MoneyFlowVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/MoneyFlowVo.java @@ -25,9 +25,6 @@ @ApiModelProperty(value = "类型") private Integer type; - @ApiModelProperty(value = "流水类型 1-FCM代币 2-令牌 3-NFT") - private Integer flowType; - @ApiModelProperty(value = "提现状态 1-提现中2-成功 3-拒绝") private String description; diff --git a/src/main/java/cc/mrbird/febs/mall/vo/MyFcmTeamVo.java b/src/main/java/cc/mrbird/febs/mall/vo/MyFcmTeamVo.java index 903d677..ff19d92 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/MyFcmTeamVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/MyFcmTeamVo.java @@ -11,36 +11,19 @@ @ApiModel(value = "MyFcmTeamVo", description = "我的团队返回参数类") public class MyFcmTeamVo { - @ApiModelProperty(value = "ID") - private Long memberId; - - @ApiModelProperty(value = "是否冻结 1:是 0 :否") - private Integer isFrozen; - @ApiModelProperty(value = "账号") private String accountLogin; - @ApiModelProperty(value = "代理等级") - private String levelName; + @ApiModelProperty(value = "总充值") + private BigDecimal chargeAmount; - @ApiModelProperty(value = "个人买入总额") - private BigDecimal myAchieveBuy; + @ApiModelProperty(value = "余额") + private BigDecimal balance; - @ApiModelProperty(value = "个人卖出总额") - private BigDecimal myAchieveSell; + @ApiModelProperty(value = "总投入") + private BigDecimal amountBuy; - @ApiModelProperty(value = "团队买入总额") - private BigDecimal myTeamAchieveBuy; + @ApiModelProperty(value = "盈亏") + private BigDecimal amountPerk; - @ApiModelProperty(value = "团队卖出总额") - private BigDecimal myTeamAchieveSell; - - @ApiModelProperty(value = "团队总单量") - private int myTeamOrderCnt; - - @ApiModelProperty(value = "团队总人数") - private int myTeamMemberCnt; - - @ApiModelProperty(value = "团队列表") - private List<MyFcmTeamVo> team; } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/MyTeamVo.java b/src/main/java/cc/mrbird/febs/mall/vo/MyTeamVo.java index 0bd7bfc..b95447c 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/MyTeamVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/MyTeamVo.java @@ -11,15 +11,10 @@ @ApiModel(value = "MyTeamVo", description = "我的团队返回参数类") public class MyTeamVo { - @ApiModelProperty(value = "我的业绩") + @ApiModelProperty(value = "总充值") private BigDecimal myAchieve; - @ApiModelProperty(value = "我的团队业绩") - private BigDecimal myTeamAchieve; - - @ApiModelProperty(value = "团队数量") + @ApiModelProperty(value = "团队人数") private int myTeamCnt; - @ApiModelProperty(value = "团队列表") - private List<TeamListVo> team; } diff --git a/src/main/java/cc/mrbird/febs/mall/vo/RoomTypeVo.java b/src/main/java/cc/mrbird/febs/mall/vo/RoomTypeVo.java new file mode 100644 index 0000000..3a2ca1e --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/vo/RoomTypeVo.java @@ -0,0 +1,24 @@ +package cc.mrbird.febs.mall.vo; + +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * @author wzy + * @date 2022-05-09 + **/ +@Data +@ApiModel(value = "ScoreSignVo", description = "积分签到返回参数接口") +public class RoomTypeVo { + + private String roomName;//名称 + private Integer roomType;//房间类型 1-初级房2-土豪房3-尊爵房 + private BigDecimal roomAmount;//进入最小金额 + private BigDecimal minAmount;//投注最小金额 + private BigDecimal maxAmount;//投注最大金额 + + private List<BigDecimal> amounts;//投注金额 +} diff --git a/src/main/resources/mapper/modules/MallMemberMapper.xml b/src/main/resources/mapper/modules/MallMemberMapper.xml index c518266..90be1d0 100644 --- a/src/main/resources/mapper/modules/MallMemberMapper.xml +++ b/src/main/resources/mapper/modules/MallMemberMapper.xml @@ -537,19 +537,12 @@ <select id="getFcmMallMemberList" resultType="cc.mrbird.febs.mall.vo.AdminMallMemberVo"> SELECT m.*, - b.static_nft staticNft, - b.trends_nft trendsNft, - b.frozen_nft frozenNft, - b.fcm_cnt_ava fcmCntAva, - b.fcm_cnt_frozen fcmCntFrozen, - b.token_ava tokenAva, - b.total_perk totalPerk, - b.token_frozen tokenFrozen, + b.balance balance, a.account_login referrerName, d.description levelName FROM mall_member m left join mall_member a on m.referrer_id = a.invite_id - left join mall_member_amount b on b.member_id = m.id + left join mall_member_wallet b on b.member_id = m.id LEFT JOIN data_dictionary_custom d on d.code = m.level and d.type = m.level <where> <if test="record != null" > @@ -583,7 +576,7 @@ <select id="getMallmemberAmountByMemberId" resultType="cc.mrbird.febs.mall.vo.MallMemberVo"> SELECT a.* - FROM mall_member_amount a + FROM mall_member_wallet a where a.member_id = #{memberId} </select> diff --git a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml index 5fbfb09..b452352 100644 --- a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml +++ b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml @@ -47,23 +47,8 @@ a.* from mall_money_flow a <where> - and a.type != 16 - and a.type != 19 - and a.type != 20 - <if test="record.inOrOut == 3"> - and a.amount > 0 - </if> - <if test="record.inOrOut == 2"> - and 0 > a.amount - </if> <if test="record.memberId != null"> and a.member_id=#{record.memberId} - </if> - <if test="record.flowType != null and record.flowType != ''"> - and a.flow_type=#{record.flowType} - </if> - <if test="record.type != null and record.type != ''"> - and a.type=#{record.type} </if> </where> order by a.created_time desc @@ -303,4 +288,25 @@ </where> order by a.created_time desc </select> + + <select id="selectSumAmountByMemberIdAndType" resultType="java.math.BigDecimal"> + select + ifnull(sum(amount),0) + from mall_money_flow + where + type = #{type} + and member_id IN + <foreach collection = "list" item = "item" separator="," open = "(" close = ")" > + #{item} + </foreach > + </select> + + <select id="selectSumByMemberIdAndType" resultType="java.math.BigDecimal"> + select + ifnull(sum(amount),0) + from mall_money_flow + where + type = #{type} + and member_id = #{memberId} + </select> </mapper> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html b/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html index f365cbe..f6b2577 100644 --- a/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html +++ b/src/main/resources/templates/febs/views/modules/mallMember/mallMemberList.html @@ -13,43 +13,6 @@ <input type="text" placeholder="登录账户" name="accountLogin" autocomplete="off" class="layui-input"> </div> </div> - <div class="layui-inline"> - <label class="layui-form-label">名称:</label> - <div class="layui-input-inline"> - <input type="text" placeholder="名称" name="name" autocomplete="off" class="layui-input"> - </div> - </div> - <div class="layui-inline"> - <label class="layui-form-label">账号:</label> - <div class="layui-input-inline"> - <input type="text" placeholder="手机号码/邀请码" name="account" autocomplete="off" class="layui-input"> - </div> - </div> - <div class="layui-inline"> - <label class="layui-form-label">账户状态:</label> - <div class="layui-input-inline"> - <select name="accountStatus"> - <option value="">请选择</option> - <option value="1">正常</option> - <option value="2">禁用</option> - </select> - </div> - </div> - <div class="layui-inline"> - <label class="layui-form-label">会员类型:</label> - <div class="layui-input-inline"> - <select name="level"> - <option value="">请选择</option> - <option value="ZERO_LEVEL">普通会员</option> - <option value="SECOND_LEVEL">1星</option> - <option value="THIRD_LEVEL">2星</option> - <option value="FOUR_LEVEL">3星</option> - <option value="FIFTH_LEVEL">4星</option> - <option value="SIX_LEVEL">5星</option> - <option value="SEVEN_LEVEL">6星</option> - </select> - </div> - </div> </div> </div> <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area"> @@ -81,46 +44,11 @@ <input type="checkbox" value={{d.id}} lay-text="正常|禁用" lay-skin="switch" lay-filter="switchStatus"> {{# } }} </script> -<script type="text/html" id="switchStoreMaster"> - {{# if(d.storeMaster === 1) { }} - <input type="checkbox" value={{d.id}} lay-text="是|否" checked lay-skin="switch" lay-filter="switchStoreMaster"> - {{# } else { }} - <input type="checkbox" value={{d.id}} lay-text="是|否" lay-skin="switch" lay-filter="switchStoreMaster"> - {{# } }} -</script> -<script type="text/html" id="switchDirector"> - {{# if(d.director === 1) { }} - <input type="checkbox" value={{d.id}} lay-text="是|否" checked lay-skin="switch" lay-filter="switchDirector"> - {{# } else { }} - <input type="checkbox" value={{d.id}} lay-text="是|否" lay-skin="switch" lay-filter="switchDirector"> - {{# } }} -</script> -<script type="text/html" id="switchCreate"> - {{# if(d.creater === 1) { }} - <input type="checkbox" value={{d.id}} lay-text="是|否" checked lay-skin="switch" lay-filter="switchCreate"> - {{# } else { }} - <input type="checkbox" value={{d.id}} lay-text="是|否" lay-skin="switch" lay-filter="switchCreate"> - {{# } }} -</script> <script type="text/html" id="switchPartner"> {{# if(d.partner === 1) { }} <input type="checkbox" value={{d.id}} lay-text="是|否" checked lay-skin="switch" lay-filter="switchPartner"> {{# } else { }} <input type="checkbox" value={{d.id}} lay-text="是|否" lay-skin="switch" lay-filter="switchPartner"> - {{# } }} -</script> -<script type="text/html" id="switchInsideWith"> - {{# if(d.insideWith === 1) { }} - <input type="checkbox" value={{d.id}} lay-text="是|否" checked lay-skin="switch" lay-filter="switchInsideWith"> - {{# } else { }} - <input type="checkbox" value={{d.id}} lay-text="是|否" lay-skin="switch" lay-filter="switchInsideWith"> - {{# } }} -</script> -<script type="text/html" id="switchOutsideWith"> - {{# if(d.outsideWith === 1) { }} - <input type="checkbox" value={{d.id}} lay-text="是|否" checked lay-skin="switch" lay-filter="switchOutsideWith"> - {{# } else { }} - <input type="checkbox" value={{d.id}} lay-text="是|否" lay-skin="switch" lay-filter="switchOutsideWith"> {{# } }} </script> <script type="text/html" id="switchFrozenWith"> @@ -137,15 +65,8 @@ </style> <script type="text/html" id="tableMemberBar"> <div class="layui-btn-container"> -<!-- <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" lay-event="exportMember">导出会员信息</button>--> - <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="addMember:update" lay-event="registMember">添加会员</button> - <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="mallSystemPay:update" lay-event="balance">拨付动态卡牌</button> - <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="mallSystemPay:update" lay-event="score">拨付代币可用</button> - <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="mallSystemPay:update" lay-event="prizeScore">拨付宝石可用</button> + <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="mallSystemPay:update" lay-event="balance">拨付葫芦</button> <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="resetPwd:update" lay-event="resetPwd">重置登录密码</button> - <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="resetPwd:update" lay-event="resetPayPwd">重置支付密码</button> -<!-- <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="agentLevelSet:update" lay-event="agentLevel">设置代理等级</button>--> -<!-- <button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="voucherUpdate:update" lay-event="voucherUpdate">拨付绿色凭证</button>--> </div> </script> <!-- 表格操作栏 end --> @@ -178,46 +99,6 @@ table.on('tool(userTable)', function (obj) { var data = obj.data, layEvent = obj.event; - - if (layEvent === 'close') { - febs.modal.confirm('禁用', '确认禁用该账号?', function () { - closeAccount(data.id); - }); - } - if (layEvent === 'open') { - febs.modal.confirm('开启', '确认开启该账号?', function () { - openAccount(data.id); - }); - } - - if (layEvent === 'see') { - febs.modal.open( '个人信息', 'modules/mallMember/detail/' + data.id, { - btn: ['提交', '取消'], - yes: function (index, layero) { - $('#user-update').find('#submit').trigger('click'); - }, - btn2: function () { - layer.closeAll(); - } - }); - } - if (layEvent === 'moneyFlow') { - febs.modal.open( '用户资金流水', 'modules/mallMember/moneyFlow/' + data.id, { - maxmin: true, - }); - } - - if (layEvent == 'updateReferer') { - febs.modal.open( '修改推荐人', 'modules/mallMember/updateReferer/' + data.id, { - btn: ['提交', '取消'], - yes: function (index, layero) { - $('#referer-update').find('#submit').trigger('click'); - }, - btn2: function () { - layer.closeAll(); - } - }); - } }); function frozenWithYes(id) { @@ -293,7 +174,7 @@ // 查询按钮 $query.on('click', function () { var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type}); - tableIns.reload({where: params, page: {curr: currPageGoods}}); + tableIns.reload({where: params, page: {curr: 1}}); }); // 刷新按钮 @@ -318,21 +199,8 @@ {field: 'accountLogin', title: '登录账户', minWidth: 150,align:'left'}, {field: 'inviteId', title: '邀请码', minWidth: 100,align:'left'}, {field: 'referrerName', title: '推荐人', minWidth: 100,align:'left'}, - {field: 'staticNft', title: '静态卡牌', minWidth: 120,align:'left'}, - {field: 'trendsNft', title: '动态卡牌', minWidth: 120,align:'left'}, - {field: 'totalPerk', title: '封存卡牌', minWidth: 120,align:'left'}, - // {field: 'frozenNft', title: '冻结卡牌', minWidth: 120,align:'left'}, - {field: 'fcmCntAva', title: '代币可用', minWidth: 120,align:'left'}, - {field: 'fcmCntFrozen', title: '代币冻结', minWidth: 120,align:'left'}, - {field: 'tokenAva', title: '宝石可用', minWidth: 120,align:'left'}, - {field: 'tokenFrozen', title: '宝石冻结', minWidth: 120,align:'left'}, - {field: 'levelName', title: '会员类型', minWidth: 100,align:'left'}, - // {field: 'storeMaster', title: '线下服务中心', templet:'#switchStoreMaster', minWidth: 120,align:'left',hide:toolbarMallmember}, - // {field: 'director', title: '代理商', templet:'#switchDirector', minWidth: 120,align:'left' ,hide:toolbarMallmember}, - // {field: 'creater', title: '联创', templet:'#switchCreate', minWidth: 120,align:'left' ,hide:toolbarMallmember}, - {field: 'partner', title: '节点', templet:'#switchPartner', minWidth: 120,align:'left' ,hide:toolbarMallmember}, - // {field: 'insideWith', title: '是否内转', templet:'#switchInsideWith', minWidth: 120,align:'left' ,hide:toolbarMallmember}, - // {field: 'outsideWith', title: '是否提现', templet:'#switchOutsideWith', minWidth: 120,align:'left' ,hide:toolbarMallmember}, + {field: 'balance', title: '葫芦', minWidth: 100,align:'left'}, + {field: 'partner', title: '代理', templet:'#switchPartner', minWidth: 120,align:'left' ,hide:toolbarMallmember}, {field: 'isFrozen', title: '是否冻结', templet:'#switchFrozenWith', minWidth: 120,align:'left' ,hide:toolbarMallmember}, {field: 'accountType', title: '账号类型', templet: function (d) { @@ -346,15 +214,7 @@ }, minWidth: 100,align:'left'}, {field: 'accountStatus', title: '账号状态', templet: '#switchStatus', minWidth: 100,align:'left',hide:toolbarMallmember}, {field: 'createdTime', title: '注册时间', minWidth: 180,align:'left'}, - // {title: '操作', - // templet: function (d) { - // // '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="see" shiro:hasPermission="user:update">详情</button>' - // return '<button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="moneyFlow:update" lay-event="moneyFlow">资金流水</button>' - // + '<button class="layui-btn layui-btn-normal layui-btn-sm" type="button" shiro:hasPermission="user:update" lay-event="updateReferer">修改推荐人</button>' - // // '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="moneyFlow" shiro:hasPermission="moneyFlow:update">资金流水</button>' - // // + '<button class="layui-btn layui-btn-normal layui-btn-xs" type="button" lay-event="updateReferer" shiro:hasPermission="user:update">修改推荐人</button>' - // },minWidth: 200,align:'center', fixed:"right"} - {title: '操作', minWidth: 200 ,toolbar: '#mallmember-option',hide:toolbarMallmember,align:'left', fixed:'right'} + // {title: '操作', minWidth: 200 ,toolbar: '#mallmember-option',hide:toolbarMallmember,align:'left', fixed:'right'} ]] }); } @@ -366,27 +226,6 @@ if (layEvent === 'exportMember') { window.location.href = ctx + "admin/mallMember/exportMember"; } - - if (layEvent === 'registMember') { - - febs.modal.open( '添加会员', 'modules/mallMember/addMember', { - btn: ['提交', '取消'], - yes: function (index, layero) { - $('#member-add').find('#submit').trigger('click'); - }, - btn2: function () { - layer.closeAll(); - } - }); - - return; - } - - // var checkData = table.checkStatus('userTable').data; - // if (checkData.length <= 0) { - // febs.alert.warn('请选择需要的用户'); - // return; - // } if (layEvent === 'resetPwd') { var checkData = table.checkStatus('userTable').data; @@ -403,22 +242,6 @@ }); } - if (layEvent === 'resetPayPwd') { - var checkData = table.checkStatus('userTable').data; - if (checkData.length <= 0) { - febs.alert.warn('请选择需要的用户'); - return; - } - febs.modal.confirm('重置交易密码', '是否重置选中账号交易密码为【123456】?', function () { - var ids = []; - layui.each(checkData, function (key, item) { - ids.push(item.id) - }); - - resetPwd(ids.join(','), 1); - }); - } - if (layEvent === 'balance') { var checkData = table.checkStatus('userTable').data; if (checkData.length <= 0) { @@ -429,81 +252,9 @@ febs.alert.warn('只能选择一个用户'); return; } - systemPay("动态卡牌", checkData[0].id, 1); - } - - if (layEvent === 'voucherUpdate') { - var checkData = table.checkStatus('userTable').data; - if (checkData.length <= 0) { - febs.alert.warn('请选择需要的用户'); - return; - } - if (checkData.length > 1) { - febs.alert.warn('请选择一个用户'); - return; - } - voucherUpdate("拨付绿色凭证", checkData[0].id, 1); - } - - if (layEvent === 'score') { - var checkData = table.checkStatus('userTable').data; - if (checkData.length <= 0) { - febs.alert.warn('请选择需要的用户'); - return; - } - if (checkData.length > 1) { - febs.alert.warn('请选择一个用户'); - return; - } - systemPay("代币可用", checkData[0].id, 2); - } - - if (layEvent === 'prizeScore') { - var checkData = table.checkStatus('userTable').data; - if (checkData.length <= 0) { - febs.alert.warn('请选择需要的用户'); - return; - } - if (checkData.length > 1) { - febs.alert.warn('请选择一个用户'); - return; - } - systemPay("宝石可用", checkData[0].id, 3); - } - - if (layEvent === 'agentLevel') { - var checkData = table.checkStatus('userTable').data; - if (checkData.length <= 0) { - febs.alert.warn('请选择需要的用户'); - return; - } - if (checkData.length > 1) { - febs.alert.warn('请选择一个用户'); - return; - } - febs.modal.open('设置代理级别', 'modules/mallMember/agentLevelSet/' + checkData[0].id, { - btn: ['确认', '取消'], - yes: function (index, layero) { - $('#agent-level-set').find('#submit').trigger('click'); - }, - btn2: function () { - layer.closeAll(); - } - }); + systemPay("葫芦", checkData[0].id, 1); } }); - - function voucherUpdate(text, id, type) { - febs.modal.open(text, 'modules/mallMember/voucherUpdate/' + type +'/'+ id, { - btn: ['提交', '取消'], - yes: function (index, layero) { - $('#voucher-update').find('#submit').trigger('click'); - }, - btn2: function () { - layer.closeAll(); - } - }); - } function systemPay(text, id, type) { febs.modal.open(text, 'modules/mallMember/mallSystemPay/' + type +'/'+ id, { @@ -520,29 +271,10 @@ // 获取查询参数 function getQueryParams() { return { - name: $searchForm.find('input[name="name"]').val().trim(), - account: $searchForm.find('input[name="account"]').val().trim(), accountLogin: $searchForm.find('input[name="accountLogin"]').val().trim(), - accountStatus: $searchForm.find("select[name='accountStatus']").val(), - level: $searchForm.find("select[name='level']").val(), }; } - form.on('switch(switchInsideWith)', function (data) { - if (data.elem.checked) { - insideWithYes(data.value); - } else { - insideWithNo(data.value); - } - }) - - form.on('switch(switchOutsideWith)', function (data) { - if (data.elem.checked) { - outsideWithYes(data.value); - } else { - outsideWithNo(data.value); - } - }) form.on('switch(switchFrozenWith)', function (data) { if (data.elem.checked) { frozenWithYes(data.value); @@ -556,30 +288,6 @@ openAccount(data.value); } else { closeAccount(data.value); - } - }) - - form.on('switch(switchStoreMaster)', function (data) { - if (data.elem.checked) { - changeIdentityYes(2, data.value); - } else { - changeIdentityNo(2, data.value); - } - }) - - form.on('switch(switchDirector)', function (data) { - if (data.elem.checked) { - changeIdentityYes(1, data.value); - } else { - changeIdentityNo(1, data.value); - } - }) - - form.on('switch(switchCreate)', function (data) { - if (data.elem.checked) { - changeIdentityYes(3, data.value); - } else { - changeIdentityNo(3, data.value); } }) diff --git a/src/main/resources/templates/febs/views/modules/mallMember/mallSystemPay.html b/src/main/resources/templates/febs/views/modules/mallMember/mallSystemPay.html index 30ea085..ad15fb2 100644 --- a/src/main/resources/templates/febs/views/modules/mallMember/mallSystemPay.html +++ b/src/main/resources/templates/febs/views/modules/mallMember/mallSystemPay.html @@ -75,23 +75,23 @@ function initUserValue() { var balance; if (type == 1) { - balance = systemPay.trendsNft + balance = systemPay.balance } else if (type == 2) { - balance = systemPay.fcmCntAva + balance = systemPay.balance } else if (type ==3) { - balance = systemPay.tokenAva + balance = systemPay.balance } else { } form.val("systemPay-update-form", { - "id": systemPay.id, + "id": systemPay.memberId, "balance": balance, }); } form.on('submit(systemPay-update-form-submit)', function (data) { data.field.type = type; - febs.post(ctx + 'admin/mallMember/updateSystemPayInfo', data.field, function () { + febs.post(ctx + 'admin/mallMember/updateSystemPay', data.field, function () { layer.closeAll(); febs.alert.success('操作成功'); $('#febs-member-list').find('#reset').click(); diff --git a/src/test/java/cc/mrbird/febs/AgentTest.java b/src/test/java/cc/mrbird/febs/AgentTest.java index 220c1b1..8de92ef 100644 --- a/src/test/java/cc/mrbird/febs/AgentTest.java +++ b/src/test/java/cc/mrbird/febs/AgentTest.java @@ -5,10 +5,12 @@ import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.utils.LoginUserUtil; import cc.mrbird.febs.mall.dto.AgentLevelUpdateDto; +import cc.mrbird.febs.mall.dto.ApiCreateRoomDto; import cc.mrbird.febs.mall.dto.ApiMallActWinDetailsDto; import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.quartz.ProfitJob; +import cc.mrbird.febs.mall.service.GameService; import cc.mrbird.febs.mall.service.IAgentService; import cc.mrbird.febs.mall.vo.ApiMallActWinDetailsVo; import cc.mrbird.febs.mall.vo.ApiMallAwardDetailsVo; @@ -39,590 +41,19 @@ @SpringBootTest public class AgentTest { -// @Autowired -// private AgentProducer agentProducer; -// -// @Autowired -// private DataDictionaryCustomMapper dataDictionaryCustomMapper; -// -// @Autowired -// private IAgentService agentService; -// -// @Autowired -// private MallGoodsStyleMapper mallGoodsStyleMapper; -// -// @Autowired -// private MallActAwardSetMapper mallActAwardSetMapper; -// @Autowired -// private MallMemberMapper mallMemberMapper; -// @Autowired -// private MallActWinRecordMapper mallActWinRecordMapper; -// @Autowired -// private MallActLuckdrawRecordMapper mallActLuckdrawRecordMapper; -// @Autowired -// private MallMemberWalletMapper mallMemberWalletMapper; -// @Autowired -// private MallActSetMapper mallActSetMapper; -// @Test -// public void skusTest() { -// ApiMallAwardDetailsVo apiMallAwardDetailsVo = new ApiMallAwardDetailsVo(); -// Long memberId = 4L; -// Long actId = 1L; -// MallMember mallMember = mallMemberMapper.selectById(memberId); -// if(ObjectUtil.isEmpty(mallMember)){ -// throw new FebsException("用户不存在"); -// } -// -// MallActSet mallActSet = mallActSetMapper.selectById(actId); -// if(ObjectUtil.isEmpty(mallActSet)){ -// throw new FebsException("活动不存在"); -// } -// Integer actStatus = mallActSet.getActStatus(); -// if(MallActSet.ACT_STATUS_DISABLED == actStatus){ -// throw new FebsException("活动还没开始"); -// } -// /** -// * 获取用户积分数,判断能不能抽奖 -// * 减少对应的积分数量 -// * 较少奖品的已抽奖 -// * 生成一条抽奖记录 -// */ -// -// MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(memberId); -// if(ObjectUtil.isEmpty(wallet)){ -// throw new FebsException("账户不存在"); -// } -// BigDecimal commission = wallet.getCommission(); -// BigDecimal prizeScore = wallet.getPrizeScore(); -// Integer actScoreCnt = mallActSet.getActScoreCnt(); -// if(prizeScore.compareTo(new BigDecimal(actScoreCnt))<0){ -// throw new FebsException("竞猜积分不足"); -// } -// /** -// * 中奖概率 20% -// * 每次抽奖产生一个随机数要大于8,则中奖 -// * 历史10条抽奖记录有中奖过,中奖记录少于两条,则中奖 -// */ -// //获取中奖概率 -// DataDictionaryCustom scoreDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( -// DataDictionaryEnum.WIN_SCORE.getType(), -// DataDictionaryEnum.WIN_SCORE.getCode()); -// DataDictionaryCustom cashDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( -// DataDictionaryEnum.WIN_CASH.getType(), -// DataDictionaryEnum.WIN_CASH.getCode()); -// String scoreDicValue = scoreDic.getValue(); -// String cashDicValue = cashDic.getValue(); -// BigDecimal totalProbability = new BigDecimal(scoreDicValue).add(new BigDecimal(cashDicValue)); -// //获取那个更大一点的几率 -// BigDecimal maxProbability = BigDecimal.ZERO; -// BigDecimal minProbability = BigDecimal.ZERO; -// Integer maxAwardType = 0; -// Integer minAwardType = 0; -// if(new BigDecimal(scoreDicValue).compareTo(new BigDecimal(cashDicValue)) < 0){ -// maxProbability = new BigDecimal(cashDicValue); -// minProbability = new BigDecimal(scoreDicValue); -// maxAwardType = MallActAwardSet.AWARD_TYPE_YJ; -// minAwardType = MallActAwardSet.AWARD_TYPE_JF; -// }else{ -// maxProbability = new BigDecimal(scoreDicValue); -// minProbability = new BigDecimal(cashDicValue); -// maxAwardType = MallActAwardSet.AWARD_TYPE_JF; -// minAwardType = MallActAwardSet.AWARD_TYPE_YJ; -// } -// -// BigDecimal multiply = totalProbability.multiply(new BigDecimal(100)); -// BigDecimal failureScope = new BigDecimal(100).subtract(multiply); -// int randomInt = 90; -// //小于failureScope这个数字,则没中奖 -// if(new BigDecimal(randomInt).compareTo(failureScope) <= 0){ -// //抽奖记录 -// MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord(); -// mallActLuckdrawRecord.setActId(actId); -// mallActLuckdrawRecord.setActName(mallActSet.getActName()); -// mallActLuckdrawRecord.setMemberId(memberId); -// mallActLuckdrawRecord.setActScoreCnt(actScoreCnt); -// mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED); -// mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord); -// -// List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY); -// if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){ -// apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage()); -// apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName()); -// }else{ -// apiMallAwardDetailsVo.setAwardName("未中奖"); -// } -// }else if(new BigDecimal(randomInt).compareTo(failureScope) > 0 -// && new BigDecimal(randomInt).compareTo(failureScope.add(maxProbability.multiply(new BigDecimal(100)))) <= 0){ -// //大于failureScope.add(maxProbability.multiply(new BigDecimal(100)))这个数字,则中奖 -// //获取最新的十条抽奖记录 -// List<MallActLuckdrawRecord> records = mallActLuckdrawRecordMapper.selectRecordByMemberIdAndActId(memberId,actId); -// if(CollUtil.isNotEmpty(records)){ -// //中奖次数 -// Integer count = 0; -// for(MallActLuckdrawRecord mallActLuckdrawRecord : records){ -// Integer status = mallActLuckdrawRecord.getStatus(); -// if(MallActLuckdrawRecord.STATUS_ENABLE == status){ -// count = count + 1; -// } -// } -// if(new BigDecimal(count).compareTo(maxProbability.multiply(new BigDecimal(10))) < 0){ -// //获取活动下该类别的奖品 -// List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,maxAwardType); -// if(CollUtil.isEmpty(mallActAwardSets)){ -// //抽奖记录 -// MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord(); -// mallActLuckdrawRecord.setActId(actId); -// mallActLuckdrawRecord.setActName(mallActSet.getActName()); -// mallActLuckdrawRecord.setMemberId(memberId); -// mallActLuckdrawRecord.setActScoreCnt(actScoreCnt); -// mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED); -// mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord); -// -// List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY); -// if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){ -// apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage()); -// apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName()); -// }else{ -// apiMallAwardDetailsVo.setAwardName("未中奖"); -// } -// }else{ -// List<MallActAwardSet> idList = new ArrayList(); -// for(MallActAwardSet mallActAwardSet : mallActAwardSets){ -// Integer awardTotal = mallActAwardSet.getAwardTotal(); -// Integer awardCnt = mallActAwardSet.getAwardCnt(); -// if(awardCnt < awardTotal){ -// idList.add(mallActAwardSet); -// } -// } -// MallActAwardSet mallActAwardSet = new MallActAwardSet(); -// if(idList.size() <= 1){ -// mallActAwardSet = idList.get(0); -// }else{ -// int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1); -// mallActAwardSet = idList.get(randomIdIndex); -// } -// mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1); -// mallActAwardSetMapper.updateById(mallActAwardSet); -// -// MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord(); -// mallActLuckdrawRecord.setActId(actId); -// mallActLuckdrawRecord.setActName(mallActSet.getActName()); -// mallActLuckdrawRecord.setMemberId(memberId); -// mallActLuckdrawRecord.setActScoreCnt(actScoreCnt); -// mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE); -// mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord); -// -// MallActWinRecord mallActWinRecord = new MallActWinRecord(); -// mallActWinRecord.setMemberId(memberId); -// mallActWinRecord.setActId(actId); -// mallActWinRecord.setActName(mallActSet.getActName()); -// mallActWinRecord.setAwardId(mallActAwardSet.getId()); -// mallActWinRecord.setAwardName(mallActAwardSet.getAwardName()); -// mallActWinRecord.setAwardType(mallActAwardSet.getAwardType()); -// mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue()); -// mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId()); -// mallActWinRecordMapper.insert(mallActWinRecord); -// -// apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName()); -// apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType()); -// apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue()); -// apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage()); -// -// if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){ -// prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue())); -// }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){ -// commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue())); -// } -// } -// }else{ -// //抽奖记录 -// MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord(); -// mallActLuckdrawRecord.setActId(actId); -// mallActLuckdrawRecord.setActName(mallActSet.getActName()); -// mallActLuckdrawRecord.setMemberId(memberId); -// mallActLuckdrawRecord.setActScoreCnt(actScoreCnt); -// mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED); -// mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord); -// -// List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY); -// if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){ -// apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage()); -// apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName()); -// }else{ -// apiMallAwardDetailsVo.setAwardName("未中奖"); -// } -// } -// }else{ -// //获取活动下该类别的奖品 -// List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,maxAwardType); -// if(CollUtil.isEmpty(mallActAwardSets)){ -// //抽奖记录 -// MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord(); -// mallActLuckdrawRecord.setActId(actId); -// mallActLuckdrawRecord.setActName(mallActSet.getActName()); -// mallActLuckdrawRecord.setMemberId(memberId); -// mallActLuckdrawRecord.setActScoreCnt(actScoreCnt); -// mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED); -// mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord); -// -// List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY); -// if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){ -// apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage()); -// apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName()); -// }else{ -// apiMallAwardDetailsVo.setAwardName("未中奖"); -// } -// }else{ -// List<MallActAwardSet> idList = new ArrayList(); -// for(MallActAwardSet mallActAwardSet : mallActAwardSets){ -// Integer awardTotal = mallActAwardSet.getAwardTotal(); -// Integer awardCnt = mallActAwardSet.getAwardCnt(); -// if(awardCnt < awardTotal){ -// idList.add(mallActAwardSet); -// } -// } -// MallActAwardSet mallActAwardSet = new MallActAwardSet(); -// if(idList.size() <= 1){ -// mallActAwardSet = idList.get(0); -// }else{ -// int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1); -// mallActAwardSet = idList.get(randomIdIndex); -// } -// mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1); -// mallActAwardSetMapper.updateById(mallActAwardSet); -// -// MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord(); -// mallActLuckdrawRecord.setActId(actId); -// mallActLuckdrawRecord.setActName(mallActSet.getActName()); -// mallActLuckdrawRecord.setMemberId(memberId); -// mallActLuckdrawRecord.setActScoreCnt(actScoreCnt); -// mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE); -// mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord); -// -// MallActWinRecord mallActWinRecord = new MallActWinRecord(); -// mallActWinRecord.setMemberId(memberId); -// mallActWinRecord.setActId(actId); -// mallActWinRecord.setActName(mallActSet.getActName()); -// mallActWinRecord.setAwardId(mallActAwardSet.getId()); -// mallActWinRecord.setAwardName(mallActAwardSet.getAwardName()); -// mallActWinRecord.setAwardType(mallActAwardSet.getAwardType()); -// mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue()); -// mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId()); -// mallActWinRecordMapper.insert(mallActWinRecord); -// -// apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName()); -// apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType()); -// apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue()); -// apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage()); -// -// if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){ -// prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue())); -// }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){ -// commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue())); -// } -// } -// } -// }else{ -// //中奖 -// //获取最新的十条抽奖记录 -// List<MallActLuckdrawRecord> records = mallActLuckdrawRecordMapper.selectRecordByMemberIdAndActId(memberId,actId); -// if(CollUtil.isNotEmpty(records)){ -// //中奖次数 -// Integer count = 0; -// for(MallActLuckdrawRecord mallActLuckdrawRecord : records){ -// Integer status = mallActLuckdrawRecord.getStatus(); -// if(MallActLuckdrawRecord.STATUS_ENABLE == status){ -// count = count + 1; -// } -// } -// if(new BigDecimal(count).compareTo(minProbability.multiply(new BigDecimal(10))) < 0){ -// //获取活动下该类别的奖品 -// List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,minAwardType); -// if(CollUtil.isEmpty(mallActAwardSets)){ -// //抽奖记录 -// MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord(); -// mallActLuckdrawRecord.setActId(actId); -// mallActLuckdrawRecord.setActName(mallActSet.getActName()); -// mallActLuckdrawRecord.setMemberId(memberId); -// mallActLuckdrawRecord.setActScoreCnt(actScoreCnt); -// mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED); -// mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord); -// -// List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY); -// if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){ -// apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage()); -// apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName()); -// }else{ -// apiMallAwardDetailsVo.setAwardName("未中奖"); -// } -// }else{ -// List<MallActAwardSet> idList = new ArrayList(); -// for(MallActAwardSet mallActAwardSet : mallActAwardSets){ -// Integer awardTotal = mallActAwardSet.getAwardTotal(); -// Integer awardCnt = mallActAwardSet.getAwardCnt(); -// if(awardCnt < awardTotal){ -// idList.add(mallActAwardSet); -// } -// } -// MallActAwardSet mallActAwardSet = new MallActAwardSet(); -// if(idList.size() <= 1){ -// mallActAwardSet = idList.get(0); -// }else{ -// int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1); -// mallActAwardSet = idList.get(randomIdIndex); -// } -// mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1); -// mallActAwardSetMapper.updateById(mallActAwardSet); -// -// MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord(); -// mallActLuckdrawRecord.setActId(actId); -// mallActLuckdrawRecord.setActName(mallActSet.getActName()); -// mallActLuckdrawRecord.setMemberId(memberId); -// mallActLuckdrawRecord.setActScoreCnt(actScoreCnt); -// mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE); -// mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord); -// -// MallActWinRecord mallActWinRecord = new MallActWinRecord(); -// mallActWinRecord.setMemberId(memberId); -// mallActWinRecord.setActId(actId); -// mallActWinRecord.setActName(mallActSet.getActName()); -// mallActWinRecord.setAwardId(mallActAwardSet.getId()); -// mallActWinRecord.setAwardName(mallActAwardSet.getAwardName()); -// mallActWinRecord.setAwardType(mallActAwardSet.getAwardType()); -// mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue()); -// mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId()); -// mallActWinRecordMapper.insert(mallActWinRecord); -// -// apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName()); -// apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType()); -// apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue()); -// apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage()); -// -// if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){ -// prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue())); -// }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){ -// commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue())); -// } -// } -// }else{ -// //抽奖记录 -// MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord(); -// mallActLuckdrawRecord.setActId(actId); -// mallActLuckdrawRecord.setActName(mallActSet.getActName()); -// mallActLuckdrawRecord.setMemberId(memberId); -// mallActLuckdrawRecord.setActScoreCnt(actScoreCnt); -// mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED); -// mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord); -// -// List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY); -// if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){ -// apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage()); -// apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName()); -// }else{ -// apiMallAwardDetailsVo.setAwardName("未中奖"); -// } -// } -// }else{ -// //获取活动下该类别的奖品 -// List<MallActAwardSet> mallActAwardSets = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId,minAwardType); -// if(CollUtil.isEmpty(mallActAwardSets)){ -// //抽奖记录 -// MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord(); -// mallActLuckdrawRecord.setActId(actId); -// mallActLuckdrawRecord.setActName(mallActSet.getActName()); -// mallActLuckdrawRecord.setMemberId(memberId); -// mallActLuckdrawRecord.setActScoreCnt(actScoreCnt); -// mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_DISABLED); -// mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord); -// -// List<MallActAwardSet> mallActAwardSetXXCY = mallActAwardSetMapper.selectMallActAwardByActIdAndAwardType(actId, MallActAwardSet.AWARD_TYPE_XXCY); -// if(CollUtil.isNotEmpty(mallActAwardSetXXCY)){ -// apiMallAwardDetailsVo.setAwardImage(mallActAwardSetXXCY.get(0).getAwardImage()); -// apiMallAwardDetailsVo.setAwardName(mallActAwardSetXXCY.get(0).getAwardName()); -// }else{ -// apiMallAwardDetailsVo.setAwardName("未中奖"); -// } -// }else{ -// List<MallActAwardSet> idList = new ArrayList(); -// for(MallActAwardSet mallActAwardSet : mallActAwardSets){ -// Integer awardTotal = mallActAwardSet.getAwardTotal(); -// Integer awardCnt = mallActAwardSet.getAwardCnt(); -// if(awardCnt < awardTotal){ -// idList.add(mallActAwardSet); -// } -// } -// MallActAwardSet mallActAwardSet = new MallActAwardSet(); -// if(idList.size() <= 1){ -// mallActAwardSet = idList.get(0); -// }else{ -// int randomIdIndex = RandomUtil.randomInt(0, idList.size()-1); -// mallActAwardSet = idList.get(randomIdIndex); -// } -// mallActAwardSet.setAwardCnt(mallActAwardSet.getAwardCnt() + 1); -// mallActAwardSetMapper.updateById(mallActAwardSet); -// -// MallActLuckdrawRecord mallActLuckdrawRecord = new MallActLuckdrawRecord(); -// mallActLuckdrawRecord.setActId(actId); -// mallActLuckdrawRecord.setActName(mallActSet.getActName()); -// mallActLuckdrawRecord.setMemberId(memberId); -// mallActLuckdrawRecord.setActScoreCnt(actScoreCnt); -// mallActLuckdrawRecord.setStatus(MallActLuckdrawRecord.STATUS_ENABLE); -// mallActLuckdrawRecordMapper.insert(mallActLuckdrawRecord); -// -// MallActWinRecord mallActWinRecord = new MallActWinRecord(); -// mallActWinRecord.setMemberId(memberId); -// mallActWinRecord.setActId(actId); -// mallActWinRecord.setActName(mallActSet.getActName()); -// mallActWinRecord.setAwardId(mallActAwardSet.getId()); -// mallActWinRecord.setAwardName(mallActAwardSet.getAwardName()); -// mallActWinRecord.setAwardType(mallActAwardSet.getAwardType()); -// mallActWinRecord.setAwardValue(mallActAwardSet.getAwardValue()); -// mallActWinRecord.setRecordId(mallActLuckdrawRecord.getId()); -// mallActWinRecordMapper.insert(mallActWinRecord); -// -// apiMallAwardDetailsVo.setAwardName(mallActAwardSet.getAwardName()); -// apiMallAwardDetailsVo.setAwardType(mallActAwardSet.getAwardType()); -// apiMallAwardDetailsVo.setAwardValue(mallActAwardSet.getAwardValue()); -// apiMallAwardDetailsVo.setAwardImage(mallActAwardSet.getAwardImage()); -// -// if(MallActAwardSet.AWARD_TYPE_JF == mallActAwardSet.getAwardType()){ -// prizeScore = prizeScore.add(new BigDecimal(mallActAwardSet.getAwardValue())); -// }else if(MallActAwardSet.AWARD_TYPE_YJ == mallActAwardSet.getAwardType()){ -// commission = commission.add(new BigDecimal(mallActAwardSet.getAwardValue())); -// } -// } -// } -// } -// -// //扣竞猜积分 -// prizeScore = prizeScore.subtract(new BigDecimal(actScoreCnt)); -// wallet.setPrizeScore(prizeScore); -// wallet.setCommission(commission); -// mallMemberWalletMapper.updateAmountWithVersion(wallet); -// -// System.out.println(apiMallAwardDetailsVo); -// } -// -// @Test -// public void agentTest() { -//// agentProducer.sendDelayMsg(1L, 10000L); -// -// ApiMallActWinDetailsDto apiMallActWinDetailsDto = new ApiMallActWinDetailsDto(); -// apiMallActWinDetailsDto.setActId(1L); -// apiMallActWinDetailsDto.setPageNow(1); -// apiMallActWinDetailsDto.setPageSize(10); -// Long memberId = 4L; -// MallMember mallMember = mallMemberMapper.selectById(memberId); -// if(ObjectUtil.isEmpty(mallMember)){ -// throw new FebsException("用户不存在"); -// } -// apiMallActWinDetailsDto.setMemberId(memberId); -// -// Long actId = apiMallActWinDetailsDto.getActId(); -// MallActSet mallActSet = mallActSetMapper.selectById(actId); -// if(ObjectUtil.isEmpty(mallActSet)){ -// throw new FebsException("活动不存在"); -// } -// Page<ApiMallActWinDetailsVo> page = new Page<>(apiMallActWinDetailsDto.getPageNow(), apiMallActWinDetailsDto.getPageSize()); -// IPage<ApiMallActWinDetailsVo> apiMallActWinDetailsVoIPage = mallActWinRecordMapper.selectApiMallActWinDetailsListInPage(apiMallActWinDetailsDto, page); -// System.out.println(apiMallActWinDetailsVoIPage); -// } -// -// @Test -// public void insertAgentTest() { -//// AgentInfo agentInfo = new AgentInfo(); -//// agentInfo.setOrderType(2); -//// agentInfo.setOrderCnt(2000); -//// agentInfo.setLastCnt(3); -//// agentInfo.setDirectIncome(BigDecimal.valueOf(50)); -//// agentInfo.setTeamIncome(BigDecimal.valueOf(15)); -//// agentInfo.setTeamIncomeType(2); -//// -//// DataDictionaryCustom data = new DataDictionaryCustom(); -//// data.setType("AGENT_LEVEL_REQUIRE"); -//// data.setCode(AgentLevelEnum.FOUR_LEVEL.name()); -//// data.setValue(JSONObject.toJSONString(agentInfo)); -//// dataDictionaryCustomMapper.insert(data); -// } -// -// @Test -// public void insertData() { -// int i = 1; -// for (AgentLevelEnum value : AgentLevelEnum.values()) { -// DataDictionaryCustom data = new DataDictionaryCustom(); -// data.setType("AGENT_LEVEL"); -// data.setDescription(value.getName()); -// data.setCode(value.name()); -// data.setValue(String.valueOf(i)); -// dataDictionaryCustomMapper.insert(data); -// } -// -// } -// -// public static void main(String[] args) { -// getJson(); -// } -// -// public static void getJson(){ -// AgentLevelUpdateDto adminAgentLevelUpdateInfoVo = new AgentLevelUpdateDto(); -// String jsonStr = "{\"directIncome\":50,\"lastCnt\":3,\"orderCnt\":2000,\"orderType\":2,\"teamIncome\":15,\"teamIncomeType\":2}"; -// JSONObject jsonObject = JSONObject.parseObject(jsonStr); -// adminAgentLevelUpdateInfoVo.setDirectIncome(new BigDecimal((jsonObject.get("directIncome")==null?0:jsonObject.get("directIncome")).toString())); -// adminAgentLevelUpdateInfoVo.setLastCnt(Integer.parseInt((jsonObject.get("lastCnt")==null?0:jsonObject.get("lastCnt")).toString())); -// adminAgentLevelUpdateInfoVo.setOrderCnt(Integer.parseInt((jsonObject.get("orderCnt")==null?0:jsonObject.get("orderCnt")).toString())); -// adminAgentLevelUpdateInfoVo.setOrderType(Integer.parseInt(jsonObject.get("orderType").toString())); -// adminAgentLevelUpdateInfoVo.setTeamIncome(new BigDecimal((jsonObject.get("teamIncome")==null?0:jsonObject.get("teamIncome")).toString())); -// adminAgentLevelUpdateInfoVo.setTeamIncomeType(Integer.parseInt(jsonObject.get("orderType").toString())); -// adminAgentLevelUpdateInfoVo.setId(14L); -// AgentLevelUpdateDto agentLevelUpdateDtoJson = new AgentLevelUpdateDto(); -// agentLevelUpdateDtoJson.setDirectIncome(adminAgentLevelUpdateInfoVo.getDirectIncome()); -// agentLevelUpdateDtoJson.setLastCnt(adminAgentLevelUpdateInfoVo.getLastCnt()); -// agentLevelUpdateDtoJson.setOrderCnt(adminAgentLevelUpdateInfoVo.getOrderCnt()); -// agentLevelUpdateDtoJson.setTeamIncome(adminAgentLevelUpdateInfoVo.getTeamIncome()); -// agentLevelUpdateDtoJson.setOrderType(adminAgentLevelUpdateInfoVo.getOrderType()); -// agentLevelUpdateDtoJson.setTeamIncomeType(adminAgentLevelUpdateInfoVo.getTeamIncomeType()); -// JSONObject jsonObjectA = (JSONObject)JSONObject.toJSON(agentLevelUpdateDtoJson); -// System.out.println(jsonObjectA.toJSONString()); -// } -// -// @Test -// public void autoLevelUp() { -// // agentService.autoUpAgentLevel(3L); -//// agentProducer.sendAutoLevelUpMsg(5L); -// -// agentProducer.sendReturnMoneyMsg(2L); -// } -// -// @Test -// public void returnMoney() { -// // agentService.autoUpAgentLevel(3L); -//// agentProducer.sendAutoLevelUpMsg(5L); -//// agentProducer.sendReturnMoneyMsg(52L); -// agentService.returnMoneyToAgent(52L); -// } -// -// @Test -// public void bigdecimalTest() { -// BigDecimal aa = new BigDecimal("1.345"); -// -// System.out.println(aa.setScale(2, RoundingMode.DOWN)); -// System.out.println(aa.setScale(2, RoundingMode.UP)); -// } -// -// @Autowired -// private ProfitJob profitJob; -// -// @Test -// public void profitJobTest() { -//// profitJob.profitJob(); -// } -// -// -// @Autowired -// private AgentConsumer agentConsumer; -// -// @Test -// public void orderReturnTest() { -//// agentConsumer.orderReturnMoney("7"); -// } + @Autowired + private GameService gameService; + + /** + * 房主操作 + */ + //创建房间 + @Test + public void createRoom() { + + ApiCreateRoomDto apiCreateRoomDto = new ApiCreateRoomDto(); + apiCreateRoomDto.setRoomType(1); + apiCreateRoomDto.setGameTime(10); + gameService.createRoom(apiCreateRoomDto); + } } -- Gitblit v1.9.1