| | |
| | | package com.fzzy.push.whhpjl; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.fzzy.api.data.ApiParam; |
| | | import com.fzzy.api.data.PushProtocol; |
| | | import com.fzzy.api.dto.ResponseDto; |
| | |
| | | import com.fzzy.api.service.ApiCommonService; |
| | | import com.fzzy.api.service.ApiRemoteService; |
| | | import com.fzzy.api.service.ApiTriggerService; |
| | | import com.fzzy.api.utils.AESUtils; |
| | | import com.fzzy.api.utils.ContextUtil; |
| | | import com.fzzy.api.utils.MyMD5Util; |
| | | import com.fzzy.api.utils.RedisUtil; |
| | | import com.fzzy.api.utils.*; |
| | | import com.fzzy.api.view.repository.*; |
| | | import com.fzzy.push.whhpjl.dto.WhjlPullReqDto; |
| | | import com.fzzy.push.whhpjl.dto.WhjlPullRespDto; |
| | | import com.fzzy.push.whhpjl.dto.WhjlReqDto; |
| | | import com.fzzy.push.whhpjl.dto.WhjlRespDto; |
| | | import com.fzzy.otherview.whhpjl.WhjlConstant; |
| | | import lombok.Data; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang.StringUtils; |
| | | import org.codehaus.jackson.map.ObjectMapper; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import java.util.*; |
| | |
| | | private ApiTriggerService apiTriggerService; |
| | | @Autowired |
| | | private ApiLogRep apiLogRep; |
| | | @Autowired |
| | | private Whjl2023HttpClientUtil whjl2023HttpClientUtil; |
| | | |
| | | @Override |
| | | public String getProtocol() { |
| | |
| | | ApiLog apiLog = new ApiLog(); |
| | | apiLog.setId(ContextUtil.getUUID()); |
| | | apiLog.setInteId(inteId); |
| | | String jsonData = getJsonData(inteId, data); |
| | | String jsonData = getJsonData(data); |
| | | log.info("接口数据信息=" + jsonData); |
| | | inteId = getInteId(inteId); |
| | | if (StringUtils.isEmpty(inteId)) { |
| | |
| | | apiLogRep.save(apiLog); |
| | | return responseDto; |
| | | } |
| | | |
| | | //封装推送数据 |
| | | WhjlReqDto reqData = new WhjlReqDto(); |
| | | //报文标识ID |
| | | reqData.setId(ContextUtil.getUUID()); |
| | | reqData.setUid(conf.getKqdm()); |
| | | //指令ID |
| | | reqData.setOrderid(param.getOrderid()); |
| | | reqData.setAppcode(conf.getUserName()); |
| | | reqData.setTimestamp(ContextUtil.getCurTimeMillis()); |
| | | List<Object> list = (List<Object>)data; |
| | | reqData.setDatalength(list.size()); |
| | | //数据进行SM4加密 |
| | | reqData.setData(AESUtils.encrypt(jsonData, conf.getPublicKey())); |
| | | reqData.setOperator("insert"); |
| | | //摘要,数据主体的MD5值 |
| | | reqData.setDigst(MyMD5Util.encrypt(jsonData)); |
| | | //身份ID |
| | | reqData.setUid(conf.getUserName()); |
| | | //获取指令id |
| | | String key = RedisConst.buildKey(RedisConst.KYE_ORDER, conf.getKqdm()); |
| | | String orderId = (String)redisUtil.get(key); |
| | | if(StringUtils.isEmpty(orderId)){ |
| | | orderId = reqData.getId(); |
| | | } |
| | | reqData.setOrderid(orderId); |
| | | //应用码 |
| | | reqData.setAppcode(conf.getAppCode()); |
| | | //时间戳 |
| | | reqData.setTimestamp(Long.valueOf(ContextUtil.getCurTimeMillis())); |
| | | //身份签名,对应用码_授权码_站点编码_报文ID_时间戳进行MD5算法签名 |
| | | StringBuffer buffer = new StringBuffer(); |
| | | buffer.append(reqData.getAppcode()).append("_"); |
| | | buffer.append(conf.getPublicKey()).append("_"); |
| | | buffer.append(conf.getKqmc()).append("_"); |
| | | buffer.append(reqData.getId()).append("_"); |
| | | buffer.append(reqData.getTimestamp()); |
| | | reqData.setDigst(MyMD5Util.encrypt(buffer.toString())); |
| | | String accessToken = reqData.getAppcode() +"_" + conf.getPassword() +"_" + reqData.getUid() + "_" + reqData.getId() + "_" + reqData.getTimestamp(); |
| | | log.info("身份签名:" + accessToken); |
| | | reqData.setAccesstoken(MyMD5Util.encrypt(accessToken)); |
| | | //数据总条数 |
| | | reqData.setDatalength(1); |
| | | //数据主体,进行SM4加密 |
| | | reqData.setData(SM4Util.encryptEcb(conf.getPublicKey(), jsonData)); |
| | | //摘要,数据主体的MD5值 |
| | | reqData.setDigest(MyMD5Util.encrypt(jsonData)); |
| | | //操作类型 |
| | | JSONObject jsonObject = JSONObject.parseObject(JSON.toJSONString(data)); |
| | | String czbz = jsonObject.getString("czbz"); |
| | | if("u".equals(czbz)){ |
| | | czbz = "update"; |
| | | }else if("d".equals(czbz)){ |
| | | czbz = "delete"; |
| | | }else { |
| | | czbz = "insert"; |
| | | } |
| | | reqData.setOperator(czbz); |
| | | |
| | | WhjlRespDto responseDto = Whjl2023HttpClientUtil.postPushData(conf.getApiUrl() + inteId, reqData, conf); |
| | | WhjlRespDto responseDto = whjl2023HttpClientUtil.postPushData(conf.getApiUrl() + inteId, reqData); |
| | | apiLog.setStatus(responseDto.getCode() == 200 ? 0 : responseDto.getCode()); |
| | | apiLog.setResult(responseDto.getResult()); |
| | | apiLogRep.save(apiLog); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 调整数据封装,获取json数据 |
| | | * 调整数据封装成list,获取json数据 |
| | | * |
| | | * @param inteId |
| | | * @param data |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | private String getJsonData(String inteId, Object data) { |
| | | return JSON.toJSONString(data); |
| | | private String getJsonData(Object data) { |
| | | List<Object> list = new ArrayList<>(); |
| | | list.add(data); |
| | | return JSON.toJSONString(list); |
| | | } |
| | | |
| | | private String getInteId(String inteId) { |
| | |
| | | case "1105": |
| | | return WhjlConstant.API_CODE_CFXX; |
| | | case "1106": |
| | | return WhjlConstant.API_CODE_AJXX; |
| | | return WhjlConstant.API_CODE_YGXX; |
| | | case "1107": |
| | | return WhjlConstant.API_CODE_HWXX; |
| | | return WhjlConstant.API_CODE_AJXX; |
| | | case "1108": |
| | | return WhjlConstant.API_CODE_CCSSDZDA; |
| | | return WhjlConstant.API_CODE_HWXX; |
| | | case "1109": |
| | | return WhjlConstant.API_CODE_CCSSWHJL; |
| | | return WhjlConstant.API_CODE_CCSSDZDA; |
| | | case "1110": |
| | | return WhjlConstant.API_CODE_CCSSBFJL; |
| | | return WhjlConstant.API_CODE_CCSSWHJL; |
| | | case "1111": |
| | | return WhjlConstant.API_CODE_CCSBXX; |
| | | return WhjlConstant.API_CODE_CCSSBFJL; |
| | | case "1112": |
| | | return WhjlConstant.API_CODE_CCSBWHJL; |
| | | return WhjlConstant.API_CODE_CCSBXX; |
| | | case "1113": |
| | | return WhjlConstant.API_CODE_CCSBWXJL; |
| | | return WhjlConstant.API_CODE_CCSBWHJL; |
| | | case "1114": |
| | | return WhjlConstant.API_CODE_CCSBWXJL; |
| | | case "1115": |
| | | return WhjlConstant.API_CODE_CCSBBFJL; |
| | | case "11145": |
| | | return WhjlConstant.API_CODE_CCSBBFJL; |
| | | case "1201": |
| | | return WhjlConstant.API_CODE_FSGYSXX; |
| | |
| | | case "1204": |
| | | return WhjlConstant.API_CODE_KHXX; |
| | | case "1205": |
| | | return WhjlConstant.API_CODE_CCJL; |
| | | case "1206": |
| | | return WhjlConstant.API_CODE_DDXX; |
| | | case "1207": |
| | | case "1206": |
| | | return WhjlConstant.API_CODE_HTXX; |
| | | case "1208": |
| | | case "1207": |
| | | return WhjlConstant.API_CODE_KCTZ; |
| | | case "1209": |
| | | case "1208": |
| | | return WhjlConstant.API_CODE_KCTZPCXX; |
| | | case "1210": |
| | | case "1209": |
| | | return WhjlConstant.API_CODE_KCTZCRJL; |
| | | case "1211": |
| | | case "1210": |
| | | return WhjlConstant.API_CODE_KCPDJL; |
| | | case "1212": |
| | | case "1211": |
| | | return WhjlConstant.API_CODE_KNZCJL; |
| | | case "1213": |
| | | case "1212": |
| | | return WhjlConstant.API_CODE_CRKJL; |
| | | case "1301": |
| | | case "1213": |
| | | return WhjlConstant.API_CODE_CRKJSJL; |
| | | case "1214": |
| | | return WhjlConstant.API_CODE_ZJJG; |
| | | case "1302": |
| | | case "1215": |
| | | return WhjlConstant.API_CODE_YPDJXX; |
| | | case "1216": |
| | | return WhjlConstant.API_CODE_ZJBG; |
| | | case "1217": |
| | | return WhjlConstant.API_CODE_BZQYJGZ; |
| | | case "1218": |
| | | return WhjlConstant.API_CODE_BZQYJJL; |
| | | case "1219": |
| | | return WhjlConstant.API_CODE_WZKCYJGZ; |
| | | case "1220": |
| | | return WhjlConstant.API_CODE_WZKCYJJL; |
| | | case "1221": |
| | | return WhjlConstant.API_CODE_CCJH; |
| | | case "1301": |
| | | return WhjlConstant.API_CODE_WSDJCJL; |
| | | case "1302": |
| | | return WhjlConstant.API_CODE_YSHJJCJL; |
| | | case "1303": |
| | | return WhjlConstant.API_CODE_LQJCJL; |
| | | return WhjlConstant.API_CODE_WSDGJJL; |
| | | case "1304": |
| | | return WhjlConstant.API_CODE_NHJL; |
| | | case "1305": |
| | | return WhjlConstant.API_CODE_DDPSRW; |
| | | case "1306": |
| | | return WhjlConstant.API_CODE_BDWZXX; |
| | | case "1307": |
| | | return WhjlConstant.API_CODE_YSRWBDXX; |
| | | case "1308": |
| | | return WhjlConstant.API_CODE_SPYJGJ; |
| | | case "1309": |
| | | return WhjlConstant.API_CODE_STSJ; |
| | | case "1401": |
| | | return WhjlConstant.API_CODE_DYQY; |
| | | return WhjlConstant.API_CODE_SCZLL; |
| | | case "1402": |
| | | return WhjlConstant.API_CODE_DYXY; |
| | | return WhjlConstant.API_CODE_KGPJ; |
| | | case "1403": |
| | | return WhjlConstant.API_CODE_DYNL; |
| | | return WhjlConstant.API_CODE_DYQY; |
| | | case "1404": |
| | | return WhjlConstant.API_CODE_DYYJ; |
| | | return WhjlConstant.API_CODE_DYSP; |
| | | case "1405": |
| | | return WhjlConstant.API_CODE_SCJGDD; |
| | | return WhjlConstant.API_CODE_DYXY; |
| | | case "1406": |
| | | return WhjlConstant.API_CODE_YSLX; |
| | | return WhjlConstant.API_CODE_DYXYBG; |
| | | case "1407": |
| | | return WhjlConstant.API_CODE_YJDD; |
| | | return WhjlConstant.API_CODE_DYXYZXMX; |
| | | case "1408": |
| | | return WhjlConstant.API_CODE_DYNL; |
| | | case "1409": |
| | | return WhjlConstant.API_CODE_DYYJ; |
| | | case "1410": |
| | | return WhjlConstant.API_CODE_SCJGDD; |
| | | case "1411": |
| | | return WhjlConstant.API_CODE_CLXX; |
| | | case "1412": |
| | | return WhjlConstant.API_CODE_CLYSHJ; |
| | | case "1413": |
| | | return WhjlConstant.API_CODE_YSLX; |
| | | case "1414": |
| | | return WhjlConstant.API_CODE_BDZDSB; |
| | | case "2001": |
| | | return WhjlConstant.API_CODE_SHARE_SBFL; |
| | | case "2002": |
| | | return WhjlConstant.API_CODE_SHARE_CPFL; |
| | | case "2003": |
| | | return WhjlConstant.API_CODE_SHARE_JLDW; |
| | | case "2004": |
| | | return WhjlConstant.API_CODE_SHARE_JLGLJG; |
| | | case "2005": |
| | | return WhjlConstant.API_CODE_SHARE_JLGYSXX; |
| | | case "2006": |
| | | return WhjlConstant.API_CODE_SHARE_JLPPXX; |
| | | case "2007": |
| | | return WhjlConstant.API_CODE_SHARE_JLCPXX; |
| | | case "2008": |
| | | return WhjlConstant.API_CODE_SHARE_JLCCJH; |
| | | case "2009": |
| | | return WhjlConstant.API_CODE_SHARE_HTMB; |
| | | case "2010": |
| | | return WhjlConstant.API_CODE_SHARE_ZLJCBZ; |
| | | case "2011": |
| | | return WhjlConstant.API_CODE_SHARE_ZLJCXM; |
| | | case "2012": |
| | | return WhjlConstant.API_CODE_SHARE_YJFAXX; |
| | | default: |
| | | return inteId; |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public ResponseDto pullData(ApiParam param, ApiConfs conf) { |
| | | String inteId = param.getInteId(); |
| | | String kqdm = param.getKqdm(); |
| | | |
| | | try { |
| | | if (null == conf) { |
| | | conf = apiCommonService.getConf(kqdm); |
| | | } |
| | | |
| | | //添加日志 |
| | | ApiLog apiLog = new ApiLog(); |
| | | apiLog.setId(ContextUtil.getUUID()); |
| | | apiLog.setInteId(inteId); |
| | | inteId = getInteId(inteId); |
| | | |
| | | if (StringUtils.isEmpty(inteId)) { |
| | | ResponseDto responseDto = new ResponseDto(99, "没有获取到接口"); |
| | | apiLog.setStatus(99); |
| | | apiLog.setResult("没有获取到接口"); |
| | | apiLogRep.save(apiLog); |
| | | return responseDto; |
| | | } |
| | | |
| | | if (conf == null) { |
| | | ResponseDto responseDto = new ResponseDto(99, "没有获取到上传配置"); |
| | | apiLog.setStatus(99); |
| | | apiLog.setResult("没有获取到上传配置"); |
| | | apiLogRep.save(apiLog); |
| | | return responseDto; |
| | | } |
| | | |
| | | //封装数据 |
| | | WhjlPullReqDto reqData = new WhjlPullReqDto(); |
| | | //报文标识ID |
| | | reqData.setId(ContextUtil.getUUID()); |
| | | //身份ID |
| | | reqData.setUid(conf.getUserName()); |
| | | //应用码 |
| | | reqData.setAppcode(conf.getAppCode()); |
| | | //时间戳 |
| | | reqData.setTimestamp(Long.valueOf(ContextUtil.getCurTimeMillis())); |
| | | //身份签名,对应用码_授权码_站点编码_报文ID_时间戳进行MD5算法签名 |
| | | String accessToken = reqData.getAppcode() +"_" + conf.getPassword() +"_" + reqData.getUid() + "_" + reqData.getId() + "_" + reqData.getTimestamp(); |
| | | log.info("身份签名:" + accessToken); |
| | | reqData.setAccesstoken(MyMD5Util.encrypt(accessToken)); |
| | | |
| | | String url = conf.getApiUrl().replace("secure", "share"); |
| | | WhjlPullRespDto responseDto = whjl2023HttpClientUtil.postPullData(url + inteId, reqData); |
| | | apiLog.setStatus(responseDto.getCode() == 200 ? 0 : responseDto.getCode()); |
| | | apiLog.setKqdm(kqdm); |
| | | apiLog.setUploadTime(new Date()); |
| | | |
| | | apiLogRep.save(apiLog); |
| | | ResponseDto resd = new ResponseDto(); |
| | | resd.setSuccess(responseDto.getCode() == 200 ? 0 : responseDto.getCode()); |
| | | resd.setData(responseDto.getData()); |
| | | return resd; |
| | | } catch (Exception e) { |
| | | log.error(e.getMessage(), e); |
| | | return new ResponseDto(99, e.getMessage()); |
| | | } |
| | | } |
| | | } |