VipOldCardNoPushJob.java 13.1 KB
//package com.zteits.pay.job;
//
//
//import java.io.UnsupportedEncodingException;
//import java.text.ParseException;
//import java.text.SimpleDateFormat;
//import java.util.Date;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//import java.util.UUID;
//
//import org.eclipse.jetty.util.StringUtil;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//
//import org.apache.commons.lang3.StringUtils;
//import com.alibaba.fastjson.JSONArray;
//import com.alibaba.fastjson.JSONObject;
//import com.clouds.common.cache.park.IRainPkNoRelationCacheUtil;
//import com.clouds.common.cache.park.ParkingLotCacheUtil;
//import com.clouds.common.utils.DateUtil;
//import com.clouds.common.utils.MD5Utils;
//import com.xxl.job.core.biz.model.ReturnT;
//
////import com.xxl.job.core.context.XxlJobHelper;
//import com.zteits.clouds.api.apibase.bean.BizResult;
//import com.zteits.clouds.api.apibase.constants.IrainConfigure;
//import com.zteits.clouds.api.apibase.constants.OrderEnum;
//import com.zteits.clouds.api.dto.bill.vipcard.VipNoPushCardCustInfoDTO;
//import com.zteits.clouds.api.dto.park.dto.ParkingLotDTO;
//import com.zteits.clouds.api.dto.pay.TdBParkCardCustDTO;
//import com.zteits.clouds.api.dto.pay.param.AppPayCardOrderRequest;
//import com.zteits.clouds.api.dto.pay.param.TdBParkCardCustRequest;
//import com.zteits.clouds.api.service.pay.TdBParkCardCustService;
//import com.zteits.pay.util.HttpClientTutorial;
//
///**
// * 会员卡同步第三方
// * 目前只写同步irain
// *
// * Copyright: Copyright (c) 2017  ZTE-ITS
// *
// * @ClassName: VipCardNoPushJob.java
// * @Description:
// * @version: v1.0.0
// * @author: wangbiao
// * @date: 2017年11月23日
// * Modification History:
// *    Date         Author          Version         Description
// *---------------------------------------------------------*
// * 2017年11月23日      wangbiao        v1.0.0          创建
// */
//@XxlJob(value="VipOldCardNoPushJob")
//@Component
//public class VipOldCardNoPushJob {
//	private static final Logger logger = LoggerFactory.getLogger(VipOldCardNoPushJob.class);
//	@Autowired
//	private TdBParkCardCustService tdBParkCardCustService;
//	/**推送状态 2:已推送 1:未推送*/
//	private static final Integer PUSH_STATE = 2;
//	@Override
//	public ReturnT<String> execute(String... arg0) throws Exception {
//
//		int updateCount =0;
//		this.logger("---begin查询未推送irain购买会员卡信息");
//		AppPayCardOrderRequest request = new AppPayCardOrderRequest();
//		request.setSysCode("1001");
//		BizResult<List<TdBParkCardCustDTO>> rsList = tdBParkCardCustService.queryCarnNoPush(request);
//		this.logger("---endbegin查询未推送irain购买会员卡信息,结果="+JSONObject.toJSON(rsList));
//		if(rsList.isSuccess() && rsList.getData()!=null) {
//			for(TdBParkCardCustDTO cardInfo :rsList.getData()) {
//				ParkingLotDTO parkingLotDTO = ParkingLotCacheUtil.getParkLotByPlNo(cardInfo.getPlNo());
//				/***购买会员卡通知中irian*/
//				if(parkingLotDTO!=null && parkingLotDTO.getSourceType()==OrderEnum.ORDER_SOURCE_TYPE_IN.value()) {
//					updateCount = pushVip2Irain(updateCount, cardInfo);
//				}
//			}
//		}else{
//			this.logger("---本次没有要推送的会员卡信息..");
//			updateCount =1;
//		}
//		return updateCount > 0 ? ReturnT.SUCCESS :ReturnT.FAIL;
//	}
//	/**
//	 * 会员卡通知irian
//	* @Title: pushVip2Irain
//	* @Description: TODO(这里用一句话描述这个方法的作用)
//	* @param @param updateCount
//	* @param @param cardInfo
//	* @param @return    设定文件
//	* @return int    返回类型
//	* @throws
//	 */
//	private int pushVip2Irain(int updateCount, TdBParkCardCustDTO cardInfo) {
//		/**购买会员卡*/
//		String park_code = IRainPkNoRelationCacheUtil.getIRainPayPkNoByPlNo(cardInfo.getPlNo());
//		this.logger("查询irain对应的停车场编码="+park_code+"。");
//		if(StringUtil.isNotBlank(park_code)) {
//			if(Integer.valueOf(1).equals(cardInfo.getOptType())) {
//				/**新增之前先查询 irain系统该车是否已经购买过会员卡,如果已经购买走续费逻辑否则走购买逻辑**/
//				Map<String, Object> params = this.getPubParam4Irain();
//				params.put("vpl_number", cardInfo.getCarNumber());
//				params.put("park_code", park_code);
//		 		String rs ="";
//		 		try {
//		 			 rs = HttpClientTutorial.httpPostRequest(IrainConfigure.getIrain_url() + "/vehicle_auth/GetAuth", params);
//		 			logger.info("irain 获取授权信息:" + JSONObject.toJSONString(rs));
//
//		 			JSONObject jsobj = JSONObject.parseObject(rs);
//		 			if (jsobj != null) {
//		 				if (!jsobj.get("status").toString().equals("0")) {
//		 					JSONObject jsobDate = JSONObject.parseObject(jsobj.get("data")+"");
//		 					JSONArray  jSONArray  = jsobDate.getJSONArray("list");
//
//		 					if(jSONArray.size()>0) {
//
//		 						/**比较本地与Irain结束时间.*/
//		 						TdBParkCardCustDTO cardInfoCompare = this.compareStartTime(jSONArray,cardInfo);
//		 						if(cardInfoCompare != null && cardInfoCompare.getExpDate() != null){
//		 							cardInfoCompare.setExpDate(DateUtil.getOffsetDaysDate(cardInfoCompare.getExpDate(), 1));
//		 						}
//		 						/***已经线下购买过会员卡 走续费逻辑*/
//		 						updateCount = pushEditVipCard4Irain(updateCount, cardInfoCompare,park_code);
//		 					}else {
//		 						/**线下没有够没过会员卡 走购买逻辑**/
//		 						updateCount = pushAddVipCard4Irain(updateCount, cardInfo, park_code);
//		 					}
//		 				}
//		 			}
//
//		 		} catch (Exception e) {
//		 			logger.info("irain 获取授权信息:" + e);
//		 		}
//			}
//			/**会员卡续费**/
//			else if(Integer.valueOf(2).equals(cardInfo.getOptType())) {
//				updateCount =  pushEditVipCard4Irain(updateCount,cardInfo, park_code);
//			}
//		}
//		//1:购卡
//		return updateCount;
//	}
//
//	/**
//	 * 重新计算开始和结束时间.<br/>
//	 * @param jSONArray
//	 * @param cardInfo
//	 * @return
//	 * 2018年1月10日  wangfs.<br/>
//	 */
//	private TdBParkCardCustDTO compareStartTime(JSONArray  jSONArray,TdBParkCardCustDTO cardInfo){
//		try {
//				for(int i=0;i<jSONArray.size();i++){
//			        JSONObject job = jSONArray.getJSONObject(i);
//			        //irain开始时间
//			        Long irainBeginTimeStr = job.getLong("validbtime") * 1000;
//			        //irain结束时间
//			        Long irainEndTimeStr = job.getLong("validetime") * 1000;
//			        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
//			        //1.irain开始时间
//			        Date  irainBeginTime = null;
//			        //2.irain结束时间
//			        Date  irainEndTime = null;
//			        if(irainBeginTimeStr > 0){
//							irainBeginTime = format.parse(format.format(new Date(irainBeginTimeStr)));
//			        }
//			        if(irainBeginTimeStr > 0){
//			        	irainEndTime = format.parse(format.format(new Date(irainEndTimeStr)));
//			        }
//
//			        /** 生效时间 */
//			    	 Date effDate = null ;
//			    	 if(cardInfo.getEffDate() != null){
//			    		 effDate = format.parse(format.format(cardInfo.getEffDate()));
//			    	 }
//
//			        /**
//			         * 情况1:
//			         *  Irain    开始时间              结束时间
//			         *           |_________________________|
//			         *  本地开始时间                  |______________| 本地开始时间在 Irain 开始结束范围之内 取本地开始时间 否则开始时间去Irain开始时间
//			         */
//			        if(effDate != null && irainBeginTime != null && irainEndTime != null){
//			        	if(effDate.getTime() >= irainBeginTime.getTime() &&  effDate.getTime() <= irainEndTime.getTime() ){
//			        		this.logger("车牌号="+cardInfo.getCarNumber()+"本地开始时间在irain 开始和结束时间之内,取irain开始时间");
//			        		cardInfo.setEffDate(irainBeginTime);
//			        	}
//			        }
//				}
//		} catch (ParseException e) {
//		}
//
//		return  cardInfo;
//
//
//	}
//	private int pushEditVipCard4Irain(int updateCount,TdBParkCardCustDTO cardInfo, String park_code) {
//		this.logger("---start---会员卡续费成功,开始通知irain");
//		try {
//			Map<String, Object> params = this.getPubParam4Irain();
//			params.put("vpl_number", cardInfo.getCarNumber());
//			params.put("serial_number",UUID.randomUUID());// cardInfo.getCustCardNo());
//			params.put("park_code", park_code);
//			params.put("start_time", cardInfo.getEffDate().getTime()/1000);// 起始时间 是 时间戳
//			params.put("end_time",cardInfo.getExpDate().getTime()/1000);// 结束时间 是 时间戳
//			String rs = "";
//			this.logger("会员卡续费通知irain  请求:"+JSONObject.toJSONString(params));
//			for (int i = 0; i < 3; i++) {
//				if (StringUtils.isBlank(rs)) {
//					rs = HttpClientTutorial.httpPostRequest(IrainConfigure.getIrain_url() + "/vehicle_auth/ModifyAuthPeroid",params);
//				}
//			}
//			this.logger("会员卡续费通知irain  返回:"+JSONObject.toJSONString(rs));
//			JSONObject jsobj = JSONObject.parseObject(rs);
//			if (jsobj != null) {
//				if (!jsobj.get("status").toString().equals("0")) {
//					this.logger("会员卡续费通知irain成功  修改推送状态");
//
//					TdBParkCardCustRequest tdBParkCardCustRequest = new TdBParkCardCustRequest();
//					tdBParkCardCustRequest.setPushState(PUSH_STATE);
//					tdBParkCardCustRequest.setId(cardInfo.getId());
//					tdBParkCardCustRequest.setSysCode("1001");
//					logger.info("续费会员卡通知irain成功  修改推送状态:" + JSONObject.toJSONString(tdBParkCardCustRequest));
//					BizResult<Integer>  result = tdBParkCardCustService.updateCardCust(tdBParkCardCustRequest);
//					if(result !=null && result.getData()>0){
//						updateCount = result.getData();
//						this.logger("id={"+cardInfo.getId()+"}已推送并更新成功..");
//					}
//					logger.info("续费会员卡通知irain成功  修改推送状态返回:" + JSONObject.toJSONString(result));
//				}
//			}
//		} catch (UnsupportedEncodingException e) {
//			this.logger("会员卡续费成功,结束通知irain失败:"+e.getMessage());
//		}
//		this.logger("---end---会员卡续费成功,结束通知irain");
//		return updateCount;
//	}
//
//
//	private int pushAddVipCard4Irain(int updateCount, TdBParkCardCustDTO cardInfo, String park_code) {
//		this.logger("---start---购买会员成功,开始通知irain");
//		try {
//			Map<String, Object> params = this.getPubParam4Irain();
//			params.put("vpl_number", cardInfo.getCarNumber()+","+UUID.randomUUID());
//			params.put("serial_number",UUID.randomUUID());// cardInfo.getCustCardNo());
//			params.put("park_code", park_code);
//			params.put("user_name", cardInfo.getCarNumber());// 用户ming
//			params.put("park_no", UUID.randomUUID());// 车位编号号 是
//			/**
//			 * 2 : 黑名单 3: 授权收费一 4: 授权收费二 5: 月租车 6:商户优惠车 7: 协议单位优惠车 8:员工车 9:免费车 10:内部车 15:军警车
//			 */
//			params.put("type", 5);//
//			params.put("begin_time", cardInfo.getEffDate().getTime()/1000);// 起始时间 是 时间戳
//			params.put("end_time",cardInfo.getExpDate().getTime()/1000);// 结束时间 是 时间戳
//			String rs = "";
//			for (int i = 0; i < 3; i++) {
//				if (StringUtils.isBlank(rs)) {
//					rs = HttpClientTutorial.httpPostRequest(IrainConfigure.getIrain_url() + "/vehicle_auth/Issued",params);
//				}
//			}
//			this.logger("会员卡购买通知irain  返回:"+JSONObject.toJSONString(rs));
//			JSONObject jsobj = JSONObject.parseObject(rs);
//			if (jsobj != null) {
//				if (!jsobj.get("status").toString().equals("0")) {
//					this.logger("购买会员卡通知irain成功  修改推送状态:" );
//					TdBParkCardCustRequest tdBParkCardCustRequest = new TdBParkCardCustRequest();
//					tdBParkCardCustRequest.setPushState(PUSH_STATE);
//					tdBParkCardCustRequest.setId(cardInfo.getId());
//					tdBParkCardCustRequest.setSysCode("1001");
//					logger.info("购买会员卡通知irain成功  修改推送状态:" + JSONObject.toJSONString(tdBParkCardCustRequest));
//					BizResult<Integer>  result = tdBParkCardCustService.updateCardCust(tdBParkCardCustRequest);
//					logger.info("购买会员卡通知irain成功  修改推送状态返回:" + JSONObject.toJSONString(result));
//
//					if(result !=null && result.getData()>0){
//						updateCount = result.getData();
//						this.logger("id={"+cardInfo.getId()+"}已推送并更新成功..");
//					}
//				}
//			}
//		} catch (UnsupportedEncodingException e) {
//			this.logger("会员卡购买成功,结束通知irain失败:"+e.getMessage());
//		}
//		this.logger("---end---购买会员成功,结束通知irain");
//		return updateCount;
//	}
//
//	private void logger(String msg){
//		XxlJobHelper.log(msg);
//		logger.info(msg);
//	}
//
//	private Map<String, Object> getPubParam4Irain(){
//		Long time = System.currentTimeMillis();
//		String md5 = MD5Utils.enMD5(IrainConfigure.getIrain_appid() + IrainConfigure.getIrain_appsecret() + time);
//		Map<String, Object> params = new HashMap<>();
//		params.put("appid", IrainConfigure.getIrain_appid());
//		params.put("sign", md5);
//		params.put("timestamp", time);
//		return params;
//	}
//
//}