From 6acf6357094588946b5528f1ef1ed84a0f1037fd Mon Sep 17 00:00:00 2001
From: huliguo <2023611923@qq.com>
Date: 星期五, 13 六月 2025 19:45:27 +0800
Subject: [PATCH] 小程序收付款

---
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java |  100 ++++++++++++++++++++++++++++----------------------
 1 files changed, 56 insertions(+), 44 deletions(-)

diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java
index dd74416..e98cf90 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java
@@ -3,6 +3,7 @@
 
 import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -16,6 +17,7 @@
 import com.ruoyi.other.api.domain.Shop;
 import com.ruoyi.other.api.domain.ShopBalanceStatement;
 import com.ruoyi.other.api.domain.ShopWithdraw;
+import com.ruoyi.other.mapper.ShopWithdrawMapper;
 import com.ruoyi.other.service.ShopBalanceStatementService;
 import com.ruoyi.other.service.ShopService;
 import com.ruoyi.other.service.ShopWithdrawService;
@@ -24,20 +26,25 @@
 import com.ruoyi.other.util.payment.model.SinglePay;
 import com.ruoyi.other.util.payment.model.SinglePayCallbackResult;
 import com.ruoyi.other.util.payment.model.SinglePayResult;
+import com.ruoyi.other.util.payment.wx.WechatPayService;
 import com.ruoyi.system.api.domain.SysUser;
 import com.ruoyi.system.api.feignClient.SysUserClient;
 import com.ruoyi.system.api.model.LoginUser;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Collectors;
 
@@ -69,6 +76,11 @@
 
     @Resource
     private SysUserClient sysUserClient;
+    @Autowired
+    private ShopWithdrawMapper shopWithdrawMapper;
+
+    @Autowired
+    private WechatPayService wechatPayService;
 
 
     @GetMapping("/getShopById")
@@ -119,22 +131,25 @@
                                            @ApiParam("手机号") String phone,
                                            @ApiParam("审核状态(0=待审核,1=审核通过,2=审核失败)")Integer auditStatus) {
         //模糊查询手机号
-        List<Long> collect=null;
+        List<Integer> shopIds=new ArrayList<>();
         if (StringUtils.isNotEmpty(phone)) {
-            List<AppUser> data = appUserClient.getAppUserByPhoneNoFilter(phone).getData();
-            collect = data.stream().map(AppUser::getId).collect(Collectors.toList());
-            if (CollectionUtils.isEmpty(collect)) {
+            QueryWrapper<Shop> queryWrapper=new QueryWrapper<>();
+            queryWrapper.like(StringUtils.isNotEmpty(phone),"phone", phone);
+           shopIds=shopService.list(queryWrapper).stream().map(Shop::getId).collect(Collectors.toList());
+            if (CollectionUtils.isEmpty(shopIds)) {
                 return R.ok(new PageInfo<>());
             }
         }
+        if (shopId!=null && !shopIds.contains(shopId)){
+            shopIds.add(shopId);
+        }
 
-        Page<ShopWithdraw> page = shopWithdrawService.page(Page.of(pageNum, pageSize), new LambdaQueryWrapper<ShopWithdraw>()
-                        .eq(shopId!=null,ShopWithdraw::getShopId,shopId)
-                        .eq(auditStatus!=null,ShopWithdraw::getAuditStatus,auditStatus)
-                        .in(collect!=null,ShopWithdraw::getCreateUserId,collect)
-                        .orderByDesc(ShopWithdraw::getCreateTime)
-
-                );
+        PageInfo<ShopWithdraw> page=new PageInfo<>(pageNum,pageSize);
+        List<ShopWithdraw> list =shopWithdrawMapper.page(page,shopIds,auditStatus);
+        list.forEach(x->{
+            x.setIdStr(x.getId().toString());
+        });
+        page.setRecords(list);
         return R.ok(page);
     }
 
@@ -195,6 +210,7 @@
     }
 
     private void baseWithdrawalApplication(BigDecimal money, Long userId, Integer shopId) {
+        money=money.setScale(2, BigDecimal.ROUND_HALF_DOWN);
         Shop shop = shopService.getById(shopId);
         if (money.compareTo(BigDecimal.ZERO)==0){
             throw new ServiceException("提现金额必须大于零");
@@ -224,10 +240,10 @@
         //扣除账户余额及添加变动明细
         BigDecimal balance = shop.getBalance();//余额
         BigDecimal canWithdrawMoney = shop.getCanWithdrawMoney();//可提现金额
-        BigDecimal withdrawMoney = shop.getWithdrawMoney();//审核中金额
+        BigDecimal withdrawAuditMoney = shop.getWithdrawAuditMoney();//审核中金额
         shop.setBalance(balance.subtract(money).setScale(2, RoundingMode.HALF_EVEN));//余额减少
         shop.setCanWithdrawMoney(canWithdrawMoney.subtract(money).setScale(2, RoundingMode.HALF_EVEN));//可提现金额减少
-        shop.setWithdrawAuditMoney(withdrawMoney.add(money).setScale(2, RoundingMode.HALF_EVEN));//审核中金额增加
+        shop.setWithdrawAuditMoney(withdrawAuditMoney.add(money).setScale(2, RoundingMode.HALF_EVEN));//审核中金额增加
         shopService.updateById(shop);
         //添加余额变动明细
         ShopBalanceStatement shopBalanceStatement = new ShopBalanceStatement();
@@ -259,33 +275,30 @@
         Shop shop = shopService.getById(shopWithdraw1.getShopId());
         BigDecimal money = shopWithdraw1.getMoney();
         if(1 == shopWithdraw.getAuditStatus()){
-            //通过
-            //先检查账户余额是否充足
-            AccountBalanceQueryResult accountBalanceQueryResult = TransferUtil.accountBalanceQuery();
-            if(null == accountBalanceQueryResult){
-                return R.fail("查询账户余额出错");
-            }
-            Double useAbleSettAmount = accountBalanceQueryResult.getUseAbleSettAmount();
-            if(useAbleSettAmount < (shopWithdraw1.getMoney().doubleValue() + 1)){
-                return R.fail("账户可用余额不足,请先补充账户余额");
-            }
-            //银行卡转账
-            SinglePay singlePay = new SinglePay();
-            singlePay.setTradeMerchantNo(TransferUtil.sysTradeMerchantNo);
-            singlePay.setMerchantOrderNo(shopWithdraw1.getId().toString());
-            singlePay.setReceiverAccountNoEnc(shop.getReceiverAccountNoEnc());
-            singlePay.setReceiverNameEnc(shop.getReceiverNameEnc());
-            singlePay.setReceiverAccountType(shop.getReceiverAccountType());
-            singlePay.setReceiverBankChannelNo(shop.getReceiverBankChannelNo());
-            singlePay.setPaidAmount(shopWithdraw1.getMoney().doubleValue());
-            singlePay.setPaidDesc("账户余额提现");
-            singlePay.setPaidUse("208");
-            singlePay.setCallbackUrl("/other/shop-withdraw/withdrawalCallback");
-            SinglePayResult singlePayResult = TransferUtil.singlePay(singlePay);
-            if(null == singlePayResult){
-                return R.fail("转账失败");
-            }
-            shopWithdraw1.setStatus(1);
+            //取消商户转账,线下转账
+           /*
+           try {
+                Map<String, String> map = wechatPayService.payToBankCard(shopWithdraw1.getId().toString(),
+                        shopWithdraw1.getReceiverAccountNoEnc(),shopWithdraw1.getReceiverNameEnc(),shopWithdraw1.getReceiverBankChannelNo(),shopWithdraw1.getMoney(),shopWithdraw.getRemark());
+                if (map.get("return_code").equals("SUCCESS")) {
+                    System.out.println("转账申请成功");
+                    shopWithdraw1.setStatus(1);
+                }else {
+                    return R.fail("转账申请失败");
+                }
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }*/
+            //到账
+
+            shopWithdraw1.setStatus(2);
+            shopWithdraw1.setArrivalTime(LocalDateTime.now());
+            shopWithdrawService.updateById(shopWithdraw);
+            //更新店铺审核中的金额,和提现金额
+            shop.setWithdrawAuditMoney(shop.getWithdrawAuditMoney().subtract(shopWithdraw1.getMoney()));//审核中金额
+            shop.setWithdrawMoney(shop.getWithdrawMoney().add(shopWithdraw1.getMoney()));//提现金额
+            shopService.updateById(shop);
+
         }
         if(2 == shopWithdraw.getAuditStatus()){
             //审核不通过
@@ -301,7 +314,7 @@
             //添加门店变动明细
             ShopBalanceStatement shopBalanceStatement = new ShopBalanceStatement();
             shopBalanceStatement.setShopId(shop.getId());
-            shopBalanceStatement.setType(4);
+            shopBalanceStatement.setType(7);
             shopBalanceStatement.setHistoricalBalance(balance);
             shopBalanceStatement.setVariableAmount(money);
             shopBalanceStatement.setBalance(shop.getBalance());
@@ -320,8 +333,7 @@
         return R.ok();
     }
 
-    
-    
+
     /**
      * 提现审核通过后转账回调通知
      * @param singlePayCallbackResult
@@ -363,7 +375,7 @@
             //添加门店变动明细
             ShopBalanceStatement shopBalanceStatement = new ShopBalanceStatement();
             shopBalanceStatement.setShopId(shop.getId());
-            shopBalanceStatement.setType(4);
+            shopBalanceStatement.setType(7);
             shopBalanceStatement.setHistoricalBalance(balance);
             shopBalanceStatement.setVariableAmount(money);
             shopBalanceStatement.setBalance(shop.getBalance());

--
Gitblit v1.7.1