From cf28c25d1a8e360ab328c5435d289c5cb9b414c1 Mon Sep 17 00:00:00 2001
From: nickchange <126672920+nickchange@users.noreply.github.com>
Date: 星期六, 25 十一月 2023 21:06:34 +0800
Subject: [PATCH] 11.26
---
cloud-server-other/src/main/java/com/dsh/other/controller/GameController.java | 183 ++++++++++++++++++++++++++++++++-------------
1 files changed, 129 insertions(+), 54 deletions(-)
diff --git a/cloud-server-other/src/main/java/com/dsh/other/controller/GameController.java b/cloud-server-other/src/main/java/com/dsh/other/controller/GameController.java
index 38cf153..c70bd01 100644
--- a/cloud-server-other/src/main/java/com/dsh/other/controller/GameController.java
+++ b/cloud-server-other/src/main/java/com/dsh/other/controller/GameController.java
@@ -2,14 +2,15 @@
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.TGame;
-import com.dsh.other.entity.TGameConfig;
-import com.dsh.other.entity.TGameRecord;
+import com.dsh.other.entity.*;
+import com.dsh.other.feignclient.CourseRecordClient;
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;
@@ -24,9 +25,11 @@
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
+import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
+import java.util.stream.Collectors;
@RestController
@RequestMapping("/api/game")
@@ -34,6 +37,7 @@
@Autowired
private TGameRecordService gameRecordService;
+
@Autowired
private TGameService gameService;
@@ -50,6 +54,29 @@
@Autowired
private PayMoneyUtil payMoneyUtil;
+ @Resource
+ private CourseRecordClient courseRecordClient;
+
+
+ @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")
@@ -59,20 +86,39 @@
@ApiImplicitParam(value = "storeId", name = "storeId", dataType = "int", required = true),
@ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9....."),
})
- public ResultUtil<List<TGameConfig>> queryGameList(Integer siteId, Integer storeId){
+ public ResultUtil<List<TGameConfig>> queryGameList(Integer siteId, Integer storeId) {
try {
+
+ Integer uid = tokenUtil.getUserIdFormRedis();
+ AppUser appUser = appUserClient.queryAppUser(uid);
List<TGameConfig> tGameConfigs = new ArrayList<>();
- List<TGame> list = gameService.list(new LambdaQueryWrapper<TGame>().eq(TGame::getSiteId, siteId).eq(TGame::getStoreId, storeId));
- if(list.size()>0){
+ if (appUser.getAddUserId() == null) {
+
+
+ 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);
- }catch (Exception e){
+ 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();
}
@@ -87,13 +133,13 @@
@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){
+ public ResultUtil payGame(Integer gameId, Integer configId, Integer type, Integer sutuId, Integer spaceId) {
try {
Integer uid = tokenUtil.getUserIdFormRedis();
- if(null == uid){
+ if (null == uid) {
return ResultUtil.tokenErr();
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
@@ -104,28 +150,29 @@
tGameRecord.setPayType(type);
tGameRecord.setUserId(uid);
tGameRecord.setNumber(code);
+ tGameRecord.setTime(new Date());
gameRecordService.save(tGameRecord);
- if(type==1){
+ if (type == 1) {
ResultUtil weixinpay = payMoneyUtil.weixinpay("游戏支付", "", code, config.getCash().toString(), "/base/course/weChatPaymentCourseCallback", "APP", "");
- if(weixinpay.getCode() == 200){
+ if (weixinpay.getCode() == 200) {
new Thread(new Runnable() {
@Override
public void run() {
try {
int num = 1;
int wait = 0;
- while (num <= 10){
+ while (num <= 10) {
int min = 5000;
wait += (min * num);
Thread.sleep(wait);
List<TGameRecord> list = gameRecordService.list(new QueryWrapper<TGameRecord>().eq("code", code).eq("payType", 2));
TGameRecord one = list.get(0);
- if(one.getStatus() == 1){
+ if (one.getStatus() == 1) {
break;
}
ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryWXOrder(code, "");
- if(resultUtil.getCode() == 200 && one.getStatus() == 0){
+ if (resultUtil.getCode() == 200 && one.getStatus() == 0) {
/**
* SUCCESS—支付成功,
* REFUND—转入退款,
@@ -138,131 +185,159 @@
Map<String, String> data1 = resultUtil.getData();
String s = data1.get("trade_state");
String transaction_id = data1.get("transaction_id");
- if("REFUND".equals(s) || "NOTPAY".equals(s) || "CLOSED".equals(s) || "REVOKED".equals(s) || "PAYERROR".equals(s) || num == 10){
+ if ("REFUND".equals(s) || "NOTPAY".equals(s) || "CLOSED".equals(s) || "REVOKED".equals(s) || "PAYERROR".equals(s) || num == 10) {
break;
}
- if("SUCCESS".equals(s)){
+ if ("SUCCESS".equals(s)) {
for (TGameRecord coursePackagePayment : list) {
coursePackagePayment.setStatus(1);
+ coursePackagePayment.setMoney(config.getCash());
coursePackagePayment.setOrderNo(transaction_id);
}
gameRecordService.updateBatchById(list);
Integer integer = startGame(uid, gameId, spaceId, sutuId);
break;
}
- if("USERPAYING".equals(s)){
+ if ("USERPAYING".equals(s)) {
num++;
}
}
}
- }catch (Exception e){
+ } catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
return weixinpay;
- }else if(type==2){
- ResultUtil alipay = payMoneyUtil.alipay("游戏支付", "游戏支付", "", code, config.getCash().toString(), "/base/course/aliPaymentCourseCallback");
- if(alipay.getCode() == 200){
+ } else if (type == 2) {
+// 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
public void run() {
try {
int num = 1;
int wait = 0;
- while (num <= 10){
+ while (num <= 10) {
int min = 5000;
wait += (min * num);
Thread.sleep(wait);
- List<TGameRecord> list = gameRecordService.list(new QueryWrapper<TGameRecord>().eq("code", code).eq("payType", 3));
+ List<TGameRecord> list = gameRecordService.list(new QueryWrapper<TGameRecord>().eq("number", code).eq("payType", 2));
TGameRecord one = list.get(0);
- if(one.getStatus() == 1){
+ 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");
- if("TRADE_CLOSED".equals(s) || "TRADE_FINISHED".equals(s) || num == 10){
+// 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)){
+ if ("TRADE_SUCCESS".equals(s)) {
for (TGameRecord coursePackagePayment : list) {
coursePackagePayment.setStatus(1);
+ coursePackagePayment.setMoney(config.getCash());
coursePackagePayment.setOrderNo(tradeNo);
+
+ CourseCounsum courseCounsum = new CourseCounsum();
+// courseCounsum.setPaymentId(paymentId);
+ courseCounsum.setChangeType(3);
+ courseCounsum.setInsertTime(new Date());
+ courseCounsum.setReason("智慧球场;" + config.getCash());
+ courseCounsum.setAppUserId(uid);
+ courseRecordClient.save(courseCounsum);
+
}
gameRecordService.updateBatchById(list);
Integer integer = startGame(uid, gameId, spaceId, sutuId);
break;
}
- if("WAIT_BUYER_PAY".equals(s)){
+ if ("WAIT_BUYER_PAY".equals(s)) {
num++;
}
}
}
- }catch (Exception e){
+ } catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
return alipay;
- }else if(type==3){
+ } else if (type == 3) {
+ tGameRecord.setMoney(config.getPlayCoin());
+ gameRecordService.updateById(tGameRecord);
AppUser appUser = appUserClient.queryAppUser(uid);
Integer playPaiCoins = appUser.getPlayPaiCoins();
BigDecimal playCoin = config.getPlayCoin();
int i = playCoin.intValue();
- if(playPaiCoins<i){
+ if (playPaiCoins < i) {
return ResultUtil.error("玩湃币不足");
}
int i1 = playPaiCoins - i;
appUser.setPlayPaiCoins(i1);
appUserClient.updateAppUser(appUser);
- startGame(uid,gameId,spaceId,sutuId);
+ startGame(uid, gameId, spaceId, sutuId);
return ResultUtil.success();
- }else {
+ } 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("支付方式错误");
}
- }catch (Exception e){
+ } catch (Exception e) {
e.printStackTrace();
return ResultUtil.runErr();
}
-
}
- private static Integer startGame(Integer uid,Integer gameId,Integer spaceId,Integer sutuId){
+ private static Integer startGame(Integer uid, Integer gameId, Integer spaceId, Integer sutuId) {
HashMap<String, String> map = new HashMap<>();
- map.put("sign","0DB011836143EEE2C2E072967C9F4E4B");
- map.put("app_user_id",uid+"");
- map.put("game_id",gameId+"");
- map.put("space_id",spaceId+"");
- map.put("sutu_id",sutuId+"");
+ map.put("sign", "0DB011836143EEE2C2E072967C9F4E4B");
+ map.put("app_user_id", uid + "");
+ map.put("game_id", gameId + "");
+ map.put("space_id", spaceId + "");
+ map.put("sutu_id", sutuId + "");
String s = HttpRequestUtil.postRequest("https://try.daowepark.com/v7/user_api/general/gameStart", map);
JSONObject jsonObject = JSONObject.parseObject(s);
Object code = jsonObject.get("code");
- if(String.valueOf(code)!=null && "200".equals(String.valueOf(code))){
+ if (String.valueOf(code) != null && "200".equals(String.valueOf(code))) {
return 200;
- }else {
+ } else {
return 500;
}
}
- public static void main(String[] args) {
- Integer integer = startGame(1, 13, 1001, 1001);
- System.out.println(integer);
- }
}
--
Gitblit v1.7.1