From 46ae91d150985e38ecec8768634cc1ee15c5151b Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期四, 07 八月 2025 19:02:06 +0800 Subject: [PATCH] 赛事模块 --- cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupServiceImpl.java | 134 +++++++++++++++++++++++++++++++++++++------- 1 files changed, 112 insertions(+), 22 deletions(-) diff --git a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupServiceImpl.java b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupServiceImpl.java index 331aec0..635b821 100644 --- a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupServiceImpl.java +++ b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupServiceImpl.java @@ -25,8 +25,10 @@ import com.dsh.communityWorldCup.model.*; import com.dsh.communityWorldCup.service.*; import com.dsh.communityWorldCup.util.*; +import com.dsh.communityWorldCup.util.wx.WxV3PayConfig; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.math.BigDecimal; @@ -181,19 +183,22 @@ worldCup.setMatchNumber(worldCup.getMatchNumber() + 1); this.updateById(worldCup); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("gameType", 1); + jsonObject.put("ids", ids); //2、调起开启游戏的接口。 HashMap<String, String> map = new HashMap<>(); map.put("sign", "0DB011836143EEE2C2E072967C9F4E4B"); - map.put("space_id", tGame.getStoreId() + ""); + map.put("space_id", tGame.getSiteId() + ""); map.put("red_sutu_id", tGame.getRed()); map.put("blue_sutu_id", tGame.getBlue()); - map.put("api_url", "http://221.182.45.100:56666/communityWorldCup/base/worldCup/endWorldCupCallback"); - map.put("custom", JSON.toJSONString(ids)); + map.put("api_url", "https://online.daowepark.com:443/communityWorldCup/base/worldCup/endWorldCupCallback"); + map.put("custom", jsonObject.toJSONString()); - String s = HttpRequestUtil.postRequest("https://try.daowepark.com/v7/user_api/general/quickStart", map); - JSONObject jsonObject = JSONObject.parseObject(s); - Integer code1 = jsonObject.getInteger("code"); - String message = jsonObject.getString("message"); + String s = HttpRequestUtil.postRequest("https://port.daowepark.com/v7/user_api/general/quickStart", map); + JSONObject jsonObject1 = JSONObject.parseObject(s); + Integer code1 = jsonObject1.getInteger("code"); + String message = jsonObject1.getString("message"); if (200 == code1) { return ResultUtil.success(); } else { @@ -508,6 +513,8 @@ return payment; } + private String smid = "2088330203191220";//平台支付宝商户号 + /** * 支付逻辑 @@ -536,17 +543,57 @@ worldCupPayment.setAmount(new BigDecimal(num).multiply(worldCup.getCash())); worldCupPayment.setUnitPrice(worldCupPayment.getAmount().divide(new BigDecimal(num))); worldCupPaymentService.save(worldCupPayment); - return payMoneyUtil.weixinpay("社区世界杯报名", "", worldCupPayment.getCode(), - worldCup.getCash().toString(), "/base/worldCup/wxPayWorldCupCallback", "APP", ""); + List<WorldCupStore> list = worldCupStoreService.lambdaQuery().eq(WorldCupStore::getWorldCupId, worldCup.getId()).list(); + if (list.isEmpty()){ + return payMoneyUtil.weixinpay("社区世界杯报名", "", worldCupPayment.getCode(), + worldCupPayment.getAmount().toString(), "/base/worldCup/wxPayWorldCupCallback", "APP", ""); + }else{ + Integer storeId = list.get(0).getStoreId(); + Store store = storeClient.queryStoreById(storeId); + if (store.getOperatorId()==null||store.getOperatorId()==0){ + // 平台 + return payMoneyUtil.weixinpay("社区世界杯报名", "", worldCupPayment.getCode(), + worldCupPayment.getAmount().toString(), "/base/worldCup/wxPayWorldCupCallback", "APP", ""); + }else{ + String s2 = storeClient.getmerchantNumberByOperatorId(store.getOperatorId()); + System.err.println("微信商户号"+s2); + if(!StringUtils.hasLength(s2)){ + return ResultUtil.error("运营商未配置微信商户号,获取支付失败!"); + } + return payMoneyUtil.weixinpayV3(s2,"社区世界杯报名",worldCupPayment.getCode() + ,"/base/worldCup/wxPayWorldCupCallback1",worldCupPayment.getAmount().toString()); + } + } + + + } //支付宝 if(payType == 2){ + String smidRes = smid;// 结算资金到商户号 + worldCupPayment.setAmount(new BigDecimal(num).multiply(worldCup.getCash())); worldCupPayment.setUnitPrice(worldCupPayment.getAmount().divide(new BigDecimal(num))); worldCupPaymentService.save(worldCupPayment); - return payMoneyUtil.alipay("2088330203191220", "社区世界杯报名", "世界杯报名", "", worldCupPayment.getCode(), - worldCup.getCash().toString(), "/base/worldCup/aliPayWorldCupCallback"); - } + List<WorldCupStore> list = worldCupStoreService.lambdaQuery().eq(WorldCupStore::getWorldCupId, worldCup.getId()).list(); + + if (list.isEmpty()){ + }else{ + Integer storeId = list.get(0).getStoreId(); + Store store = storeClient.queryStoreById(storeId); + if (store.getOperatorId()==null||store.getOperatorId()==0){ + }else{ + String s2 = storeClient.getmerchantNumberAliByOperatorId(store.getOperatorId()); + System.err.println("支付宝商户号"+s2); + if(!StringUtils.hasLength(s2)){ + return ResultUtil.error("运营商未配置支付宝商户号,获取支付失败!"); + } + smidRes=s2; + } + } + return payMoneyUtil.alipay(smidRes, "社区世界杯报名", "世界杯报名", "", worldCupPayment.getCode(), + worldCupPayment.getAmount().toString(), "/base/worldCup/aliPayWorldCupCallback"); + } //玩湃币 if(payType == 3){ AppUser appUser = appUserClient.getAppUser(paymentWorldCup.getUid()); @@ -709,7 +756,7 @@ * @return */ @Override - public ResultUtil paymentWorldCupCallback(String code, String outTradeNo) { + public ResultUtil paymentWorldCupCallback(String code, String outTradeNo) throws AlipayApiException { WorldCupPayment worldCupPayment = worldCupPaymentService.getOne(new QueryWrapper<WorldCupPayment>().eq("code", code)); Integer worldCupId = worldCupPayment.getWorldCupId(); worldCupPayment.setPayStatus(2); @@ -737,6 +784,35 @@ worldCupPaymentParticipant.setCreateTime(new Date()); worldCupPaymentParticipantService.save(worldCupPaymentParticipant); } + if (worldCupPayment.getPayType()==2){ + List<WorldCupStore> list = worldCupStoreService.lambdaQuery().eq(WorldCupStore::getWorldCupId, worldCupPayment.getWorldCupId()).list(); + String resSmid = smid; + if (!list.isEmpty()){ + Integer storeId = list.get(0).getStoreId(); + Store store = storeClient.queryStoreById(storeId); + if (store.getOperatorId()==null||store.getOperatorId()==0){ + }else{ + String s2 = storeClient.getmerchantNumberAliByOperatorId(store.getOperatorId()); + System.err.println("支付宝商户号"+s2); + if(!StringUtils.hasLength(s2)){ + return ResultUtil.error("运营商未配置支付宝商户号,获取支付失败!"); + } + resSmid=s2; + } + } + String finalResSmid = resSmid; + new Thread(new Runnable() { + @Override + public void run() { + try { + Thread.sleep(30000); + payMoneyUtil.confirm(finalResSmid, code, outTradeNo, worldCupPayment.getAmount().toString()); + }catch (Exception e){ + } + } + }).start(); + } + return ResultUtil.success(); } @@ -773,10 +849,13 @@ * @param id */ @Override - public void cancelWorldCupRefund(Integer id) { + public void cancelWorldCupRefund(Integer id) throws Exception { //免费除外 List<WorldCupPayment> list2 = worldCupPaymentService.list(new QueryWrapper<WorldCupPayment>().eq("worldCupId", id) .ne("payType", 0).eq("payStatus", 2).eq("state", 1)); + List<WorldCupStore> list = worldCupStoreService.lambdaQuery().eq(WorldCupStore::getWorldCupId, id).list(); + Integer storeId = list.get(0).getStoreId(); + Store store = storeClient.queryStoreById(storeId); for (WorldCupPayment worldCupPayment : list2) { List<WorldCupPaymentParticipant> list1 = worldCupPaymentParticipantService.list(new QueryWrapper<WorldCupPaymentParticipant>() .eq("worldCupId", id).eq("worldCupPaymentId", worldCupPayment.getId()).eq("alreadyEntered", 0)); @@ -784,14 +863,25 @@ BigDecimal multiply = worldCupPayment.getUnitPrice().multiply(new BigDecimal(list1.size())); //微信支付 if(worldCupPayment.getPayType() == 1){ - Map<String, String> map = payMoneyUtil.wxRefund(worldCupPayment.getPayOrderNo(), worldCupPayment.getCode(), - worldCupPayment.getAmount().toString(), multiply.toString(), "/base/worldCup/wxRefundWorldCupCallback"); - if(!"SUCCESS".equals(map.get("return_code"))){ - System.err.println("-------------微信退款失败---------"); - System.err.println(map.get("return_msg")); - }else{ - worldCupPayment.setRefundAmount(multiply); - worldCupPaymentService.updateById(worldCupPayment); + if (store.getOperatorId()!=null && store.getOperatorId()!=0){ + String smidVx= storeClient.getmerchantNumberByOperatorId(store.getOperatorId()); + if (!StringUtils.hasLength(smidVx)){ + System.err.println("运营商未配置微信商户号,获取支付失败!"); + } + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + String codeRefund = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5);// 退款单号 + // 运营商退款 + payMoneyUtil.weixinRefundV3(smidVx, codeRefund, worldCupPayment.getPayOrderNo(), worldCupPayment.getAmount().toString(), "/base/worldCup/wxRefundWorldCupCallback1"); + }else { + Map<String, String> map = payMoneyUtil.wxRefund(worldCupPayment.getPayOrderNo(), worldCupPayment.getCode(), + worldCupPayment.getAmount().toString(), multiply.toString(), "/base/worldCup/wxRefundWorldCupCallback"); + if (!"SUCCESS".equals(map.get("return_code"))) { + System.err.println("-------------微信退款失败---------"); + System.err.println(map.get("return_msg")); + } else { + worldCupPayment.setRefundAmount(multiply); + worldCupPaymentService.updateById(worldCupPayment); + } } } //支付宝支付 -- Gitblit v1.7.1