From c90a8ac772937f8f084356ea1f04c5dba1d9e5d5 Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期五, 24 一月 2025 11:15:33 +0800
Subject: [PATCH] 12.18

---
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java |   82 ++++++++++++++++++++++++++++++++++------
 1 files changed, 69 insertions(+), 13 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 820f18a..092ec05 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
@@ -31,6 +31,7 @@
 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;
@@ -69,9 +70,13 @@
 
     @Resource
     private SysUserClient sysUserClient;
-    
-    
-    
+
+
+    @GetMapping("/getShopById")
+    @ApiOperation("通过门店id获取账户信息回填")
+    public R<Shop> getShopById(Integer id) {
+        return R.ok(shopService.getById(id));
+    }
 
     /**
      * 提现申请列表
@@ -81,10 +86,16 @@
     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<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>()
-                .in(collect1.size() > 0, ShopWithdraw::getShopId, collect1));
+                .in(collect1.size() > 0, ShopWithdraw::getShopId, collect1)
+        .orderByDesc(ShopWithdraw::getCreateTime));
         List<ShopWithdraw> records = page.getRecords();
         List<Integer> collect = records.stream().map(ShopWithdraw::getShopId).collect(Collectors.toList());
         List<Shop> shops = null;
@@ -92,10 +103,11 @@
             shops = shopService.listByIds(collect);
         }
         for(ShopWithdraw item : records){
-            Optional<Shop> first = shops.stream().filter(s -> s.getId().equals(item.getId())).findFirst();
+            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);
     }
@@ -105,9 +117,10 @@
     public R<IPage<ShopWithdraw>> shoplist(@ApiParam("页码") @RequestParam Integer pageNum,
                                        @ApiParam("每一页数据大小") Integer pageSize,
                                        ShopWithdraw shopWithdraw) {
-        Integer objectId = tokenService.getLoginUser().getSysUser().getObjectId();
+        LoginUser loginUser = tokenService.getLoginUser();
+        SysUser sysUser = sysUserClient.getSysUser(loginUser.getUserid()).getData();
         Page<ShopWithdraw> page = shopWithdrawService.page(Page.of(pageNum, pageSize), new LambdaQueryWrapper<ShopWithdraw>()
-                        .eq(ShopWithdraw::getShopId,objectId)
+                        .eq(sysUser!=null,ShopWithdraw::getShopId,sysUser.getObjectId())
                         .eq(shopWithdraw.getAuditStatus()!=null,ShopWithdraw::getAuditStatus,shopWithdraw.getAuditStatus())
                         .orderByDesc(ShopWithdraw::getCreateTime)
                 );
@@ -118,8 +131,18 @@
     @GetMapping("/shop/info")
     @ApiOperation(value = "提现申请列表上方数据", notes = "提现申请列表", tags = {"门店后台"})
     public R<Shop> shopCommissionStatisticsinfo(){
-        Integer objectId = tokenService.getLoginUser().getSysUser().getObjectId();
-        Shop byId = shopService.getById(objectId);
+        LoginUser loginUser = tokenService.getLoginUser();
+        SysUser sysUser = sysUserClient.getSysUser(loginUser.getUserid()).getData();
+        Shop byId = shopService.getById(sysUser.getObjectId());
+        List<ShopWithdraw> list = shopWithdrawService.lambdaQuery().eq(ShopWithdraw::getShopId, sysUser.getObjectId())
+                .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);
+        }
+        byId.setWithdrawMoney(byId.getWithdrawMoney().subtract(byId.getWithdrawAuditMoney()));
         return R.ok(byId);
     }
     
@@ -130,6 +153,9 @@
         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("提现金额不能大于可提现金额");
         }
@@ -141,6 +167,7 @@
         shopWithdraw.setMoney(money);
         shopWithdraw.setAuditStatus(0);
         shopWithdraw.setStatus(1);
+        shopWithdraw.setCreateTime(LocalDateTime.now());
         shopWithdrawService.save(shopWithdraw);
         //扣除账户余额及添加变动明细
         BigDecimal balance = shop.getBalance();
@@ -172,6 +199,7 @@
     @ApiOperation("审核")
     public R<Void> audit(@RequestBody ShopWithdraw shopWithdraw) {
         LoginUser loginUser = tokenService.getLoginUser();
+
         ShopWithdraw shopWithdraw1 = shopWithdrawService.getById(shopWithdraw.getId());
         if(0 != shopWithdraw1.getAuditStatus()){
             return R.fail("不能重复审核");
@@ -195,6 +223,7 @@
             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");
@@ -244,9 +273,9 @@
     @PostMapping("/withdrawalCallback")
     public Object withdrawalCallback(@RequestBody SinglePayCallbackResult singlePayCallbackResult){
         Integer status = singlePayCallbackResult.getStatus();
+        String merchantOrderNo = singlePayCallbackResult.getMerchantOrderNo();
+        ShopWithdraw shopWithdraw = shopWithdrawService.getById(merchantOrderNo);
         if(203 == status || 205 == status){
-            String merchantOrderNo = singlePayCallbackResult.getMerchantOrderNo();
-            ShopWithdraw shopWithdraw = shopWithdrawService.getById(merchantOrderNo);
             if(1 == shopWithdraw.getStatus()){
                 shopWithdraw.setStatus(2);
                 shopWithdraw.setArrivalTime(LocalDateTime.now());
@@ -255,8 +284,35 @@
             JSONObject jsonObject = new JSONObject();
             jsonObject.put("statusCode", 2001);
             return jsonObject;
+        }else{
+            //回退金额和添加变动明细
+            Shop shop = shopService.getById(shopWithdraw.getShopId());
+            BigDecimal balance = shop.getBalance();
+            BigDecimal canWithdrawMoney = shop.getCanWithdrawMoney();
+            BigDecimal withdrawMoney = shop.getWithdrawMoney();
+            shop.setBalance(balance.add(shopWithdraw.getMoney()).setScale(2, RoundingMode.HALF_EVEN));
+            shop.setCanWithdrawMoney(canWithdrawMoney.add(shopWithdraw.getMoney()).setScale(2, RoundingMode.HALF_EVEN));
+            shop.setWithdrawMoney(withdrawMoney.subtract(shopWithdraw.getMoney()).setScale(2, RoundingMode.HALF_EVEN));
+            shopService.updateById(shop);
+            //添加门店变动明细
+            ShopBalanceStatement shopBalanceStatement = new ShopBalanceStatement();
+            shopBalanceStatement.setShopId(shop.getId());
+            shopBalanceStatement.setType(4);
+            shopBalanceStatement.setHistoricalBalance(balance);
+            shopBalanceStatement.setVariableAmount(shopWithdraw.getMoney());
+            shopBalanceStatement.setBalance(shop.getBalance());
+            shopBalanceStatement.setCreateUserId(shopWithdraw.getAuditUserId());
+            shopBalanceStatement.setCreateTime(LocalDateTime.now());
+            shopBalanceStatement.setObjectId(shopWithdraw.getId());
+            shopBalanceStatementService.save(shopBalanceStatement);
+            shopWithdraw.setStatus(3);
+            shopWithdraw.setRemark(singlePayCallbackResult.getErrorCodeDesc());
+            shopWithdrawService.updateById(shopWithdraw);
+
+            JSONObject jsonObject = new JSONObject();
+            jsonObject.put("statusCode", 2001);
+            return jsonObject;
         }
-        return new JSONObject();
     }
 }
 

--
Gitblit v1.7.1