package com.ruoyi.user.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.order.api.entity.Withdraw; import com.ruoyi.order.api.entity.WithdrawDetailVO; import com.ruoyi.order.api.feignClient.WithdrawClient; import com.ruoyi.system.api.model.LoginUserInfo; import com.ruoyi.user.service.WithdrawService; import com.ruoyi.user.vo.WithdrawListVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.concurrent.TimeUnit; /** *

* 用户提现申请记录表 前端控制器 *

* * @author hjl * @since 2024-06-07 */ @RestController @RequestMapping("/withdraw") @Api(tags = {"用户端-个人中心-提现"}) public class WithdrawController { @Resource private WithdrawService withdrawService; @Resource private TokenService tokenService; @Resource private WithdrawClient withdrawClient; @Resource private RedisService redisService; @GetMapping("/withdrawList") @ApiOperation(value = "提现列表", tags = {"用户端-个人中心-提现"}) public R withdrawList(@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { LoginUserInfo loginUser = tokenService.getLoginUserByUser(); if (null == loginUser) { return R.loginExpire("登录失效!"); } return R.ok(withdrawService.withdrawList(loginUser.getUserid(), pageNum, pageSize)); } @GetMapping("/withdrawDetail") @ApiOperation(value = "提现详情", tags = {"用户端-个人中心-提现"}) public R withdrawDetail(@RequestParam String orderId) { LoginUserInfo loginUser = tokenService.getLoginUserByUser(); if (null == loginUser) { return R.loginExpire("登录失效!"); } return withdrawClient.withdrawDetailByUser(orderId); } @GetMapping("/confirmWithdraw") @ApiOperation(value = "确认提现", tags = {"用户端-个人中心-提现"}) @ApiImplicitParams({ @ApiImplicitParam(value = "订单id", name = "orderId", dataType = "Integer", required = true) }) public synchronized R confirmWithdraw(@RequestParam String orderId) { LoginUserInfo loginUser = tokenService.getLoginUserByUser(); if (null == loginUser) { return R.loginExpire("登录失效!"); } if (redisService.hasKey(orderId)) { return R.fail("该笔订单已申请提现"); // return R.repeatedSubmission("请勿重复提交!"); } redisService.setCacheObject(orderId, "1", 10L, TimeUnit.SECONDS); Boolean b = withdrawService.confirmWithdraw(orderId, loginUser.getUserid()); if (b){ return R.ok(); }else { return R.fail("该笔订单已申请提现"); } } @GetMapping("/withdrawRecord") @ApiOperation(value = "提现记录", tags = {"用户端-个人中心-提现"}) public R> withdrawRecord(@RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { LoginUserInfo loginUser = tokenService.getLoginUserByUser(); if (null == loginUser) { return R.loginExpire("登录失效!"); } Page data = withdrawClient.withdrawRecordList(loginUser.getUserid(), pageNum, pageSize).getData(); BigDecimal b = BigDecimal.ZERO; if (null != data) { for (Withdraw record : data.getRecords()) { b = b.add(record.getApplyForMoney()); } } return R.ok(data); } }