GetGuidePicJob.java
5.2 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
package com.zteits.park.job.guideJob;
import org.apache.commons.lang3.StringUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.clouds.common.cache.sys.SysCodeValueCacheUtil;
import com.clouds.common.constants.CodeValKindEnum;
import com.clouds.common.utils.ApprntSignUtil;
import com.xiaoleilu.hutool.util.CollectionUtil;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.context.XxlJobHelper;
import com.zteits.clouds.api.apibase.constants.AppPublicArgsEnum;
import com.zteits.clouds.api.apibase.constants.DataStatusEnum;
import com.zteits.park.domain.TdGGuideScreen;
import com.zteits.park.domain.TdGGuideScreenExample;
import com.zteits.park.mapper.TdGGuideScreenMapper;
import com.zteits.park.util.HttpClientTutorial;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 调用青岛接口获取诱导图片,每天凌晨执行一次
* 没啥用了,因为获取的图片有失效性,一会就没有了
*/
//@Component
public class GetGuidePicJob {
private static final Logger logger = LoggerFactory.getLogger(GetGuidePicJob.class);
@Autowired
private TdGGuideScreenMapper tdGGuideScreenMapper;
//@XxlJob(value = "getGuidePicJob")
public ReturnT<String> execute(String... params) throws Exception {
String param = XxlJobHelper.getJobParam();
if (StringUtils.isNotEmpty(param) && params == null) {
params = param.split(",");
}
//判断哪个区县的诱导需要调用青岛接口回显图片
Map<String, String> getGuideAddrMap = SysCodeValueCacheUtil.queryCodeValueAndNames(CodeValKindEnum.IN_OUT_PARK_SYNC_QD);
String guideCountryids = getGuideAddrMap.get("GUIDE_COUNTRYIDS");
if(StringUtils.isBlank(guideCountryids)){
log("未配置GUIDE_COUNTRYIDS,无需调用青岛获取诱导图片");
return ReturnT.SUCCESS;
}
String[] guideCountryIdArray = guideCountryids.split(",");
TdGGuideScreenExample example = new TdGGuideScreenExample();
example.createCriteria().andDataStatusEqualTo(DataStatusEnum.DATA_STATUS_VALID.value())
.andCountryIdIn(Arrays.stream(guideCountryIdArray).map(item->Long.valueOf(item)).collect(Collectors.toList()));
List<TdGGuideScreen> tdGGuideScreenList = tdGGuideScreenMapper.selectByExample(example);
if(CollectionUtil.isEmpty(tdGGuideScreenList)){
log("根据countryIds:"+guideCountryids+"没有查询到相关诱导信息");
return ReturnT.SUCCESS;
}
for (TdGGuideScreen tdGGuideScreen : tdGGuideScreenList){
//调用接口获取图片
String picPath = this.getGuidePicForQD(getGuideAddrMap,tdGGuideScreen.getGuideNo());
if(StringUtils.isBlank(picPath)){
continue;
}
//更新到数据库中
TdGGuideScreen record = new TdGGuideScreen();
record.setId(tdGGuideScreen.getId());
record.setPicturePath(picPath);
tdGGuideScreenMapper.updateByPrimaryKeySelective(record);
}
return ReturnT.SUCCESS;
}
/**
* 调用青岛接口获取诱导图片,一级,二级,三级诱导均是通过接口获取
* @param getGuideAddrMap
* @param guideNo
* @return
*/
private String getGuidePicForQD(Map<String, String> getGuideAddrMap, String guideNo) {
String appId = getGuideAddrMap.get("APP_ID");
String appSecret = getGuideAddrMap.get("APP_SECRET");
String url = getGuideAddrMap.get("URL");
Map<String, Object> returnMap = new HashMap<String, Object>();
returnMap.put(AppPublicArgsEnum.APP_ID.getCode(), appId);
returnMap.put(AppPublicArgsEnum.APP_SALT.getCode(), appSecret);
returnMap.put(AppPublicArgsEnum.APP_SIGN_TYPE.getCode(), "md5");
returnMap.put("guideNo",guideNo);
String rs = "";
try {
String appSign = ApprntSignUtil.signRequest(returnMap, appSecret, "md5");
returnMap.put("sign", appSign);
String req = JSON.toJSONString(returnMap);
log("诱导回显调用青岛请求参数:"+req);
rs = HttpClientTutorial.httpPostRequest(url+"/guideScreen/getLatestProgram",null, req);
log("诱导回显调用青岛响应信息"+rs);
JSONObject resultJson = JSONObject.parseObject(rs);
String code = resultJson.getString("code");
if("8888".equals(code)){
JSONArray jsonArray = resultJson.getJSONObject("data").getJSONArray("programs");
if(jsonArray.size()>0){
return jsonArray.getJSONObject(0).getString("imageUrl");
}
}
} catch (Exception e) {
e.printStackTrace();
log("诱导回显调用青岛数据错误");
}
return null;
}
private void log(String msg){
XxlJobHelper.log(msg);
logger.info(msg);
}
}