package com.stylefeng.guns.modular.system.service.impl;
|
|
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
|
import com.stylefeng.guns.core.util.DateUtil;
|
import com.stylefeng.guns.modular.system.dao.DriverAlipayMapper;
|
import com.stylefeng.guns.modular.system.dao.DriverMapper;
|
import com.stylefeng.guns.modular.system.dao.WithdrawalMapper;
|
import com.stylefeng.guns.modular.system.model.Driver;
|
import com.stylefeng.guns.modular.system.model.DriverAlipay;
|
import com.stylefeng.guns.modular.system.model.Withdrawal;
|
import com.stylefeng.guns.modular.system.service.IDriverAlipayService;
|
import com.stylefeng.guns.modular.system.util.ResultUtil;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import java.math.BigDecimal;
|
import java.util.Date;
|
import java.util.List;
|
|
|
@Service
|
public class DriverAlipayServiceImpl extends ServiceImpl<DriverAlipayMapper, DriverAlipay> implements IDriverAlipayService {
|
|
@Autowired
|
private DriverAlipayMapper driverAlipayMapper;
|
@Autowired
|
private DriverMapper driverMapper;
|
@Autowired
|
private WithdrawalMapper withdrawalMapper;
|
|
@Override
|
public ResultUtil saveAlipay(String userName, String account, Integer driverId) {
|
DriverAlipay query = driverAlipayMapper.query(driverId, account);
|
if(null != query){
|
return ResultUtil.error("支付宝账号已存在");
|
}
|
DriverAlipay driverAlipay = new DriverAlipay();
|
driverAlipay.setUserName(userName);
|
driverAlipay.setAccount(account);
|
driverAlipay.setDriverId(driverId);
|
driverAlipay.setCreateTime(new Date());
|
this.insert(driverAlipay);
|
return ResultUtil.success();
|
}
|
|
@Override
|
public ResultUtil updateAlipay(Integer id, String userName, String account, Integer driverId) {
|
DriverAlipay query = driverAlipayMapper.query(driverId, account);
|
if(null != query && !id.equals(query.getId())){
|
return ResultUtil.error("支付宝账号已存在");
|
}
|
DriverAlipay driverAlipay = query;
|
driverAlipay.setUserName(userName);
|
driverAlipay.setAccount(account);
|
driverAlipay.setDriverId(driverId);
|
this.updateById(driverAlipay);
|
return ResultUtil.success();
|
}
|
|
@Override
|
public ResultUtil delAlipay(Integer id, Integer driverId) {
|
DriverAlipay driverAlipay = this.selectById(id);
|
if(driverAlipay.getDriverId().compareTo(driverId) != 0){
|
return ResultUtil.error("你无权删除此账号");
|
}
|
this.deleteById(id);
|
return ResultUtil.success();
|
}
|
|
@Override
|
public List<DriverAlipay> queryAlipay(Integer pageNum, Integer size, Integer driverId) {
|
pageNum = (pageNum - 1) * size;
|
return driverAlipayMapper.queryAlipay(pageNum, size, driverId);
|
}
|
|
@Override
|
public ResultUtil aliWithdrawal(Double money, Integer id, Integer uid, Integer type) {
|
if(money.compareTo(0D) <= 0){
|
return ResultUtil.error("提现金额必须大于0");
|
}
|
Driver driver = driverMapper.selectById(uid);
|
Integer withdrawalRule = driverMapper.getWithdrawalRule();
|
if(withdrawalRule==null){
|
return ResultUtil.error("暂未设置提现时间,请联系平台");
|
}
|
String week =withdrawalRule==1?"星期一":
|
withdrawalRule==2?"星期二":
|
withdrawalRule==3?"星期三":
|
withdrawalRule==4?"星期四":
|
withdrawalRule==5?"星期五":
|
withdrawalRule==6?"星期六":"星期日";
|
String weeks = DateUtil.getAfterDayWeek("0");
|
if(!weeks.equals(week)){
|
return ResultUtil.error(" 每周"+(withdrawalRule==1?"一":
|
withdrawalRule==2?"二":
|
withdrawalRule==3?"三":
|
withdrawalRule==4?"四":
|
withdrawalRule==5?"五":
|
withdrawalRule==6?"六":"日")+"统一申请提现,平台统一处理。");
|
}
|
if(null == type){
|
type = 1;
|
}
|
|
Withdrawal withdrawal = new Withdrawal();
|
if(type == 1){
|
if(null == driver.getLaveActivityMoney()){
|
return ResultUtil.error("账户没有余额,不能提现");
|
}
|
if(driver.getLaveActivityMoney().compareTo(money) < 0){
|
return ResultUtil.error("提现金额必须小于账户余额");
|
}
|
withdrawal.setBalance(driver.getLaveActivityMoney());
|
}
|
if(type == 2){
|
if(null == driver.getLaveBusinessMoney()){
|
return ResultUtil.error("账户没有余额,不能提现");
|
}
|
|
Double money1 = driverMapper.getThisWeekMoney(uid);
|
Double laveBusinessMoney =driver.getLaveBusinessMoney()-(money1==null?0d:money1);
|
if(laveBusinessMoney.compareTo(money) < 0){
|
return ResultUtil.error("提现金额必须小于账户余额");
|
}
|
withdrawal.setBalance(driver.getLaveBusinessMoney()-(money1==null?0d:money1));
|
}
|
DriverAlipay driverAlipay = this.selectById(id);
|
if(null == driverAlipay){
|
return ResultUtil.error("请选择提现账号");
|
}
|
withdrawal.setCode(driverAlipay.getAccount());
|
withdrawal.setFlag(1);
|
withdrawal.setInsertTime(new Date());
|
withdrawal.setMoney(money);
|
withdrawal.setName(driverAlipay.getUserName());
|
withdrawal.setState(1);
|
withdrawal.setUserId(uid);
|
withdrawal.setUserType(2);
|
withdrawal.setBankName("支付宝");
|
withdrawal.setType(type);
|
withdrawal.setWithdrawalType(1);//线上
|
|
if(type == 1){
|
double v = new BigDecimal(driver.getLaveActivityMoney()).subtract(new BigDecimal(money)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
|
driver.setLaveActivityMoney(v);
|
v = new BigDecimal(driver.getBalance()).subtract(new BigDecimal(money)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
|
driver.setBalance(v);
|
}
|
if(type == 2){
|
double v = new BigDecimal(driver.getLaveBusinessMoney()).subtract(new BigDecimal(money)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
|
driver.setLaveBusinessMoney(v);
|
}
|
withdrawalMapper.insert(withdrawal);
|
driverMapper.updateById(driver);
|
return ResultUtil.success();
|
}
|
}
|