VipCardNoPushJob.java
20.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
/*
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<String> execute(String... arg0) throws Exception {
int updateCount =0;
this.logger("---begin查询未推送irain购买会员卡信息");
VipPushRequest vipPushRequest = new VipPushRequest();
vipPushRequest.setSysCode("1001");
BizResult<List<VipNoPushCardCustInfoDTO>> 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<String, Object> 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<String, Object> returnMap = getStringObjectMap();
returnMap.put("cardId", cardInfo.getCardNo());
List<Map<String, String>> carList = new ArrayList<Map<String, String>>();
Map<String, String> 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<Integer> 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<String, Object> getStringObjectMap() {
Map<String, Object> queryMap = new TreeMap<String, Object>();
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<String, Object> 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()<irainEndTimeStr){
*/
/**比较本地与Irain结束时间.*//*
// cardInfo.setExpDate(DateUtil.getOffsetDaysDate(cardInfo.getExpDate(), 1));
//this.logger("已经购买结束日期增加一天,结束日期="+cardInfo.getExpDate());
//BeanUtils.copyProperties(cardInfoCompare,cardInfo);
*/
/***已经线下购买过会员卡 走续费逻辑*//*
//}
cardInfo.setExpDate(DateUtil.getOffsetDaysDate(cardInfo.getExpDate(), 1));
this.logger("已经线下购买过会员卡走续费逻辑,结束日期增加一天,结束日期="+cardInfo.getExpDate());
updateCount = pushEditVipCard4Irain(updateCount, cardInfo,park_code);
}else {
cardInfo.setExpDate(DateUtil.getOffsetDaysDate(cardInfo.getExpDate(), 1));
this.logger("线下没有够没过会员卡 走购买逻辑,结束日期增加一天,结束日期="+cardInfo.getExpDate());
*/
/**线下没有够没过会员卡 走购买逻辑**//*
updateCount = pushAddVipCard4Irain(updateCount, cardInfo,park_code);
}
}
}
} catch (Exception e) {
logger.info("irain 获取授权信息:" + e);
}
}
*/
/**会员卡续费**//*
else if(Integer.valueOf(2).equals(cardInfo.getCardBuyType())) {
if(cardInfo != null && cardInfo.getExpDate() != null){
cardInfo.setExpDate(DateUtil.getOffsetDaysDate(cardInfo.getExpDate(), 1));
this.logger("直接续费--结束日期增加一天,结束日期="+cardInfo.getExpDate());
}
updateCount = pushEditVipCard4Irain(updateCount, cardInfo,park_code);
}
}
//1:购卡
return updateCount;
}
*/
/**
* 重新计算开始和结束时间.<br/>
* @param jSONArray
* @param cardInfo
* @return
* 2018年1月10日 wangfs.<br/>
*//*
private void compareStartTime(JSONArray jSONArray,VipNoPushCardCustInfoDTO 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(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<String, Object> 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<String,Object> 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);
}
}
*/