From dd556df997e268153bf1a74616f49b25db11ed3f Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期五, 08 八月 2025 15:37:35 +0800 Subject: [PATCH] 赛事模块 --- cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/controller/WorldCupController.java | 160 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 148 insertions(+), 12 deletions(-) diff --git a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/controller/WorldCupController.java b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/controller/WorldCupController.java index aa10f8f..9024d65 100644 --- a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/controller/WorldCupController.java +++ b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/controller/WorldCupController.java @@ -23,6 +23,8 @@ import com.dsh.communityWorldCup.util.PayMoneyUtil; import com.dsh.communityWorldCup.util.ResultUtil; import com.dsh.communityWorldCup.util.TokenUtil; +import com.dsh.communityWorldCup.util.wx.WxV3PayConfig; +import com.wechat.pay.contrib.apache.httpclient.util.AesUtil; import groovy.util.logging.Log4j; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -37,8 +39,10 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.BufferedReader; import java.io.IOException; import java.io.PrintWriter; +import java.nio.charset.StandardCharsets; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -102,7 +106,6 @@ /** * 查询社区世界杯收入--管理后台 - * @param storeId * @return */ @ResponseBody @@ -189,6 +192,9 @@ BeanUtils.copyProperties(worldCupStore,worldCupStoreVO); // 查询世界杯活动名称 WorldCup byId = worldCupService.getById(worldCupStore.getWorldCupId()); + if (byId==null){ + continue; + } if (byId.getStatus()==3 || byId.getStatus()==4){ continue; } @@ -269,6 +275,16 @@ if(0 == isStudent){ isStudent = 2; } + WorldCup worldCup = worldCupService.getById(worldCupPeople.getWorldCupId()); + if(null == worldCup){ + return ResultUtil.error("当前比赛不存在"); + } + if(worldCup.getStartTime().getTime()>System.currentTimeMillis() || worldCup.getEndTime().getTime()<System.currentTimeMillis()){ + return ResultUtil.error("二维码仅支持在赛事有效期使用"); + } + + + WorldCupPaymentParticipant worldCupPaymentParticipant = worldCupPaymentParticipantService.getOne(new QueryWrapper<WorldCupPaymentParticipant>() .eq("worldCupId", worldCupPeople.getWorldCupId()).eq("participantId", id).eq("participantType", isStudent) .orderByDesc("createTime").last(" limit 0, 1")); @@ -345,6 +361,15 @@ @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil startWorldCup(StartWorldCup startWorldCup){ + return worldCupService.startWorldCup(startWorldCup); + } + @ResponseBody + @PostMapping("/api/worldCup/endWorldCup") + @ApiOperation(value = "裁判结束比赛【3.1】", tags = {"APP-个人中心"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResultUtil endWorldCup(StartWorldCup startWorldCup){ return worldCupService.startWorldCup(startWorldCup); } @@ -445,23 +470,66 @@ } } - + @ResponseBody + @PostMapping("/base/worldCup/wxPayWorldCupCallback") + public void wxPayWorldCupCallback(HttpServletRequest request, HttpServletResponse response){ + System.err.println("微信回调"); + try { + Map<String, String> map = payMoneyUtil.weixinpayCallback(request); + if (null != map) { + String code = map.get("out_trade_no"); + String transaction_id = map.get("transaction_id"); + String result = map.get("result"); + ResultUtil resultUtil = worldCupService.paymentWorldCupCallback(code, transaction_id); + if (resultUtil.getCode() == 200) { + PrintWriter out = response.getWriter(); + out.println(result); + out.flush(); + out.close(); + } else { + log.error("社区世界杯报名微信支付回业务处理异常:" + resultUtil.getMsg()); + } + } else { + log.error("社区世界杯报名微信支付回调解析异常"); + } + } catch (Exception e) { + e.printStackTrace(); + } + } /** * 微信支付回调 */ @ResponseBody - @PostMapping("/base/worldCup/wxPayWorldCupCallback") - public void wxPayWorldCupCallback(HttpServletRequest request, HttpServletResponse response){ + @PostMapping("/base/worldCup/wxPayWorldCupCallback1") + public void wxPayWorldCupCallback1(HttpServletRequest request, HttpServletResponse response){ try { - Map<String, String> map = payMoneyUtil.weixinpayCallback(request); - if(null != map){ - String code = map.get("out_trade_no"); - String transaction_id = map.get("transaction_id"); - String result = map.get("result"); + System.err.println("微信回调"); + System.err.println("请求" + request); + BufferedReader reader = request.getReader(); + String string1 = reader.toString(); + System.err.println("请求reader" + string1); + StringBuilder requestBody = new StringBuilder(); + String line; + while ((line = reader.readLine()) != null) { + requestBody.append(line); + } + System.err.println("全部请求体" + requestBody); + JSONObject jsonObject = JSONObject.parseObject(requestBody.toString()); + JSONObject resource = jsonObject.getJSONObject("resource"); + + AesUtil aesUtil = new AesUtil(WxV3PayConfig.apiV3Key.getBytes(StandardCharsets.UTF_8)); + String decryptedData = aesUtil.decryptToString(resource.getString("associated_data").getBytes(StandardCharsets.UTF_8), resource.getString("nonce").getBytes(StandardCharsets.UTF_8), + resource.getString("ciphertext")); + System.err.println("微信解密的字符串信息" + decryptedData); + JSONObject jsonInfo = (JSONObject) JSONObject.parse(decryptedData); + String code = jsonInfo.getString("out_trade_no"); + String transaction_id = jsonInfo.getString("transaction_id"); + String trade_state = jsonInfo.getString("trade_state"); + if (trade_state.equals("SUCCESS")) { ResultUtil resultUtil = worldCupService.paymentWorldCupCallback(code, transaction_id); if(resultUtil.getCode() == 200){ PrintWriter out = response.getWriter(); - out.println(result); + out.println("SUCCESS"); out.flush(); out.close(); }else{ @@ -604,7 +672,7 @@ @ApiImplicitParam(name = "id", value = "列表中的id", required = true, dataType = "Long"), @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) - public ResultUtil cancelMyWorldCup(Long id){ + public ResultUtil cancelMyWorldCup(Long id) throws Exception { return worldCupPaymentService.cancelMyWorldCup(id); } @@ -638,6 +706,26 @@ } worldCupRank.setAppUserId(uid); List<WorldCupRankVo> worldCupRank1 = worldCupCompetitorService.getWorldCupRank(worldCupRank); + return ResultUtil.success(worldCupRank1); + }catch (Exception e){ + e.printStackTrace(); + return ResultUtil.runErr(); + } + } + + @ResponseBody + @PostMapping("/api/worldCup/getWorldCupListFromRank") + @ApiOperation(value = "获取报名的赛事 排名使用【3.1】", tags = {"APP-个人中心"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "用户token(Bearer +token)", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") + }) + public ResultUtil<List<WorldCupListVo>> getWorldCupListFromRank(){ + try { + Integer uid = tokenUtil.getUserIdFormRedis(); + if(null == uid){ + return ResultUtil.tokenErr(); + } + List<WorldCupListVo> worldCupRank1 = worldCupCompetitorService.getWorldCupListFromRank(uid); return ResultUtil.success(worldCupRank1); }catch (Exception e){ e.printStackTrace(); @@ -892,7 +980,7 @@ */ @ResponseBody @PostMapping("/worldCup/cancelWorldCupRefund") - public void cancelWorldCupRefund(@RequestBody Integer id){ + public void cancelWorldCupRefund(@RequestBody Integer id) throws Exception { worldCupService.cancelWorldCupRefund(id); } @@ -938,6 +1026,54 @@ out.close(); } } + /** + * 取消赛事后微信退款回调微信V3回调 + * @param request + * @param response + */ + @ResponseBody + @PostMapping("/base/worldCup/wxRefundWorldCupCallback1") + public void wxRefundWorldCupCallback1(HttpServletRequest request, HttpServletResponse response){ + try { + System.err.println("微信回调"); + System.err.println("请求" + request); + BufferedReader reader = request.getReader(); + String string1 = reader.toString(); + System.err.println("请求reader" + string1); + StringBuilder requestBody = new StringBuilder(); + String line; + while ((line = reader.readLine()) != null) { + requestBody.append(line); + } + System.err.println("全部请求体" + requestBody); + JSONObject jsonObject = JSONObject.parseObject(requestBody.toString()); + JSONObject resource = jsonObject.getJSONObject("resource"); + + AesUtil aesUtil = new AesUtil(WxV3PayConfig.apiV3Key.getBytes(StandardCharsets.UTF_8)); + String decryptedData = aesUtil.decryptToString(resource.getString("associated_data").getBytes(StandardCharsets.UTF_8), resource.getString("nonce").getBytes(StandardCharsets.UTF_8), + resource.getString("ciphertext")); + System.err.println("微信解密的字符串信息" + decryptedData); + JSONObject jsonInfo = (JSONObject) JSONObject.parse(decryptedData); + String code = jsonInfo.getString("out_trade_no"); + String transaction_id = jsonInfo.getString("transaction_id"); + String refund_status = jsonInfo.getString("refund_status"); + String out_refund_no = jsonInfo.getString("out_refund_no"); + if (refund_status.equals("SUCCESS")) { + WorldCupPayment worldCupPayment = worldCupPaymentService.getOne(new QueryWrapper<WorldCupPayment>().eq("code", out_refund_no)); + worldCupPayment.setRefundOrderNo(code); + worldCupPayment.setRefundTime(new Date()); + worldCupPayment.setPayStatus(3); + worldCupPayment.setWorldCupId(null); + worldCupPaymentService.updateById(worldCupPayment); + PrintWriter out = response.getWriter(); + out.write("SUCCESS"); + out.flush(); + out.close(); + } + } catch (Exception e) { + e.printStackTrace(); + } + } /** -- Gitblit v1.7.1