/**
* @Project: hehenian-biz-service
* @Package com.hehenian.biz.service.trade.impl
* @Title: BankCardServiceImpl.java
* @Description: TODO
* @author: liuzgmf
* @date 2014年12月3日 上午11:09:16
* @Copyright: HEHENIAN Co.,Ltd. All rights reserved.
* @version V1.0
*/
package com.hehenian.biz.service.account;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.hehenian.biz.common.account.IBankCardService;
import com.hehenian.biz.common.account.dataobject.AccountUserDo;
import com.hehenian.biz.common.account.dataobject.BankCardDo;
import com.hehenian.biz.common.base.result.IResult;
import com.hehenian.biz.common.base.result.ResultSupport;
import com.hehenian.biz.common.exception.BusinessException;
import com.hehenian.biz.component.account.IBankCardComponent;
import com.hehenian.biz.component.account.IUserComponent;
import com.hehenian.biz.facade.account.AccountType;
import com.hehenian.biz.facade.account.IAccountManagerService;
import com.hehenian.biz.facade.account.parameter.InParameter;
import com.hehenian.biz.facade.account.parameter.OutParameter;
/**
*
* @author: liuzgmf
* @date 2014年12月3日 上午11:09:16
*/
@Service("bankCardService")
public class BankCardServiceImpl implements IBankCardService {
private final Logger logger = Logger.getLogger(this.getClass());
private static Map<String, String> bankMap = new HashMap<String, String>();
@Autowired
private IBankCardComponent bankCardComponent;
@Autowired
private IUserComponent userComponent;
@Autowired
private IAccountManagerService accountManagerService;
static {
bankMap.put("ICBC", "工商银行");
bankMap.put("ABC", "农行");
bankMap.put("CMB", "招行");
bankMap.put("CCB", "建设银行");
bankMap.put("BCCB", "北京银行");
bankMap.put("BJRCB", "北京农村商业银行");
bankMap.put("BOC", "中国银行");
bankMap.put("BOCOM", "交通银行");
bankMap.put("CMBC", "民生银行");
bankMap.put("BOS", "上海银行");
bankMap.put("CBHB", "渤海银行");
bankMap.put("CEB", "光大银行");
bankMap.put("CIB", "兴业银行");
bankMap.put("CITIC", "中信银行");
bankMap.put("CZB", "浙商银行");
bankMap.put("GDB", "广发银行");
bankMap.put("HKBEA", "东亚银行");
bankMap.put("HXB", "华夏银行");
bankMap.put("HZCB", "杭州银行");
bankMap.put("NJCB", "南京银行");
bankMap.put("PINGAN", "平安银行");
bankMap.put("PSBC", "邮储银行");
bankMap.put("SDB", "深发银行");
bankMap.put("SPDB", "浦发");
bankMap.put("SRCB", "上海农村商业银行");
}
@Override
public IResult<?> updateCardInfo(Long userId) {
IResult<String> result = new ResultSupport<String>();
try {
List<BankCardDo> bankCardDoList = queryCardInfo(userId);
bankCardComponent.updateCardInfo(bankCardDoList);
result.setSuccess(true);
} catch (BusinessException e) {
result.setSuccess(false);
result.setErrorMessage(e.getMessage());
logger.error(e.getMessage());
} catch (Exception e) {
result.setSuccess(false);
result.setErrorMessage("操作失败,请稍后再试!");
logger.error(e.getMessage(), e);
}
return result;
}
/**
* @param userId
* @return
* @author: liuzgmf
* @date: 2014年12月3日上午11:13:39
*/
private List<BankCardDo> queryCardInfo(Long userId) {
InParameter inParameter = new InParameter();
AccountUserDo userDo = userComponent.getById(userId);
inParameter.getParams().put("UsrCustId", userDo.getUsrCustId() + "");
inParameter.getParams().put("CardId", "");
OutParameter outParameter = accountManagerService.queryCardInfo(inParameter, AccountType.CHINAPNR);
if (!outParameter.isSuccess()) {
throw new BusinessException("查询汇付银行卡信息失败!");
}
@SuppressWarnings("unchecked")
List<Map<String, Object>> usrCardInfoList = (List<Map<String, Object>>) outParameter.getParams().get(
"UsrCardInfolist");
if (usrCardInfoList == null || usrCardInfoList.size() == 0) {
return new ArrayList<BankCardDo>();
}
List<BankCardDo> bankCardDoList = new ArrayList<BankCardDo>();
for (Map<String, Object> map : usrCardInfoList) {
BankCardDo bankCardDo = new BankCardDo();
bankCardDo.setUserId(userId);
bankCardDo.setCardNo((String) map.get("CardId"));
bankCardDo.setCardUserName((String) map.get("UsrName"));
bankCardDo.setBankName(bankMap.get((String) map.get("BankId")));
bankCardDo.setCardStatus(1);// 1-已绑定
bankCardDo.setOpenBankId((String) map.get("BankId"));
String isDefault = (String) map.get("IsDefault");
bankCardDo.setIsDefault(("Y".equals(isDefault) ? 1 : 0));
String expressFlag = (String) map.get("expressFlag");
bankCardDo.setIsExpress(("Y".equals(expressFlag) ? 1 : 0));
bankCardDoList.add(bankCardDo);
}
return bankCardDoList;
}
@Override
public List<BankCardDo> queryByUserIdAndCardStatus(Long userId, Integer cardStatus) {
return bankCardComponent.queryByUserIdAndCardStatus(userId, cardStatus);
}
}