java接口对接——别人调用我们接口获取数据,我们需要在我们系统中开发几个接口,给对方接口规范文档,包括访问我们的接口地址,以及入参名称和格式,还有我们的返回的状态的情况,

接口代码:

package com.xx.xxx.yzyhentity.action;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID; import org.atmosphere.plugin.redis.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
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.RestController; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.xxx.basic.XXXproject.XXXprojectmaterial.domain.XXXProjectMaterial;
import com.xxx.common.util.JsonUtils;
import com.xxx.core.xxxFrameDsManager;
import com.xxx.core.dao.CommonDao;
import com.xxx.core.grammar.Record;
import com.xxx.database.jdbc.config.SplitTableConfig;
import com.xxx.frame.service.attach.entity.FrameAttachInfo;
import com.xxx.frame.service.metadata.code.api.ICodeItemsService;
import com.xxx.frame.service.metadata.code.entity.CodeItems;
import com.xxx.frame.service.metadata.sharding.util.ShardingUtil;
import com.xxx.ycsrh.api.XXXBkaccFeedback; @RestController
@RequestMapping("bkacc")
public class RestfulToSzzwzx
{ @Autowired
private ICodeItemsService iCodeItemsService; /**
* 对方获取股东信息接口
* @param param
* @return
* @exception/throws [违例类型] [违例说明]
* @see [类、类#方法、类#成员]
*/ @SuppressWarnings("unused")
@RequestMapping(value = "/getSZzwzxOpenShareHolders", method = RequestMethod.POST)
public String getSZzwzxOpenShareHolders(@RequestBody String param) {
//返回JSON值
JSONObject userareaJson = new JSONObject();
String result = "";
try {
xxxFrameDsManager.begin(null);
// 参数转化为json对象
JSONObject jsonObject = (JSONObject) JSONObject.parse(param);
// 时间格式化
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// token验证
String token = jsonObject.getString("token");
if (GXConstant.checkToken(token)) {
JSONObject params = (JSONObject) jsonObject.get("params");
// 业务标识(与开户申请时推送的ywguid一致)
String ywguid = params.getString("ywguid");
// 获取股东信息列表
// List<Record> listGD = iShareform.getGDTableInfo(ywguid);
List<Record> listGD = null;
if (listGD != null && listGD.size() > 0) {
JSONArray jsonArray = new JSONArray();
for (Record rec : listGD) {
JSONObject gdJson = new JSONObject();
// 股东姓名
gdJson.put("shareholdernmae", rec.get("Ctrl1"));
// 证件类型
String idtype = rec.get("Ctrl2");
if(StringUtil.isNotBlank(idtype)){
CodeItems codeItems = iCodeItemsService.getCodeItemByCodeName("内资企业身份证件类型", idtype);
if(codeItems!=null && StringUtil.isNotBlank(codeItems.getDmAbr1())){
gdJson.put("idtype", codeItems.getDmAbr1()); }
else{
gdJson.put("idtype", idtype);
}
} // 证件号码
gdJson.put("idno", rec.get("Ctrl3"));
// 出资时间
gdJson.put("contributivedate", sdf2.format(rec.get("Ctrl4")));
// 出资方式
gdJson.put("contributivetype", rec.get("Ctrl9"));
// 认缴出资额
gdJson.put("contributivenum", rec.get("Ctrl5"));
// 认缴出资比例
gdJson.put("contributivepercent", rec.get("Ctrl7"));
jsonArray.add(gdJson);
userareaJson.put("userarea", jsonArray);
}
result = JsonUtils.zwdtRestReturn("1", "获取股东信息接口调用成功!", userareaJson);
} else {
result = JsonUtils.zwdtRestReturn("0", "接口调用成功,但未查到相关股东数据信息!", userareaJson);
}
} else {
result = JsonUtils.zwdtRestReturn("0", "接口调用失败,原因是:token验证失败!", userareaJson);
} }
catch (Exception e) {
e.printStackTrace();
xxxFrameDsManager.rollback();
result = JsonUtils.zwdtRestReturn("0", "接口调用失败,原因是:" + e.toString(), userareaJson);
}
finally {
xxxFrameDsManager.close();
}
return result;
} /**
* 对方获取开户申请材料接口
* @param param
* @return
* @exception/throws [违例类型] [违例说明]
* @see [类、类#方法、类#成员]
*/
@RequestMapping(value = "/getSZzwzxOpenAcountMaterials", method = RequestMethod.POST)
public String getSZzwzxOpenAcountMaterials(@RequestBody String param) {
// 返回JSON值
JSONObject userareaJson = new JSONObject();
// 材料内son
JSONObject materialJson = new JSONObject();
String result = "";
try {
xxxFrameDsManager.begin(null);
// 参数转化为json对象
JSONObject jsonObject = (JSONObject) JSONObject.parse(param);
// token验证
String token = jsonObject.getString("token");
if (GXConstant.checkToken(token)) {
boolean flag = false;
JSONObject params = (JSONObject) jsonObject.get("params");
JSONArray materialsArray = new JSONArray();
// 业务标识(与开户申请时推送的ywguid一致)
String ywguid = params.getString("ywguid");
if (StringUtil.isNotBlank(ywguid)) { // 获取流程提交得材料
SplitTableConfig conf = ShardingUtil.getSplitTableConfig("XXX_project_material");
CommonDao fbMaterialDao = CommonDao.getInstance(conf);
String sql = "SELECT * FROM XXX_project_material WHERE PROJECTGUID='"+ywguid+"' AND status >10 ";
List<XXXProjectMaterial> projectMaterialList = new ArrayList<XXXProjectMaterial>();
projectMaterialList = fbMaterialDao.findList(sql, XXXProjectMaterial.class);
if(projectMaterialList != null && projectMaterialList.size()>0){
for(XXXProjectMaterial XXXProjectMaterial : projectMaterialList){ // 获取流程提交得材料附件
String sql2 = "SELECT * FROM frame_attachinfo WHERE CLIENGGUID = '"+XXXProjectMaterial.getCliengguid()+"';";
List<FrameAttachInfo> attachInfoList = CommonDao.getInstance().findList(sql2, FrameAttachInfo.class);
if (attachInfoList != null && attachInfoList.size() > 0) {
// 材料内Json
JSONObject fileinfoJson = new JSONObject();
fileinfoJson.put("materialname", XXXProjectMaterial.getTaskmaterial());
fileinfoJson.put("filesource", "窗口上传");
JSONArray jsonArray = new JSONArray();
for (FrameAttachInfo attachinfo : attachInfoList) {
JSONObject certJson = new JSONObject();
// 附件下载地址
String loadUrl = "http://xxx.xx.xx.cn/xxxx/xxxx/rest/pages/basic/attach/attachAction/getContent?attachGuid="
+ attachinfo.getAttachGuid() + "&isCommondto=true";
// 材料名称
certJson.put("filename", attachinfo.getAttachFileName());
// 材料内容
certJson.put("filecontent", loadUrl);
jsonArray.add(certJson);
}
fileinfoJson.put("fileinfos", jsonArray);
materialsArray.add(fileinfoJson);
flag = true;
}
}
} materialJson.put("materials", materialsArray);
userareaJson.put("userarea", materialJson);
if (flag) {
result = JsonUtils.zwdtRestReturn("1", "获取申报材料接口调用成功!", userareaJson);
} else {
result = JsonUtils.zwdtRestReturn("0", "接口调用失败,原因是:未查到相关申报材料数据信息!", userareaJson);
} } else {
result = JsonUtils.zwdtRestReturn("0", "接口调用失败,原因是:未查到相关办件数据信息!", userareaJson);
}
}
else {
result = JsonUtils.zwdtRestReturn("0", "接口调用失败,原因是:token验证失败!", userareaJson);
}
}
catch (Exception e) {
e.printStackTrace();
xxxFrameDsManager.rollback();
result = JsonUtils.zwdtRestReturn("0", "接口调用失败,原因是:" + e.toString(), userareaJson);
}
finally {
xxxFrameDsManager.close();
}
return result;
} /**
* 录入对方返回得银行开户反馈信息
* @param param
* @return
*/
@RequestMapping(value = "/pushSZzwzxOpenAcountResult", method = RequestMethod.POST)
public String pushSZzwzxOpenAcountResult(@RequestBody String param) { String result = "";
try {
xxxFrameDsManager.begin(null);
// 参数转化为json对象
JSONObject jsonObject = (JSONObject) JSONObject.parse(param);
//时间格式化
//SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//token验证
String token = jsonObject.getString("token");
if (GXConstant.checkToken(token)) {
JSONObject params = (JSONObject) jsonObject.get("params");
// 业务标识(与开户申请时推送的ywguid一致)
String ywguid = params.getString("ywguid");
// 银行名称
String bankname = params.getString("bankname");
// 银行编号
String bankno = params.getString("bankno");
// 账户名称
String accountname = params.getString("accountname");
// 账号
String accountnum = params.getString("accountnum");
// 开户日期
Date accountdate = params.getDate("accountdate");
// 是否同意开户
String isallow = params.getString("isallow");
// 银行开户审核意见
String bankopnion = params.getString("bankopnion");
// 商业银行开户审核时间
Date bankopniondate = params.getDate("bankopniondate");
String sql = "SELECT * FROM XXX_BKACC_FEEDBACK WHERE YWGUID ='"+ywguid+"' ";
XXXBkaccFeedback XXXBkaccFeedback = CommonDao.getInstance().find(sql, XXXBkaccFeedback.class);
int flag = 1;
if(XXXBkaccFeedback == null){
XXXBkaccFeedback = new XXXBkaccFeedback();
XXXBkaccFeedback.setRowguid(UUID.randomUUID().toString());
XXXBkaccFeedback.setOperatedate(new Date());
XXXBkaccFeedback.setYwguid(ywguid);
flag = 0;
} if(StringUtil.isNotBlank(bankno)){
XXXBkaccFeedback.setBankno(bankno);
}else{
return result = JsonUtils.zwdtRestReturn("0", "接口调用失败,原因是:银行编号(bankno)为空!", "");
} if(StringUtil.isNotBlank(bankname)){
XXXBkaccFeedback.setBankname(bankname);
} if(StringUtil.isNotBlank(accountname)){
XXXBkaccFeedback.setAccountname(accountname);
} if(StringUtil.isNotBlank(accountnum)){
XXXBkaccFeedback.setAccountnum(accountnum);
} if(StringUtil.isNotBlank(accountdate)){
XXXBkaccFeedback.setAccountdate(accountdate);
}
/*else{
return result = JsonUtils.zwdtRestReturn("0", "接口调用失败,原因是:开户日期(accountdate)为空!", "");
}*/ if(StringUtil.isNotBlank(isallow)){
XXXBkaccFeedback.setIsalllow(isallow);
}else{
return result = JsonUtils.zwdtRestReturn("0", "接口调用失败,原因是:是否同意开户(isallow)为空!", "");
} if(StringUtil.isNotBlank(bankopnion)){
XXXBkaccFeedback.setBankopinion(bankopnion);
}else{
return result = JsonUtils.zwdtRestReturn("0", "接口调用失败,原因是:银行开户审核意见(bankopnion)为空!", "");
} if(StringUtil.isNotBlank(bankopniondate)){
XXXBkaccFeedback.setBankopniondate(bankopniondate);
}
if(flag == 0){
CommonDao.getInstance().insert(XXXBkaccFeedback);
} else {
CommonDao.getInstance().update(XXXBkaccFeedback);
} result = JsonUtils.zwdtRestReturn("1", "接口调用成功,反馈信息已录入!", "");
} else {
return result = JsonUtils.zwdtRestReturn("0", "接口调用失败,原因是:token验证失败!", "");
} }
catch (Exception e) {
e.printStackTrace();
xxxFrameDsManager.rollback();
result = JsonUtils.zwdtRestReturn("0", "接口调用失败,原因是:" + e.toString(), "");
}
finally {
xxxFrameDsManager.close();
}
return result;
} }

给对方的接口地址就是 域名+工程名+rest+类注解+方法注解,我们系统运行着就可以了,给对方调用,开发过程中需要两边联调,可以用postman等工具进行来回接口的调用和数据的互相推送调试完成即可;

java接口对接——别人调用我们接口获取数据的更多相关文章

  1. 如何防止app接口被别人调用

    app开发的时候,如何保护app的接口呢? 用https是我想到的办法,但是不知道怎么实现,所以就考虑用token,虽然不是绝对有效,但是能防止一般的用户来攻击,高手非要攻击,只能报警了吧. toke ...

  2. asp.net使用wsdl文件调用接口,以及调用SSL接口报错“根据验证过程 远程证书无效”的处理

    1.调用wsdl接口,首先需要将wsdl文件转换为cs文件: 进入VS 开发人员命令提示行,输入如下命令: c:/Program Files/Microsoft Visual Studio 8/VC& ...

  3. 【Django+Element UI】使用一个接口文件,搞定分页获取数据,模糊查询后分页获取数据

    1:序列化获取数据的接口设计 1:分页获取序列化数据 2:是个能传参数的接口 class Society(APIView): def post(self, request): keywords = s ...

  4. uni-app如何解决在for循环里调用异步请求获取数据顺序混乱问题?

    总结/朱季谦 先前有一次做uni-app的js接口对接时,遇到过这样的情况,在for循环里,调用一个异步请求时,返回来的值顺序是乱的,因此,在以下的代码里,push到数组里的值,每次的顺序可能都是不一 ...

  5. 【Java】模拟登录教务网并获取数据

    本文章仅做技术交流演示学习,请勿用于违法操作! 前期准备 首先我们需要到要模拟登录的网页,进行抓包操作. 使用Chrome浏览器打开系统的登录页面,按F12打开开发者工具 切换到Network选项卡 ...

  6. 页面单击按钮弹出modaldialog然后调用ajax处理程序获取数据,给父级页面控件赋值

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="RefTopicList.asp ...

  7. 根据URL获取参数值得出json结果集,对外给一个接口让别人调用

    背景:测试接口的时候,经常都是后端get\post请求直接返回json结果集,很想知道实现方式,虽然心中也大概了解如何实现,但还不如自己来一遍踏实! 先来看一下结果吧: 以下对一个web的get接口进 ...

  8. java如何写接口给别人调用

    参考:https://blog.csdn.net/greatkendy123/article/details/52818466 java web开发(二) 接口开发

  9. java微信小程序调用支付接口(转)

    简介:微信小程序支付这里的坑还是有的,所以提醒各位在编写的一定要注意!!! 1.首先呢,你需要准备openid,appid,还有申请微信支付后要设置一个32位的密钥,需要先生成一个sign,得到pre ...

随机推荐

  1. [VS]VS2010如何使用Visual Studio Online在线服务管理团队资源(在线TFS)

    前言 Visual Studio Online,也就是以前的Team Foundation Service,从名字可以看出这是一个团队资源管理服务.在微软的云基础架构中运行,无需安装或配置任何服务器, ...

  2. 7.19python昨日复习和多线程

    关于GIL锁的经典面试题!!

  3. GET、POST编码问题

    GET请求.POST经常会出现中文乱码的问题,最好约定前后端的编码,一般为UTF-8.但是这里面也是有坑的. 后端设置编码为UTF-8的推荐方式: SpringMVC配置过滤器: <filter ...

  4. 【python-opencv】几何变换

    """几何变换-缩放""" img = cv.imread(r'pictures\family.jpg') ""&quo ...

  5. Ucenter社区服务搭建

    1.搭建lamp环境yum  –y  install  httpd  php  php-mysql  mysql  mysql-server 2启动服务   3.设置服务开机自动启动 4.上传UCEN ...

  6. linux中fork函数详解(转)

    add by zhj: 在Linux,创建进程是用fork(),它其实就是拷贝父进程的数据段和其它数据,这相当于C函数调用中的值传递,这是 此后两者的修改都互不影响.因为两者的数据虽相同,但却在不同的 ...

  7. oracle( 0 )事务

    一.并发引起的问题 脏读:能读取未提交的数据 不可重复读:T1事务读取数据后,T2事务执行更新操作,使T1无法再现前一次读取的结果.分三种情况: 1.值不同 2.少了记录 3.多了记录 幻象读(后两种 ...

  8. SQL Server中SCAN 和SEEK的区别

    SQL Server中SCAN 和SEEK的区别 SQL SERVER使用扫描(scan)和查找(seek)这两种算法从数据表和索引中读取数据.这两种算法构成了查询的基础,几乎无处不在.Scan会扫描 ...

  9. CentOS工作内容(五)单一网卡配置多个IP

    CentOS工作内容(五)单一网卡配置多个IP 用到的快捷键 tab 自动补齐(有不知道的吗) ctrl+a 移动到当前行的开头(a ahead) ctrl+e 移动到当前行的开头(e end) ct ...

  10. 发现XMind一个超级牛逼的功能

    本来想要自己手动建立下文件夹的结构图,一不小心发现了一个大惊喜. 比如想要看一下360Downloads文件夹下的文件结构,可以先创建一个名叫360Downloads的主节点,然后把其文件夹下的文件直 ...