package com.stylefeng.guns.modular.api; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.stylefeng.guns.modular.account.dao.TBankNextMapper; import com.stylefeng.guns.modular.account.server.UserBankAccountService; import com.stylefeng.guns.modular.account.server.UserWithdrawalService; import com.stylefeng.guns.modular.huifu.biz.DouGongBasicDataBiz; import com.stylefeng.guns.modular.system.model.UserBankAccount; import com.stylefeng.guns.modular.system.model.UserInfo; import com.stylefeng.guns.modular.system.model.UserWithdrawal; import com.stylefeng.guns.modular.system.service.IUserInfoService; import com.stylefeng.guns.modular.system.service.IWithdrawalService; import com.stylefeng.guns.modular.system.util.ResultUtil; import com.stylefeng.guns.modular.system.warpper.WithdrawalWarpper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.List; import java.util.Map; import java.util.Objects; /** * 提现控制器 */ @Api @RestController @RequestMapping("") public class WithdrawalController { @Autowired private IWithdrawalService withdrawalService; @Autowired private IUserInfoService userInfoService; @Resource private UserWithdrawalService userWithdrawalService; @Resource private UserBankAccountService bankAccountService; @Resource private TBankNextMapper tBankNextMapper; @Autowired private DouGongBasicDataBiz douGongBasicDataBiz; /** * 账户余额提现操作 * @param money * @param code * @param name * @param request * @return */ @ResponseBody @PostMapping("/api/withdrawal/withdrawal") @ApiOperation(value = "账户余额提现", tags = {"用户端-个人中心"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "提现金额", name = "money", required = true, dataType = "double"), @ApiImplicitParam(value = "银行名称", name = "bankName", required = true, dataType = "string"), @ApiImplicitParam(value = "银行卡号", name = "code", required = true, dataType = "string"), @ApiImplicitParam(value = "银行卡持有人姓名", name = "name", required = true, dataType = "string"), @ApiImplicitParam(value = "验证码-废弃", name = "smsCode", required = true, dataType = "string"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil withdrawal(Double money, String bankName, String code, String name,String smsCode,HttpServletRequest request){ try { Integer uid = userInfoService.getUserIdFormRedis(request); if(null == uid){ return ResultUtil.tokenErr(); } List bankCardList = bankAccountService.selectList(new EntityWrapper() .eq("userId", uid).eq("userType",1)); for (UserBankAccount bankCard : bankCardList) { bankCard.setSettleAcctId(""); } bankAccountService.updateBatchById(bankCardList); UserInfo userInfo1 = userInfoService.selectById(uid); // 查询银行卡的银行连号和编号 UserBankAccount bankCard = bankAccountService.selectOne(new EntityWrapper() .eq("bankCardCode", code).eq("phone",userInfo1.getPhone()).eq("status",1) .last("LIMIT 1")); if(Objects.isNull(bankCard)){ return ResultUtil.runErr("该银行卡不存在!"); } UserInfo userInfo = userInfoService.selectById(uid); UserWithdrawal userWithdrawal = userWithdrawalService.selectOne(new EntityWrapper() .eq("phone", userInfo.getPhone()) .eq("type", 1) .last("LIMIT 1")); if(Objects.isNull(userWithdrawal)){ return ResultUtil.error("请先进行个人用户进件信息填写"); } //TBankNext bankName1 = tBankNextMapper.selectList(new EntityWrapper().eq("bankName", bankName)).get(0); userWithdrawal.setBankCardCode(code); //userWithdrawal.setBankCode(bankName1.getDrecCode()); //userWithdrawal.setBankBranchCode(bankName1.getBankCode()); //userWithdrawal.setCode(smsCode); //CusApplicationResp renew = CusApplicationExample.renew(userWithdrawal); //System.err.println("修改个人用户进件信息返回"+renew); userWithdrawal.setBankCardProvinceCode(bankCard.getBankCardProvinceCode()); userWithdrawal.setBankCardCityCode(bankCard.getBankCardCityCode()); Map map = douGongBasicDataBiz.userBasicDataIndvModify(userWithdrawal); if (!"00000000".equals(map.get("resp_code"))) { return ResultUtil.error("修改个人用户进件信息失败,原因:" + map.get("resp_desc")); } Map res = douGongBasicDataBiz.userBusinessOpenModify(userWithdrawal); if (!"00000000".equals(res.get("resp_code"))) { return ResultUtil.error("修改个人用户进件信息失败,原因:" + res.get("resp_desc")); } userWithdrawal.setBankCardCode(code); userWithdrawal.setBankCode(bankCard.getBankCode()); userWithdrawal.setBankBranchCode(bankCard.getBankBranchCode()); userWithdrawal.setBankName(bankCard.getBankName()); //userWithdrawal.setSettleAcctId(renew.getSettleAcctId()); //userWithdrawal.setBalanceAcctId(renew.getBalanceAcctId()); userWithdrawal.setHuifuId((String) map.get("huifu_id")); String tokenNo = (String) res.get("token_no"); userWithdrawal.setTokenNo(tokenNo); userWithdrawalService.updateById(userWithdrawal); return withdrawalService.withdrawal(money, bankName, code, name, uid); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 获取历史提现数据 * @param pageNum * @param size * @param request * @return */ @ResponseBody @PostMapping("/api/withdrawal/queryWithdrawal") @ApiOperation(value = "获取历史提现数据", tags = {"用户端-个人中心"}, notes = "") @ApiImplicitParams({ @ApiImplicitParam(value = "页码,首页1", name = "pageNum", required = true, dataType = "int"), @ApiImplicitParam(value = "页条数", name = "size", required = true, dataType = "int"), @ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....") }) public ResultUtil> queryWithdrawal(Integer pageNum, Integer size, HttpServletRequest request){ try { Integer uid = userInfoService.getUserIdFormRedis(request); if(null == uid){ return ResultUtil.tokenErr(); } List> list = withdrawalService.queryWithdrawal(uid, pageNum, size); return ResultUtil.success(WithdrawalWarpper.getWithdrawalWarpper(list)); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } /** * 内部调用审核提交结果的处理 * @param id 提现申请数据id * @param state 审核状态(1=同意,2=拒绝) * @return */ @ResponseBody @PostMapping("/base/withdrawal/queryWithdrawal") public ResultUtil withdrawalAudit(Integer id, Integer state){ try { return withdrawalService.withdrawalAudit(id, state); }catch (Exception e){ e.printStackTrace(); return ResultUtil.runErr(); } } }