puzhibing
2023-07-03 d6af8c450e89d515f7f77a2b4b4ddf9c5f9ad4db
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/WithdrawalServiceImpl.java
@@ -8,6 +8,10 @@
import com.stylefeng.guns.modular.system.service.IUserInfoService;
import com.stylefeng.guns.modular.system.service.IWithdrawalService;
import com.stylefeng.guns.modular.system.util.ResultUtil;
import com.stylefeng.guns.modular.system.util.Tingg.TinggPayoutUtil;
import com.stylefeng.guns.modular.system.util.Tingg.model.AuthStatus;
import com.stylefeng.guns.modular.system.util.Tingg.model.PayoutResponse;
import com.stylefeng.guns.modular.system.util.Tingg.model.Results;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
@@ -29,8 +33,8 @@
    @Autowired
    private IUserInfoService userInfoService;
  /*  @Autowired
    private ICBCPayUtil icbcPayUtil;*/
    @Autowired
    private TinggPayoutUtil tinggPayoutUtil;
    private Map<String, Timer> timerMap = new HashMap<>();
@@ -46,16 +50,17 @@
     * @throws Exception
     */
    @Override
    public ResultUtil withdrawal(Double money, String code, String name, Integer uid) throws Exception {
    public ResultUtil withdrawal(Double money, String code, String name, Integer uid, Integer language) throws Exception {
        language = userInfoService.queryLanguage(uid, language);
        if(money.compareTo(0D) <= 0){
            return ResultUtil.error("提现金额必须大于0");
            return ResultUtil.error(language == 1 ? "提现金额必须大于0" : language == 2 ? "Withdrawal amount must be greater than 0" : "Le montant du retrait doit être supérieur à 0");
        }
        UserInfo userInfo = userInfoService.selectById(uid);
        if(null == userInfo.getBalance()){
            return ResultUtil.error("账户没有余额,不能提现");
            return ResultUtil.error(language == 1 ? "账户余额不足" : language == 2 ? "Insufficient account balance" : "Solde de compte insuffisant");
        }
        if(userInfo.getBalance().compareTo(money) < 0){
            return ResultUtil.error("提现金额必须小于账户余额");
            return ResultUtil.error(language == 1 ? "账户余额不足" : language == 2 ? "Insufficient account balance" : "Solde de compte insuffisant");
        }
        Withdrawal withdrawal = new Withdrawal();
@@ -69,8 +74,17 @@
        withdrawal.setUserId(uid);
        withdrawal.setUserType(1);
        /*ResultUtil<String> transfer = icbcPayUtil.transfer(Double.valueOf(withdrawal.getMoney() * 100).longValue(), withdrawal.getCode(), withdrawal.getName());
        withdrawal.setSerialNo(transfer.getData());*/
        PayoutResponse payoutResponse = tinggPayoutUtil.sendPayout("+233" + userInfo.getPhone(), withdrawal.getCode(), withdrawal.getMoney(), "", "用户提现");
        AuthStatus authStatus = payoutResponse.getAuthStatus();
        Results results = payoutResponse.getResults().get(0);
        String statusCode = results.getStatusCode();
        if(!"131".equals(authStatus.getAuthStatusCode())){
            return ResultUtil.error(authStatus.getAuthStatusDescription());
        }
        if(!"139".equals(statusCode)){
            return ResultUtil.error(results.getStatusDescription());
        }
        withdrawal.setSerialNo(results.getBeepTransactionID());
        this.insert(withdrawal);
        double v = new BigDecimal(userInfo.getBalance()).subtract(new BigDecimal(money)).setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue();
@@ -89,9 +103,14 @@
     * @throws Exception
     */
    @Override
    public List<Map<String, Object>> queryWithdrawal(Integer uid, Integer pageNum, Integer size) throws Exception {
    public List<Map<String, Object>> queryWithdrawal(Integer uid, Integer pageNum, Integer size, Integer language) throws Exception {
        pageNum = (pageNum - 1) * size;
        return withdrawalMapper.queryWithdrawal(uid, 1, pageNum, size);
        String name = language == 1 ? "银行卡提现" : language == 2 ? "Bank card withdrawal" : "Retrait par carte bancaire";
        List<Map<String, Object>> list = withdrawalMapper.queryWithdrawal(uid, 1, pageNum, size);
        for (Map<String, Object> map : list) {
            map.put("name", name);
        }
        return list;
    }