WorldBoxAPI.java 12.4 KB
package com.lhcredit.project.worldbox;

import cn.hutool.core.codec.Base64;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.lhcredit.common.utils.FileSysUtils;
import com.lhcredit.common.utils.StringUtils;
import com.lhcredit.project.business.worldboxlog.domain.Worldboxlog;
import com.lhcredit.project.business.worldboxlog.service.IWorldboxlogService;
import com.lhcredit.project.webbusiness.controller.PiccOverseasController;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletResponse;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Component
public class WorldBoxAPI {
    //测试
    @Value("${hw.url}")
     private String prod;

     @Value("${hw.userName}")
     private String userName;
     @Value("${spring.profiles.active}")
     private String active;

     private String passWord;
    @Value("${hw.passWord}")
    public void setPassWord(String pwd){
        if (active.equals("prod")){
            passWord="cR1ui(q%e@f>]ncVbfM#{GBM);TOpY";
        }else {
            passWord=pwd;
        }
    }

    static String alurl="http://101.200.76.6:8085";
//    static String alurl="http://localhost:8085";


    @Autowired
    private  IWorldboxlogService worldboxlogService;

    /**
     * 企业查询
     * @param name
     * @param countrycode
     * @return
     */
    public  String getCompanies(String name, String countrycode,Worldboxlog worldboxlog){
        String base64Str=Base64.encode((userName+":"+passWord).getBytes(StandardCharsets.UTF_8));
        String authorization="Basic "+base64Str;
//        String url=prod+"/v1/companies/?q="+name.trim()+"&countrycode="+countrycode;
        String url=alurl+"/web/worldbox/companySearch";
        long start=System.currentTimeMillis();
//        String res= HttpRequest.get(url).header("authorization", authorization).execute().body();
        String res= HttpRequest.post(url).form("url",prod).form("q",name.trim()).form("countrycode",countrycode).form("pwd", authorization).execute().body();
        long end=System.currentTimeMillis();
        System.out.println("企业查询总时间"+(end-start)+"ms");
        worldboxlog.setRequest(url);
        worldboxlog.setResport(res);
        worldboxlogService.insertWorldboxlog(worldboxlog);
        return res;
    }

    /**
     * 查询详情
     * @param win
     * @return
     */
    public  String getCompaniesInfo(String win,Worldboxlog worldboxlog){
        String base64Str=Base64.encode((userName+":"+passWord).getBytes(StandardCharsets.UTF_8));
        String authorization="Basic "+base64Str;
//        String url=prod+"/v1/companies/"+win;
        String url=alurl+"/web/worldbox/companyInformation";
        long start=System.currentTimeMillis();
        String res= HttpRequest.post(url).form("url",prod).form("win",win).form("pwd", authorization).execute().body();
        long end=System.currentTimeMillis();
        System.out.println("查询详情总时间"+(end-start)+"ms");
        worldboxlog.setRequest(url);
        worldboxlog.setResport(res);
        worldboxlogService.insertWorldboxlog(worldboxlog);
        return res;
    }

    /**
     * 产品报告
     * @param win
     * @return
     */
    public  String getProduct(String win,Worldboxlog worldboxlog){
        String base64Str=Base64.encode((userName+":"+passWord).getBytes(StandardCharsets.UTF_8));
        String authorization="Basic "+base64Str;
        String url=prod+"/v1/product/reports/"+win;
        long start=System.currentTimeMillis();
        String res= HttpRequest.get(url).header("authorization", authorization).execute().body();
        long end=System.currentTimeMillis();
        System.out.println("产品报告总时间"+(end-start)+"ms");
        worldboxlog.setRequest(url);
        worldboxlog.setResport(res);
        worldboxlogService.insertWorldboxlog(worldboxlog);
        return res;
    }



    /**
     * 获取Companyrequestid
     * @param companyName
     * @param address1
     * @param city
     * @param countryCode
     * @param currency
     * @return
     */
    public  String getCompanyrequestid(String companyName,String address1,String city,String countryCode,String currency,Worldboxlog worldboxlog){
        String base64Str=Base64.encode((userName+":"+passWord).getBytes(StandardCharsets.UTF_8));
        String authorization="Basic "+base64Str;
//        String url=prod+"/v1/companies/";
        String newUrl=alurl+"/web/worldbox/companyRequest";
        Map map=new HashMap<>();
        map.put("companyName",companyName);
        map.put("address1",address1);
        map.put("city",city);
        map.put("countryCode",countryCode);
        map.put("currency",currency);
        map.put("url",prod);
        map.put("pwd",authorization);
        long start=System.currentTimeMillis();
        String res= HttpRequest.post(newUrl).body(JSON.toJSONString(map)).execute().body();
        long end=System.currentTimeMillis();
        System.out.println("获取Companyrequestid总时间"+(end-start)+"ms");

        worldboxlog.setRequest(newUrl+":"+JSON.toJSONString(map));
        worldboxlog.setResport(res);
        worldboxlogService.insertWorldboxlog(worldboxlog);
        return res;
    }

    /**
     * 提交订单
     * @param productcode
     * @param win
     * @param companyrequestid
     * @return
     */
    public  String commitOrder(String productcode,String win,String companyrequestid,String remark,Worldboxlog worldboxlog){
        String base64Str=Base64.encode((userName+":"+passWord).getBytes(StandardCharsets.UTF_8));
        String authorization="Basic "+base64Str;
//        String url=prod+"/v1/order";
        String newUrl=alurl+"/web/worldbox/commitOrder";
        List lt=new ArrayList<>();
        Map map=new HashMap();
        Map mapItem=new HashMap<>();

        mapItem.put("productcode",productcode);
        if(StringUtils.isNotEmpty(win)){
            mapItem.put("win",win);
        }
        if(StringUtils.isNotEmpty(companyrequestid)){
            mapItem.put("companyrequestid",companyrequestid);
        }
        if(StringUtils.isNotEmpty(remark)){
            mapItem.put("additionalinfo",remark);
        }
        mapItem.put("format","XML");
        lt.add(mapItem);
        map.put("orderitems",lt);
        map.put("url",prod);
        map.put("pwd",authorization);

        long start=System.currentTimeMillis();
//        String res= HttpRequest.post(url).header("authorization", authorization).body(JSON.toJSONString(map)).execute().body();
        String res= HttpRequest.post(newUrl).body(JSON.toJSONString(map)).execute().body();
        long end=System.currentTimeMillis();
        System.out.println("提交订单总时间"+(end-start)+"ms");
        worldboxlog.setRequest(newUrl+":"+JSON.toJSONString(map));
        worldboxlog.setResport(res);
        worldboxlogService.insertWorldboxlog(worldboxlog);
        return res;
    }

    /**
     * 获取订单
     * @param ordernumber
     * @return
     */
    public  String getOrder(String ordernumber,Worldboxlog worldboxlog){
        String base64Str=Base64.encode((userName+":"+passWord).getBytes(StandardCharsets.UTF_8));
        String authorization="Basic "+base64Str;
//        String url=prod+"/v1/order/"+ordernumber;
        String newUrl=alurl+"/web/worldbox/getOrder";
        long start=System.currentTimeMillis();
//        String res= HttpRequest.get(url).header("authorization", authorization).execute().body();
        String res= HttpRequest.post(newUrl).form("url",prod).form("pwd",authorization).form("orderNumber",ordernumber).execute().body();
        long end=System.currentTimeMillis();
        System.out.println("获取订单总时间"+(end-start)+"ms");
        worldboxlog.setRequest(newUrl);
        worldboxlog.setResport(res);
        worldboxlogService.insertWorldboxlog(worldboxlog);
        return res;
    }

    /**
     * 时间范围查询,最多返回100条
     * @param datefrom
     * @param dateto
     * @return
     */
    public  String queryOrders(String datefrom,String dateto,Worldboxlog worldboxlog){
        String base64Str=Base64.encode((userName+":"+passWord).getBytes(StandardCharsets.UTF_8));
        String authorization="Basic "+base64Str;
        String url=prod+"/v1/order/?datefrom="+datefrom+"&dateto="+dateto;
        long start=System.currentTimeMillis();
        String res= HttpRequest.get(url).header("authorization", authorization).execute().body();
        long end=System.currentTimeMillis();
        System.out.println("时间范围查询总时间"+(end-start)+"ms");
        worldboxlog.setRequest(url);
        worldboxlog.setResport(res);
        worldboxlogService.insertWorldboxlog(worldboxlog);
        return res;
    }


    /**
     * 提交订单
     * @param productcode
     * @param win
     * @param
     * @return
     */
    public  String commitOrder(String productcode,String win,String remark){
        String base64Str=Base64.encode((userName+":"+passWord).getBytes(StandardCharsets.UTF_8));
        String authorization="Basic "+base64Str;
        String url=prod+"/v1/order";
        List lt=new ArrayList<>();
        Map map=new HashMap();
        Map mapItem=new HashMap<>();

        mapItem.put("productcode",productcode);
        if(StringUtils.isNotEmpty(win)){
            mapItem.put("win",win);
        }
        mapItem.put("format","XML");
        lt.add(mapItem);
        map.put("orderitems",lt);

        String res= HttpRequest.post(url).header("authorization", authorization).body(JSON.toJSONString(map)).execute().body();
        return res;
    }

    /**
     * 获取订单
     * @param ordernumber
     * @return
     */
    public  String getOrder(String ordernumber){
        String base64Str=Base64.encode((userName+":"+passWord).getBytes(StandardCharsets.UTF_8));
        String authorization="Basic "+base64Str;
        String url=prod+"/v1/order/"+ordernumber;
        String res= HttpRequest.get(url).header("authorization", authorization).execute().body();
        return res;
    }




    public static void main(String[] args) throws IOException {
//        String s="XigmzmvrCEm9fhuJ502IdbTe0k2hnIxX:275A31449CAB7";
//        String encode = Base64.encode(s);
//        System.err.println(encode);
//        String authorization="Basic "+encode;
//        System.out.println(WorldBoxAPI.getCompanies("Worldbox","CH"));
//        System.out.println(WorldBoxAPI.getCompaniesInfo("CH0000163067"));
//        System.out.println(WorldBoxAPI.getProduct("CH0000163067"));
//        System.out.println(WorldBoxAPI.getCompanyrequestid("Worldbox AG","Breitackerstrasse 1","Zollikon","CH","USD"));
//        System.out.println(WorldBoxAPI.commitOrder("DLF150","CH0000163067",""));
//        System.out.println(WorldBoxAPI.getOrder("4757371254"));
//        0902080088,8689745768,6886842480,9801647084,7045654937,5283420183
//        String str= WorldBoxAPI.getOrder("9710936788");
//        JSONObject json=JSONObject.parseObject(str);
//        JSONArray array=json.getJSONArray("orderitems");
//        String base64Str=array.getJSONObject(0).getString("binary");

//         解码Base64字符串
//        byte[] decodedBytes = Base64.decode(base64Str);
//        FileOutputStream out=new FileOutputStream("F:\\xml\\9710936788.xml");
//        out.write(decodedBytes);
//         输出解码后的字节数组(可选,用于验证)
//        System.out.println("Decoded bytes:");
//        for (byte b : decodedBytes) {
//            System.out.format("%02x ", b); // 以十六进制形式打印每个字节,便于查看
//        }
//        System.out.println(); // 换行
        //JP0000029596,
//        System.err.println(commitOrder("REO125","JP0000029596"));
//        String token="XigmzmvrCEm9fhuJ502IdbTeOk2hnIxX:275A31449CAB7";
//        String base64Str=Base64.encode(token.getBytes(StandardCharsets.UTF_8));
//        System.out.println(base64Str);
//        String base64Str=Base64.encode(("R%lj<ZjGStH$zhr"+":"+"cR1ui(q%e@f>]ncVbfM#{GBM);TOpY").getBytes(StandardCharsets.UTF_8));
        String base64Str=Base64.encode(("XigmzmvrCEm9fhuJ502IdbTeOk2hnIxX"+":"+"275A31449CAB7").getBytes(StandardCharsets.UTF_8));
        String authorization="Basic "+base64Str;
        System.out.println(authorization);

    }
}