EKP接口调用,使用HTTP请求访问POST方法

调用实例
/**
 * 获取第三方接口的token
 */
public static String getToken()
{
    String token = "";
    JSONObject object = new JSONObject();
    object.put("appid", "appid");
    object.put("secretkey", "secretkey");
    if(null == httpClient)
    {
        httpClient = HttpClientBuilder.create().build();
    }
    HttpPost httpPost = new HttpPost("http://localhost/login");
    httpPost.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36");
    try
    {
        StringEntity se = new StringEntity(object.toString());
        se.setContentEncoding("UTF-8");
        //发送json数据需要设置contentType
        se.setContentType("application/x-www-form-urlencoded");
        //设置请求参数
        httpPost.setEntity(se);
        HttpResponse response = httpClient.execute(httpPost);
        //这里可以把返回的结果按照自定义的返回数据结果,把string转换成自定义类
        //ResultTokenBO result = JSONObject.parseObject(response, ResultTokenBO.class);
        //把response转为jsonObject
        JSONObject result = (JSONObject) JSONObject.parseObject(String.valueOf(response));
        if(result.containsKey("token"))
        {
            token = result.getString("token");
        }
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }
    return token;
}
调用接口公共类
package com.landray.kmss.third.cmbchina.httpservice;

import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

import java.io.IOException;

/**
 * @description: 使用http方式调用接口公共类
 * @date: 2023/10/24
 */
public class HttpPostUtil {

    private static HttpClient httpClient = HttpClients.createDefault();

    /**
     * @param url
     * @param jsonObject
     * @return com.alibaba.fastjson.JSONObject
     * @description: 请求接口方法调用接口返回数据
     * @date: 2023/10/24
     */
    public static JSONObject doPost(String url, JSONObject jsonObject) {
        //声明返回数据的JSON对象
        JSONObject returnGetDataJson = new JSONObject();
        HttpPost httpPost;
        //接受返回的Json
        String resultStr = "";
        if (null == httpClient) {
            httpClient = HttpClientBuilder.create().build();
        }
        //传入请求地址
        httpPost = new HttpPost(url);
        try {
            //设置请求参数
            StringEntity se = new StringEntity(jsonObject.toString());
            //设置编码
            se.setContentEncoding("GB18030");
            //发送json数据需要设置contentType
            se.setContentType("application/json");
            //设置请求参数
            httpPost.setEntity(se);
            HttpResponse response = httpClient.execute(httpPost);
            if (response != null) {
                HttpEntity resEntity = response.getEntity();
                if (resEntity != null) {
                    resultStr = EntityUtils.toString(resEntity);
                    //把response转为jsonObject
                    JSONObject resultJson = JSONObject.parseObject(resultStr);
                    //判断返回状态
                    if (resultJson != null && !resultJson.isEmpty()) {
                        if (resultJson.getBoolean("success")) {
                            //成功,返回整个JSONObject
                            return resultJson;
                        } else {
                            //错误,返回处理信息
                            returnGetDataJson.put("success", resultJson.getBoolean("success"));
                            returnGetDataJson.put("message", resultJson.get("message").toString());
                            returnGetDataJson.put("msgCode", resultJson.get("msgCode").toString());
                        }
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
            returnGetDataJson.put("success", false);
            returnGetDataJson.put("message", "请求接口异常");
            returnGetDataJson.put("msgCode", "请求接口异常");
        } catch (Exception e) {
            e.printStackTrace();
            returnGetDataJson.put("success", false);
            returnGetDataJson.put("message", "请求接口异常");
            returnGetDataJson.put("msgCode", "请求接口异常");
        }
        return returnGetDataJson;
    }
}

接口常量定义类
package com.landray.kmss.third.cmbchina.httpservice;

/**
 * @description: 接口常量定义类
 * @date: 2023/10/24
 */
public class HttpPostConstant {

    /*商务卡卡片信息查询接口调用地址*/
    public static final String GETCARDINFODATAURL = "";

    /*招商银行新商务卡交易数据查询接口调用地址*/
    public static final String GETTRANSDATAURL = "";

    /*接口请求参数:key值*/
    public static final String PARAMAP = "paraMap";
    /*接口请求参数:客户号*/
    public static final String CLIENTID = "clientId";
    /*接口请求参数:客户号*/
    public static final String CLIENTSECRET = "clientSecret";
    /*接口请求参数:成本中心号*/
    public static final String CORNUM = "corNum";
    /*接口请求参数:入账日期*/
    public static final String POSTDATE = "postDate";
}

接口请求参数配置信息
  • 接口请求参数 服务接口
package com.landray.kmss.third.cmbchina.service;

import com.landray.kmss.sys.metadata.interfaces.IExtendDataService;
import com.landray.kmss.third.cmbchina.model.ThirdCmbchinaParamap;

import java.util.List;

/**
 * 接口请求参数 服务接口
 */
public interface IThirdCmbchinaParamapService extends IExtendDataService {

    /*查询到配置的接口参数信息*/
    List<ThirdCmbchinaParamap> getParamapData() throws Exception;
}

  • 接口请求参数 服务实现
package com.landray.kmss.third.cmbchina.service.spring;

import com.landray.kmss.common.actions.RequestContext;
import com.landray.kmss.common.convertor.ConvertorContext;
import com.landray.kmss.common.dao.HQLInfo;
import com.landray.kmss.common.forms.IExtendForm;
import com.landray.kmss.common.model.IBaseModel;
import com.landray.kmss.sys.metadata.interfaces.ExtendDataServiceImp;
import com.landray.kmss.sys.notify.interfaces.ISysNotifyMainCoreService;
import com.landray.kmss.third.cmbchina.model.ThirdCmbchinaParamap;
import com.landray.kmss.third.cmbchina.service.IThirdCmbchinaParamapService;
import com.landray.kmss.third.cmbchina.util.ThirdCmbchinaUtil;
import com.landray.kmss.util.SpringBeanUtil;

import java.util.List;

/**
 * 接口请求参数 服务实现
 */
public class ThirdCmbchinaParamapServiceImp extends ExtendDataServiceImp implements IThirdCmbchinaParamapService {

    private ISysNotifyMainCoreService sysNotifyMainCoreService;

    public IBaseModel convertBizFormToModel(IExtendForm form, IBaseModel model, ConvertorContext context) throws Exception {
        model = super.convertBizFormToModel(form, model, context);
        if (model instanceof ThirdCmbchinaParamap) {
            ThirdCmbchinaParamap thirdCmbchinaParamap = (ThirdCmbchinaParamap) model;
        }
        return model;
    }

    public IBaseModel initBizModelSetting(RequestContext requestContext) throws Exception {
        ThirdCmbchinaParamap thirdCmbchinaParamap = new ThirdCmbchinaParamap();
        ThirdCmbchinaUtil.initModelFromRequest(thirdCmbchinaParamap, requestContext);
        return thirdCmbchinaParamap;
    }

    public void initCoreServiceFormSetting(IExtendForm form, IBaseModel model, RequestContext requestContext) throws Exception {
        ThirdCmbchinaParamap thirdCmbchinaParamap = (ThirdCmbchinaParamap) model;
    }

    public ISysNotifyMainCoreService getSysNotifyMainCoreService() {
        if (sysNotifyMainCoreService == null) {
            sysNotifyMainCoreService = (ISysNotifyMainCoreService) SpringBeanUtil.getBean("sysNotifyMainCoreService");
        }
        return sysNotifyMainCoreService;
    }

    /**
     * @param
     * @return java.util.List<com.landray.kmss.third.cmbchina.model.ThirdCmbchinaParamap>
     * @description: 查询到配置的接口参数信息
     * @date: 2023/10/19
     */
    @Override
    public List<ThirdCmbchinaParamap> getParamapData() throws Exception {
        HQLInfo hqlInfo = new HQLInfo();
        try {
            hqlInfo.setWhereBlock("thirdCmbchinaParamap.paraMapFd1 = :paraMapFd1");
            //设置数据是否有效标识(0-有效;1-无效)
            hqlInfo.setParameter("paraMapFd1", "0");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return this.findList(hqlInfo);
    }
}

商务卡卡片信息处理
  • 商务卡卡片信息 服务接口
package com.landray.kmss.third.cmbchina.service;

import com.landray.kmss.sys.metadata.interfaces.IExtendDataService;

/**
 * 商务卡卡片信息 服务接口
 */
public interface IThirdCmbchinaBusicardinfoService extends IExtendDataService {

    /*根据成本中心号,清空卡卡片信息*/
    void deleteCardInfoByCorNum(String corNum) throws Exception;
}

  • 商务卡卡片信息 服务实现
package com.landray.kmss.third.cmbchina.service.spring;

import com.landray.kmss.common.actions.RequestContext;
import com.landray.kmss.common.convertor.ConvertorContext;
import com.landray.kmss.common.forms.IExtendForm;
import com.landray.kmss.common.model.IBaseModel;
import com.landray.kmss.sys.metadata.interfaces.ExtendDataServiceImp;
import com.landray.kmss.sys.notify.interfaces.ISysNotifyMainCoreService;
import com.landray.kmss.third.cmbchina.model.ThirdCmbchinaBusicardinfo;
import com.landray.kmss.third.cmbchina.service.IThirdCmbchinaBusicardinfoService;
import com.landray.kmss.third.cmbchina.util.ThirdCmbchinaUtil;
import com.landray.kmss.util.SpringBeanUtil;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

/**
 * 商务卡卡片信息 服务实现
 */
public class ThirdCmbchinaBusicardinfoServiceImp extends ExtendDataServiceImp implements IThirdCmbchinaBusicardinfoService {

    private ISysNotifyMainCoreService sysNotifyMainCoreService;

    public IBaseModel convertBizFormToModel(IExtendForm form, IBaseModel model, ConvertorContext context) throws Exception {
        model = super.convertBizFormToModel(form, model, context);
        if (model instanceof ThirdCmbchinaBusicardinfo) {
            ThirdCmbchinaBusicardinfo thirdCmbchinaBusicardinfo = (ThirdCmbchinaBusicardinfo) model;
        }
        return model;
    }

    public IBaseModel initBizModelSetting(RequestContext requestContext) throws Exception {
        ThirdCmbchinaBusicardinfo thirdCmbchinaBusicardinfo = new ThirdCmbchinaBusicardinfo();
        ThirdCmbchinaUtil.initModelFromRequest(thirdCmbchinaBusicardinfo, requestContext);
        return thirdCmbchinaBusicardinfo;
    }

    public void initCoreServiceFormSetting(IExtendForm form, IBaseModel model, RequestContext requestContext) throws Exception {
        ThirdCmbchinaBusicardinfo thirdCmbchinaBusicardinfo = (ThirdCmbchinaBusicardinfo) model;
    }

    public ISysNotifyMainCoreService getSysNotifyMainCoreService() {
        if (sysNotifyMainCoreService == null) {
            sysNotifyMainCoreService = (ISysNotifyMainCoreService) SpringBeanUtil.getBean("sysNotifyMainCoreService");
        }
        return sysNotifyMainCoreService;
    }

    /*注入卡片信息*/
    protected IThirdCmbchinaBusicardinfoService thirdCmbchinaBusicardinfoService;

    public IThirdCmbchinaBusicardinfoService getThirdCmbchinaBusicardinfoService() {
        if (thirdCmbchinaBusicardinfoService == null) {
            thirdCmbchinaBusicardinfoService = (IThirdCmbchinaBusicardinfoService) SpringBeanUtil
                    .getBean("thirdCmbchinaBusicardinfoService");
        }
        return thirdCmbchinaBusicardinfoService;
    }


    /**
     * @param corNum
     * @return void
     * @description: 根据成本中心号,清空卡卡片信息
     * @date: 2023/10/19
     */
    @Override
    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
    public void deleteCardInfoByCorNum(String corNum) throws Exception {
        try {
            StringBuilder sql = new StringBuilder();
            sql.append("delete from third_cmbchina_busicardinfo where cor_num = ?");
            getThirdCmbchinaBusicardinfoService().getBaseDao().getHibernateSession()
                    .createSQLQuery(sql.toString()).setString(0, corNum).executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

商务卡卡片信息查询接口
  • 接口定义
package com.landray.kmss.third.cmbchina.httpservice;

import com.alibaba.fastjson.JSONObject;
import com.landray.kmss.common.service.IBaseService;

public interface BusiCardInfoQuery extends IBaseService {

    /*商务卡卡片信息查询接口*/
    JSONObject getCardInfoData() throws Exception;
}

  • 接口实现
package com.landray.kmss.third.cmbchina.httpservice.impl;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.landray.kmss.common.service.BaseServiceImp;
import com.landray.kmss.common.service.IBaseService;
import com.landray.kmss.third.cmbchina.httpservice.BusiCardInfoQuery;
import com.landray.kmss.third.cmbchina.httpservice.HttpPostUtil;
import com.landray.kmss.third.cmbchina.model.ThirdCmbchinaBusicardinfo;
import com.landray.kmss.third.cmbchina.model.ThirdCmbchinaParamap;
import com.landray.kmss.third.cmbchina.service.IThirdCmbchinaBusicardinfoService;
import com.landray.kmss.third.cmbchina.service.IThirdCmbchinaParamapService;
import com.landray.kmss.util.SpringBeanUtil;
import com.landray.kmss.web.annotation.RestApi;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

import static com.landray.kmss.third.cmbchina.httpservice.HttpPostConstant.*;
import static com.landray.kmss.util.SpringBeanUtil.getBean;

/*
 * @description: 商务卡卡片信息查询接口实现类
 * @date: 2023/10/24
 */
@Controller
@RequestMapping(value = "/api/third-cmbchina/busiCardInfoQuery", method = RequestMethod.POST)
@RestApi(docUrl = "", name = "busiCardInfoQueryServiceImp", resourceKey = "third-cmbchina:module.third.cmbchina")
public class BusiCardInfoQueryImpl extends BaseServiceImp implements BusiCardInfoQuery {

    private IThirdCmbchinaBusicardinfoService thirdCmbchinaBusicardinfoService;

    public IBaseService getServiceImp() {
        if (thirdCmbchinaBusicardinfoService == null) {
            thirdCmbchinaBusicardinfoService = (IThirdCmbchinaBusicardinfoService) getBean("thirdCmbchinaBusicardinfoService");
        }
        return thirdCmbchinaBusicardinfoService;
    }

    /*注入接口请求参数方法*/
    private IThirdCmbchinaParamapService thirdCmbchinaParamapService;

    private IThirdCmbchinaParamapService getThirdCmbchinaParamapService() {
        if (thirdCmbchinaParamapService == null) {
            thirdCmbchinaParamapService = (IThirdCmbchinaParamapService) getBean("thirdCmbchinaParamapService");
        }
        return thirdCmbchinaParamapService;
    }

    /*注入卡片信息*/
    public IThirdCmbchinaBusicardinfoService getThirdCmbchinaBusicardinfoService() {
        if (thirdCmbchinaBusicardinfoService == null) {
            thirdCmbchinaBusicardinfoService = (IThirdCmbchinaBusicardinfoService) SpringBeanUtil
                    .getBean("thirdCmbchinaBusicardinfoService");
        }
        return thirdCmbchinaBusicardinfoService;
    }


    /**
     * @param
     * @return com.alibaba.fastjson.JSONObject
     * @description: 商务卡卡片信息查询接口
     * @date: 2023/10/24
     */
    @Override
    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
    @ResponseBody
    @RequestMapping(value = "/getCardInfoData", method = RequestMethod.POST)
    public JSONObject getCardInfoData() throws Exception {
        //声明最终返回的变量
        JSONObject returnJsonObject = new JSONObject();
        JSONArray returnJsonArray = new JSONArray();
        boolean isSuccess = true;
        try {
            //调用设置的参数,进行循环读取操作
            List<ThirdCmbchinaParamap> parMapList = getThirdCmbchinaParamapService().getParamapData();
            //查询到所有有效的公司配置信息
            if (parMapList.size() > 0) {
                ThirdCmbchinaParamap thirdCmbchinaParamap;
                //客户号
                String clientId;
                //客户秘钥
                String clientSecret;
                //所属公司
                String companyName;
                //成本中心号
                String paramMapCorNum;
                for (int i = 0; i < parMapList.size(); i++) {
                    //每个公司返回的json对象信息
                    JSONObject companyJson = new JSONObject();
                    thirdCmbchinaParamap = parMapList.get(i);
                    if (thirdCmbchinaParamap != null) {
                        clientId = thirdCmbchinaParamap.getClientId();
                        clientSecret = thirdCmbchinaParamap.getClientSecret();
                        companyName = thirdCmbchinaParamap.getCompanyName();
                        paramMapCorNum = thirdCmbchinaParamap.getCorNum();
                        //必须保证请求参数中客户号与客户秘钥不为空
                        if ((!"".equals(clientId) && clientId != "") && (!"".equals(clientSecret) && clientSecret != "") && (!"".equals(paramMapCorNum) && paramMapCorNum != "")) {
                            //封装请求参数
                            //声明参数JSON变量
                            JSONObject paraMapJson = new JSONObject();
                            //声明参数JSONKEY的JSON变量
                            JSONObject paraMapKeyJson = new JSONObject();
                            //放入请求参数
                            paraMapKeyJson.put(CLIENTID, clientId);//客户号
                            paraMapKeyJson.put(CLIENTSECRET, clientSecret);//客户秘钥
                            paraMapJson.put(PARAMAP, paraMapKeyJson);
                            //调用请求方方法
                            JSONObject doPostJson = HttpPostUtil.doPost(GETCARDINFODATAURL, paraMapJson);
                            if (doPostJson != null && !doPostJson.isEmpty() && doPostJson.size() != 0) {
                                if (doPostJson.getBoolean("success")) {
                                    isSuccess = true;
                                    //获取规定的key值,得到JSON数组
                                    if (doPostJson.containsKey("object")) {
                                        JSONArray jsonArray = doPostJson.getJSONArray("object");
                                        if (jsonArray != null) {
                                            //循环保存数据
                                            JSONObject jsonItem;
                                            //在保存数据之前,先根据成本中心号删除掉这个公司的数据,再重新保存新的数据
                                            getThirdCmbchinaBusicardinfoService().deleteCardInfoByCorNum(paramMapCorNum);
                                            for (int z = 0; z < jsonArray.size(); z++) {
                                                jsonItem = jsonArray.getJSONObject(z);
                                                ThirdCmbchinaBusicardinfo cardInfo = new ThirdCmbchinaBusicardinfo();
                                                if (jsonItem != null && !jsonItem.isEmpty()) {
                                                    cardInfo.setCorNum(jsonItem.getString("corNum"));
                                                    cardInfo.setCorChiName(jsonItem.getString("corChiName"));
                                                    cardInfo.setActNum(jsonItem.getString("actNum"));
                                                    cardInfo.setAcctNbr(jsonItem.getString("acctNbr"));
                                                    cardInfo.setCardNumber(jsonItem.getString("cardNumber"));
                                                    cardInfo.setHolderChiName(jsonItem.getString("holderChiName"));
                                                    cardInfo.setHolderEngName(jsonItem.getString("holderEngName"));
                                                    cardInfo.setEmpNumber(jsonItem.getString("empNumber"));
                                                    cardInfo.setActivationCode(jsonItem.getString("activationCode"));
                                                    cardInfo.setActivationDate(jsonItem.getString("activationDate"));
                                                    cardInfo.setCirculationFlag(jsonItem.getString("circulationFlag"));
                                                    cardInfo.setCancelDate(jsonItem.getString("cancelDate"));
                                                    getServiceImp().add(cardInfo);
                                                }
                                            }
                                        }
                                    }
                                } else {
                                    isSuccess = false;
                                }
                                companyJson.put("success", doPostJson.getBoolean("success"));
                                companyJson.put("message", doPostJson.get("message").toString());
                                companyJson.put("msgCode", doPostJson.get("msgCode").toString());
                                companyJson.put("msgCompany", companyName);
                                returnJsonArray.add(companyJson);

                            }
                        }
                    }
                }
            } else {
                returnJsonObject.put("success", false);
                returnJsonObject.put("message", "没有查询到公司配置信息");
                return returnJsonObject;
            }
        } catch (Exception e) {
            e.printStackTrace();
            returnJsonObject.put("success", false);
            returnJsonObject.put("message", "抛出异常");
            return returnJsonObject;
        }
        if (isSuccess) {
            returnJsonObject.put("success", true);
        } else {
            returnJsonObject.put("success", false);
        }
        returnJsonObject.put("message", returnJsonArray);
        return returnJsonObject;
    }
}

招商银行新商务卡交易数据查询接口
  • 接口定义
package com.landray.kmss.third.cmbchina.httpservice;

import com.alibaba.fastjson.JSONObject;
import com.landray.kmss.common.service.IBaseService;

public interface BusiTranDataQuery extends IBaseService {

    /*招商银行新商务卡交易数据查询接口*/
    JSONObject getTranData() throws Exception;
}

  • 接口实现
package com.landray.kmss.third.cmbchina.httpservice.impl;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.landray.kmss.common.service.BaseServiceImp;
import com.landray.kmss.common.service.IBaseService;
import com.landray.kmss.third.cmbchina.httpservice.BusiTranDataQuery;
import com.landray.kmss.third.cmbchina.httpservice.HttpPostUtil;
import com.landray.kmss.third.cmbchina.model.ThirdCmbchinaBusitrandata;
import com.landray.kmss.third.cmbchina.model.ThirdCmbchinaParamap;
import com.landray.kmss.third.cmbchina.service.IThirdCmbchinaBusitrandataService;
import com.landray.kmss.third.cmbchina.service.IThirdCmbchinaParamapService;
import com.landray.kmss.web.annotation.RestApi;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.Calendar;
import java.util.List;

import static com.landray.kmss.third.cmbchina.httpservice.HttpPostConstant.*;
import static com.landray.kmss.util.SpringBeanUtil.getBean;

/*
 * @description: 招商银行新商务卡交易数据查询接口实现类
 * @date: 2023/10/24
 */
@Controller
@RequestMapping(value = "/api/third-cmbchina/busiTranDataQuery", method = RequestMethod.POST)
@RestApi(docUrl = "", name = "busiTranDataQueryServiceImp", resourceKey = "third-cmbchina:module.third.cmbchina")
public class BusiTranDataQueryImpl extends BaseServiceImp implements BusiTranDataQuery {

    private IThirdCmbchinaBusitrandataService thirdCmbchinaBusitrandataService;

    public IBaseService getServiceImp() {
        if (thirdCmbchinaBusitrandataService == null) {
            thirdCmbchinaBusitrandataService = (IThirdCmbchinaBusitrandataService) getBean("thirdCmbchinaBusitrandataService");
        }
        return thirdCmbchinaBusitrandataService;
    }

    /*注入接口请求参数方法*/
    private IThirdCmbchinaParamapService thirdCmbchinaParamapService;

    private IThirdCmbchinaParamapService getThirdCmbchinaParamapService() {
        if (thirdCmbchinaParamapService == null) {
            thirdCmbchinaParamapService = (IThirdCmbchinaParamapService) getBean("thirdCmbchinaParamapService");
        }
        return thirdCmbchinaParamapService;
    }

    /**
     * @param
     * @return com.alibaba.fastjson.JSONObject
     * @description: 招商银行新商务卡交易数据查询接口
     * @date: 2023/10/24
     */
    @Override
    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
    @ResponseBody
    @RequestMapping(value = "/getTranData", method = RequestMethod.POST)
    public JSONObject getTranData() throws Exception {
        //声明最终返回的变量
        JSONObject returnJsonObject = new JSONObject();
        JSONArray returnJsonArray = new JSONArray();
        boolean isSuccess = true;
        try {
            //调用设置的参数,进行循环读取操作
            List<ThirdCmbchinaParamap> parMapList = getThirdCmbchinaParamapService().getParamapData();
            //查询到所有有效的公司配置信息
            if (parMapList.size() > 0) {
                ThirdCmbchinaParamap thirdCmbchinaParamap;
                //客户号
                String clientId;
                //客户秘钥
                String clientSecret;
                //所属公司
                String companyName;
                //成本中心号
                String paramMapCorNum;
                //入账日期
                String postdate;
                for (int i = 0; i < parMapList.size(); i++) {
                    //每个公司返回的json对象信息
                    JSONObject companyJson = new JSONObject();
                    thirdCmbchinaParamap = parMapList.get(i);
                    if (thirdCmbchinaParamap != null) {
                        clientId = thirdCmbchinaParamap.getClientId();
                        clientSecret = thirdCmbchinaParamap.getClientSecret();
                        companyName = thirdCmbchinaParamap.getCompanyName();
                        paramMapCorNum = thirdCmbchinaParamap.getCorNum();
                        //必须保证请求参数中客户号、客户秘钥、成本中心不为空
                        if ((!"".equals(clientId) && clientId != "") && (!"".equals(clientSecret) && clientSecret != "") && (!"".equals(paramMapCorNum) && paramMapCorNum != "")) {
                            //设置时间,循环时间区间
                            //设置起始日期
                            Calendar startCalendar = Calendar.getInstance();
                            startCalendar.set(2023, Calendar.AUGUST, 1);
                            //设置结束日期
                            Calendar endCalendar = Calendar.getInstance();
                            endCalendar.set(2023, Calendar.AUGUST, 31);
                            //日期循环
                            String monStr;
                            String dayStr;
                            while (startCalendar.compareTo(endCalendar) <= 0) {
                                int year = startCalendar.get(Calendar.YEAR);
                                int month = startCalendar.get(Calendar.MONTH) + 1;
                                int day = startCalendar.get(Calendar.DAY_OF_MONTH);
                                //月份补全
                                if (month < 10) {
                                    monStr = "0" + month + "";
                                } else {
                                    monStr = month + "";
                                }
                                //天数补全
                                if (day < 10) {
                                    dayStr = "0" + day + "";
                                } else {
                                    dayStr = day + "";
                                }
                                postdate = year + "-" + monStr + "-" + dayStr;
                                //封装请求参数
                                //声明参数JSON变量
                                JSONObject paraMapJson = new JSONObject();
                                //声明参数JSONKEY的JSON变量
                                JSONObject paraMapKeyJson = new JSONObject();
                                //放入请求参数
                                paraMapKeyJson.put(CLIENTID, clientId);//客户号
                                paraMapKeyJson.put(CLIENTSECRET, clientSecret);//客户秘钥
                                paraMapKeyJson.put(CORNUM, paramMapCorNum);//成本中心号
                                paraMapKeyJson.put(POSTDATE, postdate);//入账日期
                                paraMapJson.put(PARAMAP, paraMapKeyJson);
                                //调用请求方方法
                                JSONObject doPostJson = HttpPostUtil.doPost(GETTRANSDATAURL, paraMapJson);
                                if (doPostJson != null && !doPostJson.isEmpty() && doPostJson.size() != 0) {
                                    if (doPostJson.getBoolean("success")) {
                                        isSuccess = true;
                                        //获取规定的key值,得到JSON数组
                                        if (doPostJson.containsKey("object")) {
                                            JSONArray jsonArray = doPostJson.getJSONArray("object");
                                            if (jsonArray != null) {
                                                //循环保存数据
                                                JSONObject jsonItem;
                                                for (int z = 0; z < jsonArray.size(); z++) {
                                                    jsonItem = jsonArray.getJSONObject(z);
                                                    ThirdCmbchinaBusitrandata trandata = new ThirdCmbchinaBusitrandata();
                                                    if (jsonItem != null && !jsonItem.isEmpty()) {
                                                        trandata.setCorNum(jsonItem.getString("corNum"));
                                                        trandata.setActNum(jsonItem.getString("actNum"));
                                                        trandata.setAcctNbr(jsonItem.getString("acctNbr"));
                                                        trandata.setBilMon(jsonItem.getString("bilMon"));
                                                        trandata.setBilDate(jsonItem.getString("bilDate"));
                                                        trandata.setCrdNum(jsonItem.getString("crdNum"));
                                                        trandata.setActChiNam(jsonItem.getString("actChiNam"));
                                                        trandata.setActEngNam(jsonItem.getString("actEngNam"));
                                                        trandata.setEmpNum(jsonItem.getString("empNum"));
                                                        trandata.setTrsDte(jsonItem.getString("trsDte"));
                                                        trandata.setTrxTim(jsonItem.getString("trxTim"));
                                                        trandata.setOriCurAmt(jsonItem.getString("oriCurAmt"));
                                                        trandata.setOriCurCod(jsonItem.getString("oriCurCod"));
                                                        trandata.setPosDate(jsonItem.getString("posDate"));
                                                        trandata.setPosCurAmt(jsonItem.getString("posCurAmt"));
                                                        trandata.setPosCurCod(jsonItem.getString("posCurCod"));
                                                        trandata.setAcpCtyCod(jsonItem.getString("acpCtyCod"));
                                                        trandata.setAcpType(jsonItem.getString("acpType"));
                                                        trandata.setAcpId(jsonItem.getString("acpId"));
                                                        trandata.setAcpName(jsonItem.getString("acpName"));
                                                        trandata.setAprCod(jsonItem.getString("aprCod"));
                                                        trandata.setTrxRef(jsonItem.getString("trxRef"));
                                                        trandata.setTrsCod(jsonItem.getString("trsCod"));
                                                        trandata.setTrsVchNbr(jsonItem.getString("trsVchNbr"));
                                                        trandata.setSeqNum(jsonItem.getString("seqNum"));
                                                        getServiceImp().add(trandata);
                                                    }
                                                }
                                            }
                                        }
                                    } else {
                                        isSuccess = false;
                                    }
                                    companyJson.put("success", doPostJson.getBoolean("success"));
                                    companyJson.put("message", doPostJson.get("message").toString());
                                    companyJson.put("msgCode", doPostJson.get("msgCode").toString());
                                    companyJson.put("msgCompany", companyName);
                                    companyJson.put("postdate", postdate);
                                    returnJsonArray.add(companyJson);

                                }
                                //将日期加1
                                startCalendar.add(Calendar.DAY_OF_MONTH, 1);
                            }
                        }
                    }
                }
            } else {
                returnJsonObject.put("success", false);
                returnJsonObject.put("message", "没有查询到公司配置信息");
                return returnJsonObject;
            }
        } catch (Exception e) {
            e.printStackTrace();
            returnJsonObject.put("success", false);
            returnJsonObject.put("message", "抛出异常");
            return returnJsonObject;
        }
        if (isSuccess) {
            returnJsonObject.put("success", true);
        } else {
            returnJsonObject.put("success", false);
        }
        returnJsonObject.put("message", returnJsonArray);
        return returnJsonObject;
    }
}
招商银行新商务卡交易数据自定义查询接口
  • 接口定义
package com.landray.kmss.third.cmbchina.httpservice;

import com.alibaba.fastjson.JSONObject;
import com.landray.kmss.common.service.IBaseService;


public interface BusiTranDataQueryByDiy extends IBaseService {

    /*招商银行新商务卡交易数据自定义查询接口*/
    JSONObject getTranDataByDiy(JSONObject jsonObject) throws Exception;
}


  • 接口实现
package com.landray.kmss.third.cmbchina.httpservice.impl;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.landray.kmss.common.service.BaseServiceImp;
import com.landray.kmss.common.service.IBaseService;
import com.landray.kmss.third.cmbchina.httpservice.BusiTranDataQueryByDiy;
import com.landray.kmss.third.cmbchina.httpservice.HttpPostUtil;
import com.landray.kmss.third.cmbchina.model.ThirdCmbchinaBusitrandata;
import com.landray.kmss.third.cmbchina.model.ThirdCmbchinaParamap;
import com.landray.kmss.third.cmbchina.service.IThirdCmbchinaBusitrandataService;
import com.landray.kmss.third.cmbchina.service.IThirdCmbchinaParamapService;
import com.landray.kmss.util.SpringBeanUtil;
import com.landray.kmss.web.annotation.RestApi;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import static com.landray.kmss.third.cmbchina.httpservice.HttpPostConstant.*;
import static com.landray.kmss.util.SpringBeanUtil.getBean;

/**
 * @description: 招商银行新商务卡交易数据自定义查询接口实现类
 * @date: 2023/11/02
 */
@Controller
@RequestMapping(value = "/api/third-cmbchina/busiTranDataQueryByDiy", method = RequestMethod.POST)
@RestApi(docUrl = "", name = "busiTranDataQueryServiceByDiyImp", resourceKey = "third-cmbchina:third.cmbchina.busiTranDataByDiy")
public class BusiTranDataQueryByDiyImpl extends BaseServiceImp implements BusiTranDataQueryByDiy {

    private IThirdCmbchinaBusitrandataService thirdCmbchinaBusitrandataService;

    public IBaseService getServiceImp() {
        if (thirdCmbchinaBusitrandataService == null) {
            thirdCmbchinaBusitrandataService = (IThirdCmbchinaBusitrandataService) getBean("thirdCmbchinaBusitrandataService");
        }
        return thirdCmbchinaBusitrandataService;
    }

    /*注入接口请求参数方法*/
    private IThirdCmbchinaParamapService thirdCmbchinaParamapService;

    private IThirdCmbchinaParamapService getThirdCmbchinaParamapService() {
        if (thirdCmbchinaParamapService == null) {
            thirdCmbchinaParamapService = (IThirdCmbchinaParamapService) getBean("thirdCmbchinaParamapService");
        }
        return thirdCmbchinaParamapService;
    }

    /*注入交易数据*/
    public IThirdCmbchinaBusitrandataService getThirdCmbchinaBusitrandataService() {
        if (thirdCmbchinaBusitrandataService == null) {
            thirdCmbchinaBusitrandataService = (IThirdCmbchinaBusitrandataService) SpringBeanUtil
                    .getBean("thirdCmbchinaBusitrandataService");
        }
        return thirdCmbchinaBusitrandataService;
    }

    /**
     * @param jsonObject
     * @return com.alibaba.fastjson.JSONObject
     * @description: 招商银行新商务卡交易数据自定义查询接口
     * @date: 2023/11/02
     */
    @Override
    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
    @ResponseBody
    @RequestMapping(value = "/getTranDataByDiy", method = RequestMethod.POST)
    public JSONObject getTranDataByDiy(@RequestBody JSONObject jsonObject) throws Exception {
        //声明最终返回的变量
        JSONObject returnJsonObject = new JSONObject();
        JSONArray returnJsonArray = new JSONArray();
        boolean isSuccess = true;
        String postDateStart = "";
        String postDateEnd = "";
        Date startTime = null;
        Date endTime = null;
        try {
            /*
             *设置入账日期时间参数,根据传入的开始时间和结束时间,获取这个时间段的数据插入
             *插入之前,首先删除这个时间段内存在的数据
             */
            if (jsonObject.containsKey("postDateStart") && jsonObject.containsKey("postDateEnd")) {
                postDateStart = jsonObject.getString("postDateStart");
                postDateEnd = jsonObject.getString("postDateEnd");
                if ((!"".equals(postDateStart) && postDateStart != "") && (!"".equals(postDateEnd) && postDateEnd != "")) {
                    String regex = "[0-9]{4}-[0-9]{2}-[0-9]{2}";
                    Pattern pattern = Pattern.compile(regex);
                    Matcher postS = pattern.matcher(postDateStart);
                    Matcher postE = pattern.matcher(postDateEnd);
                    boolean datePostS = postS.matches();
                    boolean datePostE = postE.matches();
                    if (!datePostS || !datePostE) {
                        returnJsonObject.put("success", false);
                        returnJsonObject.put("message", "入账日期格式错误");
                        return returnJsonObject;
                    }
                    //日期格式化
                    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
                    // 设置解析日期时严格匹配,不容忍格式错误
                    dateFormat.setLenient(false);
                    try {
                        startTime = dateFormat.parse(postDateStart);
                        endTime = dateFormat.parse(postDateEnd);
                    } catch (Exception e) {
                        returnJsonObject.put("success", false);
                        returnJsonObject.put("message", "入账日期格式错误");
                        return returnJsonObject;
                    }
                } else {
                    returnJsonObject.put("success", false);
                    returnJsonObject.put("message", "入账日期不能为空");
                    return returnJsonObject;
                }
            } else {
                returnJsonObject.put("success", false);
                returnJsonObject.put("message", "输入接口定义参数有误");
                return returnJsonObject;
            }
            //调用设置的参数,进行循环读取操作
            List<ThirdCmbchinaParamap> parMapList = getThirdCmbchinaParamapService().getParamapData();
            //查询到所有有效的公司配置信息
            if (parMapList.size() > 0) {
                ThirdCmbchinaParamap thirdCmbchinaParamap;
                //客户号
                String clientId;
                //客户秘钥
                String clientSecret;
                //所属公司
                String companyName;
                //成本中心号
                String paramMapCorNum;
                //入账日期
                String postdate = "";
                for (int i = 0; i < parMapList.size(); i++) {
                    thirdCmbchinaParamap = parMapList.get(i);
                    if (thirdCmbchinaParamap != null) {
                        clientId = thirdCmbchinaParamap.getClientId();
                        clientSecret = thirdCmbchinaParamap.getClientSecret();
                        companyName = thirdCmbchinaParamap.getCompanyName();
                        paramMapCorNum = thirdCmbchinaParamap.getCorNum();
                        //必须保证请求参数中客户号、客户秘钥、成本中心不为空
                        if ((!"".equals(clientId) && clientId != "")
                                && (!"".equals(clientSecret) && clientSecret != "")
                                && (!"".equals(paramMapCorNum) && paramMapCorNum != "")
                                && startTime != null && endTime != null) {
                            //设置时间,循环时间区间
                            //设置起始日期
                            Calendar startCalendar = Calendar.getInstance();
                            startCalendar.setTime(startTime);
                            //设置结束日期
                            Calendar endCalendar = Calendar.getInstance();
                            endCalendar.setTime(endTime);
                            //日期循环
                            String monStr;
                            String dayStr;
                            while (startCalendar.compareTo(endCalendar) <= 0) {
                                int year = startCalendar.get(Calendar.YEAR);
                                int month = startCalendar.get(Calendar.MONTH) + 1;
                                int day = startCalendar.get(Calendar.DAY_OF_MONTH);
                                //月份补全
                                if (month < 10) {
                                    monStr = "0" + month + "";
                                } else {
                                    monStr = month + "";
                                }
                                //天数补全
                                if (day < 10) {
                                    dayStr = "0" + day + "";
                                } else {
                                    dayStr = day + "";
                                }
                                postdate = year + "-" + monStr + "-" + dayStr;
                                //封装请求参数
                                //声明参数JSON变量
                                JSONObject paraMapJson = new JSONObject();
                                //声明参数JSONKEY的JSON变量
                                JSONObject paraMapKeyJson = new JSONObject();
                                //放入请求参数
                                paraMapKeyJson.put(CLIENTID, clientId);//客户号
                                paraMapKeyJson.put(CLIENTSECRET, clientSecret);//客户秘钥
                                paraMapKeyJson.put(CORNUM, paramMapCorNum);//成本中心号
                                paraMapKeyJson.put(POSTDATE, postdate);//入账日期
                                paraMapJson.put(PARAMAP, paraMapKeyJson);
                                //调用请求方方法
                                JSONObject doPostJson = HttpPostUtil.doPost(GETTRANSDATAURL, paraMapJson);
                                if (doPostJson != null && !doPostJson.isEmpty() && doPostJson.size() != 0) {
                                    if (doPostJson.getBoolean("success")) {
                                        isSuccess = true;
                                        //获取规定的key值,得到JSON数组
                                        if (doPostJson.containsKey("object")) {
                                            JSONArray jsonArray = doPostJson.getJSONArray("object");
                                            if (jsonArray != null) {
                                                //循环保存数据
                                                JSONObject jsonItem;
                                                if (jsonArray.size() > 0) {
                                                    //在保存数据之前,先根据入账日期删除对应的数据,再重新保存新的数据
                                                    getThirdCmbchinaBusitrandataService().deleteTranDataByPostDate(postdate);
                                                }
                                                for (int z = 0; z < jsonArray.size(); z++) {
                                                    jsonItem = jsonArray.getJSONObject(z);
                                                    ThirdCmbchinaBusitrandata trandata = new ThirdCmbchinaBusitrandata();
                                                    if (jsonItem != null && !jsonItem.isEmpty()) {
                                                        trandata.setCorNum(jsonItem.getString("corNum"));
                                                        trandata.setActNum(jsonItem.getString("actNum"));
                                                        trandata.setAcctNbr(jsonItem.getString("acctNbr"));
                                                        trandata.setBilMon(jsonItem.getString("bilMon"));
                                                        trandata.setBilDate(jsonItem.getString("bilDate"));
                                                        trandata.setCrdNum(jsonItem.getString("crdNum"));
                                                        trandata.setActChiNam(jsonItem.getString("actChiNam"));
                                                        trandata.setActEngNam(jsonItem.getString("actEngNam"));
                                                        trandata.setEmpNum(jsonItem.getString("empNum"));
                                                        trandata.setTrsDte(jsonItem.getString("trsDte"));
                                                        trandata.setTrxTim(jsonItem.getString("trxTim"));
                                                        trandata.setOriCurAmt(jsonItem.getString("oriCurAmt"));
                                                        trandata.setOriCurCod(jsonItem.getString("oriCurCod"));
                                                        trandata.setPosDate(jsonItem.getString("posDate"));
                                                        trandata.setPosCurAmt(jsonItem.getString("posCurAmt"));
                                                        trandata.setPosCurCod(jsonItem.getString("posCurCod"));
                                                        trandata.setAcpCtyCod(jsonItem.getString("acpCtyCod"));
                                                        trandata.setAcpType(jsonItem.getString("acpType"));
                                                        trandata.setAcpId(jsonItem.getString("acpId"));
                                                        trandata.setAcpName(jsonItem.getString("acpName"));
                                                        trandata.setAprCod(jsonItem.getString("aprCod"));
                                                        trandata.setTrxRef(jsonItem.getString("trxRef"));
                                                        trandata.setTrsCod(jsonItem.getString("trsCod"));
                                                        trandata.setTrsVchNbr(jsonItem.getString("trsVchNbr"));
                                                        trandata.setSeqNum(jsonItem.getString("seqNum"));
                                                        getServiceImp().add(trandata);
                                                    }
                                                }
                                            }
                                        }
                                    } else {
                                        isSuccess = false;
                                    }
                                    //每个公司返回的json对象信息
                                    JSONObject companyJson = new JSONObject();
                                    companyJson.put("success", doPostJson.getBoolean("success"));
                                    companyJson.put("message", doPostJson.get("message").toString());
                                    companyJson.put("msgCode", doPostJson.get("msgCode").toString());
                                    if (doPostJson.containsKey("object")) {
                                        companyJson.put("msgCount", doPostJson.getJSONArray("object").size());
                                    } else {
                                        companyJson.put("msgCount", "没有数据信息object");
                                    }
                                    companyJson.put("msgCompany", companyName);
                                    companyJson.put("postdate", postdate);
                                    returnJsonArray.add(companyJson);
                                }
                                //将日期加1
                                startCalendar.add(Calendar.DAY_OF_MONTH, 1);
                            }
                        } else {
                            returnJsonObject.put("success", false);
                            returnJsonObject.put("message", "输入接口参数有误");
                            return returnJsonObject;
                        }
                    }
                }
            } else {
                returnJsonObject.put("success", false);
                returnJsonObject.put("message", "没有查询到公司配置信息");
                return returnJsonObject;
            }
        } catch (Exception e) {
            e.printStackTrace();
            returnJsonObject.put("success", false);
            returnJsonObject.put("message", "抛出异常");
            return returnJsonObject;
        }
        if (isSuccess) {
            returnJsonObject.put("success", true);
        } else {
            returnJsonObject.put("success", false);
        }
        returnJsonObject.put("message", returnJsonArray);
        return returnJsonObject;
    }
}

spring.xml配置bean
    <!--商务卡卡片信息查询接口-->
    <bean id="busiCardInfoQueryServiceImpl" class="com.landray.kmss.third.cmbchina.httpservice.impl.BusiCardInfoQueryImpl"/>

    <!--招商银行新商务卡交易数据查询接口-->
    <bean id="busiTranDataQuerServiceyImpl" class="com.landray.kmss.third.cmbchina.httpservice.impl.BusiTranDataQueryImpl"/>
java通过url调用远程接口返回json数据
  • java通过url调用远程接口返回json数据,有用户名和密码验证

    • https://blog.csdn.net/wanglong1990421/article/details/78815856
  • Java请求远程URL

    • https://blog.csdn.net/c657542441/article/details/9055205
  • Java请求一个URL,获取网站返回的数据

    • https://blog.csdn.net/xiaocen99/article/details/46582849
  • Java远程调用有道词典API接口实例

    • https://blog.csdn.net/CS2559371050/article/details/64127631
  • Java POST请求远程HTTP接口

    • https://blog.csdn.net/thl331860203/article/details/51783434
  • Java基础——用HttpURLConnection向服务器发送POST请求

    • https://blog.csdn.net/zhouxingchi9527/article/details/51995167
  • Java 调用第三方接口json传参

    • https://blog.51cto.com/u_16175489/6942205
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值