puzhibing
3 天以前 722224153cf3214909bbc6ec627db0357f1f6ae2
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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
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);
    }
 
 
}