package com.stylefeng.guns.modular.api;
|
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.stylefeng.guns.modular.account.model.TBankNext;
|
import com.stylefeng.guns.modular.account.service.ITBankNextService;
|
import com.stylefeng.guns.modular.account.service.UserWithdrawalService;
|
import com.stylefeng.guns.modular.cloudPayment.example.CusApplicationExample;
|
import com.stylefeng.guns.modular.system.model.BankCard;
|
import com.stylefeng.guns.modular.system.model.Driver;
|
import com.stylefeng.guns.modular.system.model.UserWithdrawal;
|
import com.stylefeng.guns.modular.system.service.IBankCardService;
|
import com.stylefeng.guns.modular.system.service.IDriverService;
|
import com.stylefeng.guns.modular.system.service.ISysWithdrawalPoundageService;
|
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 com.unionpay.upyzt.resp.CusApplicationResp;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParams;
|
import io.swagger.annotations.ApiOperation;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.transaction.annotation.Propagation;
|
import org.springframework.transaction.annotation.Transactional;
|
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.servlet.http.HttpServletRequest;
|
import java.util.*;
|
|
/**
|
* 提现控制器
|
*/
|
@Api
|
@Slf4j
|
@RestController
|
@RequestMapping("")
|
public class WithdrawalController {
|
|
@Autowired
|
private IWithdrawalService withdrawalService;
|
|
@Autowired
|
private IDriverService driverService;
|
|
@Autowired
|
private ISysWithdrawalPoundageService sysWithdrawalPoundageService;
|
@Autowired
|
private UserWithdrawalService userWithdrawalService;
|
@Autowired
|
private IBankCardService bankCardService;
|
@Autowired
|
private ITBankNextService bankNextService;
|
|
|
/**
|
* 账户余额提现操作
|
* @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(value = "提现类型(1=活动收入提现,2=业务收入提现)", name = "type", required = true, dataType = "int"),
|
@ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
|
})
|
@Transactional(rollbackFor = Exception.class,propagation = Propagation.SUPPORTS)
|
public ResultUtil withdrawal(Double money, String bankName, String code, String name, String smsCode,Integer type, HttpServletRequest request){
|
try {
|
Integer uid = driverService.getUserIdFormRedis(request);
|
if(null == uid){
|
return ResultUtil.tokenErr();
|
}
|
Driver driver = driverService.selectById(uid);
|
// 默认修改司机个人进件账户信息,先将该用户所有的银行卡SettleAcctId设置为空
|
List<BankCard> bankCardList = bankCardService.selectList(new EntityWrapper<BankCard>()
|
.eq("phone", driver.getPhone()));
|
for (BankCard bankCard : bankCardList) {
|
bankCard.setSettleAcctId("");
|
bankCard.setVerifyStatus("");
|
}
|
bankCardService.updateBatchById(bankCardList);
|
|
// 查询银行卡的银行连号和编号
|
BankCard bankCard = bankCardService.selectOne(new EntityWrapper<BankCard>()
|
.eq("code", code)
|
.last("LIMIT 1"));
|
if(Objects.isNull(bankCard)){
|
return ResultUtil.error("该银行卡不存在!");
|
}
|
UserWithdrawal userWithdrawal = userWithdrawalService.selectOne(new EntityWrapper<UserWithdrawal>()
|
.eq("phone", driver.getPhone())
|
.last("LIMIT 1"));
|
if(Objects.isNull(userWithdrawal)){
|
return ResultUtil.error("请先进行个人用户进件信息填写");
|
}
|
|
TBankNext bankNext = bankNextService.selectOne(new EntityWrapper<TBankNext>()
|
.eq("bankName", bankName)
|
.last("LIMIT 1"));
|
|
userWithdrawal.setBankName(bankName);
|
userWithdrawal.setBankCode(bankNext.getDrecCode());
|
userWithdrawal.setBankBranchCode(bankNext.getBankCode());
|
userWithdrawal.setBankCardCode(code);
|
userWithdrawal.setCode(smsCode);
|
CusApplicationResp renew = CusApplicationExample.renew(userWithdrawal);
|
System.err.println("修改个人用户进件信息返回"+renew);
|
if("succeeded".equals(renew.getApplicationStatus())){
|
// 修改银行卡信息
|
bankCard.setVerifyStatus("succeeded");
|
bankCard.setSettleAcctId(renew.getSettleAcctId());
|
bankCardService.updateById(bankCard);
|
|
userWithdrawal.setBankCardCode(code);
|
userWithdrawal.setBankName(bankCard.getBank());
|
userWithdrawal.setSettleAcctId(renew.getSettleAcctId());
|
userWithdrawal.setBalanceAcctId(renew.getBalanceAcctId());
|
userWithdrawal.setBankCode(bankCard.getBankCode());
|
userWithdrawal.setBankBranchCode(bankCard.getBankBranchCode());
|
userWithdrawalService.updateById(userWithdrawal);
|
}
|
return withdrawalService.withdrawal(money, bankName, code, name, uid, type);
|
}catch (Exception e){
|
e.printStackTrace();
|
return ResultUtil.runErr();
|
}
|
}
|
|
|
/**
|
* 提现后台审核后的处理接口
|
* @param id
|
* @param state
|
* @return
|
*/
|
@ResponseBody
|
@PostMapping("/base/withdrawal/withdrawalAudit")
|
public ResultUtil withdrawalAudit(Integer id, Integer state){
|
try {
|
return withdrawalService.withdrawalAudit(id, state);
|
}catch (Exception e){
|
e.printStackTrace();
|
return ResultUtil.runErr();
|
}
|
}
|
|
|
|
/**
|
* 提现手续说明
|
* @return
|
*/
|
@ResponseBody
|
@PostMapping("/base/withdrawal/withdrawalPoundage")
|
@ApiOperation(value = "提现手续说明", tags = {"司机端-个人中心"}, notes = "")
|
public ResultUtil withdrawalPoundage(){
|
try {
|
return ResultUtil.success(sysWithdrawalPoundageService.selectOne(null).getPercentage() + "%");
|
}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(value = "提现类型(1=活动收入提现,2=业务收入提现)", name = "type", required = true, dataType = "int"),
|
@ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
|
})
|
public ResultUtil<List<WithdrawalWarpper>> queryWithdrawal(Integer pageNum, Integer size, Integer type, HttpServletRequest request){
|
try {
|
Integer uid = driverService.getUserIdFormRedis(request);
|
if(null == uid){
|
return ResultUtil.tokenErr();
|
}
|
List<Map<String, Object>> list = withdrawalService.queryWithdrawal(uid, type, pageNum, size);
|
return ResultUtil.success(WithdrawalWarpper.getWithdrawalWarpper(list));
|
}catch (Exception e){
|
e.printStackTrace();
|
return ResultUtil.runErr();
|
}
|
}
|
}
|