xuhy
2025-08-29 e59d2141bc8f9bee8b569deaa54158b3759c431e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
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();
    }
}