huliguo
2025-04-23 f2070facdb5715e7349df69cfe257289c680d292
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/controller/ShopWithdrawController.java
@@ -3,17 +3,21 @@
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;
import com.ruoyi.account.api.feignClient.AppUserClient;
import com.ruoyi.account.api.model.AppUser;
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.core.web.page.PageInfo;
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.mapper.ShopWithdrawMapper;
import com.ruoyi.other.service.ShopBalanceStatementService;
import com.ruoyi.other.service.ShopService;
import com.ruoyi.other.service.ShopWithdrawService;
@@ -28,6 +32,7 @@
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.*;
@@ -67,6 +72,8 @@
    @Resource
    private SysUserClient sysUserClient;
    @Autowired
    private ShopWithdrawMapper shopWithdrawMapper;
    @GetMapping("/getShopById")
@@ -79,7 +86,7 @@
     * 提现申请列表
     */
    @GetMapping("/list")
    @ApiOperation("提现申请列表")
    @ApiOperation(value = "提现申请列表" )
    public R<IPage<ShopWithdraw>> list(@ApiParam("页码") @RequestParam Integer pageNum,
                         @ApiParam("每一页数据大小") Integer pageSize,
                         ShopWithdraw shopWithdraw) {
@@ -110,20 +117,36 @@
    }
    @GetMapping("/shop/list")
    @ApiOperation(value = "提现申请列表", notes = "提现申请列表", tags = {"门店后台"})
    @ApiOperation(value = "提现申请列表", notes = "提现申请列表", tags = {"门店后台","后台"})
    public R<IPage<ShopWithdraw>> shoplist(@ApiParam("页码") @RequestParam Integer pageNum,
                                           @ApiParam("每一页数据大小") Integer pageSize,
                                           @ApiParam("门店id")Integer shopId,
                                           @ApiParam("手机号") String phone,
                                           @ApiParam("审核状态(0=待审核,1=审核通过,2=审核失败)")Integer auditStatus) {
        Page<ShopWithdraw> page = shopWithdrawService.page(Page.of(pageNum, pageSize), new LambdaQueryWrapper<ShopWithdraw>()
                        .eq(ShopWithdraw::getShopId,shopId)
                        .eq(auditStatus!=null,ShopWithdraw::getAuditStatus,auditStatus)
                        .orderByDesc(ShopWithdraw::getCreateTime)
                );
        page.getRecords().forEach(s->s.setIdStr(s.getId().toString()));
        //模糊查询手机号
        List<Integer> shopIds=null;
        if (StringUtils.isNotEmpty(phone)) {
            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);
        }
        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);
    }
/*
    @GetMapping("/shop/info")
    @ApiOperation(value = "提现申请列表上方数据", notes = "提现申请列表", tags = {"门店后台"})
    public R<Shop> shopCommissionStatisticsinfo(){
@@ -155,9 +178,10 @@
        }
        return R.ok(byId);
    }
*/
    @GetMapping("/shop/with")
    @ApiOperation(value = "提现申请", notes = "提现申请列表", tags = {"门店后台"})
    @ApiOperation(value = "提现申请", notes = "提现申请", tags = {"门店后台"})
    public R shopwith(@RequestParam BigDecimal money){
        LoginUser loginUser = tokenService.getLoginUser();
        SysUser sysUser = sysUserClient.getSysUser(loginUser.getUserid()).getData();
@@ -191,18 +215,27 @@
        }
        ShopWithdraw shopWithdraw = new ShopWithdraw();
        shopWithdraw.setShopId(shopId);
        shopWithdraw.setShopName(shop.getName());
        shopWithdraw.setCreateUserId(userId);
        shopWithdraw.setMoney(money);
        shopWithdraw.setAuditStatus(0);//待审核
        shopWithdraw.setStatus(1);//申请中
        shopWithdraw.setCreateTime(LocalDateTime.now());
        shopWithdraw.setTradeMerchantNo(shop.getTradeMerchantNo());
        shopWithdraw.setReceiverAccountNoEnc(shop.getReceiverAccountNoEnc());
        shopWithdraw.setReceiverNameEnc(shop.getReceiverNameEnc());
        shopWithdraw.setReceiverBankChannelNo(shop.getReceiverBankChannelNo());
        shopWithdraw.setReceiverAccountType(shop.getReceiverAccountType());
        shopWithdrawService.save(shopWithdraw);
        //扣除账户余额及添加变动明细
        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();
@@ -223,7 +256,7 @@
     * 审核
     */
    @PostMapping("/audit")
    @ApiOperation("审核")
    @ApiOperation("提现审核")
    public R<Void> audit(@RequestBody ShopWithdraw shopWithdraw) {
        LoginUser loginUser = tokenService.getLoginUser();
@@ -234,6 +267,7 @@
        Shop shop = shopService.getById(shopWithdraw1.getShopId());
        BigDecimal money = shopWithdraw1.getMoney();
        if(1 == shopWithdraw.getAuditStatus()){
            //通过
            //先检查账户余额是否充足
            AccountBalanceQueryResult accountBalanceQueryResult = TransferUtil.accountBalanceQuery();
            if(null == accountBalanceQueryResult){
@@ -262,18 +296,20 @@
            shopWithdraw1.setStatus(1);
        }
        if(2 == shopWithdraw.getAuditStatus()){
            //审核不通过
            //回退金额和添加变动明细
            BigDecimal balance = shop.getBalance();
            BigDecimal canWithdrawMoney = shop.getCanWithdrawMoney();
            BigDecimal withdrawMoney = shop.getWithdrawMoney();
            BigDecimal withdrawAuditMoney = shop.getWithdrawAuditMoney();
            shop.setBalance(balance.add(money).setScale(2, RoundingMode.HALF_EVEN));
            shop.setCanWithdrawMoney(canWithdrawMoney.add(money).setScale(2, RoundingMode.HALF_EVEN));
            shop.setWithdrawMoney(withdrawMoney.subtract(money).setScale(2, RoundingMode.HALF_EVEN));
            //审核中的金额减少
            shop.setWithdrawAuditMoney(withdrawAuditMoney.subtract(money).setScale(2, RoundingMode.HALF_EVEN));
            shopService.updateById(shop);
            //添加门店变动明细
            ShopBalanceStatement shopBalanceStatement = new ShopBalanceStatement();
            shopBalanceStatement.setShopId(shop.getId());
            shopBalanceStatement.setType(4);
            shopBalanceStatement.setType(7);
            shopBalanceStatement.setHistoricalBalance(balance);
            shopBalanceStatement.setVariableAmount(money);
            shopBalanceStatement.setBalance(shop.getBalance());
@@ -282,6 +318,8 @@
            shopBalanceStatement.setObjectId(shopWithdraw.getId());
            shopBalanceStatementService.save(shopBalanceStatement);
        }
        shopWithdraw1.setAuditStatus(shopWithdraw.getAuditStatus());
        shopWithdraw1.setAuditUserId(loginUser.getUserid());
        shopWithdraw1.setAuditTime(LocalDateTime.now());
@@ -289,7 +327,7 @@
        shopWithdrawService.updateById(shopWithdraw1);
        return R.ok();
    }
    
    
    /**
@@ -303,35 +341,46 @@
        String merchantOrderNo = singlePayCallbackResult.getMerchantOrderNo();
        ShopWithdraw shopWithdraw = shopWithdrawService.getById(merchantOrderNo);
        if(203 == status || 205 == status){
            //到账
            if(1 == shopWithdraw.getStatus()){
                shopWithdraw.setStatus(2);
                shopWithdraw.setArrivalTime(LocalDateTime.now());
                shopWithdrawService.updateById(shopWithdraw);
            }
            //更新店铺审核中的金额,和提现金额
            Shop shop = shopService.getById(shopWithdraw.getShopId());
            shop.setWithdrawAuditMoney(shop.getWithdrawAuditMoney().subtract(shopWithdraw.getMoney()));//审核中金额
            shop.setWithdrawMoney(shop.getWithdrawMoney().add(shopWithdraw.getMoney()));//提现金额
            shopService.updateById(shop);
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("statusCode", 2001);
            return jsonObject;
        }else{
            //回退金额和添加变动明细
            BigDecimal money = shopWithdraw.getMoney().setScale(2, RoundingMode.HALF_EVEN);
            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));
            BigDecimal withdrawAuditMoney = shop.getWithdrawAuditMoney();
            shop.setBalance(balance.add(money).setScale(2, RoundingMode.HALF_EVEN));
            shop.setCanWithdrawMoney(canWithdrawMoney.add(money).setScale(2, RoundingMode.HALF_EVEN));
            //审核中的金额减少
            shop.setWithdrawAuditMoney(withdrawAuditMoney.subtract(money).setScale(2, RoundingMode.HALF_EVEN));
            shopService.updateById(shop);
            //添加门店变动明细
            ShopBalanceStatement shopBalanceStatement = new ShopBalanceStatement();
            shopBalanceStatement.setShopId(shop.getId());
            shopBalanceStatement.setType(4);
            shopBalanceStatement.setType(7);
            shopBalanceStatement.setHistoricalBalance(balance);
            shopBalanceStatement.setVariableAmount(shopWithdraw.getMoney());
            shopBalanceStatement.setVariableAmount(money);
            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);