Pu Zhibing
2025-05-16 4c99ee7028c3fe58a2cd4b8273b22c75c45574fc
UserIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/WithdrawalServiceImpl.java
@@ -7,6 +7,7 @@
import com.stylefeng.guns.modular.system.model.Withdrawal;
import com.stylefeng.guns.modular.system.service.IUserInfoService;
import com.stylefeng.guns.modular.system.service.IWithdrawalService;
import com.stylefeng.guns.modular.system.util.DateUtil;
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;
@@ -44,47 +45,35 @@
    /**
     * 提现操作
     * @param money
     * @param code
     * @param name
     * @param uid
     * @throws Exception
     */
    @Override
    public ResultUtil withdrawal(Double money, String code, String name, Integer uid, Integer language) throws Exception {
    public synchronized ResultUtil withdrawal(Double money, Integer uid, String remark, Integer language) throws Exception {
        language = userInfoService.queryLanguage(uid, language);
        if(money.compareTo(0D) <= 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");
            return ResultUtil.error(language == 1 ? "提现金额必须大于0" : language == 2 ? "Withdrawal amount must be greater than zero." : "Le montant du retrait doit être supérieur à zéro.");
        }
        UserInfo userInfo = userInfoService.selectById(uid);
        if(null == userInfo.getBalance()){
            return ResultUtil.error(language == 1 ? "账户余额不足" : language == 2 ? "Insufficient account balance" : "Solde de compte insuffisant");
            return ResultUtil.error(language == 1 ? "账户余额不足" : language == 2 ? "Insufficient balance" : "Solde insuffisant");
        }
        if(userInfo.getBalance().compareTo(money) < 0){
            return ResultUtil.error(language == 1 ? "账户余额不足" : language == 2 ? "Insufficient account balance" : "Solde de compte insuffisant");
            return ResultUtil.error(language == 1 ? "账户余额不足" : language == 2 ? "Insufficient balance" : "Solde insuffisant");
        }
        Withdrawal withdrawal = new Withdrawal();
        withdrawal.setBalance(userInfo.getBalance());
        withdrawal.setCode(code);
        withdrawal.setCode(userInfo.getPhone());// TODO: 2023/7/5 第三方支支持手机号提现
        withdrawal.setBankName(userInfo.getPhoneOperator());
        withdrawal.setFlag(1);
        withdrawal.setInsertTime(new Date());
        withdrawal.setRemark(remark);
        withdrawal.setMoney(money);
        withdrawal.setName(name);
        withdrawal.setName(userInfo.getFirstName() + " " + userInfo.getLastName());
        withdrawal.setState(1);
        withdrawal.setUserId(uid);
        withdrawal.setUserType(1);
        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();
@@ -103,12 +92,16 @@
     * @throws Exception
     */
    @Override
    public List<Map<String, Object>> queryWithdrawal(Integer uid, Integer pageNum, Integer size, Integer language) throws Exception {
    public List<Map<String, Object>> queryWithdrawal(Integer uid, Integer pageNum, Integer size, Integer state, Integer language) throws Exception {
        pageNum = (pageNum - 1) * 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);
        String name = language == 1 ? "手机号" : language == 2 ? "Mobile Money" : "Argent mobile";
        List<Map<String, Object>> list = withdrawalMapper.queryWithdrawal(uid, 1, state, pageNum, size);
        for (Map<String, Object> map : list) {
            map.put("name", name);
            map.put("name", name + "(" + map.get("code") + ")");
            if(null != map.get("insertTime")){
                String insertTime = map.get("insertTime").toString();
                map.put("insertTime", DateUtil.conversionFormat(language, insertTime));
            }
        }
        return list;
    }