package com.stylefeng.guns.modular.account.controller;
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.stylefeng.guns.modular.account.service.ElectronicLedgerService;
|
import com.stylefeng.guns.modular.account.service.ITBankNextService;
|
import com.stylefeng.guns.modular.account.service.UserBankAccountService;
|
import com.stylefeng.guns.modular.account.service.UserWithdrawalService;
|
import com.stylefeng.guns.modular.system.model.Company;
|
import com.stylefeng.guns.modular.system.model.Driver;
|
import com.stylefeng.guns.modular.system.model.ElectronicLedger;
|
import com.stylefeng.guns.modular.system.model.UserWithdrawal;
|
import com.stylefeng.guns.modular.system.service.IBankCardService;
|
import com.stylefeng.guns.modular.system.service.ICompanyService;
|
import com.stylefeng.guns.modular.system.service.IDriverService;
|
import com.stylefeng.guns.modular.system.util.ResultUtil;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParams;
|
import io.swagger.annotations.ApiOperation;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.transaction.annotation.Isolation;
|
import org.springframework.transaction.annotation.Propagation;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.math.BigDecimal;
|
import java.util.List;
|
import java.util.Objects;
|
|
@Api(tags = "司机进件(提现操作)/创建电子账簿")
|
@RestController
|
@RequestMapping("/api/electronicLedger")
|
public class UserWithdrawalController {
|
|
private final static Logger log = LoggerFactory.getLogger(UserWithdrawalController.class);
|
|
private final ElectronicLedgerService electronicLedgerService;
|
private final UserWithdrawalService userWithdrawalService;
|
private final UserBankAccountService userBankAccountService;
|
private final IBankCardService bankCardService;
|
private final IDriverService driverService;
|
private final ICompanyService companyService;
|
private final ITBankNextService bankNextService;
|
|
@Autowired
|
public UserWithdrawalController(ElectronicLedgerService electronicLedgerService, UserWithdrawalService userWithdrawalService, UserBankAccountService userBankAccountService, IBankCardService bankCardService, IDriverService driverService, ICompanyService companyService, ITBankNextService bankNextService) {
|
this.electronicLedgerService = electronicLedgerService;
|
this.userWithdrawalService = userWithdrawalService;
|
this.userBankAccountService = userBankAccountService;
|
this.bankCardService = bankCardService;
|
this.driverService = driverService;
|
this.companyService = companyService;
|
this.bankNextService = bankNextService;
|
}
|
|
|
|
@ResponseBody
|
@RequestMapping(value = "/isElectronicLede", method = RequestMethod.POST)
|
@ApiOperation(value = "司机是否需要进件", tags = {"司机端-司机是否需要进件"}, notes = "")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
|
})
|
public ResultUtil isElectronicLede(HttpServletRequest request){
|
try {
|
Integer driverId = driverService.getUserIdFormRedis(request);
|
if(null == driverId){
|
return ResultUtil.tokenErr();
|
}
|
Driver driver = driverService.selectById(driverId);
|
List<UserWithdrawal> userWithdrawals = userWithdrawalService.selectList(new EntityWrapper<UserWithdrawal>().eq("phone", driver.getPhone()));
|
if(userWithdrawals.size()==0){
|
return ResultUtil.success("yes");
|
}
|
return ResultUtil.success("no");
|
}catch (Exception e){
|
e.printStackTrace();
|
return ResultUtil.runErr();
|
}
|
}
|
|
@ResponseBody
|
@RequestMapping(value = "/getUserInfo", method = RequestMethod.POST)
|
@ApiOperation(value = "司机进件信息", tags = {"司机端-司机进件信息"}, notes = "")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
|
})
|
@Transactional(isolation = Isolation.READ_UNCOMMITTED,rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
|
public ResultUtil getUserInfo(HttpServletRequest request){
|
try {
|
Integer driverId = driverService.getUserIdFormRedis(request);
|
if(null == driverId){
|
return ResultUtil.tokenErr();
|
}
|
Driver driver = driverService.selectById(driverId);
|
// TODO 司机进件信息
|
UserWithdrawal userWithdrawal = userWithdrawalService.selectOne(new EntityWrapper<UserWithdrawal>()
|
.eq("phone",driver.getPhone())
|
.eq("applicationStatus","succeeded")
|
.last("LIMIT 1"));
|
if(Objects.isNull(userWithdrawal)){
|
return ResultUtil.success(new Object());
|
}
|
return ResultUtil.success(userWithdrawal);
|
}catch (Exception e){
|
e.printStackTrace();
|
return ResultUtil.error(e.getMessage());
|
}
|
}
|
|
|
@ResponseBody
|
@RequestMapping(value = "/isElectronicLedger", method = RequestMethod.POST)
|
@ApiOperation(value = "司机是否创建电子账簿", tags = {"司机端-司机是否创建电子账簿"}, notes = "")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
|
})
|
@Transactional(isolation = Isolation.READ_UNCOMMITTED,rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
|
public ResultUtil isElectronicLedger(HttpServletRequest request){
|
try {
|
Integer driverId = driverService.getUserIdFormRedis(request);
|
if(null == driverId){
|
return ResultUtil.tokenErr();
|
}
|
Driver driver = driverService.selectById(driverId);
|
// TODO 司机进件信息
|
List<UserWithdrawal> userWithdrawals = userWithdrawalService.selectList(new EntityWrapper<UserWithdrawal>()
|
.eq("phone",driver.getPhone()));
|
if(userWithdrawals.size()==0){
|
return ResultUtil.error("请先进行个人用户进件信息填写");
|
}
|
return ResultUtil.success();
|
}catch (Exception e){
|
e.printStackTrace();
|
return ResultUtil.error(e.getMessage());
|
}
|
}
|
|
@ResponseBody
|
@RequestMapping(value = "/withdrawDeposit", method = RequestMethod.POST)
|
@ApiOperation(value = "司机提现", tags = {"司机端-司机提现"}, notes = "amount-提现金额,password-交易授权码")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
|
})
|
@Transactional(isolation = Isolation.READ_UNCOMMITTED,rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
|
public ResultUtil withdrawDeposit(Integer amount,String bankAcctNo,HttpServletRequest request){
|
Integer driverId = null;
|
try {
|
driverId = driverService.getUserIdFormRedis(request);
|
} catch (Exception e) {
|
throw new RuntimeException(e);
|
}
|
if(null == driverId){
|
return ResultUtil.tokenErr();
|
}
|
Driver driver = driverService.selectById(driverId);
|
// Boolean aBoolean = userWithdrawalService.withdrawDeposit(amount, bankAcctNo, driver.getWithdrawPassword());
|
// 查询当前操作电子用户
|
// 司机进件信息
|
UserWithdrawal userWithdrawal = userWithdrawalService.selectOne(new EntityWrapper<UserWithdrawal>()
|
.eq("phone",driver.getPhone())
|
.eq("applicationStatus","succeeded")
|
.last("LIMIT 1"));
|
|
System.out.println("司机电子账簿信息====:"+userWithdrawal);
|
if(Objects.isNull(userWithdrawal)){
|
return ResultUtil.error("司机开户信息为空");
|
}
|
// 先从平台进行分账到用户电子账簿
|
// 查询平台账户
|
Company company = companyService.selectOne(new EntityWrapper<Company>()
|
.eq("type", 1));
|
// 查询平台开户信息
|
ElectronicLedger electronicLedger = electronicLedgerService.selectOne(new EntityWrapper<ElectronicLedger>()
|
.eq("userId", company.getId())
|
.eq("userType", 3)
|
.last("LIMIT 1"));
|
return ResultUtil.success();
|
}
|
|
@ResponseBody
|
@RequestMapping(value = "/querySettledAmount", method = RequestMethod.POST)
|
@ApiOperation(value = "可提现余额查询", tags = {"可提现余额查询"}, notes = "")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "Authorization", value = "Bearer +token", required = true, dataType = "String", paramType = "header", defaultValue = "Bearer eyJhbGciOiJIUzUxMiJ9.....")
|
})
|
public ResultUtil querySettledAmount(HttpServletRequest request){
|
|
return ResultUtil.success(BigDecimal.ZERO);
|
}
|
|
|
}
|