package com.zteits.pay.job; import cn.jiguang.common.utils.StringUtils; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.clouds.common.utils.MD5Utils; import com.xiaoleilu.hutool.exceptions.ExceptionUtil; import com.xxl.job.core.biz.model.ReturnT; import com.xxl.job.core.context.XxlJobHelper; import com.xxl.job.core.handler.annotation.XxlJob; import com.zteits.clouds.api.apibase.bean.BizResult; import com.zteits.clouds.api.apibase.constants.BasicEnum; import com.zteits.clouds.api.dto.bill.vipcard.param.VipCardCustInfoIrainRequest; import com.zteits.clouds.api.dto.bill.vipcard.param.VipCardCustIrainRequest; import com.zteits.clouds.api.dto.park.dto.IrainPknoRelationDTO; import com.zteits.clouds.api.dto.park.param.IrainPknoRelationSelectRequest; import com.zteits.clouds.api.service.bill.vipcard.VipCardService; import com.zteits.clouds.api.service.park.IrainPknoRelationService; import com.zteits.pay.configuration.IrainConfigure; import com.zteits.pay.util.HttpClientTutorial; import jodd.util.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.*; /** * 从irain平台同步会员卡信息 * 按照停车场 先删除 后插入 * * Copyright: Copyright (c) 2017 ZTE-ITS * * @ClassName: VipCardGetFromIrainJob.java * @Description: * @version: v1.0.0 * @author: wangbiao * @date: 2018年1月8日 * Modification History: * Date Author Version Description *---------------------------------------------------------* * 2018年1月8日 wangbiao v1.0.0 创建 */ @Component public class VipCardGetFromIrainJob { private static final Logger logger = LoggerFactory.getLogger(VipCardGetFromIrainJob.class); @Autowired private VipCardService vipCardService; @Autowired private IrainPknoRelationService irainPknoRelationService; @XxlJob(value="VipCardGetFromIrainJob") public ReturnT execute(String... arg0) throws Exception { Integer insertCount =0; this.logger("---begin 同步会员卡信息 from irain to zteits"); IrainPknoRelationSelectRequest request = new IrainPknoRelationSelectRequest(); request.setSysCode("1001"); BizResult> rsList = irainPknoRelationService.selectIrainPknoRelation(request); if(rsList.isSuccess() && rsList.getData()!=null) { for(IrainPknoRelationDTO parkInfo :rsList.getData()) { this.logger("---begin "+parkInfo.getParkLotpkno()+"同步会员卡信息 from irain to zteits"); Integer deleteCount =0; if(StringUtils.isNotEmpty(parkInfo.getParkLotpkno())) { VipCardCustIrainRequest requestirain = new VipCardCustIrainRequest(); requestirain.setParkCode(parkInfo.getParkLotpkno()); requestirain.setSysCode(BasicEnum.SYS_CODE.getValue()); BizResult rsdel = vipCardService.deleteVipCardIrainByParkCode(requestirain); if(rsdel != null && rsdel.getData() != null){ deleteCount = rsdel.getData(); } this.logger("停车场:"+parkInfo.getParkLotpkno()+"同步会员卡之前,删除成功="+deleteCount+"条。"); } if(StringUtil.isNotBlank(parkInfo.getIrainPkno1())) { Map params = this.getPubParam4Irain(); params.put("park_code", parkInfo.getIrainPkno1()); String rs =""; try { rs = HttpClientTutorial.httpPostRequest(IrainConfigure.getIrain_url() + "/vehicle_auth/GetAuth", params); logger.info("irain 获取授权信息:" + JSONObject.toJSONString(rs)); List irainList = new ArrayList<>(); VipCardCustIrainRequest vipCardCustIrainRequest = new VipCardCustIrainRequest(); 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"); for(int i=0;i rsisert = vipCardService.insertVipCardIrain(vipCardCustIrainRequest); if(rsisert != null && rsisert.getData() != null){ insertCount = rsisert.getData(); } this.logger("停车场:"+parkInfo.getParkLotpkno()+"会员卡同步成功,插入条数="+insertCount+ "条。"); } } } catch (Exception e) { logger.info("irain 获取授权信息异常:"); this.logger(ExceptionUtil.stacktraceToString(e, 1000)); } } this.logger("---end "+parkInfo.getParkLotpkno()+"同步会员卡信息 from irain to zteits"); } }else{ this.logger("---未查询到停车场信息.."); } this.logger("---同步成功---insertCount="+insertCount); return insertCount >= 0? ReturnT.SUCCESS :ReturnT.FAIL; } private void logger(String msg){ XxlJobHelper.log(msg); logger.info(msg); } private Map getPubParam4Irain(){ Long time = System.currentTimeMillis(); String md5 = MD5Utils.enMD5(IrainConfigure.getIrain_appid() + IrainConfigure.getIrain_appsecret() + time); Map params = new HashMap<>(); params.put("appid", IrainConfigure.getIrain_appid()); params.put("sign", md5); params.put("timestamp", time); return params; } }