package com.engine.tjyh.xc.cmd; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONException; import com.alibaba.fastjson.JSONObject; import com.engine.common.biz.AbstractCommonCommand; import com.engine.common.entity.BizLogContext; import com.engine.core.interceptor.CommandContext; import com.engine.tjyh.xc.util.HttpRequestUtil; import com.engine.tjyh.xc.util.WorkflowCreateHandler; import okhttp3.*; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; import weaver.general.BaseBean; import weaver.general.TimeUtil; import weaver.general.Util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; import java.util.*; /** * @Description * @Author matrix * @Date 2023/6/15 10:09 **/ public class XcCmd extends AbstractCommonCommand> { public XcCmd(JSONObject params) { this.params = params; } @Override public BizLogContext getLogContext() { return null; } @Override public Map execute(CommandContext commandContext) { HttpRequestUtil httpRequestUtil = HttpRequestUtil.getInstance(); RecordSet rs = new RecordSet(); BaseBean bb = new BaseBean(); Map apimap = new HashMap(); writeLog("XcCmd--------:"+params); String appKey = bb.getPropValue("tjyhxcjc","appKey"); String appSecurity = bb.getPropValue("tjyhxcjc","appSecurity"); String url = bb.getPropValue("tjyhxcjc","url"); String orderurl = bb.getPropValue("tjyhxcjc","orderurl"); String workflowId = bb.getPropValue("tjyhxcjc","workflowId"); Map map= new HashMap<>(); map.put("appKey",appKey); map.put("appSecurity",appSecurity); String input = JSON.toJSONString(map); writeLog("input="+input); String back = httpRequestUtil.doPostJson(url, input); writeLog("back="+back); JSONObject backObj = JSONObject.parseObject(back); String ticket = backObj.getString("Ticket"); bb.writeLog("ticket="+ticket); JSONObject obj = (JSONObject) params; String approveScenario = obj.getString("approveScenario"); String corpId = obj.getString("corpId"); String orderId = obj.getString("orderId"); String orderStatus = obj.getString("orderStatus"); String productType = obj.getString("productType"); String sign = obj.getString("sign"); String tgq="0"; //1 改签 2:退 if("FlightInternational".equals(productType)||"FlightDomestic".equals(productType)){ //机票 ,改签成功 if("rebookSuccess".equals(orderStatus)){ tgq="1"; } //退票成功(退款成功) if("refunded".equals(orderStatus)||"RefundSuccess".equals(orderStatus)){ tgq="2"; } } if("HotelContract".equals(productType)||"HotelMember".equals(productType)){ // 取消 if("Cancelled".equals(orderStatus)){ tgq="2"; } } if("Train".equals(productType)){ //已改签 if("Rebooked".equals(orderStatus)){ tgq="1"; } //SubmitRefund 退票成功 if("SubmitRefund".equals(orderStatus)){ tgq="2"; } } if("0".equals(tgq)){ apimap.put("errno","-1"); apimap.put("errmsg","不触发流程"); return apimap; } Map orderMap = new HashMap(); Map authMap = new HashMap(); authMap.put("AppKey",appKey); authMap.put("Ticket",ticket); orderMap.put("Auth",authMap); orderMap.put("JourneyNo",""); orderMap.put("OrderID",orderId); orderMap.put("SearchType",1); String orderInput = JSON.toJSONString(orderMap); bb.writeLog("orderInput="+orderInput); String orderBack = httpRequestUtil.doPostJson(orderurl, orderInput); // String orderBack = postData(orderInput,orderurl); bb.writeLog("orderBack="+orderBack); if(isJsonValid(orderBack)) { JSONObject orderObj = JSONObject.parseObject(orderBack); JSONArray array = orderObj.getJSONArray("ItineraryList"); for (int i = 0; i < array.size(); i++) { JSONObject detailObj = array.getJSONObject(i); JSONArray flightOrderInfoList = detailObj.getJSONArray("FlightOrderInfoList"); JSONArray hotelOrderInfoList = detailObj.getJSONArray("HotelOrderInfoList"); JSONArray trainOrderInfoList = detailObj.getJSONArray("TrainOrderInfoList"); if(flightOrderInfoList!=null){ doFlightOrder(flightOrderInfoList,workflowId,tgq); } if(hotelOrderInfoList!=null){ doHotailOrder(hotelOrderInfoList,workflowId,tgq); } if(trainOrderInfoList!=null){ doTrainOrder(trainOrderInfoList,workflowId,tgq); } } }else{ apimap.put("errno","-1"); apimap.put("errmsg","订单数据格式不对"); } if("".equals(params.toString())){ apimap.put("errno","-1"); apimap.put("errmsg","空数据"); }else { apimap.put("errno", "0"); apimap.put("errmsg", ""); } return apimap; } public static String GetSign(String corpId,String productType,String orderStatus,String orderId,String statusIDs ,String refundType,String secret,String approveScenario) { //构造字典 HashMap hashMap=new HashMap(); hashMap.put("secret",secret); hashMap.put("corpId",corpId); hashMap.put("productType",productType); hashMap.put("orderId",orderId); hashMap.put("orderStatus",orderStatus); //排序 Collection collection=hashMap.keySet(); ArrayList list=new ArrayList(collection); Collections.sort(list); //拼接 String str=""; for( int i=0;i