VipCardGetFromIrainJob.java 6.95 KB
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<String> execute(String... arg0) throws Exception {
		Integer insertCount =0;
		this.logger("---begin  同步会员卡信息 from irain to zteits");
		IrainPknoRelationSelectRequest request = new IrainPknoRelationSelectRequest();
		request.setSysCode("1001");
		BizResult<List<IrainPknoRelationDTO>>  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<Integer>  rsdel = vipCardService.deleteVipCardIrainByParkCode(requestirain);
					if(rsdel != null && rsdel.getData() != null){
						deleteCount = rsdel.getData();
					}
					this.logger("停车场:"+parkInfo.getParkLotpkno()+"同步会员卡之前,删除成功="+deleteCount+"条。");
				}
				if(StringUtil.isNotBlank(parkInfo.getIrainPkno1())) {
					Map<String, Object> 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<VipCardCustInfoIrainRequest>  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<jSONArray.size();i++){
									VipCardCustInfoIrainRequest vipCardCustInfoIrainRequest = new VipCardCustInfoIrainRequest();
									JSONObject job = jSONArray.getJSONObject(i);

									vipCardCustInfoIrainRequest.setParkCode(parkInfo.getParkLotpkno());
									vipCardCustInfoIrainRequest.setCarNumber(job.getString("vpl_number"));
									vipCardCustInfoIrainRequest.setCardSequence(job.getString("card_sequence"));
									vipCardCustInfoIrainRequest.setCustName(job.getString("username"));
									vipCardCustInfoIrainRequest.setCardNo(job.getString("cardno"));
									vipCardCustInfoIrainRequest.setPhone(job.getString("phone"));
									vipCardCustInfoIrainRequest.setAddress(job.getString("address"));
									vipCardCustInfoIrainRequest.setBalance(job.getLong("balance"));
									vipCardCustInfoIrainRequest.setEffDate(new Date(job.getLong("validbtime")*1000));
									vipCardCustInfoIrainRequest.setExpDate(new Date(job.getLong("validetime")*1000));
									vipCardCustInfoIrainRequest.setDetailType(job.getInteger("detail_type"));
									vipCardCustInfoIrainRequest.setEmail(job.getString("email"));
									vipCardCustInfoIrainRequest.setInArea(job.getString("in_area"));
									vipCardCustInfoIrainRequest.setOutArea(job.getString("out_area"));
									vipCardCustInfoIrainRequest.setCapAmount(job.getInteger("capamount"));
									vipCardCustInfoIrainRequest.setCapCycle(job.getInteger("cap_cycle"));
									vipCardCustInfoIrainRequest.setCapRule(job.getInteger("cap_rule"));
									vipCardCustInfoIrainRequest.setDiscount(job.getInteger("discount"));
									irainList.add(vipCardCustInfoIrainRequest);
								}
								vipCardCustIrainRequest.setIrainList(irainList);
								vipCardCustIrainRequest.setSysCode("1001");
								BizResult<Integer>  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<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;
	}

}