From 380c0e958fbc3f2b42a3e38ae5dc9af3254b8f5c Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期四, 25 五月 2023 09:36:16 +0800 Subject: [PATCH] 新增加功能和更换账号 --- user/guns-admin/src/main/java/com/agentdriving/user/modular/system/service/impl/AppUserServiceImpl.java | 117 +++++++++++++++++++++++++++++++++++++--------------------- 1 files changed, 74 insertions(+), 43 deletions(-) diff --git a/user/guns-admin/src/main/java/com/agentdriving/user/modular/system/service/impl/AppUserServiceImpl.java b/user/guns-admin/src/main/java/com/agentdriving/user/modular/system/service/impl/AppUserServiceImpl.java index 7775655..4d98ed3 100644 --- a/user/guns-admin/src/main/java/com/agentdriving/user/modular/system/service/impl/AppUserServiceImpl.java +++ b/user/guns-admin/src/main/java/com/agentdriving/user/modular/system/service/impl/AppUserServiceImpl.java @@ -13,12 +13,6 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import com.agentdriving.user.modular.system.model.*; -import com.agentdriving.user.modular.system.service.*; -import com.agentdriving.user.modular.system.util.MallBook.model.InterfaceResponse; -import com.agentdriving.user.modular.system.util.MallBook.model.PaymentOrder; -import com.agentdriving.user.modular.system.util.MallBook.model.PaymentOrderGood; -import com.agentdriving.user.modular.system.util.MallBook.util.TrhRequest; import com.agentdriving.user.modular.system.util.PayMoneyUtil; import com.agentdriving.user.modular.system.util.RedisUtil; import com.agentdriving.user.modular.system.util.ResultUtil; @@ -26,7 +20,6 @@ import com.agentdriving.user.modular.system.util.weChat.WXCore; import com.agentdriving.user.modular.system.util.weChat.WeChatUtil; import com.agentdriving.user.modular.system.util.weChat.model.Code2Session; -import com.agentdriving.user.modular.system.warpper.*; import org.apache.shiro.authc.SimpleAuthenticationInfo; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.authc.credential.HashedCredentialsMatcher; @@ -39,11 +32,11 @@ import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; -import java.net.InetAddress; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; /** @@ -318,43 +311,81 @@ rechargeRecord.setPayStatus(1); rechargeRecord.setPayType(1); rechargeRecordService.insert(rechargeRecord); -// ResultUtil weixinpay = payMoneyUtil.weixinpay("余额充值", "", out_trade_no, amount.toString(), "/base/appUser/rechargeBalanceCallback", "JSAPI", appUser.getOpenid()); -// return weixinpay; + ResultUtil weixinpay = payMoneyUtil.weixinpay("余额充值", "", out_trade_no, amount.toString(), "/base/appUser/rechargeBalanceCallback", "JSAPI", appUser.getOpenid()); + if(weixinpay.getCode() == 200){ + new Thread(new Runnable() { + @Override + public void run() { + try { + int num = 1; + int wait = 0; + while (num <= 10) { + int min = 5000; + wait += (min * num); + RechargeRecord rechargeRecord1 = rechargeRecordService.selectById(rechargeRecord.getId()); + if (rechargeRecord1.getPayStatus() == 2) { + return; + } + ResultUtil<Map<String, String>> resultUtil = payMoneyUtil.queryWXOrder(out_trade_no, ""); + if (resultUtil.getCode() == 200) { + /** + * 订单状态 + * SUCCESS—支付成功, + * REFUND—转入退款, + * NOTPAY—未支付, + * CLOSED—已关闭, + * REVOKED—已撤销(刷卡支付), + * USERPAYING--用户支付中, + * PAYERROR--支付失败(其他原因,如银行返回失败) + */ + Map<String, String> data2 = resultUtil.getData(); + String s = data2.get("state"); + String transaction_id = data2.get("transaction_id"); + if ("REFUND".equals(s) || "NOTPAY".equals(s) || "CLOSED".equals(s) || "REVOKED".equals(s) || "PAYERROR".equals(s)) { + //回退 + return; + } + if ("SUCCESS".equals(s)) { + rechargeRecord1.setPayStatus(2); + rechargeRecord1.setPayTime(new Date()); + rechargeRecord1.setOrderNumber(transaction_id); + rechargeRecordService.updateById(rechargeRecord1); - PaymentOrder paymentOrder = new PaymentOrder(); - paymentOrder.setBizOrderId(out_trade_no); - paymentOrder.setAmount(String.valueOf(amount * 100)); - paymentOrder.setOrderName("余额充值"); - paymentOrder.setPayType("WX_MINI"); - paymentOrder.setTransferType("0"); - paymentOrder.setAsynSplitFlag("1"); - paymentOrder.setAppid(appletsAppid); - paymentOrder.setOpenid(appUser.getOpenid()); - paymentOrder.setTerminalIp(InetAddress.getLocalHost().getHostAddress()); - List<PaymentOrderGood> goodsDetail = new ArrayList<>(); - PaymentOrderGood paymentOrderGood = new PaymentOrderGood(); - paymentOrderGood.setGoodsName("余额充值"); - goodsDetail.add(paymentOrderGood); - paymentOrder.setGoodsDetail(goodsDetail); - paymentOrder.setFrontUrl(""); - paymentOrder.setNotifyUrl(callbackPath + "/base/appUser/rechargeBalanceCallback"); - paymentOrder.setParameter1(out_trade_no); - - TrhRequest<PaymentOrder> request = new TrhRequest(); - InterfaceResponse execute = request.execute(paymentOrder, PaymentOrder.SERVICE_CODE); - if(!"0000".equals(execute.getResult())){ - return ResultUtil.error(execute.getMsg()); + AppUser appUser1 = AppUserServiceImpl.this.selectById(rechargeRecord1.getUserId()); + AccountChangeDetail accountChangeDetail = new AccountChangeDetail(); + accountChangeDetail.setCode(System.currentTimeMillis() + UUIDUtil.getNumberRandom(3)); + accountChangeDetail.setUserType(1); + accountChangeDetail.setUserId(appUser1.getId()); + accountChangeDetail.setCreateTime(new Date()); + accountChangeDetail.setOldData(appUser1.getAccountBalance()); + accountChangeDetail.setType(1); + accountChangeDetail.setChangeType(3); + accountChangeDetail.setExplain("余额充值"); + appUser1.setAccountBalance(appUser1.getAccountBalance() + rechargeRecord1.getAmount()); + accountChangeDetail.setNewData(appUser1.getAccountBalance()); + AppUserServiceImpl.this.updateById(appUser1); + accountChangeDetailService.insert(accountChangeDetail); + return; + } + if ("USERPAYING".equals(s)) { + Thread.sleep(wait); + num++; + } + }else{ + Thread.sleep(wait); + num++; + } + if(10 == num){ + rechargeRecordService.deleteById(rechargeRecord1.getId()); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + }).start(); } - JSONObject jsonObject = JSON.parseObject(execute.getResult()); - String status = jsonObject.getString("status"); - if("2".equals(status)){ - return ResultUtil.error("失败"); - } - if("0".equals(status)){ - return ResultUtil.error("处理中"); - } - String payCode = jsonObject.getString("payCode"); - return ResultUtil.success(payCode); + return weixinpay; } -- Gitblit v1.7.1