package com.hehenian.biz.component.trade.impl; import java.util.Date; import com.hehenian.biz.component.account.IUserComponent; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.hehenian.biz.common.account.dataobject.AccountUserDo; import com.hehenian.biz.common.account.dataobject.BankCardDo; import com.hehenian.biz.common.exception.BusinessException; import com.hehenian.biz.common.trade.dataobject.FundrecordDo; import com.hehenian.biz.common.trade.dataobject.MerCashDo; import com.hehenian.biz.common.trade.dataobject.WithdrawDo; import com.hehenian.biz.component.account.IBankCardComponent; import com.hehenian.biz.component.trade.IFundrecordComponent; import com.hehenian.biz.component.trade.IMerCostComponent; import com.hehenian.biz.dal.account.IUserDao; import com.hehenian.biz.dal.trade.IMerCashDao; import com.hehenian.biz.dal.trade.IWithdrawDao; @Component("merCoshComponent") public class MerCashComponentImpl implements IMerCostComponent { @Autowired private IMerCashDao merCashDao; @Autowired private IWithdrawDao withdrawDao; @Autowired private IFundrecordComponent fundrecordComponnet; @Autowired private IUserDao userDao; @Autowired private IBankCardComponent bankCardComponent; @Autowired private IUserComponent userComponent; @Override public Long addMerCash(MerCashDo merCashDo) { int count = merCashDao.addMerCash(merCashDo); if (count <= 0) { throw new BusinessException("新增商户提现记录失败!"); } return merCashDo.getId(); } @Override public Boolean updateMerCash(MerCashDo merCashDo) { // 修改商户提现记录 int count = merCashDao.updateMerCash(merCashDo); if (count != 1) { throw new BusinessException("新增商户提现记录失败!"); } // 新增提现申请记录 WithdrawDo withdrawDo = new WithdrawDo(); AccountUserDo userDo = userDao.getById(merCashDo.getUserId()); withdrawDo.setName(userDo.getUsername());// 提现用户名称 withdrawDo.setAcount(merCashDo.getCardNo()); withdrawDo.setSum(merCashDo.getSum()); withdrawDo.setPoundage(merCashDo.getPoundage()); withdrawDo.setApplyTime(new Date()); BankCardDo bankCardDo = bankCardComponent.getByUserIdAndCardNo( merCashDo.getUserId(), merCashDo.getCardNo()); if (bankCardDo != null) { withdrawDo.setBankId(bankCardDo.getId()); } withdrawDo.setUserId(merCashDo.getUserId()); withdrawDo.setStatus(2); withdrawDao.addWithdraw(withdrawDo); //修改用户可用余额 userComponent.updateAmount(-merCashDo.getSum(), 0.0, merCashDo.getUserId()); // 新增提现交易记录 FundrecordDo fundrecordDo = new FundrecordDo(); fundrecordDo.setUserId(merCashDo.getUserId()); fundrecordDo.setFundMode("平台取现"); fundrecordDo.setHandleSum(merCashDo.getSum()); fundrecordDo.setRecordTime(new Date()); fundrecordDo.setRemarks("平台取现金额[" + merCashDo.getSum() + "]元,手续费[" + merCashDo.getPoundage() + "]元"); fundrecordDo.setCost(merCashDo.getPoundage()); fundrecordDo.setIncome(0.00); fundrecordDo.setSpending(merCashDo.getSum() + merCashDo.getPoundage()); fundrecordComponnet.addFundrecord(fundrecordDo); return true; } }