From 1205db4e3dc20905a7e52aa05c2670f98cb51a38 Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期二, 14 一月 2025 15:19:38 +0800
Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/qijisheng

---
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java |   59 ++++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 50 insertions(+), 9 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 f761f1e..be86361 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.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.account.api.feignClient.AppUserClient;
@@ -25,16 +26,21 @@
 import com.ruoyi.other.util.payment.model.SinglePayCallbackResult;
 import com.ruoyi.other.util.payment.model.SinglePayResult;
 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.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -61,6 +67,9 @@
     
     @Resource
     private AppUserClient appUserClient;
+
+    @Resource
+    private SysUserClient sysUserClient;
     
     
     
@@ -73,10 +82,28 @@
     public R<IPage<ShopWithdraw>> list(@ApiParam("页码") @RequestParam Integer pageNum,
                          @ApiParam("每一页数据大小") Integer pageSize,
                          ShopWithdraw shopWithdraw) {
-
+        List<Shop> list = shopService.list(new LambdaUpdateWrapper<Shop>()
+                .like(StringUtils.isNotEmpty(shopWithdraw.getShopName()), Shop::getName, shopWithdraw.getShopName())
+                .eq(Shop::getDelFlag, 0));
+        List<Integer> collect1 = list.stream().map(Shop::getId).collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(collect1)){
+            return R.ok(Page.of(pageNum, pageSize));
+        }
         Page<ShopWithdraw> page = shopWithdrawService.page(Page.of(pageNum, pageSize), new LambdaQueryWrapper<ShopWithdraw>()
-                .like(StringUtils.isNotEmpty(shopWithdraw.getShopName()), ShopWithdraw::getShopName, shopWithdraw.getShopName()));
-        page.getRecords().forEach(item-> item.setShopName(shopService.getById(item.getShopId()).getName()));
+                .in(collect1.size() > 0, ShopWithdraw::getShopId, collect1));
+        List<ShopWithdraw> records = page.getRecords();
+        List<Integer> collect = records.stream().map(ShopWithdraw::getShopId).collect(Collectors.toList());
+        List<Shop> shops = null;
+        if(collect.size() > 0){
+            shops = shopService.listByIds(collect);
+        }
+        for(ShopWithdraw item : records){
+            Optional<Shop> first = shops.stream().filter(s -> s.getId().equals(item.getShopId())).findFirst();
+            if(first.isPresent()){
+                item.setShopName(first.get().getName());
+            }
+            item.setIdStr(item.getId().toString());
+        }
         return R.ok(page);
     }
 
@@ -91,6 +118,7 @@
                         .eq(shopWithdraw.getAuditStatus()!=null,ShopWithdraw::getAuditStatus,shopWithdraw.getAuditStatus())
                         .orderByDesc(ShopWithdraw::getCreateTime)
                 );
+        page.getRecords().forEach(s->s.setIdStr(s.getId().toString()));
         return R.ok(page);
     }
 
@@ -99,15 +127,27 @@
     public R<Shop> shopCommissionStatisticsinfo(){
         Integer objectId = tokenService.getLoginUser().getSysUser().getObjectId();
         Shop byId = shopService.getById(objectId);
+        List<ShopWithdraw> list = shopWithdrawService.lambdaQuery().eq(ShopWithdraw::getShopId, objectId)
+                .eq(ShopWithdraw::getAuditStatus, 0).list();
+        if (!list.isEmpty()){
+            BigDecimal bigDecimal = list.stream().map(ShopWithdraw::getMoney).reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
+            byId.setWithdrawAuditMoney(bigDecimal);
+        }else {
+            byId.setWithdrawAuditMoney(BigDecimal.ZERO);
+        }
         return R.ok(byId);
     }
     
     @GetMapping("/shop/with")
     @ApiOperation(value = "提现申请", notes = "提现申请列表", tags = {"门店后台"})
     public R shopwith(@RequestParam BigDecimal money){
-        SysUser sysUser = tokenService.getLoginUser().getSysUser();
+        Long userid = tokenService.getLoginUser().getUserid();
+        SysUser sysUser = sysUserClient.getSysUser(userid).getData();
         Integer objectId = sysUser.getObjectId();
         Shop shop = shopService.getById(objectId);
+        if (money.compareTo(BigDecimal.ZERO)==0){
+            return R.fail("提现金额必须大于零");
+        }
         if (money.compareTo(shop.getCanWithdrawMoney())>0){
             return R.fail("提现金额不能大于可提现金额");
         }
@@ -119,6 +159,7 @@
         shopWithdraw.setMoney(money);
         shopWithdraw.setAuditStatus(0);
         shopWithdraw.setStatus(1);
+        shopWithdraw.setCreateTime(LocalDateTime.now());
         shopWithdrawService.save(shopWithdraw);
         //扣除账户余额及添加变动明细
         BigDecimal balance = shop.getBalance();
@@ -131,7 +172,7 @@
         //添加门店变动明细
         ShopBalanceStatement shopBalanceStatement = new ShopBalanceStatement();
         shopBalanceStatement.setShopId(shop.getId());
-        shopBalanceStatement.setType(5);
+        shopBalanceStatement.setType(4);
         shopBalanceStatement.setHistoricalBalance(balance);
         shopBalanceStatement.setVariableAmount(money);
         shopBalanceStatement.setBalance(shop.getBalance());
@@ -163,12 +204,12 @@
                 return R.fail("查询账户余额出错");
             }
             Double useAbleSettAmount = accountBalanceQueryResult.getUseAbleSettAmount();
-            if(useAbleSettAmount < shopWithdraw1.getMoney().doubleValue()){
+            if(useAbleSettAmount < (shopWithdraw1.getMoney().doubleValue() + 1)){
                 return R.fail("账户可用余额不足,请先补充账户余额");
             }
             //银行卡转账
             SinglePay singlePay = new SinglePay();
-            singlePay.setTradeMerchantNo("");
+            singlePay.setTradeMerchantNo(TransferUtil.sysTradeMerchantNo);
             singlePay.setMerchantOrderNo(shopWithdraw1.getId().toString());
             singlePay.setReceiverAccountNoEnc(shop.getReceiverAccountNoEnc());
             singlePay.setReceiverNameEnc(shop.getReceiverNameEnc());
@@ -195,7 +236,7 @@
             //添加门店变动明细
             ShopBalanceStatement shopBalanceStatement = new ShopBalanceStatement();
             shopBalanceStatement.setShopId(shop.getId());
-            shopBalanceStatement.setType(5);
+            shopBalanceStatement.setType(4);
             shopBalanceStatement.setHistoricalBalance(balance);
             shopBalanceStatement.setVariableAmount(money);
             shopBalanceStatement.setBalance(shop.getBalance());
@@ -222,7 +263,7 @@
     @PostMapping("/withdrawalCallback")
     public Object withdrawalCallback(@RequestBody SinglePayCallbackResult singlePayCallbackResult){
         Integer status = singlePayCallbackResult.getStatus();
-        if(203 == status){
+        if(203 == status || 205 == status){
             String merchantOrderNo = singlePayCallbackResult.getMerchantOrderNo();
             ShopWithdraw shopWithdraw = shopWithdrawService.getById(merchantOrderNo);
             if(1 == shopWithdraw.getStatus()){

--
Gitblit v1.7.1