From 3725c177bb38ee248d0769eebddbc13379cbdc98 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期三, 08 一月 2025 09:21:24 +0800 Subject: [PATCH] bug修改 --- ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/FranchiseeController.java | 191 +++++++++++++++++++++++++++++++++++------------ 1 files changed, 140 insertions(+), 51 deletions(-) diff --git a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/FranchiseeController.java b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/FranchiseeController.java index 857b0a4..36aff59 100644 --- a/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/FranchiseeController.java +++ b/ruoyi-service/ruoyi-admin/src/main/java/com/ruoyi/admin/controller/FranchiseeController.java @@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alipay.api.AlipayApiException; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -115,24 +116,46 @@ @ApiOperation(value = "加盟商列表余额", tags = {"后台2.0-加盟商列表余额"}) - @PostMapping(value = "/recent/money") - public R<RencentBalance> recentmoney() { + @GetMapping(value = "/recent/money") + @ApiImplicitParams({ + @ApiImplicitParam(value = "加盟商名称", name = "name", dataType = "String"), + @ApiImplicitParam(value = "管理员", name = "head", dataType = "String"), + @ApiImplicitParam(value = "手机号码", name = "phone", dataType = "String"), + @ApiImplicitParam(value = "管辖城市", name = "city", dataType = "String"), + @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true), + @ApiImplicitParam(value = "每页条数", name = "pageSize", dataType = "Integer", required = true) + }) + public R<RencentBalance> recentmoney(String name, String head, String phone, String city, + @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { BigDecimal balance = new BigDecimal(0); - List<Franchisee> list = franchiseeService.lambdaQuery().list(); + LambdaQueryWrapper<Franchisee> franchiseeLambdaQueryWrapper = new LambdaQueryWrapper<>(); + franchiseeLambdaQueryWrapper = StringUtils.isNotBlank(name) ? franchiseeLambdaQueryWrapper.like(Franchisee::getName, name) : franchiseeLambdaQueryWrapper; + franchiseeLambdaQueryWrapper = StringUtils.isNotBlank(head) ? franchiseeLambdaQueryWrapper.like(Franchisee::getHead, head) : franchiseeLambdaQueryWrapper; + franchiseeLambdaQueryWrapper = StringUtils.isNotBlank(phone) ? franchiseeLambdaQueryWrapper.like(Franchisee::getHeadPhone, phone) : franchiseeLambdaQueryWrapper; + franchiseeLambdaQueryWrapper = StringUtils.isNotBlank(city) ? franchiseeLambdaQueryWrapper.like(Franchisee::getCity, city) : franchiseeLambdaQueryWrapper; + List<Franchisee> list = franchiseeService.list(franchiseeLambdaQueryWrapper); + List<Integer> collect = list.stream().map(Franchisee::getId).collect(Collectors.toList()); + if (collect.isEmpty())collect.add(-1); for (Franchisee franchisee : list) { balance = balance.add(franchisee.getBalance()); } //充值的金额 BigDecimal balance1 = new BigDecimal(0); - List<TFranchiseeBalanceChange> list1 = balanceChangeService.lambdaQuery().eq(TFranchiseeBalanceChange::getType, 1).list(); + List<TFranchiseeBalanceChange> list1 = balanceChangeService.lambdaQuery() + .in(TFranchiseeBalanceChange::getFranchiseeId,collect) + .eq(TFranchiseeBalanceChange::getType, 1).list(); for (TFranchiseeBalanceChange franchiseeBalanceChange : list1) { balance1 = balance1.add(franchiseeBalanceChange.getAmount()); } //扣除的金额 BigDecimal balance2 = new BigDecimal(0); - List<TFranchiseeBalanceChange> list2 = balanceChangeService.lambdaQuery().eq(TFranchiseeBalanceChange::getType, 2).list(); - for (TFranchiseeBalanceChange franchiseeBalanceChange : list1) { + List<TFranchiseeBalanceChange> list2 = balanceChangeService.lambdaQuery() + .in(TFranchiseeBalanceChange::getFranchiseeId,collect) + .eq(TFranchiseeBalanceChange::getType, 2) + .eq(TFranchiseeBalanceChange::getIs_pay,1).list(); + for (TFranchiseeBalanceChange franchiseeBalanceChange : list2) { balance2 = balance2.add(franchiseeBalanceChange.getAmount()); } @@ -157,9 +180,11 @@ @ApiOperation(value = "扣款记录及充值记录", tags = {"后台2.0-统一充值扣款列表","师傅段2.0-统一充值扣款列表"}) @PostMapping(value = "/recent/money/list") public R<Page<TFranchiseeBalanceChange>> recentmoneylist(@RequestBody MoneyRecentQuery moneyRecentQuery) { + Long userid = tokenService.getLoginUser().getUserid(); + SysUser sysUser = sysUserService.getById(userid); Page<TFranchiseeBalanceChange> page = balanceChangeService.lambdaQuery().eq(moneyRecentQuery.getType() != null, TFranchiseeBalanceChange::getType, moneyRecentQuery.getType()) - .eq(moneyRecentQuery.getFranchId() != null, TFranchiseeBalanceChange::getFranchiseeId, moneyRecentQuery.getFranchId()) - .eq(moneyRecentQuery.getFranchName() != null && !"".equals(moneyRecentQuery.getFranchName()), TFranchiseeBalanceChange::getFranchiseeName, moneyRecentQuery.getFranchName()) + .eq(sysUser.getFranchiseeId() != null, TFranchiseeBalanceChange::getFranchiseeId, sysUser.getFranchiseeId()) + .eq(moneyRecentQuery.getName() != null && !"".equals(moneyRecentQuery.getName()), TFranchiseeBalanceChange::getFranchiseeName, moneyRecentQuery.getName()) .ge(moneyRecentQuery.getDate1() != null, TFranchiseeBalanceChange::getCreateTime, moneyRecentQuery.getDate1()) .le(moneyRecentQuery.getDate2() != null, TFranchiseeBalanceChange::getCreateTime, moneyRecentQuery.getDate2()) .eq(TFranchiseeBalanceChange::getIs_pay,1) @@ -186,14 +211,23 @@ @ApiOperation(value = "导出", tags = {"后台2.0-统一充值扣款列表"}) @PostMapping(value = "/recent/money/list/export") public R<Page<TFranchiseeBalanceChange>> export(@RequestBody MoneyRecentQuery moneyRecentQuery, HttpServletResponse response) { + Long userid = tokenService.getLoginUser().getUserid(); + SysUser sysUser = sysUserService.getById(userid); if (moneyRecentQuery.getType()==2) { List<TFranchiseeBalanceChange> page = balanceChangeService.lambdaQuery().eq(moneyRecentQuery.getType() != null, TFranchiseeBalanceChange::getType, moneyRecentQuery.getType()) - .eq(moneyRecentQuery.getFranchId() != null, TFranchiseeBalanceChange::getFranchiseeId, moneyRecentQuery.getFranchId()) - .eq(moneyRecentQuery.getFranchName() != null && !"".equals(moneyRecentQuery.getFranchName()), TFranchiseeBalanceChange::getFranchiseeName, moneyRecentQuery.getFranchName()) + .eq(sysUser.getFranchiseeId() != null, TFranchiseeBalanceChange::getFranchiseeId, sysUser.getFranchiseeId()) + .eq(moneyRecentQuery.getName() != null && !"".equals(moneyRecentQuery.getName()), TFranchiseeBalanceChange::getFranchiseeName, moneyRecentQuery.getName()) .ge(moneyRecentQuery.getDate1() != null, TFranchiseeBalanceChange::getCreateTime, moneyRecentQuery.getDate1()) .le(moneyRecentQuery.getDate2() != null, TFranchiseeBalanceChange::getCreateTime, moneyRecentQuery.getDate2()) + .eq(TFranchiseeBalanceChange::getIs_pay,1) + .orderByDesc(TFranchiseeBalanceChange::getCreateTime) .list(); - + for (TFranchiseeBalanceChange tFranchiseeBalanceChange : page) { + tFranchiseeBalanceChange.setPayStr("微信支付"); + LocalDateTime createTime = tFranchiseeBalanceChange.getCreateTime(); + // 转化为String类型的格式字符串yyyy-MM-dd HH:mm:ss + tFranchiseeBalanceChange.setCreateTimeStr(createTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + } try { response.setCharacterEncoding(Constants.UTF8); response.setContentType("application/vnd.ms-excel"); @@ -221,13 +255,17 @@ return R.ok(); }else { List<TFranchiseeBalanceChange> page = balanceChangeService.lambdaQuery().eq(moneyRecentQuery.getType() != null, TFranchiseeBalanceChange::getType, moneyRecentQuery.getType()) - .eq(moneyRecentQuery.getFranchId() != null, TFranchiseeBalanceChange::getFranchiseeId, moneyRecentQuery.getFranchId()) - .eq(moneyRecentQuery.getFranchName() != null && !"".equals(moneyRecentQuery.getFranchName()), TFranchiseeBalanceChange::getFranchiseeName, moneyRecentQuery.getFranchName()) + .eq(sysUser.getFranchiseeId() != null, TFranchiseeBalanceChange::getFranchiseeId, sysUser.getFranchiseeId()) + .eq(moneyRecentQuery.getName() != null && !"".equals(moneyRecentQuery.getName()), TFranchiseeBalanceChange::getFranchiseeName, moneyRecentQuery.getName()) .ge(moneyRecentQuery.getDate1() != null, TFranchiseeBalanceChange::getCreateTime, moneyRecentQuery.getDate1()) .le(moneyRecentQuery.getDate2() != null, TFranchiseeBalanceChange::getCreateTime, moneyRecentQuery.getDate2()) + .orderByDesc(TFranchiseeBalanceChange::getCreateTime) .list(); - - + for (TFranchiseeBalanceChange tFranchiseeBalanceChange : page) { + LocalDateTime createTime = tFranchiseeBalanceChange.getCreateTime(); + // 转化为String类型的格式字符串yyyy-MM-dd HH:mm:ss + tFranchiseeBalanceChange.setCreateTimeStr(createTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + } try { response.setCharacterEncoding(Constants.UTF8); response.setContentType("application/vnd.ms-excel"); @@ -299,7 +337,7 @@ map.put("p4_Cur", "1"); /**交易币种 */ map.put("q5_OpenId", openId); map.put("p5_ProductName", "加盟商充值"); /** 商品名称 */ - map.put("p9_NotifyUrl", "http://www.zhipingwang.com.cn:9100/admin/franchisee/callBack"); /** 服务器异步通知地址 */ + map.put("p9_NotifyUrl", "https://v7ro848ar5jx.ngrok.xiaomiqiu123.top/admin/franchisee/callBack"); /** 服务器异步通知地址 */ map.put("q1_FrpCode", "WEIXIN_APP3"); /** 交易类型*/ map.put("q7_AppId", "wx1a4a7760be53a835"); /** 交易类型*/ map.put("qa_TradeMerchantNo", "777165000859101"); /** 777开头的报备商户号 必填!*/ @@ -357,6 +395,7 @@ tFranchiseeBalanceChange.setFranchiseeName(byId.getName()); tFranchiseeBalanceChange.setFranchiseeId(String.valueOf(byId.getId())); tFranchiseeBalanceChange.setType(2); + tFranchiseeBalanceChange.setRemark("微信支付"); tFranchiseeBalanceChange.setCode(code); balanceChangeService.save(tFranchiseeBalanceChange); @@ -392,52 +431,86 @@ @ApiOperation(value = "扫码支付",tags = {"后台2.0-加盟商列表余额"}) @PostMapping(value = "/code/buy") - public R buy(@RequestParam BigDecimal money) throws AlipayApiException { + public R buy(@RequestParam BigDecimal money) throws AlipayApiException, IOException { Long userid = tokenService.getLoginUser().getUserid(); SysUser byId1 = sysUserService.getById(userid); Franchisee byId = franchiseeService.getById(byId1.getFranchiseeId()); String code = generateTradeNumber(); int i = money.multiply(BigDecimal.valueOf(100)).intValue(); - com.wechat.pay.java.service.payments.nativepay.model.PrepayRequest prepayRequest = new com.wechat.pay.java.service.payments.nativepay.model.PrepayRequest(); - prepayRequest.setAppid(weChatConfig.appId); - prepayRequest.setMchid(weChatConfig.merchantId); - prepayRequest.setOutTradeNo(code); - prepayRequest.setDescription("购买资料"); - prepayRequest.setNotifyUrl("http://www.zhipingwang.com.cn:9090/admin/franchisee/callBack"); - com.wechat.pay.java.service.payments.nativepay.model.Amount amount = new com.wechat.pay.java.service.payments.nativepay.model.Amount(); - amount.setTotal(i); - prepayRequest.setAmount(amount); - // 调用下单方法,得到应答 - com.wechat.pay.java.service.partnerpayments.app.model.PrepayResponse response; - try { - com.wechat.pay.java.service.payments.nativepay.model.PrepayResponse prepay = nativePayService.prepay(prepayRequest); - //预支付成功,创建预支付订单 - TFranchiseeBalanceChange tFranchiseeBalanceChange = new TFranchiseeBalanceChange(); - tFranchiseeBalanceChange.setAmount(money); - tFranchiseeBalanceChange.setIs_pay(0); - tFranchiseeBalanceChange.setFranchiseeName(byId.getName()); - tFranchiseeBalanceChange.setFranchiseeId(String.valueOf(byId.getId())); - tFranchiseeBalanceChange.setType(2); - tFranchiseeBalanceChange.setCode(code); - balanceChangeService.save(tFranchiseeBalanceChange); + String key = "ad273ceb5e1b49e68d5c565d28d1d305";/** md5密钥商户后台-商户中心-商户设置-密钥管理获取 必填!*/ + Map<String, String> map = new HashMap<String, String>(); + map.put("p0_Version", "2.5");/** 版本号 */ + map.put("p1_MerchantNo", "888122400007793");/** 商户编号 */ + map.put("p2_OrderNo", code); /**商户订单号*/ + map.put("p3_Amount", String.valueOf(money));/**订单金额*/ + map.put("p4_Cur", "1"); /**交易币种 */ + map.put("p5_ProductName", "充值"); /** 商品名称 */ + map.put("p6_ProductDesc", "加盟商充值"); /** 商品名称 */ +// map.put("p7_Mp", ""); /** 如果商户请求时传递了该参数,则返回给商户时会原值传 回。 */ + map.put("p9_NotifyUrl", "https://v7ro848ar5jx.ngrok.xiaomiqiu123.top/admin/franchisee/callBack"); /** 服务器异步通知地址 */ + map.put("q1_FrpCode", "WEIXIN_NATIVE"); /** 微信扫码(主扫)【注:此为用户主扫,商户被扫】*/ + map.put("q4_IsShowPic", "1"); /** 是否展示二 维码图片 1表示输出*/ + map.put("q7_AppId", "wx1a4a7760be53a835"); /** 交易类型*/ + map.put("qa_TradeMerchantNo", "777165000859101"); /** 777开头的报备商户号 必填!*/ + map.put("qi_FqSellerPercen", "0"); /** 卖家承担收 费比例 目前仅支持传入 0 ,即用户承 担手续费!*/ + + String Strmap = CreateLinkStringByGet1.createLinkStringByGet(map); + + // 签名 + String sign = ""; + sign = Md5_Sign.SignByMD5(Strmap, key); + map.put("hmac", sign);/** 签名数据 */ + System.out.println("发送:" + JSON.toJSONString(map).toString()); + + // post请求参数内容 + HttpRequester hr = new HttpRequester(); + HttpRespons HP = hr.sendPost("https://trade.joinpay.com/tradeRt/uniPay", map); + System.out.println("接收返回参数:" + HP.getContent()); + JSONObject jsonObject = JSONObject.parseObject(HP.getContent()); + String rcResult = jsonObject.getString("rd_Pic"); + Map<String, Object> map2 = new HashMap<>(); + map2.put("rcResult", rcResult); +// com.wechat.pay.java.service.payments.nativepay.model.PrepayRequest prepayRequest = new com.wechat.pay.java.service.payments.nativepay.model.PrepayRequest(); +// prepayRequest.setAppid(weChatConfig.appId); +// prepayRequest.setMchid(weChatConfig.merchantId); +// prepayRequest.setOutTradeNo(code); +// prepayRequest.setDescription("购买资料"); +// prepayRequest.setNotifyUrl("http://www.zhipingwang.com.cn:9090/admin/franchisee/callBack"); +// com.wechat.pay.java.service.payments.nativepay.model.Amount amount = new com.wechat.pay.java.service.payments.nativepay.model.Amount(); +// amount.setTotal(i); +// prepayRequest.setAmount(amount); +// // 调用下单方法,得到应答 +// com.wechat.pay.java.service.partnerpayments.app.model.PrepayResponse response; + try { +// com.wechat.pay.java.service.payments.nativepay.model.PrepayResponse prepay = nativePayService.prepay(prepayRequest); + //预支付成功,创建预支付订单 + TFranchiseeBalanceChange tFranchiseeBalanceChange = new TFranchiseeBalanceChange(); + tFranchiseeBalanceChange.setAmount(money); + tFranchiseeBalanceChange.setIs_pay(0); + tFranchiseeBalanceChange.setFranchiseeName(byId.getName()); + tFranchiseeBalanceChange.setFranchiseeId(String.valueOf(byId.getId())); + tFranchiseeBalanceChange.setType(2); + tFranchiseeBalanceChange.setCode(code); + tFranchiseeBalanceChange.setRemark("加盟商扫码充值"); + balanceChangeService.save(tFranchiseeBalanceChange); - PayDto payDto = new PayDto(); - payDto.setOrderId(tFranchiseeBalanceChange.getId()); - payDto.setQrCode(prepay.getCodeUrl()); + PayDto payDto = new PayDto(); + payDto.setOrderId(tFranchiseeBalanceChange.getId()); + payDto.setQrCode(rcResult); - return R.ok(payDto); - } catch (HttpException e) { // 发送HTTP请求失败 + return R.ok(payDto); + } catch (HttpException e) { // 发送HTTP请求失败 // log.error("发送HTTP请求失败: {}", e.getHttpRequest()); - } catch (ServiceException e) { // 服务返回状态小于200或大于等于300,例如500 + } catch (ServiceException e) { // 服务返回状态小于200或大于等于300,例如500 // log.error("服务返回状态异常: {}", e.getResponseBody()); - } catch (MalformedMessageException e) { // 服务返回成功,返回体类型不合法,或者解析返回体失败 + } catch (MalformedMessageException e) { // 服务返回成功,返回体类型不合法,或者解析返回体失败 // log.error("返回体类型不合法: {}", e.getMessage()); - } catch (Exception e) { + } catch (Exception e) { // log.error("预下单异常: {}", e.getMessage()); - } - return null; + } + return null; } @@ -461,6 +534,22 @@ public R payNotify(HttpServletRequest request,String r2_OrderNo) throws Exception{ System.err.println("======回调开始"); System.err.println("======回调开始"+r2_OrderNo); + System.err.println("请求"+request.getParameterMap()); + Map<String, String[]> parameterMap = request.getParameterMap(); + String r6Status = request.getParameter("r6_Status"); + if (org.springframework.util.StringUtils.hasLength(r6Status)){ + if (r6Status.equals("101")){ + return R.errorCode("支付失败"); + } + } + // 循环打印 + for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) { + String key = entry.getKey(); + String[] values = entry.getValue(); + for (String value : values) { + System.err.println("======回调开始"+key + ":" + value); + } + } // Transaction transaction; // transaction = notificationParser.parse(WeChatUtil.handleNodifyRequestParam(request), Transaction.class); // if (transaction.getTradeState() == Transaction.TradeStateEnum.SUCCESS) { @@ -473,11 +562,11 @@ franchiseeService.updateById(byId); one.setIs_pay(1); balanceChangeService.updateById(one); - + return R.ok(null,"success"); // } } - return R.ok(null,"SUCCESS"); + return R.ok(null,"error"); } public static String generateTradeNumber() { -- Gitblit v1.7.1