You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
3.4 KiB
93 lines
3.4 KiB
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<String, Object> 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<HighMerchantAccount> 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<Map<String, Object>> getStoreGasOilAmountByMer(Long merId) {
|
|
return merchantAccountMapper.selectStoreGasOilAmountByMer(merId);
|
|
}
|
|
}
|
|
|