//线程池
private final ExecutorService executorService= Executors.newCachedThreadPool();
executorService.submit(() -> orderDecrypt(meituanOrderInfoExp));
@Transactional
@Override
public void orderDecrypt(MeituanOrderInfoExp meituanOrderInfoExp) {
JSONObject obj=new JSONObject();
try {
TakeawayInfo takeawayInfo=new TakeawayInfo();
takeawayInfo.setAppPoiCode(meituanOrderInfoExp.getMeituanOrderInfo().getAppPoiCode());
TakeawayInfo info=takeawayInfoService.takeawayInfoByCache(takeawayInfo, "app_poi_code");
if(info!=null){
SystemParam systemParam = new SystemParam(info.getAppId(), info.getAppSecret());
JSONArray array=new JSONArray();
JSONObject paraObj1=new JSONObject();
JSONObject paraObj2=new JSONObject();
JSONObject paraObj3=new JSONObject();
JSONObject paraObj4=new JSONObject();
JSONObject paraObj5=new JSONObject();
if(StringUtils.isNotBlank(meituanOrderInfoExp.getMeituanOrderInfo().getEncryptRecipientAddress())){
paraObj1.put("cipher_text",meituanOrderInfoExp.getMeituanOrderInfo().getEncryptRecipientAddress());
array.add(paraObj1);
}
if(StringUtils.isNotBlank(meituanOrderInfoExp.getMeituanOrderInfo().getEncryptRecipientPhone())){
//加密订单收货人联系电话
paraObj2.put("cipher_text",meituanOrderInfoExp.getMeituanOrderInfo().getEncryptRecipientPhone());
array.add(paraObj2);
}
if(StringUtils.isNotBlank(meituanOrderInfoExp.getMeituanOrderInfo().getEncryptRecipientName())){
//加密订单收货人姓名
paraObj3.put("cipher_text",meituanOrderInfoExp.getMeituanOrderInfo().getEncryptRecipientName());
array.add(paraObj3);
}
if(StringUtils.isNotBlank(meituanOrderInfoExp.getMeituanOrderInfo().getEncryptOrderPhoneNumber())){
//加密推送订单的预订人手机号
paraObj4.put("cipher_text",meituanOrderInfoExp.getMeituanOrderInfo().getEncryptOrderPhoneNumber());
array.add(paraObj4);
}
if(StringUtils.isNotBlank(meituanOrderInfoExp.getMeituanOrderInfo().getEncryptOrderShippingAddress())) {
//加密收货人具体地址
paraObj5.put("cipher_text",meituanOrderInfoExp.getMeituanOrderInfo().getEncryptOrderShippingAddress());
array.add(paraObj5);
}
log.info("\n==>美团单号="+meituanOrderInfoExp.getMeituanOrderInfo().getOrderId()+"即将解密的字符串为="+array.toJSONString());
try {
obj= MtRequest.healthBatchDecrypt(systemParam,array);
log.info("\n==>美团单号="+meituanOrderInfoExp.getMeituanOrderInfo().getOrderId()+"对字段解密结果"+obj);
}catch (Exception e){
log.info("\n==>美团单号="+meituanOrderInfoExp.getMeituanOrderInfo().getOrderId()+"对字段解密异常"+e);
}
if("1".equals(obj.getString("result_code"))){
JSONObject obj1=obj.getJSONObject("data");
JSONArray obj2=obj1.getJSONArray("plain_info_list");
if(obj2!=null && !obj2.isEmpty()){
for(int i=0;i<obj2.size();i++ ){
JSONObject obj3=obj2.getJSONObject(i);
if(obj3.getString("cipher_text").equals(meituanOrderInfoExp.getMeituanOrderInfo().getEncryptRecipientAddress())){
// encrypt_recipient_address 加密订单收货人地址
meituanOrderInfoExp.getMeituanOrderInfo().setEncryptRecipientAddress(obj3.getString("plain_text"));
}else if(obj3.getString("cipher_text").equals(meituanOrderInfoExp.getMeituanOrderInfo().getEncryptRecipientPhone())){
// encrypt_recipient_phone 加密订单收货人联系电话
meituanOrderInfoExp.getMeituanOrderInfo().setEncryptRecipientPhone(obj3.getString("plain_text"));
}else if(obj3.getString("cipher_text").equals(meituanOrderInfoExp.getMeituanOrderInfo().getEncryptRecipientName())){
//encrypt_recipient_name 加密订单收货人姓名
meituanOrderInfoExp.getMeituanOrderInfo().setEncryptRecipientName(obj3.getString("plain_text"));
}else if(obj3.getString("cipher_text").equals(meituanOrderInfoExp.getMeituanOrderInfo().getEncryptOrderPhoneNumber())){
//encrypt_order_phone_numbe 加密推送订单的预订人手机号
meituanOrderInfoExp.getMeituanOrderInfo().setEncryptOrderPhoneNumber(obj3.getString("plain_text"));
}else if(obj3.getString("cipher_text").equals(meituanOrderInfoExp.getMeituanOrderInfo().getEncryptOrderShippingAddress())){
//encrypt_order_shipping_address 加密收货人具体地址
meituanOrderInfoExp.getMeituanOrderInfo().setEncryptOrderShippingAddress(obj3.getString("plain_text"));
}
}
//先取EncryptRecipientPhone这个里边的值,如果不包含下划线的,则取这个反之从备注中截取手机号
if(StringUtils.isNotBlank(meituanOrderInfoExp.getMeituanOrderInfo().getEncryptRecipientPhone()) &&
meituanOrderInfoExp.getMeituanOrderInfo().getEncryptRecipientPhone().indexOf('_') == -1){
meituanOrderInfoExp.getMeituanOrderInfo().setRealPhoneNum(meituanOrderInfoExp.getMeituanOrderInfo().getEncryptRecipientPhone());
}else{
//从备注中截取用户真实的手机号码
if(StringUtils.isNotBlank(meituanOrderInfoExp.getMeituanOrderInfo().getCaution())){
meituanOrderInfoExp.getMeituanOrderInfo().setRealPhoneNum(subString(meituanOrderInfoExp.getMeituanOrderInfo().getCaution()));
}
}
//更新美团订单表中的相关数据
//将美团数据同步过来后在进行设置是否进行处理
meituanOrderInfoExp.getMeituanOrderInfo().setIsHandle("0");
meituanOrderInfoMapper.updateOrderDate(meituanOrderInfoExp.getMeituanOrderInfo());
log.info("\n==>美团单号="+meituanOrderInfoExp.getMeituanOrderInfo().getOrderId()+"对字段解密入库成功!");
}
}else{
log.info("解密失败,美团返回解密结果为"+obj);
}
}else{
log.info("根据订单AppPoiCode="+meituanOrderInfoExp.getMeituanOrderInfo().getAppPoiCode()+"没有查询到门店相关信息");
}
} catch (Exception e) {
log.info("解密失败,失败原因为"+e);
}
}