From cbf2486983b77a27af9968bbb362cb8d43789115 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期三, 26 三月 2025 15:30:53 +0800 Subject: [PATCH] 修改统计bug和部分功能修改 --- ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java | 128 +++++++++++++++++++++++++++++++++--------- 1 files changed, 100 insertions(+), 28 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 f0a432b..828b3c1 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 @@ -7,16 +7,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.account.api.feignClient.AppUserClient; -import com.ruoyi.account.api.model.AppUser; -import com.ruoyi.account.api.model.BalanceChangeRecord; -import com.ruoyi.account.api.model.WithdrawalRequests; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.security.service.TokenService; 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.dto.ShopBalanceDto; import com.ruoyi.other.service.ShopBalanceStatementService; import com.ruoyi.other.service.ShopService; import com.ruoyi.other.service.ShopWithdrawService; @@ -70,9 +67,13 @@ @Resource private SysUserClient sysUserClient; - - - + + + @GetMapping("/getShopById") + @ApiOperation("通过门店id获取账户信息回填") + public R<Shop> getShopById(Integer id) { + return R.ok(shopService.getById(id)); + } /** * 提现申请列表 @@ -90,7 +91,8 @@ 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; @@ -112,9 +114,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) ); @@ -125,26 +128,69 @@ @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()) + .list(); + + + if (!list.isEmpty()){ + // 待审核列表 + List<ShopWithdraw> toBeReviewList = list.stream() + .filter(s -> s.getAuditStatus() == 0) + .collect(Collectors.toList()); + // 审核通过列表 + List<ShopWithdraw> passedReviewList = list.stream() + .filter(s -> s.getAuditStatus() == 1) + .collect(Collectors.toList()); + + BigDecimal bigDecimal = toBeReviewList.stream().map(ShopWithdraw::getMoney).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); + byId.setWithdrawAuditMoney(bigDecimal); + + BigDecimal bigDecimal1 = passedReviewList.stream().map(ShopWithdraw::getMoney).reduce(BigDecimal::add).orElse(BigDecimal.ZERO); + byId.setWithdrawMoney(bigDecimal1); + }else { + byId.setWithdrawAuditMoney(BigDecimal.ZERO); + } return R.ok(byId); } @GetMapping("/shop/with") @ApiOperation(value = "提现申请", notes = "提现申请列表", tags = {"门店后台"}) public R shopwith(@RequestParam BigDecimal money){ - Long userid = tokenService.getLoginUser().getUserid(); - SysUser sysUser = sysUserClient.getSysUser(userid).getData(); - Integer objectId = sysUser.getObjectId(); - Shop shop = shopService.getById(objectId); + LoginUser loginUser = tokenService.getLoginUser(); + SysUser sysUser = sysUserClient.getSysUser(loginUser.getUserid()).getData(); + baseWithdrawalApplication(money, sysUser.getUserId(), sysUser.getObjectId()); + return R.ok(); + } + + /** + * 小程序端提现申请 + */ + @ApiOperation(value = "提现申请", notes = "提现申请", tags = {"小程序-个人中心-门店管理-门店钱包"}) + @GetMapping("/withdrawalApplication") + @ResponseBody + public R withdrawalApplication(@RequestParam BigDecimal money, @RequestParam Integer shopId) { + LoginUser loginUser = tokenService.getLoginUserApplet(); + baseWithdrawalApplication(money, loginUser.getUserid(), shopId); + return R.ok(); + } + + private void baseWithdrawalApplication(BigDecimal money, Long userId, Integer shopId) { + Shop shop = shopService.getById(shopId); + if (money.compareTo(BigDecimal.ZERO)==0){ + throw new ServiceException("提现金额必须大于零"); + } if (money.compareTo(shop.getCanWithdrawMoney())>0){ - return R.fail("提现金额不能大于可提现金额"); + throw new ServiceException("提现金额不能大于可提现金额"); } if(StringUtils.isEmpty(shop.getReceiverAccountNoEnc())){ - return R.fail("请完善账户信息后再申请提现!"); + throw new ServiceException("请完善账户信息后再申请提现!"); } ShopWithdraw shopWithdraw = new ShopWithdraw(); - shopWithdraw.setShopId(objectId); + shopWithdraw.setShopId(shopId); shopWithdraw.setMoney(money); shopWithdraw.setAuditStatus(0); shopWithdraw.setStatus(1); @@ -162,15 +208,14 @@ ShopBalanceStatement shopBalanceStatement = new ShopBalanceStatement(); shopBalanceStatement.setShopId(shop.getId()); shopBalanceStatement.setType(4); - shopBalanceStatement.setHistoricalBalance(balance); shopBalanceStatement.setVariableAmount(money); - shopBalanceStatement.setBalance(shop.getBalance()); - shopBalanceStatement.setCreateUserId(sysUser.getUserId()); + shopBalanceStatement.setCreateUserId(userId); shopBalanceStatement.setCreateTime(LocalDateTime.now()); shopBalanceStatement.setObjectId(shopWithdraw.getId()); + shopBalanceStatement.setChangeDirection(-1); shopBalanceStatementService.save(shopBalanceStatement); - return R.ok(); } + /** @@ -180,6 +225,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("不能重复审核"); @@ -203,6 +249,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"); @@ -226,12 +273,11 @@ ShopBalanceStatement shopBalanceStatement = new ShopBalanceStatement(); shopBalanceStatement.setShopId(shop.getId()); shopBalanceStatement.setType(4); - shopBalanceStatement.setHistoricalBalance(balance); shopBalanceStatement.setVariableAmount(money); - shopBalanceStatement.setBalance(shop.getBalance()); shopBalanceStatement.setCreateUserId(loginUser.getUserid()); shopBalanceStatement.setCreateTime(LocalDateTime.now()); shopBalanceStatement.setObjectId(shopWithdraw.getId()); + shopBalanceStatement.setChangeDirection(-1); shopBalanceStatementService.save(shopBalanceStatement); } shopWithdraw1.setAuditStatus(shopWithdraw.getAuditStatus()); @@ -252,9 +298,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()); @@ -263,8 +309,34 @@ 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.setVariableAmount(shopWithdraw.getMoney()); + shopBalanceStatement.setCreateUserId(shopWithdraw.getAuditUserId()); + shopBalanceStatement.setCreateTime(LocalDateTime.now()); + shopBalanceStatement.setObjectId(shopWithdraw.getId()); + shopBalanceStatement.setChangeDirection(-1); + 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