嗨森逛服务
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.
hai-server/hai-service/src/main/java/com/hai/service/impl/HighMerchantAccountServiceI...

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);
}
}