/** * @Project: hehenian-biz-service * @Package com.hehenian.biz.facade.colorlife * @Title: FeeCallbackImpl.java * @Description: TODO * @author: zhangyunhmf * @date 2014年10月30日 上午11:06:18 * @Copyright: HEHENIAN Co.,Ltd. All rights reserved. * @version V1.0 */ package com.hehenian.biz.facade.colorlife; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.Date; import java.util.LinkedHashMap; import java.util.Map; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; import com.hehenian.biz.common.activity.dataobject.ActivityConfig; import com.hehenian.biz.common.util.CalculateUtils; /** * * @author: zhangyunhmf * @date 2014年10月30日 上午11:06:18 */ @Component("colorFeeFacade") public class ColorFeeFacadeImpl implements IColorFeeFacade{ private static final Logger logger = Logger.getLogger(ColorOrderFacadeImpl.class); @Autowired private ActivityConfig activityConfig; @Autowired private ThreadPoolTaskExecutor taskExecutor; /* * 数据:{ mobile: orderSn: orderAmount: orderSuccessTime: orderPaySn: } * * (no-Javadoc) <p>Title: sendFeeStatus</p> <p>Description: </p> * * @param colorUserId * * @param orderSN * * @param feeAmount * * @param feeTime * * @param month * * @param status * * @param remark * * @return * * @see * com.hehenian.biz.facade.colorlife.IColorFeeFacade#sendFeeStatus(long, * java.lang.String, double, java.util.Date, int, java.lang.String, * java.lang.String) */ @Override public int sendFeeStatus(long colorUserId, String orderSN, double feeAmount, Date feeTime, int month, String status, String remark) { int retVal = checkPara(colorUserId, orderSN, feeAmount, feeTime, month, status); if( 0 != retVal){return retVal;} final Map<String, String> parameterMap = new LinkedHashMap<String, String>(); // 转unix 时间戳 long feeDeductTime = feeTime.getTime() / 1000; parameterMap.put("userId", String.valueOf(colorUserId)); parameterMap.put("orderSN", orderSN); parameterMap.put("feeAmount", CalculateUtils.round(feeAmount)); parameterMap.put("feeTime", String.valueOf(feeDeductTime)); // parameterMap.put("month",String.valueOf(month)); parameterMap.put("status", status); String urlEncodeRemark; try { urlEncodeRemark = URLEncoder.encode(remark, "UTF-8"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); urlEncodeRemark = remark; } parameterMap.put("remark", urlEncodeRemark); try { taskExecutor.execute(new Runnable() { public void run() { try { String jsonString = ColorLifeManager.callColorOperate( activityConfig.getColorServiceURL(), activityConfig.getPaySyntonyURL(), activityConfig.getColorKey(), activityConfig.getColorSignSecret(), parameterMap); parameterMap.clear(); } catch (Exception e) { logger.error("投资回调彩生活的扣费回调通知接口失败"); logger.error(e); } } }); return 0; // String jsonString = ColorLifeManager.callColorOperate( // activityConfig.getColorServiceURL(), // activityConfig.getPaySyntonyURL(), // activityConfig.getColorKey(), // activityConfig.getColorSignSecret(), parameterMap); // return ColorLifeReturnProcessor.parse(jsonString); } catch (Exception e) { logger.error("投资回调彩生活的扣费回调通知接口失败"); logger.error(e); } return 1; } /** * 检查参数合法性 * @param colorUserId * @param orderSN * @param orderAmount * @param orderSubmitTime * @param investStatus * @return * @author: zhangyunhmf * @date: 2014年10月30日下午12:37:44 */ private int checkPara(long colorUserId, String orderSN, double feeAmount, Date feeTime, int month, String status) { if(colorUserId <= 0){ return 2; } if(null == orderSN || "".equals(orderSN)){ return 2; } if(feeAmount <= 0){ return 2; } if(null == feeTime ){ return 2; } if(null == status){ return 2; } if( month <1 || month > 12){ return 2; } return 0; } }