From 0d8b60c9ed72d996280688a82ffa8eac3afbbff9 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期五, 02 六月 2023 15:28:24 +0800 Subject: [PATCH] 新增加充值和提现功能 --- management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java | 611 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 519 insertions(+), 92 deletions(-) diff --git a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java index c2d7aba..a219bfc 100644 --- a/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java +++ b/management/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TAgentController.java @@ -1,28 +1,33 @@ package com.stylefeng.guns.modular.system.controller.general; +import cn.hutool.core.codec.Base64; +import cn.hutool.core.util.ZipUtil; import cn.hutool.crypto.SecureUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; import com.stylefeng.guns.core.base.controller.BaseController; import com.stylefeng.guns.core.base.tips.SuccessTip; import com.stylefeng.guns.core.common.constant.state.ManagerStatus; import com.stylefeng.guns.core.exception.GunsException; import com.stylefeng.guns.core.exception.ServiceExceptionEnum; import com.stylefeng.guns.core.shiro.ShiroKit; +import com.stylefeng.guns.core.shiro.ShiroUser; import com.stylefeng.guns.core.util.DateUtil; +import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.system.controller.resp.TAgentResp; import com.stylefeng.guns.modular.system.controller.util.ExcelUtil; +import com.stylefeng.guns.modular.system.controller.util.UUIDUtil; import com.stylefeng.guns.modular.system.enums.OrderStateEnum; import com.stylefeng.guns.modular.system.enums.PayStatusEnum; import com.stylefeng.guns.modular.system.enums.UserTypeEnum; import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.*; -import com.stylefeng.guns.modular.system.util.MallBook.model.BindAccount; -import com.stylefeng.guns.modular.system.util.MallBook.model.InterfaceResponse; -import com.stylefeng.guns.modular.system.util.MallBook.model.Register; +import com.stylefeng.guns.modular.system.util.MallBook.model.*; import com.stylefeng.guns.modular.system.util.MallBook.util.TrhRequest; import com.stylefeng.guns.modular.system.util.RedisUtil; +import com.stylefeng.guns.modular.system.util.ResultUtil; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; @@ -39,10 +44,12 @@ import org.springframework.ui.Model; import org.springframework.beans.factory.annotation.Autowired; import com.stylefeng.guns.core.log.LogObjectHolder; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; -import java.io.OutputStream; +import java.io.*; import java.math.BigDecimal; +import java.net.InetAddress; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; @@ -74,6 +81,12 @@ private IUserService userService; @Autowired private RedisUtil redisUtil; + + @Autowired + private ISettlementRecordService settlementRecordService; + + @Autowired + private IRechargeRecordService rechargeRecordService; @Value("${callbackPath}") private String callbackPath; @@ -221,7 +234,12 @@ user.setSex(1); userService.insert(user); - + new Thread(new Runnable() { + @Override + public void run() { + registeredMerchant(tAgent); + } + }).start(); return SUCCESS_TIP; } @@ -229,97 +247,162 @@ public void registeredMerchant(TAgent tAgent){ - Register registerVO = new Register(); - registerVO.setMerUserId("agent_" + tAgent.getId()); - registerVO.setPhone(tAgent.getPrincipalPhone()); - registerVO.setUserType(tAgent.getUserType().toString()); - registerVO.setUserName(tAgent.getMerchantName()); - registerVO.setCertId(tAgent.getMerchantIDCode()); - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); - registerVO.setCertIdExpires(sdf.format(tAgent.getCertIdExpires())); - registerVO.setBusinessScope(tAgent.getBusinessScope()); - registerVO.setSocialCreditCode(tAgent.getSocialCreditCode()); - registerVO.setSocialCreditCodeExpires(sdf.format(tAgent.getSocialCreditCodeExpires())); - registerVO.setLegalPhone(tAgent.getLegalPhone()); - registerVO.setLegalPerson(tAgent.getLegalPerson()); - registerVO.setAddress(tAgent.getAddress()); - /** - * 省份编码(子商户类型非小微必填) 字段长度最长:4位 - */ - registerVO.setProvCode("0035"); - /** - * 地区编码(子商户类型非小微必填) 字段长度最长:4位 - */ - registerVO.setAreaCode("3501"); - registerVO.setFileNo(tAgent.getFileNo()); - registerVO.setNotifyUrl(callbackPath + "/base/driver/microenterpriseCallback"); - registerVO.setParameter1(tAgent.getId().toString()); - - TrhRequest<Register> request = new TrhRequest(); - InterfaceResponse response = request.execute(registerVO, Register.SERVICE_CODE); - if("0000".equals(response.getCode())){ - JSONObject jsonObject = JSON.parseObject(response.getResult()); - String status = jsonObject.getString("status"); - if("2".equals(status)){ - tAgent.setMerchantStatus(2); - tAgentService.updateById(tAgent); - System.err.println("注册代理商子商户失败"); - } - if("0".equals(status)){ - tAgent.setMerchantStatus(0); - tAgentService.updateById(tAgent); - System.err.println("注册代理商子商户处理中"); - } - if("1".equals(status)){ - String userId = jsonObject.getString("userId"); - tAgent.setMerchantNumber(userId); - tAgent.setMerchantStatus(1); - tAgentService.updateById(tAgent); - - //开始绑定结算账户 - BindAccount bindAccount = new BindAccount(); - bindAccount.setUserId(tAgent.getMerchantNumber()); - bindAccount.setCertId(tAgent.getMerchantIDCode()); - bindAccount.setCardName(tAgent.getCardName()); - bindAccount.setCardNo(tAgent.getCardNo()); - bindAccount.setBankAcctType(tAgent.getBankAcctType().toString()); - bindAccount.setPhone(tAgent.getPhone()); - bindAccount.setBankCode(tAgent.getBankCode()); - /** - * 省份编码 - */ - bindAccount.setProvCode("0035"); - /** - * 地区编码 - */ - bindAccount.setAreaCode("3501"); - TrhRequest<BindAccount> request1 = new TrhRequest(); - InterfaceResponse execute = request1.execute(bindAccount, BindAccount.SERVICE_CODE); - if("0000".equals(execute.getCode())){ - JSONObject jsonObject1 = JSON.parseObject(execute.getResult()); - String status1 = jsonObject1.getString("status"); - if("2".equals(status1)){ - tAgent.setBankStatus(2); - tAgentService.updateById(tAgent); - System.err.println("绑定结算账户失败" ); - } - if("1".equals(status1)){ - tAgent.setBankStatus(1); - tAgentService.updateById(tAgent); - System.err.println("绑定结算账户成功"); - } - if("0".equals(status1)){ - tAgent.setBankStatus(0); - tAgentService.updateById(tAgent); - System.err.println("绑定结算账户处理中"); - } - }else{ - System.err.println("绑定结算账户失败:" + execute.getMsg()); + if(tAgent.getUserType() == 0){ + Register registerVO = new Register(); + registerVO.setMerUserId("agent_" + tAgent.getId()); + registerVO.setPhone(tAgent.getPrincipalPhone()); + registerVO.setUserType("0"); + registerVO.setUserName(tAgent.getMerchantName()); + registerVO.setCertId(tAgent.getMerchantIDCode()); + registerVO.setNotifyUrl(callbackPath + "/base/driver/microenterpriseCallback"); + TrhRequest<Register> request = new TrhRequest(); + InterfaceResponse execute = request.execute(registerVO, Register.SERVICE_CODE); + if("0000".equals(execute.getCode())){ + JSONObject jsonObject = JSON.parseObject(execute.getResult()); + String status = jsonObject.getString("status"); + if("2".equals(status)){ + tAgent.setMerchantStatus(2); + tAgentService.updateById(tAgent); + System.err.println("注册代理商子商户失败"); } + if("0".equals(status)){ + tAgent.setMerchantStatus(0); + tAgentService.updateById(tAgent); + System.err.println("注册代理商子商户处理中"); + } + if("1".equals(status)){ + String userId = jsonObject.getString("userId"); + tAgent.setMerchantNumber(userId); + tAgent.setMerchantStatus(1); + tAgentService.updateById(tAgent); + BindAccount bindAccount = new BindAccount(); + bindAccount.setUserId(tAgent.getMerchantNumber()); + bindAccount.setCertId(tAgent.getMerchantIDCode()); + bindAccount.setCardName(tAgent.getCardName()); + bindAccount.setCardNo(tAgent.getCardNo()); + bindAccount.setBankAcctType(tAgent.getBankAcctType().toString()); + bindAccount.setPhone(tAgent.getPhone()); + TrhRequest<BindAccount> request1 = new TrhRequest(); + InterfaceResponse execute1 = request1.execute(bindAccount, BindAccount.SERVICE_CODE); + if("0000".equals(execute1.getCode())){ + JSONObject jsonObject1 = JSON.parseObject(execute1.getResult()); + String status1 = jsonObject1.getString("status"); + if("2".equals(status1)){ + tAgent.setBankStatus(2); + tAgentService.updateById(tAgent); + System.err.println("绑定结算账户失败" ); + } + if("1".equals(status1)){ + tAgent.setBankStatus(1); + tAgentService.updateById(tAgent); + System.err.println("绑定结算账户成功"); + } + if("0".equals(status1)){ + tAgent.setBankStatus(0); + tAgentService.updateById(tAgent); + System.err.println("绑定结算账户处理中"); + } + }else{ + System.err.println("绑定结算账户失败:" + execute.getMsg()); + } + } + }else{ + System.err.println("注册代理商子商户异常:" + execute.getMsg()); } }else{ - System.err.println("注册代理商子商户异常:" + response.getMsg()); + Register registerVO = new Register(); + registerVO.setMerUserId("agent_" + tAgent.getId()); + registerVO.setPhone(tAgent.getPrincipalPhone()); + registerVO.setUserType(tAgent.getUserType().toString()); + registerVO.setUserName(tAgent.getMerchantName()); + registerVO.setCertId(tAgent.getMerchantIDCode()); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + registerVO.setCertIdExpires(sdf.format(tAgent.getCertIdExpires())); + registerVO.setBusinessScope(tAgent.getBusinessScope()); + registerVO.setSocialCreditCode(tAgent.getSocialCreditCode()); + registerVO.setSocialCreditCodeExpires(sdf.format(tAgent.getSocialCreditCodeExpires())); + registerVO.setLegalPhone(tAgent.getLegalPhone()); + registerVO.setLegalPerson(tAgent.getLegalPerson()); + registerVO.setAddress(tAgent.getAddress()); + /** + * 省份编码(子商户类型非小微必填) 字段长度最长:4位 + */ + registerVO.setProvCode("0035"); + /** + * 地区编码(子商户类型非小微必填) 字段长度最长:4位 + */ + registerVO.setAreaCode("3501"); + registerVO.setFileNo(tAgent.getFileNo()); + registerVO.setNotifyUrl(callbackPath + "/base/driver/microenterpriseCallback"); + registerVO.setParameter1(tAgent.getId().toString()); + + TrhRequest<Register> request = new TrhRequest(); + InterfaceResponse response = request.execute(registerVO, Register.SERVICE_CODE); + if("0000".equals(response.getCode())){ + JSONObject jsonObject = JSON.parseObject(response.getResult()); + String status = jsonObject.getString("status"); + if("2".equals(status)){ + tAgent.setMerchantStatus(2); + tAgentService.updateById(tAgent); + System.err.println("注册代理商子商户失败"); + } + if("0".equals(status)){ + tAgent.setMerchantStatus(0); + tAgentService.updateById(tAgent); + System.err.println("注册代理商子商户处理中"); + } + if("1".equals(status)){ + String userId = jsonObject.getString("userId"); + tAgent.setMerchantNumber(userId); + tAgent.setMerchantStatus(1); + tAgentService.updateById(tAgent); + + //开始绑定结算账户 + BindAccount bindAccount = new BindAccount(); + bindAccount.setUserId(tAgent.getMerchantNumber()); + bindAccount.setCertId(tAgent.getMerchantIDCode()); + bindAccount.setCardName(tAgent.getCardName()); + bindAccount.setCardNo(tAgent.getCardNo()); + bindAccount.setBankAcctType(tAgent.getBankAcctType().toString()); + bindAccount.setPhone(tAgent.getPhone()); + bindAccount.setBankCode(tAgent.getBankCode()); + /** + * 省份编码 + */ + bindAccount.setProvCode("0035"); + /** + * 地区编码 + */ + bindAccount.setAreaCode("3501"); + TrhRequest<BindAccount> request1 = new TrhRequest(); + InterfaceResponse execute = request1.execute(bindAccount, BindAccount.SERVICE_CODE); + if("0000".equals(execute.getCode())){ + JSONObject jsonObject1 = JSON.parseObject(execute.getResult()); + String status1 = jsonObject1.getString("status"); + if("2".equals(status1)){ + tAgent.setBankStatus(2); + tAgentService.updateById(tAgent); + System.err.println("绑定结算账户失败" ); + } + if("1".equals(status1)){ + tAgent.setBankStatus(1); + tAgentService.updateById(tAgent); + System.err.println("绑定结算账户成功"); + } + if("0".equals(status1)){ + tAgent.setBankStatus(0); + tAgentService.updateById(tAgent); + System.err.println("绑定结算账户处理中"); + } + }else{ + System.err.println("绑定结算账户失败:" + execute.getMsg()); + } + + } + }else{ + System.err.println("注册代理商子商户异常:" + response.getMsg()); + } } } @@ -476,4 +559,348 @@ } } + + @ResponseBody + @RequestMapping(value = "/uploadFile") + public String uploadFile(MultipartFile file){ + File srcFile = null; + String originalFilename = file.getOriginalFilename(); + String substring = originalFilename.substring(originalFilename.lastIndexOf(".")); + String fileName = ""; + try { + fileName = UUIDUtil.getRandomCode(28) + ".png"; + srcFile = multipartFileToFile(file, fileName); + } catch (Exception e) { + e.printStackTrace(); + } + ImageUpload imageUpload = new ImageUpload(); + imageUpload.setMerUserId("33567678901213221"); + File zip = ZipUtil.zip(srcFile); + imageUpload.setName(zip.getName()); + imageUpload.setFile(Base64.encode(zip)); + TrhRequest<ImageUpload> request = new TrhRequest(); + InterfaceResponse execute = request.execute(imageUpload, ImageUpload.SERVICE_CODE); + if(execute.getCode().equals("0000")){ + JSONObject jsonObject = JSON.parseObject(execute.getResult()); + return jsonObject.getString("fileNo"); + } + return ""; + } + + + public File multipartFileToFile(MultipartFile file, String fileName) throws Exception { + File toFile = null; + if (file.equals("") || file.getSize() <= 0) { + file = null; + } else { + InputStream ins = null; + ins = file.getInputStream(); + toFile = new File("D:\\logs\\" + fileName); + inputStreamToFile(ins, toFile); + ins.close(); + } + return toFile; + + } + + + private static void inputStreamToFile(InputStream ins, File file) { + try { + OutputStream os = new FileOutputStream(file); + int bytesRead = 0; + byte[] buffer = new byte[8192]; + while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) { + os.write(buffer, 0, bytesRead); + } + os.close(); + ins.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } + + + /** + * 跳转到企业信息页 + * @return + */ + @GetMapping("/showEnterprisePage") + public String showEnterprisePage(Model model){ + ShiroUser user = ShiroKit.getUser(); + Integer objectId = user.getObjectId(); + Integer roleType = user.getRoleType(); + User user1 = userService.selectById(user.getId()); + TAgent tAgent = new TAgent(); + if(roleType == 1){//平台 + tAgent.setPrincipal(user1.getName()); + tAgent.setPrincipalPhone(user1.getPhone()); + tAgent.setEmail(user1.getEmail()); + tAgent.setMerchantNumber("553021440975"); + } + if(roleType == 3){//代理商 + tAgent = tAgentService.selectById(objectId); + } + model.addAttribute("roleType", roleType); + model.addAttribute("item", tAgent); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + model.addAttribute("socialCreditCodeExpires", roleType == 1 ? "" : sdf.format(tAgent.getSocialCreditCodeExpires())); + model.addAttribute("certIdExpires", roleType == 1 ? "" : sdf.format(tAgent.getCertIdExpires())); + Wrapper<SettlementRecord> settlementRecordWrapper = new EntityWrapper<SettlementRecord>().eq("type", roleType == 1 ? 1 : 2); + if(roleType == 2){ + settlementRecordWrapper.eq("objectId", objectId); + } + List<SettlementRecord> settlementRecords = settlementRecordService.selectList(settlementRecordWrapper.isNotNull("arrivalTime").orderBy("insertTime desc")); + model.addAttribute("settlementRecords", settlementRecords); + + QueryBalance queryBalance = new QueryBalance(); + queryBalance.setUserId(tAgent.getMerchantNumber()); + TrhRequest<QueryBalance> request = new TrhRequest(); + InterfaceResponse execute = request.execute(queryBalance, QueryBalance.SERVICE_CODE); + model.addAttribute("balance", 0); + model.addAttribute("marketingAmount", 0); + if("0000".equals(execute.getCode())){ + JSONObject jsonObject = JSON.parseObject(execute.getResult()); + model.addAttribute("balance", jsonObject.getDoubleValue("settledAmount") / 100); + if(roleType == 1){ + model.addAttribute("marketingAmount", jsonObject.getDoubleValue("marketingAmount") / 100); + } + } + return PREFIX + "enterprisePage.html"; + } + + + /** + * 提现申请 + * @return + */ + @ResponseBody + @PostMapping("/withdrawCash") + public ResultUtil withdrawCash(){ + ShiroUser user = ShiroKit.getUser(); + Integer objectId = user.getObjectId(); + Integer roleType = user.getRoleType(); + User user1 = userService.selectById(user.getId()); + TAgent tAgent = new TAgent(); + if(roleType == 1){//平台 + tAgent.setLegalPerson(user1.getName()); + tAgent.setLegalPhone(user1.getPhone()); + tAgent.setEmail(user1.getEmail()); + tAgent.setMerchantNumber("553021440975"); + } + if(roleType == 3){//代理商 + tAgent = tAgentService.selectById(objectId); + } + QueryBalance queryBalance = new QueryBalance(); + queryBalance.setUserId(tAgent.getMerchantNumber()); + TrhRequest<QueryBalance> request = new TrhRequest(); + InterfaceResponse execute = request.execute(queryBalance, QueryBalance.SERVICE_CODE); + if("0000".equals(execute.getCode())){ + JSONObject jsonObject = JSON.parseObject(execute.getResult()); + double settledAmount = jsonObject.getDoubleValue("settledAmount"); + if(0 == settledAmount){ + return ResultUtil.error("余额不足"); + } + SettlementRecord settlementRecord = new SettlementRecord(); + settlementRecord.setType(roleType == 1 ? 1 : 2); + if(roleType == 3){ + settlementRecord.setObjectId(tAgent.getId()); + } + settlementRecord.setAmount(settledAmount); + settlementRecord.setInsertTime(new Date()); + settlementRecordService.insert(settlementRecord); + + + Withdraw withdraw = new Withdraw(); + withdraw.setUserId(tAgent.getMerchantNumber()); + withdraw.setAmount(settledAmount + ""); + withdraw.setOrderName("账户余额提现"); + withdraw.setRemark("账户余额提现"); + withdraw.setNotifyUrl(callbackPath + "/tAgent/withdrawCashCallback"); + withdraw.setParameter1(settlementRecord.getId().toString()); + TrhRequest<Withdraw> request1 = new TrhRequest(); + InterfaceResponse execute1 = request1.execute(withdraw, Withdraw.SERVICE_CODE);//结算(提现) + if("0000".equals(execute1.getCode())){ + JSONObject jsonObject1 = JSON.parseObject(execute1.getResult()); + String merOrderId1 = jsonObject1.getString("merOrderId"); + Integer status = jsonObject1.getInteger("status");//0:待处理;1:成功;2:失败 + if(0 == status){ + return ResultUtil.error("申请处理中"); + } + if(1 == status){ + settlementRecord.setOrderNumber(merOrderId1); + settlementRecord.setArrivalTime(new Date()); + settlementRecordService.updateById(settlementRecord); + return ResultUtil.success(); + } + if(2 == status){ + return ResultUtil.error("结算接口异常【提现】:" + jsonObject1.getString("statusMsg")); + } + }else{ + return ResultUtil.error("结算接口异常【提现】:" + execute.getMsg()); + } + + }else{ + return ResultUtil.error(execute.getMsg()); + } + return ResultUtil.error("未知异常"); + } + + + /** + * 提现回调 + * @param interfaceResponse + */ + @ResponseBody + @PostMapping("/withdrawCashCallback") + public void withdrawCashCallback(@RequestBody InterfaceResponse interfaceResponse) { + if("0000".equals(interfaceResponse.getCode())){ + JSONObject jsonObject1 = JSON.parseObject(interfaceResponse.getResult()); + String merOrderId1 = jsonObject1.getString("merOrderId"); + Integer status = jsonObject1.getInteger("status");//0:待处理;1:成功;2:失败 + if(1 == status){ + String parameter1 = jsonObject1.getString("parameter1"); + SettlementRecord settlementRecord = settlementRecordService.selectById(parameter1); + settlementRecord.setOrderNumber(merOrderId1); + settlementRecord.setArrivalTime(new Date()); + settlementRecordService.updateById(settlementRecord); + } + if(2 == status){ + System.err.println("结算接口异常【提现】:" + jsonObject1.getString("statusMsg")); + } + }else{ + System.err.println("结算接口异常【提现】:" + interfaceResponse.getMsg()); + } + } + + + /** + * 充值补贴金额 + * @param amount + * @return + */ + @ResponseBody + @PostMapping("/accountRecharge") + public ResultUtil accountRecharge(Double amount){ + try { + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + String out_trade_no = sdf.format(new Date()) + UUIDUtil.getNumberRandom(3); + RechargeRecord rechargeRecord = new RechargeRecord(); + rechargeRecord.setCode(out_trade_no); + rechargeRecord.setType(4); + rechargeRecord.setAmount(amount); + rechargeRecord.setPayType(2); + rechargeRecord.setPayStatus(1); + rechargeRecord.setCreateTime(new Date()); + rechargeRecordService.insert(rechargeRecord); + + Deposit deposit = new Deposit(); + deposit.setAmount(String.valueOf(Double.valueOf(amount * 100).intValue())); + deposit.setOrderName("补贴充值"); + deposit.setPayType("ALI_CB"); + deposit.setTerminalIp(InetAddress.getLocalHost().getHostAddress()); + deposit.setFrontUrl(callbackPath + "/tAgent/accountRechargeCallback"); + deposit.setNotifyUrl(callbackPath + "/tAgent/accountRechargeCallback"); + deposit.setParameter1(rechargeRecord.getId().toString()); + TrhRequest<Deposit> request = new TrhRequest(); + InterfaceResponse execute = request.execute(deposit, Deposit.SERVICE_CODE); + if("0000".equals(execute.getCode())){ + JSONObject jsonObject = JSON.parseObject(execute.getResult()); + Integer status = jsonObject.getInteger("status"); + if(2 == status){ + return ResultUtil.error("支付异常"); + } + String merOrderId = jsonObject.getString("merOrderId"); + String payCode = jsonObject.getString("payCode"); + if(ToolUtil.isNotEmpty(payCode)){ + 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() != 1){ + return; + } + QueryOrder queryOrder = new QueryOrder(); + queryOrder.setOriginalMerOrderId(merOrderId); + /** + * 1:支付查询 2:退款查询 3:确认收货查询 4:结算查询 5:充值查询 6:转账查询 7:异步分账查询(必填) 字段长度最长:1位 + */ + queryOrder.setQueryType("5"); + TrhRequest<QueryOrder> request = new TrhRequest(); + InterfaceResponse execute1 = request.execute(queryOrder, QueryOrder.SERVICE_CODE); + if("0000".equals(execute1.getCode())){ + JSONObject jsonObject1 = JSON.parseObject(execute1.getResult()); + String status1 = jsonObject1.getString("status"); + if("0".equals(status1)){//待处理 + Thread.sleep(wait); + num++; + } + if("1".equals(status1)){//成功 + String merOrderId = jsonObject1.getString("merOrderId"); + rechargeRecord1.setPayTime(new Date()); + rechargeRecord1.setPayStatus(2); + rechargeRecord1.setOrderNumber(merOrderId); + rechargeRecord1.setSurplusDividedAmount(rechargeRecord1.getAmount()); + rechargeRecordService.updateById(rechargeRecord1); + break; + } + if("2".equals(status1) || 10 == num){//失败 + rechargeRecordService.deleteById(rechargeRecord1.getId()); + break; + } + }else{ + Thread.sleep(wait); + num++; + } + } + }catch (Exception e){ + e.printStackTrace(); + } + } + }).start(); + } + return ResultUtil.success(payCode); + }else{ + return ResultUtil.error(execute.getMsg()); + } + }catch (Exception e){ + e.printStackTrace(); + return ResultUtil.runErr(); + } + } + + + /** + * 补贴金额充值回调 + * @param interfaceResponse + */ + @ResponseBody + @PostMapping("/accountRechargeCallback") + public void accountRechargeCallback(@RequestBody InterfaceResponse interfaceResponse){ + if("0000".equals(interfaceResponse.getCode())){ + JSONObject jsonObject = JSON.parseObject(interfaceResponse.getResult()); + Integer status = jsonObject.getInteger("status"); + if(2 == status){ + System.err.println("支付异常"); + return; + } + if(1 == status){ + String parameter1 = jsonObject.getString("parameter1"); + RechargeRecord rechargeRecord = rechargeRecordService.selectById(parameter1); + rechargeRecord.setPayStatus(2); + rechargeRecord.setPayTime(new Date()); + rechargeRecord.setOrderNumber(jsonObject.getString("merOrderId")); + rechargeRecord.setSurplusDividedAmount(rechargeRecord.getAmount()); + rechargeRecordService.updateById(rechargeRecord); + } + }else{ + System.err.println(interfaceResponse.getMsg()); + } + } + } -- Gitblit v1.7.1