From c72910d2b90f74d23e770717d80921b4fd064d48 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期二, 16 九月 2025 16:24:08 +0800 Subject: [PATCH] 新增用户提现 --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java | 99 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 96 insertions(+), 3 deletions(-) diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java index 0f5f3f5..b4ceb83 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java @@ -14,11 +14,13 @@ import com.ruoyi.account.mapper.AppUserMapper; import com.ruoyi.account.service.*; import com.ruoyi.account.util.ObsUploadUtil; +import com.ruoyi.account.util.UUIDUtil; import com.ruoyi.account.util.weChat.EnvVersion; import com.ruoyi.account.util.weChat.WeChatUtil; import com.ruoyi.account.vo.*; import com.ruoyi.common.core.constant.CacheConstants; 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.utils.poi.ExcelUtil; import com.ruoyi.common.core.web.controller.BaseController; @@ -29,6 +31,8 @@ import com.ruoyi.order.feignClient.RemoteOrderGoodsClient; import com.ruoyi.order.model.Order; 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.api.feignClient.ShopClient; import com.ruoyi.system.api.domain.SysConfig; import com.ruoyi.system.api.domain.SysUser; @@ -53,8 +57,10 @@ import java.io.File; import java.io.IOException; import java.math.BigDecimal; +import java.math.RoundingMode; import java.net.URLDecoder; import java.net.URLEncoder; +import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.temporal.ChronoUnit; @@ -81,6 +87,12 @@ @Resource private AppUserService appUserService; @Resource + private IUserWithdrawService userWithdrawService; + @Resource + private UserPointService userPointService; + @Resource + private AppUserBankService appUserBankService; + @Resource private AppUserMapper appUserMapper; @Resource private ShopClient shopClient; @@ -106,6 +118,82 @@ @Value("${file.upload.location}") private String filePath; + @PostMapping("/verifyBankInfo") + @ApiOperation(value = "用户提现前校验银行卡信息") + public R<Boolean> mobileLogin() { + LoginUser loginUserApplet = tokenService.getLoginUserApplet(); + AppUser appUser = appUserService.getById(loginUserApplet.getUserid()); + AppUserBank bank = appUserBankService.lambdaQuery().eq(AppUserBank::getAppUserId, appUser.getId()).last("limit 1") + .one(); + if (bank == null){ + return R.ok(false); + }else{ + return R.ok(true); + } + } + @ApiOperation(value = "提现申请") + @GetMapping("/withdrawalApplication") + @ResponseBody + public R withdrawalApplication(@ApiParam("提现金额") @RequestParam BigDecimal money) { + LoginUser loginUser = tokenService.getLoginUserApplet(); + SysConfig data = sysConfigClient.getInfo(8L).getData(); + AppUser appUser = appUserService.getById(loginUser.getUserid()); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + String code = sdf.format(new Date()) + UUIDUtil.getNumberRandom(5); + money=money.setScale(2, BigDecimal.ROUND_HALF_DOWN); + if (money.compareTo(BigDecimal.ZERO)==0){ + throw new ServiceException("提现金额必须大于零"); + } + Integer rate = Integer.valueOf(data.getConfigValue()); + BigDecimal availablePoint = new BigDecimal(appUser.getAvailablePoint()); + BigDecimal unMoney = availablePoint.divide(BigDecimal.valueOf(rate), 2, RoundingMode.HALF_DOWN); + if (unMoney.compareTo( money)<0){ + throw new ServiceException("提现金额不能大于可提现金额,当前可提现金额为:"+unMoney); + } + AppUserBank bank = appUserBankService.lambdaQuery().eq(AppUserBank::getAppUserId, appUser.getId()).last("limit 1") + .one(); + if(bank==null){ + throw new ServiceException("请完善账户信息后再申请提现!"); + } + if(!org.springframework.util.StringUtils.hasLength(bank.getBankNumber())){ + throw new ServiceException("请完善银行卡后再申请提现!"); + } + // 增加用户提现积分变动记录 + UserPoint one = userPointService.lambdaQuery().eq(UserPoint::getAppUserId, appUser.getId()) + .orderByDesc(UserPoint::getCreateTime).last("limit 1").one(); + UserWithdraw userWithdraw = new UserWithdraw(); + userWithdraw.setAppUserId(appUser.getId()); + userWithdraw.setMoney(money); + BigDecimal multiply = money.multiply(BigDecimal.valueOf(rate)); + appUser.setAvailablePoint(appUser.getAvailablePoint()-multiply.setScale(0, RoundingMode.HALF_UP).intValue()); + if (multiply.compareTo(new BigDecimal(appUser.getAvailablePoint()))>0){ + throw new ServiceException("积分不足!"); + } + userWithdraw.setIntegral(Integer.valueOf(multiply.setScale(0, RoundingMode.HALF_UP).toString())); + userWithdraw.setAuditStatus(0); + userWithdraw.setStatus(1); + userWithdraw.setCode(code); + userWithdraw.setCreateTime(LocalDateTime.now()); + if (one.getBalance() - Integer.valueOf(multiply.setScale(0, RoundingMode.HALF_UP).toString())<0){ + throw new ServiceException("积分不足!"); + } + userWithdraw.setReceiverAccountNoEnc(bank.getBankNumber()); + userWithdraw.setReceiverNameEnc(bank.getUserName()); + userWithdraw.setReceiverBankChannelNo(bank.getReceiverBankChannelNo()); + userWithdraw.setReceiverAccountType(201); + userWithdrawService.save(userWithdraw); + UserPoint userPoint = new UserPoint(); + userPoint.setType(18); + userPoint.setVariablePoint(Integer.valueOf(multiply.setScale(0, RoundingMode.HALF_UP).toString())); + userPoint.setHistoricalPoint(one.getBalance()); + userPoint.setBalance(one.getBalance() - Integer.valueOf(multiply.setScale(0, RoundingMode.HALF_UP).toString())); + userPoint.setCreateTime(LocalDateTime.now()); + userPoint.setAppUserId(appUser.getId()); + userPoint.setObjectId(userWithdraw.getId()); + userPointService.save(userPoint); + appUserService.updateById(appUser); + return R.ok(); + } @ResponseBody @PostMapping("/mobileLogin") @@ -142,6 +230,11 @@ public AppUser getAppUserById(@RequestParam("id") Long id) { System.out.println("根据id获取用户:"+id); return appUserService.getById(id); + } + // 获取所有用户 + @PostMapping("/getAppUserAll") + public List<AppUser> getAppUserAll() { + return appUserService.list(); } @PostMapping("/getBaseUserById") @@ -566,7 +659,7 @@ if (result == null || result.get("total_points") == null) { userStatistics.setTotalScore(0L); }else { - userStatistics.setTotalScore(((BigDecimal) result.get("total_points")).longValue()); + userStatistics.setTotalScore(Long.valueOf(result.get("total_points").toString())); } //条件构造 消费积分现金支付金额 queryWrapper.clear(); @@ -642,7 +735,7 @@ return R.ok(s); }*/ - private static final String FILE_DIRECTORY = "/var/files/ldf_files"; // Linux路径 + private static final String FILE_DIRECTORY = "/dev/xvdb/project/upload_files"; // Linux路径 // private static final String FILE_DIRECTORY = "E://ldf_files"; // Linux路径 @PostMapping("/upload") @@ -670,7 +763,7 @@ File targetFile = new File(filePath); file.transferTo(targetFile); // 5. 返回可访问的URL(修正路径分隔符为Web格式) - return R.ok("http://zjrqxny.com/account/app-user/download" + datePath + "/" + UUID+file.getOriginalFilename()); + return R.ok("https://zjrqxny.com/images" + datePath + "/" + UUID+file.getOriginalFilename()); } catch (IOException e) { e.printStackTrace(); return R.fail("上传文件失败"); -- Gitblit v1.7.1