package com.xinquan.user.controller.client; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import cn.hutool.core.util.RandomUtil; import com.alibaba.fastjson2.JSONObject; import com.alibaba.nacos.common.utils.UuidUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.xinquan.common.core.constant.CacheConstants; import com.xinquan.common.core.constant.SecurityConstants; import com.xinquan.common.core.domain.R; import com.xinquan.common.core.exception.ServiceException; import com.xinquan.common.core.utils.JuHeFuUtil; import com.xinquan.common.core.utils.WebUtils; import com.xinquan.common.core.utils.page.CollUtils; import com.xinquan.common.core.utils.page.PageDTO; import com.xinquan.common.core.web.domain.BaseModel; import com.xinquan.common.log.enums.BusinessType; import com.xinquan.common.redis.service.RedisService; import com.xinquan.common.security.service.TokenService; import com.xinquan.course.api.domain.Course; import com.xinquan.meditation.api.domain.Meditation; import com.xinquan.order.api.domain.Order; import com.xinquan.system.api.domain.*; import com.xinquan.system.api.model.AppLoginUser; import com.xinquan.user.api.domain.dto.OrderListDTO; import com.xinquan.system.api.model.LoginUser; import com.xinquan.user.domain.export.WithdrawExport; import com.xinquan.user.service.AppUserBankService; import com.xinquan.user.service.AppUserService; import com.xinquan.user.service.AppUserWalletRecordService; import com.xinquan.user.service.AppUserWithdrawService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.BufferedReader; import java.io.IOException; import java.io.PrintWriter; import java.math.BigDecimal; import java.math.RoundingMode; import java.net.URLEncoder; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; /** *

* 用户提现表 前端控制器 *

* * @author mitao * @since 2024-08-21 */ @RestController @RequestMapping("/client/app-user-withdraw") public class ClientAppUserWithdrawController { @Resource private AppUserService appUserService; @Resource private AppUserWithdrawService withdrawService; @Resource private AppUserBankService appUserBankService; @Autowired private TokenService tokenService; @Resource private AppUserWalletRecordService appUserWalletRecordService; @Autowired private RedisService redisService; @PostMapping("/withdrawList") @ApiOperation(value = "提现列表-分页", tags = {"管理后台-提现管理"}) public R> withdrawList(@RequestBody OrderListDTO courseDTO) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if (StringUtils.hasLength(courseDTO.getBuyContent())){ wrapper.like(AppUserWithdraw::getCode,courseDTO.getBuyContent()); } if (StringUtils.hasLength(courseDTO.getUserNameOrPhone())){ List collect = appUserService.lambdaQuery().like(AppUser::getCellPhone, courseDTO.getUserNameOrPhone()) .list().stream().map(AppUser::getId) .collect(Collectors.toList()); List collect1 = appUserService.lambdaQuery().like(AppUser::getNickname, courseDTO.getUserNameOrPhone()) .list().stream().map(AppUser::getId) .collect(Collectors.toList()); collect.addAll(collect1); if (collect.isEmpty())collect.add(-1L); wrapper.in(AppUserWithdraw::getAppUserId,collect); } if (StringUtils.hasLength(courseDTO.getPaymentStatus()) ){ List integers = new ArrayList<>(); if (courseDTO.getPaymentStatus().contains("1")){ integers.add(0); } if (courseDTO.getPaymentStatus().contains("2")){ integers.add(1); } if (courseDTO.getPaymentStatus().contains("3")){ integers.add(2); } if (!integers.isEmpty()){ wrapper.in(AppUserWithdraw::getWithdrawStatus,integers); } } if (StringUtils.hasLength(courseDTO.getTime())){ String startTime =null; String endTime =null; String[] split = courseDTO.getTime().split(" - "); startTime = split[0]+" 00:00:00"; endTime = split[1]+" 23:59:59"; wrapper.between(AppUserWithdraw::getCreateTime,startTime,endTime); } wrapper.orderByDesc(BaseModel::getCreateTime); Page list = withdrawService.page(new Page<>(courseDTO.getPageCurr(), courseDTO.getPageSize()), wrapper); if (CollUtils.isEmpty(list.getRecords())) { return R.ok(PageDTO.empty(list)); } for (AppUserWithdraw record : list.getRecords()) { record.setUid(record.getId()+""); AppUser byId = appUserService.getById(record.getAppUserId()); if(byId!=null){ record.setUserName(byId.getNickname()); record.setCellPhone(byId.getCellPhone()); record.setAvatar(byId.getAvatar()); } } return R.ok(PageDTO.of(list, AppUserWithdraw.class)); } @ApiOperation(value = "提现管理导出", tags = {"管理后台-提现管理"}) @PutMapping("/export") public void export(@RequestBody OrderListDTO courseDTO) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if (StringUtils.hasLength(courseDTO.getIds())){ wrapper.in(AppUserWithdraw::getId, Arrays.asList(courseDTO.getIds().split(","))); } if (StringUtils.hasLength(courseDTO.getBuyContent())){ wrapper.like(AppUserWithdraw::getCode,courseDTO.getBuyContent()); } if (StringUtils.hasLength(courseDTO.getUserNameOrPhone())){ List collect = appUserService.lambdaQuery().like(AppUser::getCellPhone, courseDTO.getUserNameOrPhone()) .list().stream().map(AppUser::getId) .collect(Collectors.toList()); if (collect.isEmpty())collect.add(-1L); wrapper.in(AppUserWithdraw::getAppUserId,collect); } if (StringUtils.hasLength(courseDTO.getPaymentStatus()) ){ List integers = new ArrayList<>(); if (courseDTO.getPaymentStatus().contains("1")){ integers.add(0); } if (courseDTO.getPaymentStatus().contains("2")){ integers.add(1); } if (courseDTO.getPaymentStatus().contains("3")){ integers.add(2); } if (!integers.isEmpty()){ wrapper.in(AppUserWithdraw::getWithdrawStatus,integers); } } if (StringUtils.hasLength(courseDTO.getTime())){ String startTime =null; String endTime =null; String[] split = courseDTO.getTime().split(" - "); startTime = split[0]+" 00:00:00"; endTime = split[1]+" 23:59:59"; wrapper.between(AppUserWithdraw::getWithdrawTime,startTime,endTime); } List list = withdrawService.list(wrapper); List withdrawExports = new ArrayList<>(); for (AppUserWithdraw record : list) { WithdrawExport withdrawExport = new WithdrawExport(); record.setUid(record.getId()+""); AppUser byId = appUserService.getById(record.getAppUserId()); if(byId!=null){ withdrawExport.setUserName(byId.getNickname()); withdrawExport.setCellphone(byId.getCellPhone()); } withdrawExport.setCode(record.getCode()); withdrawExport.setAmount("¥"+record.getAmount()+""); withdrawExport.setWithdrawType("1"); withdrawExport.setWithdrawStatus(record.getWithdrawStatus()+""); DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); String format = df.format(record.getCreateTime()); withdrawExport.setCreateTime(format); withdrawExports.add(withdrawExport); } Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), WithdrawExport.class, withdrawExports); HttpServletResponse response = WebUtils.response(); response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); ServletOutputStream outputStream = null; try { String fileName = URLEncoder.encode("提现管理导出.xls", "utf-8"); response.setHeader("Content-Disposition", "attachment;filename=" + fileName); response.setContentType("application/vnd.ms-excel;charset=UTF-8"); response.setHeader("Pragma", "no-cache"); response.setHeader("Cache-Control", "no-cache"); outputStream = response.getOutputStream(); workbook.write(outputStream); } catch (IOException e) { e.printStackTrace(); } finally { try { outputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } @PostMapping("/withdrawInfo") @ApiOperation(value = "提现列表-查看详情", tags = {"管理后台-提现管理"}) public R withdrawList(String uid){ AppUserWithdraw byId = withdrawService.getById(uid); return R.ok(byId); } /** * 远程调用获取提现记录 */ @PostMapping("/getWithdrawList") public R> getWithdraw(@RequestBody OrderListDTO courseDTO) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if (StringUtils.hasLength(courseDTO.getBuyContent())){ if (!courseDTO.getBuyContent().contains("提现")){ wrapper.like(AppUserWithdraw::getCode,courseDTO.getBuyContent()); } } if (StringUtils.hasLength(courseDTO.getUserNameOrPhone())){ List collect = appUserService.lambdaQuery().like(AppUser::getCellPhone, courseDTO.getUserNameOrPhone()) .list().stream().map(AppUser::getId) .collect(Collectors.toList()); if (collect.isEmpty())collect.add(-1L); wrapper.in(AppUserWithdraw::getAppUserId,collect); } if (StringUtils.hasLength(courseDTO.getOrderFrom()) && (!courseDTO.getOrderFrom().contains("5"))){ wrapper.eq(AppUserWithdraw::getId,0); } if (StringUtils.hasLength(courseDTO.getPayType()) && (!courseDTO.getPayType().contains("4"))){ wrapper.eq(AppUserWithdraw::getId,0); } if (StringUtils.hasLength(courseDTO.getPaymentStatus()) ){ List integers = new ArrayList<>(); if (courseDTO.getPaymentStatus().contains("1")){ integers.add(0); } if (courseDTO.getPaymentStatus().contains("2")){ integers.add(1); } if (courseDTO.getPaymentStatus().contains("3")||courseDTO.getPaymentStatus().contains("4")){ integers.add(2); } if (!integers.isEmpty()){ wrapper.in(AppUserWithdraw::getWithdrawStatus,integers); } } if (StringUtils.hasLength(courseDTO.getTime())){ String startTime =null; String endTime =null; String[] split = courseDTO.getTime().split(" - "); startTime = split[0]+" 00:00:00"; endTime = split[1]+" 23:59:59"; wrapper.between(AppUserWithdraw::getWithdrawTime,startTime,endTime); } List list = withdrawService.list(wrapper); return R.ok(list); } @PostMapping("/withdraw") @ApiOperation(value = "提现", tags = {"钱包"}) @ApiImplicitParams({ @ApiImplicitParam(name = "bankId", value = "银行卡id", dataType = "Long", required = true), @ApiImplicitParam(name = "money", value = "提现金额", dataType = "String", required = true) }) public synchronized R withdraw(Long bankId,String money) throws Exception { LoginUser loginUser = tokenService.getLoginUser(); if (loginUser==null){ return R.tokenError("登录失效"); } Long userId = loginUser.getUserid(); AppUser byId = appUserService.getById(userId); if (byId.getBalance().compareTo(new BigDecimal(money))<0){ return R.fail("提现金额不能超过钱包余额"); } AppUserBank byId1 = appUserBankService.getById(bankId); if (!Objects.equals(byId1.getAppUserId(), userId)){ return R.fail("银行卡不属于当前登录用户"); } byId.setBalance(byId.getBalance().subtract(new BigDecimal(money))); BigDecimal bigDecimal = new BigDecimal(money); AppUserWithdraw appUserWithdraw = new AppUserWithdraw(); appUserWithdraw.setAppUserId(userId); appUserWithdraw.setBankId(bankId); appUserWithdraw.setAmount(bigDecimal); appUserWithdraw.setWithdrawType(1); appUserWithdraw.setWithdrawStatus(0); // todo 提现流水号 String s = UuidUtils.generateUuid(); String replace = s.replace("-", "").substring(0, 16); // 商户余额充值到用户余额 appUserWithdraw.setCode("TX"+replace); appUserWithdraw.setWithdrawTime(LocalDateTime.now()); appUserWithdraw.setCreateTime(LocalDateTime.now()); // 先扣去余额 AppUserWalletRecord appUserWalletRecord = new AppUserWalletRecord(); appUserWalletRecord.setAppUserId(userId); appUserWalletRecord.setChangeType(2); appUserWalletRecord.setReason("提现"); appUserWalletRecord.setAmount(new BigDecimal(money)); BigDecimal bigDecimal1 = new BigDecimal(money).setScale(2, RoundingMode.HALF_DOWN); String s2 = JuHeFuUtil.queryUserList(byId1.getIdentityCard()); if (StringUtils.hasLength(s2)){ byId.setFenzhangId(s2); }else{ // 没有开户 long time = new Date().getTime(); String s3 = RandomUtil.randomNumbers(4); String s1 = "FZ" + time + s3; String user = JuHeFuUtil.createUser(s1, byId1.getCardholder(), "00", byId1.getIdentityCard(), byId1.getCellPhone(), byId1.getCardNo()); if (StringUtils.hasLength(user)&&user.equals("success")){ byId.setFenzhangId(s1); appUserService.updateById(byId); }else{ return R.fail(user); } } String s1 = JuHeFuUtil.updateAccount(byId.getFenzhangId(), byId1.getCardholder(), byId1.getCellPhone(), byId1.getCardNo()); if (!s1.contains("success")){ // 修改报错 弹出提示 return R.fail(s1); } // 从商户余额分账到用户分账接收方 JSONObject jsonObject = JuHeFuUtil.balancePay("CZ"+replace, byId.getFenzhangId(), bigDecimal1 + "" , "https://xq.xqzhihui.com/api/user/client/app-user-withdraw/base/callback"); if (jsonObject.getString("error_msg")!=null){ System.err.println("从商户余额分账到用户分账接收方报错异常"+jsonObject.getString("error_msg")); return R.fail("系统繁忙,5分钟后重试"); // return R.fail(jsonObject.getString("error_msg")); } JSONObject jsonObject2 = JuHeFuUtil.balanceWithdraw("TX"+replace, bigDecimal1+"", byId.getFenzhangId(), "https://xq.xqzhihui.com/api/user/client/app-user-withdraw/base/callbackA"); if (jsonObject2.getString("error_msg")!=null){ System.err.println("提现异常原因"+jsonObject2.getString("error_msg")); return R.fail("系统繁忙,5分钟后重试"); } System.err.println("执行完毕====="); appUserWithdraw.setCode("TX"+replace); appUserService.updateById(byId); withdrawService.save(appUserWithdraw); appUserWalletRecord.setOrderId(appUserWithdraw.getId()); appUserWalletRecordService.save(appUserWalletRecord); return R.ok(); } private static final String AES_KEY = "6d548eb01bad44bbbb4a23743e733103"; public static String decrypt(String strToDecrypt) { try { SecretKeySpec secretKey = new SecretKeySpec(AES_KEY.getBytes(), "AES"); Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding"); cipher.init(Cipher.DECRYPT_MODE, secretKey); return new String(cipher.doFinal(Base64.getDecoder().decode(strToDecrypt))); } catch (Exception e) { System.out.println("Error while decrypting: " + e.toString()); } return null;} // @ResponseBody // @PostMapping("/base/callback") // public void callback(HttpServletRequest request, HttpServletResponse response) { // try { // System.err.println("提现到分账接收方回调================="+request); // BufferedReader reader = request.getReader(); // String string1 = reader.toString(); // StringBuilder requestBody = new StringBuilder(); // String line; // while ((line = reader.readLine()) != null) { // requestBody.append(line); // } // System.err.println("提现回调=================全部请求体"+requestBody); // com.alibaba.fastjson2.JSONObject jsonObject = JSONObject.parseObject(requestBody.toString()); // System.err.println("json串"+jsonObject); // String string9 = jsonObject.getString("resCipher"); // String decrypt = decrypt(string9); // System.err.println(decrypt); // JSONObject jsonObject1 = JSONObject.parseObject(decrypt); // // 系统订单号 // String string = jsonObject1.getString("order_no"); // String payId = jsonObject1.getString("pay_id"); // AppUserWithdraw one = withdrawService.lambdaQuery().eq(AppUserWithdraw::getCode, string).one(); // if (jsonObject.getString("type").equals("balancePay.succeeded")){ // if (one!=null){ // String s = UuidUtils.generateUuid(); // String replace = "TX"+s.replace("-", ""); // // 商户余额充值到用户余额 // AppUser appUser = appUserService.getById(one.getAppUserId()); // if (one.getWithdrawStatus()==1 || one.getWithdrawStatus()==2){ // return; // } // // JSONObject jsonObject2 = JuHeFuUtil.balanceWithdraw(replace, one.getAmount() + "", appUser.getFenzhangId(), // "https://xq.xqzhihui.com/api/user/client/app-user-withdraw/base/callbackA"); // if (jsonObject2.getString("error_msg")!=null){ // // 调用失败 // // 回退余额记录 // AppUserWalletRecord appUserWalletRecord = new AppUserWalletRecord(); // appUserWalletRecord.setAppUserId(one.getAppUserId()); // appUserWalletRecord.setChangeType(1); // appUserWalletRecord.setReason("提现回退"); // appUserWalletRecord.setOrderId(one.getId()); // appUserWalletRecord.setAmount(one.getAmount()); // appUserWalletRecordService.save(appUserWalletRecord); // one.setWithdrawStatus(2); // one.setReason(jsonObject1.getString("error_msg")); // withdrawService.updateById(one); // // 回退用户余额 // BigDecimal add = appUser.getBalance().add(one.getAmount()); // appUser.setBalance(add); // appUserService.updateById(appUser); // PrintWriter out = response.getWriter(); // out.write("succeeded"); // out.flush(); // out.close(); // } // one.setCode(replace); // withdrawService.updateById(one); // } // PrintWriter out = response.getWriter(); // out.write("succeeded"); // out.flush(); // out.close(); // }else if (jsonObject.getString("type").equals("balancePay.failed")){ // // 回退余额记录 // AppUserWalletRecord appUserWalletRecord = new AppUserWalletRecord(); // appUserWalletRecord.setAppUserId(one.getAppUserId()); // appUserWalletRecord.setChangeType(1); // appUserWalletRecord.setReason("提现回退"); // appUserWalletRecord.setOrderId(one.getId()); // appUserWalletRecord.setAmount(one.getAmount()); // appUserWalletRecordService.save(appUserWalletRecord); // one.setWithdrawStatus(2); // one.setReason(jsonObject1.getString("error_msg")); // withdrawService.updateById(one); // // 回退用户余额 // AppUser appUser = appUserService.getById(one.getAppUserId()); // BigDecimal add = appUser.getBalance().add(one.getAmount()); // appUser.setBalance(add); // appUserService.updateById(appUser); // PrintWriter out = response.getWriter(); // out.write("succeeded"); // out.flush(); // out.close(); // } // } catch (Exception e) { // e.printStackTrace(); // } // } @ResponseBody @PostMapping("/base/callbackA") public void callbackA(HttpServletRequest request, HttpServletResponse response) { try { System.err.println("提现到银行卡回调================="+request); BufferedReader reader = request.getReader(); String string1 = reader.toString(); StringBuilder requestBody = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { requestBody.append(line); } System.err.println("提现到银行卡回调=================全部请求体"+requestBody); com.alibaba.fastjson2.JSONObject jsonObject = JSONObject.parseObject(requestBody.toString()); System.err.println("json串"+jsonObject); String string9 = jsonObject.getString("resCipher"); String decrypt = decrypt(string9); System.err.println(decrypt); JSONObject jsonObject1 = JSONObject.parseObject(decrypt); // 系统订单号 String string = jsonObject1.getString("order_no"); AppUserWithdraw one = withdrawService.lambdaQuery().eq(AppUserWithdraw::getCode, string).one(); if (jsonObject.getString("type").equals("withdraw.succeeded")){ if (one!=null){ if (one.getWithdrawStatus()==1){ return; } System.err.println("提现成功"); one.setWithdrawStatus(1); one.setSerialNo(jsonObject1.getString("withdraw_id")); withdrawService.updateById(one); } PrintWriter out = response.getWriter(); out.write("succeeded"); out.flush(); out.close(); }else if (jsonObject.getString("type").equals("withdraw.failed")){ // 回退余额记录 AppUserWalletRecord appUserWalletRecord = new AppUserWalletRecord(); appUserWalletRecord.setAppUserId(one.getAppUserId()); appUserWalletRecord.setChangeType(1); appUserWalletRecord.setReason("提现回退"); appUserWalletRecord.setOrderId(one.getId()); appUserWalletRecord.setAmount(one.getAmount()); appUserWalletRecordService.save(appUserWalletRecord); one.setWithdrawStatus(2); one.setReason(jsonObject1.getString("error_msg")); withdrawService.updateById(one); // 回退用户余额 AppUser appUser = appUserService.getById(one.getAppUserId()); BigDecimal add = appUser.getBalance().add(one.getAmount()); appUser.setBalance(add); appUserService.updateById(appUser); PrintWriter out = response.getWriter(); out.write("succeeded"); out.flush(); out.close(); } } catch (Exception e) { e.printStackTrace(); } } @PostMapping("/addBank") @ApiOperation(value = "提现-添加银行卡", tags = {"钱包"}) public R wallet(@RequestBody AppUserBank appUserWithdraw) throws Exception { LoginUser loginUser = tokenService.getLoginUser(); if (loginUser==null){ return R.tokenError("登录失效"); } Long userId = loginUser.getUserid(); appUserWithdraw.setAppUserId(userId); // Boolean flag = redisService.hasKey(CacheConstants.ADD_CARD_PHONE_CODE_PREFIX + appUserWithdraw.getCellPhone()); // if(!flag){ // return R.fail("验证码已失效,请重新获取"); // } // String code = redisService.getCacheObject(CacheConstants.ADD_CARD_PHONE_CODE_PREFIX + appUserWithdraw.getCellPhone()); // if (!appUserWithdraw.getCode().equals(code)) { // return R.fail("验证码不正确"); // } if (com.xinquan.common.core.utils.StringUtils.isNotBlank(appUserWithdraw.getCellPhone()) && com.xinquan.common.core.utils.StringUtils.isNotBlank(appUserWithdraw.getCode())) { String key = CacheConstants.ADD_CARD_PHONE_CODE_PREFIX + appUserWithdraw.getCellPhone(); String code = redisService.getCacheObject(key); // 万能验证码 if (appUserWithdraw.getCode().equals("220125") || (com.xinquan.common.core.utils.StringUtils.isNotBlank(code) && code.equals( appUserWithdraw.getCode()))) { redisService.deleteObject(key); }else{ return R.fail("验证码不正确"); } }else{ return R.fail("请输入验证码"); } appUserBankService.save(appUserWithdraw); // 查询是否已经开户 AppUser byId = appUserService.getById(userId); String s2 = JuHeFuUtil.queryUserList(appUserWithdraw.getIdentityCard()); if (StringUtils.hasLength(s2)){ byId.setFenzhangId(s2); appUserService.updateById(byId); } if (byId.getFenzhangId()==null){ // 开户 long time = new Date().getTime(); String s = RandomUtil.randomNumbers(4); String s1 = "FZ" + time + s; String user = JuHeFuUtil.createUser(s1, appUserWithdraw.getCardholder(), "00", appUserWithdraw.getIdentityCard(), appUserWithdraw.getCellPhone(), appUserWithdraw.getCardNo()); appUserWithdraw.setFenzhangId(s1); appUserBankService.updateById(appUserWithdraw); if (user.equals("success")){ byId.setFenzhangId(s1); appUserService.updateById(byId); }else{ return R.fail("添加银行卡失败,错误信息:"+user); } } return R.ok(); } @PostMapping("/deleteBank") @ApiOperation(value = "提现-删除银行卡", tags = {"钱包"}) public R deleteBank(Long id) { LoginUser loginUser = tokenService.getLoginUser(); if (loginUser==null){ return R.tokenError("登录失效"); } Long userId = loginUser.getUserid(); if(userId ==null || userId == 0)return R.tokenError("登录失效"); appUserBankService.removeById(id); return R.ok(); } @PostMapping("/bankList") @ApiOperation(value = "提现-获取银行卡列表", tags = {"钱包"}) public R> bankList() { LoginUser loginUser = tokenService.getLoginUser(); if (loginUser==null){ return R.tokenError("登录失效"); } Long userId = loginUser.getUserid(); if(userId ==null || userId == 0)return R.tokenError("登录失效"); List list = appUserBankService.lambdaQuery() .eq(AppUserBank::getAppUserId, userId).list(); return R.ok(list); } }