/*
* Powered By zhangyunhua
* Web Site: http://www.hehenian.com
* Since 2008 - 2014
*/
package com.hehenian.biz.service.activity.impl;
import java.util.Calendar;
import java.util.Date;
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.dataobject.AccountUserDo;
import com.hehenian.biz.common.activity.IActivityTradeService;
import com.hehenian.biz.common.activity.dataobject.ActivityOrderDo;
import com.hehenian.biz.common.activity.dataobject.ActivityTradeDo;
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.IUserComponent;
import com.hehenian.biz.component.activity.IActivityOrderComponent;
import com.hehenian.biz.component.activity.IActivityTradeComponent;
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;
import com.hehenian.biz.facade.colorlife.IColorFeeFacade;
/**
* @author zhangyunhua
* @version 1.0
* @since 1.0
*/
@Service("activityTradeService")
public class ActivityTradeServiceImpl implements IActivityTradeService {
private final Logger logger = Logger.getLogger(this.getClass());
@Autowired
private IActivityTradeComponent activityTradeComponent;
@Autowired
private IAccountManagerService accountManagerService;
@Autowired
private IUserComponent userComponent;
@Autowired
private IActivityOrderComponent activityOrderComponent;
@Autowired
private IColorFeeFacade colorFeeFacade;
/**
* 根据ID 查询
*
* @parameter id
*/
public ActivityTradeDo getById(int id) {
return activityTradeComponent.getById(id);
}
/**
* 根据条件查询列表
*/
public List<ActivityTradeDo> selectActivityTrade(Map<String, Object> parameterMap) {
return activityTradeComponent.selectActivityTrade(parameterMap);
}
/**
* 更新
*/
public int updateActivityTradeById(ActivityTradeDo newActivityTradeDo) {
return activityTradeComponent.updateActivityTradeById(newActivityTradeDo);
}
/**
* 新增
*/
public int addActivityTrade(ActivityTradeDo newActivityTradeDo) {
return activityTradeComponent.addActivityTrade(newActivityTradeDo);
}
/**
* 删除
*/
public int deleteById(int id) {
return activityTradeComponent.deleteById(id);
}
@Override
public IResult<?> addActivityTrades(long ordId) {
IResult<String> result = new ResultSupport<String>();
try {
activityTradeComponent.addActivityTrades(ordId);
} catch (BusinessException e) {
result.setSuccess(false);
result.setErrorMessage(e.getMessage());
logger.error(e.getMessage(), e);
} catch (Exception e) {
result.setSuccess(false);
result.setErrorMessage("操作失败,请稍后再试!");
logger.error(e.getMessage(), e);
}
return result;
}
@Override
public IResult<?> transfer() {
IResult<String> result = new ResultSupport<String>();
try {
Date tradeTime = org.apache.commons.lang.time.DateUtils.addDays(new Date(), 1);
List<ActivityTradeDo> tradeDoList = activityTradeComponent
.queryNoTransferTrades(org.apache.commons.lang.time.DateUtils.truncate(tradeTime, Calendar.DATE));
for (ActivityTradeDo activityTradeDo : tradeDoList) {
transfer(activityTradeDo);
}
} catch (BusinessException e) {
result.setSuccess(false);
result.setErrorMessage(e.getMessage());
logger.error(e.getMessage(), e);
} catch (Exception e) {
result.setSuccess(false);
result.setErrorMessage("操作失败,请稍后再试!");
logger.error(e.getMessage(), e);
}
return result;
}
/**
* 转账
*
* @param activityTradeDo
* @return
* @author: liuzgmf
* @date: 2014年11月1日下午2:25:09
*/
private boolean transfer(ActivityTradeDo activityTradeDo) {
try {
InParameter inParameter = new InParameter();
inParameter.setOrdId(activityTradeDo.getTradeId() + "");
AccountUserDo fromUserDo = userComponent.getById(activityTradeDo.getFromUserId());
inParameter.getParams().put("UsrCustId", fromUserDo.getUsrCustId());
AccountUserDo toUserDo = userComponent.getById(activityTradeDo.getToUserId());
inParameter.getParams().put("InUsrCustId", toUserDo.getUsrCustId());
inParameter.getParams().put("TransAmt", activityTradeDo.getAmount());
OutParameter outParameter = accountManagerService.direcTrf(inParameter, AccountType.CHINAPNR);
if (!outParameter.isSuccess()) {
logger.error("扣款记录[" + activityTradeDo.getTradeId() + "]转账失败:" + outParameter.getRespDesc());
return false;
}
// 转账
activityTradeDo.setRealAmount(Double.parseDouble((String) outParameter.getParams().get("TransAmt")));// 转账金额
activityTradeComponent.updateActivityTradeTransfer(activityTradeDo);
// 通知彩生活
ActivityOrderDo orderDo = activityOrderComponent.getById(activityTradeDo.getOrdId());
colorFeeFacade.sendFeeStatus(fromUserDo.getColorid(), orderDo.getOrdNo(), activityTradeDo.getAmount(),
new Date(), 12, "1", "扣款成功");
return true;
} catch (Exception e) {
logger.error(e.getMessage(), e);
return false;
}
}
}