/* * Powered By zhangyunhua * Web Site: http://www.hehenian.com * Since 2008 - 2014 */ package com.hehenian.biz.service.activity.impl; 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 com.hehenian.biz.common.account.dataobject.AccountUserDo; import com.hehenian.biz.common.activity.IActivityAuthService; import com.hehenian.biz.common.activity.dataobject.ActivityAuthDo; import com.hehenian.biz.common.activity.dataobject.ActivityOrderDo; 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.common.util.CalculateUtils; import com.hehenian.biz.component.account.IUserComponent; import com.hehenian.biz.component.activity.IActivityAuthComponent; import com.hehenian.biz.component.activity.IActivityOrderComponent; 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 zhangyunhua * @version 1.0 * @since 1.0 */ public class ActivityAuthServiceImpl implements IActivityAuthService { private final Logger logger = Logger.getLogger(this.getClass()); private long userId0; // 彩生活用户ID private long userId1; // 电信用户ID @Autowired private IAccountManagerService accountManagerService; @Autowired private IUserComponent userComponent; @Autowired private IActivityAuthComponent activityAuthComponent; @Autowired private IActivityOrderComponent activityOrderComponent; public void setUserId0(long userId0) { this.userId0 = userId0; } public void setUserId1(long userId1) { this.userId1 = userId1; } public ActivityAuthDo getById(int id) { return activityAuthComponent.getById(id); } public List<ActivityAuthDo> selectActivityAuth(Map<String, Object> parameterMap) { return activityAuthComponent.selectActivityAuth(parameterMap); } public int updateActivityAuthById(ActivityAuthDo newActivityAuthDo) { return activityAuthComponent.updateActivityAuthById(newActivityAuthDo); } public int deleteById(int id) { return activityAuthComponent.deleteById(id); } public ActivityAuthDo getByOrdId(ActivityAuthDo activityAuthDo) { activityAuthDo.setToUserId(activityAuthDo.getAuthType().intValue() == 0 ? userId0 : userId1);// 收费用户ID return activityAuthComponent.getByOrdId(activityAuthDo); } @Override public IResult<?> transferAuth(long ordId, long fromUserId) { IResult<String> result = new ResultSupport<String>(); try { ActivityOrderDo orderDo = activityOrderComponent.getById(ordId); if (orderDo == null) { throw new RuntimeException("活动订单[" + ordId + "]记录不存在!"); } ActivityAuthDo activityAuthDo = new ActivityAuthDo(); activityAuthDo.setOrdId(ordId); activityAuthDo.setFromUserId(fromUserId); double rate = orderDo.getRate() + 1; activityAuthDo.setAuthAmount(CalculateUtils.mul(orderDo.getInvestAmount(), rate));// 授权金额 activityAuthDo.setAuthType(orderDo.getOrdType());// 授权类型 activityAuthDo.setToUserId(activityAuthDo.getAuthType().intValue() == 0 ? userId0 : userId1);// 收费用户ID result = transferAuth(activityAuthDo); if (!result.isSuccess()) { return result; } // 新增活动授权记录 addActivityAuth(activityAuthDo); } 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 fromUserId * @param toUserId * @param authAmt * @author: liuzgmf * @date: 2014年10月31日上午10:42:38 */ private void addActivityAuth(ActivityAuthDo activityAuthDo) { activityAuthDo.setAuthTime(new Date()); activityAuthDo.setAuthStatus(2);// 授权中 activityAuthComponent.addActivityAuth(activityAuthDo); } /** * 转账授权 * * @param fromUserId * @param toUserId * @param authAmt * @param result * @return * @author: liuzgmf * @date: 2014年10月31日上午10:37:07 */ private IResult<String> transferAuth(ActivityAuthDo activityAuthDo) { InParameter inParameter = new InParameter(); inParameter.setRetUrl("transferAuthCb.do"); AccountUserDo fromUserDo = userComponent.getById(activityAuthDo.getFromUserId()); inParameter.getParams().put("UsrCustId", fromUserDo.getUsrCustId()); AccountUserDo toUserDo = userComponent.getById(activityAuthDo.getToUserId()); inParameter.getParams().put("InUsrCustId", toUserDo.getUsrCustId()); Double authAmt = activityAuthComponent.getAuthAmtByFromUserIdAndToUserId(activityAuthDo.getFromUserId(), activityAuthDo.getToUserId()); inParameter.getParams().put("AuthAmt", CalculateUtils.add(authAmt, activityAuthDo.getAuthAmount())); OutParameter outParameter = accountManagerService.direcTrfAuth(inParameter, AccountType.CHINAPNR); IResult<String> result = new ResultSupport<String>(); if (outParameter.isSuccess()) { result.setSuccess(true); result.setModel((String) outParameter.getParams().get("htmlText")); } else { result.setSuccess(false); result.setErrorMessage(outParameter.getRespDesc()); } return result; } @Override public IResult<?> transferAuthCb(long usrCustId, long inUsrCustId, double authAmt) { IResult<String> result = new ResultSupport<String>(); try { activityAuthComponent.updateTransferAuth(usrCustId, inUsrCustId, authAmt); result.setSuccess(true); } 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; } }