| | |
| | | |
| | | import cn.hutool.http.HttpRequest; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.alipay.api.response.AlipayTradeQueryResponse; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.dsh.other.entity.SiteLock; |
| | | import com.dsh.other.entity.TGame; |
| | | import com.dsh.other.entity.TGameConfig; |
| | | import com.dsh.other.entity.TGameRecord; |
| | | import com.dsh.other.feignclient.account.AppUserClient; |
| | | import com.dsh.other.feignclient.account.model.AppUser; |
| | | import com.dsh.other.model.QueryMySiteVo; |
| | | import com.dsh.other.service.ISiteLockService; |
| | | import com.dsh.other.service.TGameConfigService; |
| | | import com.dsh.other.service.TGameRecordService; |
| | | import com.dsh.other.service.TGameService; |
| | |
| | | import java.math.BigDecimal; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | |
| | | import java.util.stream.Collectors; |
| | | @RestController |
| | | @RequestMapping("/api/game") |
| | | public class GameController { |
| | | |
| | | @Autowired |
| | | private TGameRecordService gameRecordService; |
| | | |
| | | |
| | | @Autowired |
| | | private TGameService gameService; |
| | |
| | | private PayMoneyUtil payMoneyUtil; |
| | | |
| | | |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/getIntro") |
| | | @ApiOperation(value = "获取步骤说明", tags = {"用户—游戏"}) |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), |
| | | }) |
| | | public ResultUtil<String> getIntro(){ |
| | | try { |
| | | |
| | | return ResultUtil.success( gameService.getIntro()); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | | } |
| | | } |
| | | |
| | | @Autowired |
| | | private ISiteLockService lockService; |
| | | |
| | | |
| | | @ResponseBody |
| | | @PostMapping("/queryGameList") |
| | | @ApiOperation(value = "获取当前场地的游戏列表配置", tags = {"用户—游戏"}) |
| | |
| | | try { |
| | | List<TGameConfig> tGameConfigs = new ArrayList<>(); |
| | | |
| | | List<TGame> list = gameService.list(new LambdaQueryWrapper<TGame>().eq(TGame::getSiteId, siteId).eq(TGame::getStoreId, storeId)); |
| | | List<SiteLock> lock = lockService.list(new QueryWrapper<SiteLock>().eq("siteId", siteId)); |
| | | |
| | | Date now = new Date(); |
| | | for (SiteLock siteLock : lock) { |
| | | if (now.after(siteLock.getStartTime())&&now.before(siteLock.getEndTime())){ |
| | | return ResultUtil.error("当前场地已被锁定"); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | List<TGame> list = gameService.list(new LambdaQueryWrapper<TGame>().eq(TGame::getSiteId, siteId).eq(TGame::getStoreId, storeId).eq(TGame::getState,0)); |
| | | if(list.size()>0){ |
| | | Integer id = list.get(0).getId(); |
| | | // tGameConfigs = gameConfigService.list(new LambdaQueryWrapper<TGameConfig>().eq(TGameConfig::getOtherId, id)); |
| | | tGameConfigs = gameConfigService.listJs(id); |
| | | |
| | | } |
| | | return ResultUtil.success(tGameConfigs); |
| | | List<TGameConfig> filteredList = tGameConfigs.stream() |
| | | .filter(gameConfig -> !gameConfig.getImg().isEmpty()) |
| | | .collect(Collectors.toList()); |
| | | return ResultUtil.success(filteredList); |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | return ResultUtil.runErr(); |
| | |
| | | @ApiImplicitParam(value = "游戏配置id", name = "configId", dataType = "int", required = true), |
| | | @ApiImplicitParam(value = "sutuId", name = "sutuId", dataType = "int", required = true), |
| | | @ApiImplicitParam(value = "spaceId", name = "spaceId", dataType = "int", required = true), |
| | | @ApiImplicitParam(value = "1微信 2支付宝 3玩湃币", name = "type", dataType = "int", required = true), |
| | | @ApiImplicitParam(value = "1微信 2支付宝 3玩湃币 5积分", name = "type", dataType = "int", required = true), |
| | | @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."), |
| | | }) |
| | | public ResultUtil payGame(Integer gameId, Integer configId,Integer type,Integer sutuId,Integer spaceId){ |
| | |
| | | tGameRecord.setPayType(type); |
| | | tGameRecord.setUserId(uid); |
| | | tGameRecord.setNumber(code); |
| | | tGameRecord.setTime(new Date()); |
| | | gameRecordService.save(tGameRecord); |
| | | if(type==1){ |
| | | ResultUtil weixinpay = payMoneyUtil.weixinpay("游戏支付", "", code, config.getCash().toString(), "/base/course/weChatPaymentCourseCallback", "APP", ""); |
| | |
| | | if("SUCCESS".equals(s)){ |
| | | for (TGameRecord coursePackagePayment : list) { |
| | | coursePackagePayment.setStatus(1); |
| | | coursePackagePayment.setMoney(config.getCash()); |
| | | coursePackagePayment.setOrderNo(transaction_id); |
| | | } |
| | | gameRecordService.updateBatchById(list); |
| | |
| | | } |
| | | return weixinpay; |
| | | }else if(type==2){ |
| | | ResultUtil alipay = payMoneyUtil.alipay("游戏支付", "游戏支付", "", code, config.getCash().toString(), "/base/course/aliPaymentCourseCallback"); |
| | | // Integer gameId, Integer configId,Integer type,Integer sutuId,Integer spaceId; |
| | | |
| | | String params = uid+"_"+gameId+"_"+spaceId+"_"+sutuId; |
| | | |
| | | ResultUtil alipay = payMoneyUtil.alipay("游戏支付", "游戏支付", params, code, config.getCash().toString(), "/base/site/gameCallback"); |
| | | if(alipay.getCode() == 200){ |
| | | new Thread(new Runnable() { |
| | | @Override |
| | |
| | | if(one.getStatus() == 1){ |
| | | break; |
| | | } |
| | | ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryALIOrder(code); |
| | | if(resultUtil.getCode() == 200 && one.getStatus() == 0){ |
| | | AlipayTradeQueryResponse resultUtil = payMoneyUtil.queryALIOrder(code); |
| | | if(resultUtil.getCode().equals("10000") && one.getStatus() == 0){ |
| | | /** |
| | | * WAIT_BUYER_PAY(交易创建,等待买家付款)、 |
| | | * TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)、 |
| | | * TRADE_SUCCESS(交易支付成功)、 |
| | | * TRADE_FINISHED(交易结束,不可退款) |
| | | */ |
| | | Map<String, String> data1 = resultUtil.getData(); |
| | | String s = data1.get("tradeStatus"); |
| | | String tradeNo = data1.get("tradeNo"); |
| | | // Map<String, String> data1 = resultUtil.getData(); |
| | | // String s = data1.get("tradeStatus"); |
| | | // String tradeNo = data1.get("tradeNo"); |
| | | String tradeNo = resultUtil.getTradeNo(); |
| | | String s = resultUtil.getTradeStatus(); |
| | | if("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10){ |
| | | break; |
| | | } |
| | | if("TRADE_SUCCESS".equals(s)){ |
| | | for (TGameRecord coursePackagePayment : list) { |
| | | coursePackagePayment.setStatus(1); |
| | | coursePackagePayment.setMoney(config.getCash()); |
| | | coursePackagePayment.setOrderNo(tradeNo); |
| | | } |
| | | gameRecordService.updateBatchById(list); |
| | |
| | | } |
| | | return alipay; |
| | | }else if(type==3){ |
| | | tGameRecord.setMoney(config.getPlayCoin()); |
| | | gameRecordService.updateById(tGameRecord); |
| | | AppUser appUser = appUserClient.queryAppUser(uid); |
| | | Integer playPaiCoins = appUser.getPlayPaiCoins(); |
| | | BigDecimal playCoin = config.getPlayCoin(); |
| | |
| | | startGame(uid,gameId,spaceId,sutuId); |
| | | return ResultUtil.success(); |
| | | |
| | | }else if(type==5){ |
| | | AppUser appUser = appUserClient.queryAppUser(uid); |
| | | Integer playPaiCoins = appUser.getIntegral(); |
| | | BigDecimal playCoin = config.getIntegral(); |
| | | int i = playCoin.intValue(); |
| | | if(playPaiCoins<i){ |
| | | return ResultUtil.error("积分不足"); |
| | | } |
| | | int i1 = playPaiCoins - i; |
| | | appUser.setIntegral(i1); |
| | | appUser.setPoints(playCoin.intValue()); |
| | | appUserClient.updateAppUser(appUser); |
| | | startGame(uid,gameId,spaceId,sutuId); |
| | | return ResultUtil.success(); |
| | | }else { |
| | | return ResultUtil.error("支付方式错误"); |
| | | } |