package com.hai.service.impl; import com.hai.common.exception.ErrorCode; import com.hai.common.exception.ErrorHelp; import com.hai.common.exception.SysCode; import com.hai.common.utils.BankNumberUtil; import com.hai.dao.HighMerchantAccountMapper; import com.hai.entity.HighMerchant; import com.hai.entity.HighMerchantAccount; import com.hai.entity.HighMerchantAccountExample; import com.hai.entity.HighMerchantStoreAccount; import com.hai.model.HighMerchantModel; import com.hai.model.HighMerchantStoreModel; import com.hai.service.HighMerchantAccountService; import com.hai.service.HighMerchantService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.Map; @Service("merchantAccountService") public class HighMerchantAccountServiceImpl implements HighMerchantAccountService { @Resource private HighMerchantAccountMapper merchantAccountMapper; @Resource private HighMerchantService merchantService; @Override public void editMerchantAccount(HighMerchantAccount merchantAccount) { if (merchantAccount.getId() == null) { merchantAccount.setAccountNo(BankNumberUtil.getBrankNumber("6")); merchantAccount.setCreateTime(new Date()); merchantAccount.setUpdateTime(new Date()); merchantAccount.setStatus(1); merchantAccountMapper.insert(merchantAccount); } else { merchantAccount.setUpdateTime(new Date()); merchantAccountMapper.updateByPrimaryKey(merchantAccount); } } @Override @Transactional(propagation= Propagation.REQUIRES_NEW) public void recharge(Long merId, BigDecimal amount, Map otherParam) { // 查询商户 HighMerchant merchant = merchantService.getDetailById(merId); if (merchant == null) { throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "未知的商户"); } // 是否开通了账户 HighMerchantAccount account = getStoreAccountDetail(merId); if (account == null) { account = new HighMerchantAccount(); account.setMerId(merId); account.setAmounts(new BigDecimal("0")); } // 变更前金额 BigDecimal beforeAmount = account.getAmounts(); // 计算金额 account.setAmounts(account.getAmounts().add(amount)); // 变更后金额 BigDecimal afterAmount = account.getAmounts(); editMerchantAccount(account); } @Override public HighMerchantAccount getStoreAccountDetail(Long merId) { HighMerchantAccountExample example = new HighMerchantAccountExample(); example.createCriteria().andStatusEqualTo(1).andMerIdEqualTo(merId); List list = merchantAccountMapper.selectByExample(example); if (list.size() > 0) { return list.get(0); } return null; } @Override public BigDecimal countMerGasOilAmount(Long merId) { return merchantAccountMapper.countMerGasOilAmount(merId); } @Override public List> getStoreGasOilAmountByMer(Long merId) { return merchantAccountMapper.selectStoreGasOilAmountByMer(merId); } }