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