/* package com.zteits.pay.job; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import com.alibaba.fastjson.JSON; import com.clouds.common.config.IrainConfigure; import com.clouds.common.config.QDConfigure; import com.clouds.common.utils.ApprntSignUtil; import com.zteits.clouds.api.apibase.constants.AppPublicArgsEnum; 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.collections4.CollectionUtils; 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.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.OrderEnum; import com.zteits.clouds.api.dto.bill.vipcard.VipNoPushCardCustInfoDTO; import com.zteits.clouds.api.dto.bill.vipcard.param.VipPushRequest; import com.zteits.clouds.api.dto.park.dto.ParkingLotDTO; import com.zteits.clouds.api.service.bill.vipcard.VipCardService; 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="VipCardNoPushJob") @Component public class VipCardNoPushJob { private static final Logger logger = LoggerFactory.getLogger(VipCardNoPushJob.class); @Autowired private VipCardService vipCardService; */ /**推送状态 1:已推送 0:未推送*//* private static final Integer PUSH_STATE = 1; @Override public ReturnT execute(String... arg0) throws Exception { int updateCount =0; this.logger("---begin查询未推送irain购买会员卡信息"); VipPushRequest vipPushRequest = new VipPushRequest(); vipPushRequest.setSysCode("1001"); BizResult> rsList = vipCardService.queryNoPustVipCardCustInfo(vipPushRequest); this.logger("本次未推送条数="+(CollectionUtils.isNotEmpty(rsList.getData()) ? rsList.getData().size() :0)); if(rsList.isSuccess() && rsList.getData()!=null) { int index = 1; for(VipNoPushCardCustInfoDTO cardInfo :rsList.getData()) { if(cardInfo == null || StringUtils.isEmpty(cardInfo.getPlNo())){ continue; } ParkingLotDTO parkingLotDTO = ParkingLotCacheUtil.getParkLotByPlNo(cardInfo.getPlNo()); this.logger("begin开始推送第"+(index++)+"条,从缓存获取停车场信息="+JSONObject.toJSON(cardInfo)); */ /***购买会员卡通知中irian*//* if(parkingLotDTO!=null && parkingLotDTO.getSourceType().equals(OrderEnum.ORDER_SOURCE_TYPE_IN.value())) { updateCount = pushVip2Irain(updateCount, cardInfo); } if(parkingLotDTO!=null && parkingLotDTO.getSourceType().equals(OrderEnum.ORDER_SOURCE_TYPE_QD.value())) { updateCount = pushVip2QD(updateCount, cardInfo); } } }else{ this.logger("---本次没有要推送的会员卡信息.."); updateCount =1; } return updateCount > 0 ? ReturnT.SUCCESS :ReturnT.FAIL; } private int pushVip2QD(int updateCount, VipNoPushCardCustInfoDTO cardInfo) throws IOException { //订单类型:301-会员卡购买单,302-会 员卡续费 String orderType = ""; Map queryMap = getStringObjectMap(); queryMap.put("carNumber", cardInfo.getCarNumber()); queryMap.put("parkCode", cardInfo.getPlNo()); String querySign = ApprntSignUtil.signRequest(queryMap, QDConfigure.getSecret_key(), "md5", true); queryMap.put("sign", querySign); String reqStr1 = JSONObject.toJSONString(queryMap); System.out.println("请求参数"+reqStr1); String queryRst = ""; try { queryRst = HttpClientTutorial.httpPostRequest(QDConfigure.getUrl() + "/pay/vipCardList", reqStr1); } catch (Exception e) { } JSONObject jsobj = JSONObject.parseObject(queryRst); if (jsobj != null && jsobj.get("code").toString().equals("0")) { JSONObject jsobDate = JSONObject.parseObject(jsobj.get("data") + ""); JSONArray jSONArray = jsobDate.getJSONArray("cards"); JSONObject job = jSONArray.getJSONObject(0); Long irainEndTimeStr = job.getLong("expDate") * 1000; if (jSONArray.size() > 0 && cardInfo.getEffDate().getTime() < irainEndTimeStr) { orderType = "302"; } else { orderType = "301"; } } else { orderType = "301"; } Map returnMap = getStringObjectMap(); returnMap.put("cardId", cardInfo.getCardNo()); List> carList = new ArrayList>(); Map cars = new HashMap<>(); cars.put("carNumber", cardInfo.getCarNumber()); carList.add(cars); returnMap.put("carNumbers", JSON.toJSON(carList)); returnMap.put("orderType", orderType); returnMap.put("effDate", cardInfo.getEffDate().getTime()); returnMap.put("expDate", DateUtil.getOffsetDaysDate(cardInfo.getExpDate(), 1).getTime()); //2018-07-30 统一加一天 returnMap.put("parkCode", cardInfo.getPlNo()); String appSign = ApprntSignUtil.signRequest(returnMap, QDConfigure.getSecret_key(), "md5", true); returnMap.put("sign", appSign); String rs = ""; String reqStr = JSONObject.toJSONString(returnMap); System.out.println("请求参数" + reqStr); try { rs = HttpClientTutorial.httpPostRequest(QDConfigure.getUrl() + "/pay/vipCard", reqStr); } catch (Exception e) { } this.logger("会员卡购买青岛 返回:" + JSONObject.toJSONString(rs)); JSONObject rsobj = JSONObject.parseObject(rs); if (jsobj != null) { if (jsobj.get("code").toString().equals("0")) { this.logger("购买会员卡-青岛-成功 修改推送状态:"); updateCount = updatePushStatus(updateCount, cardInfo); } } return updateCount; } private int updatePushStatus(int updateCount, VipNoPushCardCustInfoDTO cardInfo) { VipPushRequest record = new VipPushRequest(); record.setSysCode("1001"); record.setId(cardInfo.getId()); record.setPushState(PUSH_STATE); */ /**更新推送状态.*//* this.logger("begin更新推送状态..." + JSONObject.toJSON(record)); BizResult result = vipCardService.updateByPrimaryKeySelective(record); this.logger("end更新推送状态...结果=" + JSONObject.toJSON(result)); if (result != null && result.getData() > 0) { updateCount = result.getData(); this.logger("id={" + cardInfo.getId() + "}已推送并更新成功.."); } return updateCount; } private Map getStringObjectMap() { Map queryMap = new TreeMap(); queryMap.put(AppPublicArgsEnum.APP_ID.getCode(), QDConfigure.getApp_id()); queryMap.put(AppPublicArgsEnum.APP_SALT.getCode(), QDConfigure.getSecret_key()); queryMap.put(AppPublicArgsEnum.APP_SIGN_TYPE.getCode(), "md5"); return queryMap; } */ /** * 会员卡通知irian * @Title: pushVip2Irain * @param @param updateCount * @param @param cardInfo * @param @return    设定文件 * @return int    返回类型 * @throws *//* private int pushVip2Irain(int updateCount, VipNoPushCardCustInfoDTO cardInfo) { */ /**购买会员卡*//* String park_code = IRainPkNoRelationCacheUtil.getIRainPayPkNoByPlNo(cardInfo.getPlNo()); this.logger("从缓存查询irain对应的 停车场编码="+park_code+",云平台plNo="+cardInfo.getPlNo()); if(StringUtil.isNotBlank(park_code)) { */ /**会员卡新增*//* if(Integer.valueOf(1).equals(cardInfo.getCardBuyType())) { */ /**新增之前先查询 irain系统该车是否已经购买过会员卡,如果已经购买走续费逻辑否则走购买逻辑**//* Map params = new HashMap<>(); IrainConfigure.irainRequestParams(params); 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) { JSONObject job = jSONArray.getJSONObject(0); //2018-09-10 注释 新增时候日期没有增加一天,无需比较日期直接加一天 //Long irainEndTimeStr = job.getLong("validetime") * 1000; //if(cardInfo.getEffDate().getTime() 0){ irainBeginTime = format.parse(format.format(new Date(irainBeginTimeStr))); } if(irainEndTimeStr > 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) { e.printStackTrace(); } } */ /*** * * @Title: pushEditVipCard4Irain * @Description: 会员卡续费 推送irain * @param @param updateCount * @param @param cardInfo * @param @param park_code * @param @return    设定文件 * @return int    返回类型 * @throws *//* private int pushEditVipCard4Irain(int updateCount, VipNoPushCardCustInfoDTO cardInfo,String park_code) { this.logger("---start---会员卡续费成功,开始通知irain="+park_code+",车牌号="+cardInfo.getCarNumber()+",结束日期="+cardInfo.getExpDate()); try { Map params = new HashMap<>(); IrainConfigure.irainRequestParams(params); params.put("vpl_number", cardInfo.getCarNumber());//+","+UUID.randomUUID( 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);// 结束时间 是 时间戳 */ /**增加时间区间字段,add by zwg*//* //特征日标识:-1:不限; 1:工作日; 2:非工作日;3:每天 if(cardInfo.getSpecialDayType()!=null && cardInfo.getSpecialDayType().intValue() == 1 ){ params.put("type", 3);// params.put("time_range", DateUtil.getDateString(cardInfo.getValidStartTime(),DateUtil.DATETIME)+","+DateUtil.getDateString(cardInfo.getValidEndTime(),DateUtil.DATETIME)); params.put("weeks","1,2,3,4,5,7"); } 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成功 修改推送状态"); updateCount = updatePushStatus(updateCount, cardInfo); } } } catch (UnsupportedEncodingException e) { this.logger("会员卡续费成功,结束通知irain失败:"+e.getMessage()); } this.logger("---end---会员卡续费成功,结束通知irain"); return updateCount; } */ /*** * * @Title: pushEditVipCard4Irain * @Description: 会员卡新增 推送irain * @param @param updateCount * @param @param cardInfo * @param @param park_code * @param @return    设定文件 * @return int    返回类型 * @throws *//* private int pushAddVipCard4Irain(int updateCount, VipNoPushCardCustInfoDTO cardInfo,String park_code) { this.logger("---start---购买会员成功,开始通知irain="+park_code+",车牌号="+cardInfo.getCarNumber()+",结束日期="+cardInfo.getExpDate()); try { Map params = new HashMap<>(); IrainConfigure.irainRequestParams(params); params.put("vpl_number", cardInfo.getCarNumber()+","); 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().toString().subSequence(0,10));// 车位编号号 是 */ /** * 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);// 结束时间 是 时间戳 */ /**增加时间区间字段,add by zwg*//* //特征日标识:-1:不限; 1:工作日; 2:非工作日;3:每天 if(cardInfo.getSpecialDayType()!=null && cardInfo.getSpecialDayType().intValue() == 1 ){ params.put("type", 3);// params.put("time_range", DateUtil.getDateString(cardInfo.getValidStartTime(),DateUtil.DATETIME)+","+DateUtil.getDateString(cardInfo.getValidEndTime(),DateUtil.DATETIME)); params.put("weeks","1,2,3,4,5,7"); } 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成功 修改推送状态:" ); updateCount = updatePushStatus(updateCount, cardInfo); } } } 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); } } */