浏览代码

兼容

master
zhao 2 年前
父节点
当前提交
35034b6636
共有 6 个文件被更改,包括 173 次插入15 次删除
  1. +6
    -1
      README.md
  2. +3
    -2
      agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/NSMain.java
  3. +5
    -4
      agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/api/NSSDKClient.java
  4. +6
    -4
      agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/api/NSSDKServer.java
  5. +12
    -0
      agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/core/NSConstants.java
  6. +141
    -4
      agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/entity/NSEntityBase.java

+ 6
- 1
README.md 查看文件

@@ -7,4 +7,9 @@


> [SDK打包脚本](agentcenter-sdk/build.bat ':include') > [SDK打包脚本](agentcenter-sdk/build.bat ':include')


> 客户端手动导入: ```mvn install:install-file -Dfile=agentcenter-sdk-1.0.0nsgk1.jar -DgroupId=com.nsgk -DartifactId=agentcenter-sdk -Dversion=1.0.0nsgk1 -Dpackaging=jar```
> 客户端手动导入: ```mvn install:install-file -Dfile=agentcenter-sdk-1.0.0nsgk1.jar -DgroupId=com.nsgk -DartifactId=agentcenter-sdk -Dversion=1.0.0nsgk1 -Dpackaging=jar```

---
#### 兼容性
当版本不一致时
> 实体类属性缺失, 使用实体类`Set()`/`Set_s()`函数进行设置

+ 3
- 2
agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/NSMain.java 查看文件

@@ -51,9 +51,10 @@ public final class NSMain
.setName("测试合同") .setName("测试合同")
.setDeptId(187L) .setDeptId(187L)
.setBookId(166L) .setBookId(166L)
.setOutId(999L)
; ;
entity.Set("buildingTime", "2000-12-23");
entity.Parm("buildingTime", "2000-12-25");
entity.Parm("buildingTime222", "2000-12-11");
entity.Parm("outId", "123");
result = client.Send(NSProtocol.NS_PROTOCOL_CONTRACTION, entity); result = client.Send(NSProtocol.NS_PROTOCOL_CONTRACTION, entity);
System.err.println(result); System.err.println(result);
} }


+ 5
- 4
agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/api/NSSDKClient.java 查看文件

@@ -1,6 +1,7 @@
package com.nsgk.agentcentersdk.api; package com.nsgk.agentcentersdk.api;


import cn.hutool.core.util.URLUtil; import cn.hutool.core.util.URLUtil;
import com.nsgk.agentcentersdk.core.NSConstants;
import com.nsgk.agentcentersdk.core.NSProtocol; import com.nsgk.agentcentersdk.core.NSProtocol;
import com.nsgk.agentcentersdk.core.NSReportObject; import com.nsgk.agentcentersdk.core.NSReportObject;
import com.nsgk.agentcentersdk.entity.NSEntityBase; import com.nsgk.agentcentersdk.entity.NSEntityBase;
@@ -77,10 +78,10 @@ public final class NSSDKClient
{ {
String dataStr; String dataStr;


request.ClearHeaders().AddHeader("sign", object.getSign());
request.ClearQueries().AddQuery("identifier", object.getIdentifier())
.AddQuery("protocol", object.getProtocol())
.AddQuery("timestamp", object.getTimestamp())
request.ClearHeaders().AddHeader(NSConstants.HEADER_SIGN, object.getSign());
request.ClearQueries().AddQuery(NSConstants.QUERY_IDENTIFIER, object.getIdentifier())
.AddQuery(NSConstants.QUERY_PROTOCOL, object.getProtocol())
.AddQuery(NSConstants.QUERY_TIMESTAMP, object.getTimestamp())
; ;
dataStr = object.getDataStr(); dataStr = object.getDataStr();
try try


+ 6
- 4
agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/api/NSSDKServer.java 查看文件

@@ -1,5 +1,6 @@
package com.nsgk.agentcentersdk.api; package com.nsgk.agentcentersdk.api;


import com.nsgk.agentcentersdk.core.NSConstants;
import com.nsgk.agentcentersdk.core.NSReportObject; import com.nsgk.agentcentersdk.core.NSReportObject;
import com.nsgk.agentcentersdk.entity.NSEntityBase; import com.nsgk.agentcentersdk.entity.NSEntityBase;
import com.nsgk.agentcentersdk.err.NSAssert; import com.nsgk.agentcentersdk.err.NSAssert;
@@ -28,20 +29,21 @@ public final class NSSDKServer
String sign; String sign;
String data; String data;


sign = request.getHeader("sign");
sign = request.getHeader(NSConstants.HEADER_SIGN);
NSAssert.NotEmpty(sign, NSErrno.ERRNO_CLI_SIGN_MISSING); NSAssert.NotEmpty(sign, NSErrno.ERRNO_CLI_SIGN_MISSING);
data = NSHttp.GetRequestBody(request); data = NSHttp.GetRequestBody(request);
NSAssert.NotEmpty(data, NSErrno.ERRNO_CLI_DATA_MISSING); NSAssert.NotEmpty(data, NSErrno.ERRNO_CLI_DATA_MISSING);
res = new NSReportObject<>(); res = new NSReportObject<>();
res.SetTimestampStr(request.getParameter("timestamp"))
.setIdentifier(request.getParameter("identifier"))
.SetProtocolStr(request.getParameter("protocol"))
res.SetTimestampStr(request.getParameter(NSConstants.QUERY_TIMESTAMP))
.setIdentifier(request.getParameter(NSConstants.QUERY_IDENTIFIER))
.SetProtocolStr(request.getParameter(NSConstants.QUERY_PROTOCOL))
; ;
try try
{ {
data = NSCrypto.RSADecrypt(data, privateKey); data = NSCrypto.RSADecrypt(data, privateKey);
NSAssert.NotEmpty(data, NSErrno.ERRNO_SYS_DECRYPT_FAIL); NSAssert.NotEmpty(data, NSErrno.ERRNO_SYS_DECRYPT_FAIL);
res.SetDataStr(data, clazz); res.SetDataStr(data, clazz);
NSErrGlobal.ASSERT(res.getData().Normalized() == 0, NSErrno.ERRNO_SYS_INVALID_FIELD);
} }
catch(Exception e) catch(Exception e)
{ {


+ 12
- 0
agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/core/NSConstants.java 查看文件

@@ -0,0 +1,12 @@
package com.nsgk.agentcentersdk.core;

// 常量
public final class NSConstants
{
public static final String HEADER_SIGN = "SIGN";
public static final String QUERY_TIMESTAMP = "timestamp";
public static final String QUERY_IDENTIFIER = "identifier";
public static final String QUERY_PROTOCOL = "protocol";

private NSConstants() {}
}

+ 141
- 4
agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/entity/NSEntityBase.java 查看文件

@@ -1,14 +1,19 @@
package com.nsgk.agentcentersdk.entity; package com.nsgk.agentcentersdk.entity;


import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson2.JSON;
import com.nsgk.agentcentersdk.err.NSErrGlobal; import com.nsgk.agentcentersdk.err.NSErrGlobal;
import com.nsgk.agentcentersdk.err.NSErrno; import com.nsgk.agentcentersdk.err.NSErrno;
import com.nsgk.agentcentersdk.utility.NSArr; import com.nsgk.agentcentersdk.utility.NSArr;
import com.nsgk.agentcentersdk.utility.NSReflect; import com.nsgk.agentcentersdk.utility.NSReflect;
import com.nsgk.agentcentersdk.utility.NSStr;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;


import java.io.Serializable; import java.io.Serializable;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;


@@ -28,6 +33,8 @@ public class NSEntityBase implements Serializable
/** 外部ID */ /** 外部ID */
protected Long outId; protected Long outId;


// 存储其他没有声明的属性, 用于当客户与服务端字段不一致时, 在不更新sdk的情况下, 保持兼容性
// 不会覆盖已设置的属性
protected Map<String, Object> parms; protected Map<String, Object> parms;


protected Map<String, Object> PARMS() protected Map<String, Object> PARMS()
@@ -89,9 +96,12 @@ public class NSEntityBase implements Serializable
} }
catch(Exception e) catch(Exception e)
{ {
e.printStackTrace();
//e.printStackTrace();
System.err.printf("设置属性字段(%s)失败, 将存储至通用字段", name);
} }
return NSErrGlobal.ThrowAndReturn(NSErrno.ERRNO_SYS_INVALID_FIELD, false);
//return NSErrGlobal.ThrowAndReturn(NSErrno.ERRNO_SYS_INVALID_FIELD, false);
PARMS().put(name, val);
return false;
} }


// 检查类型 // 检查类型
@@ -109,8 +119,135 @@ public class NSEntityBase implements Serializable
} }
catch(Exception e) catch(Exception e)
{ {
e.printStackTrace();
//e.printStackTrace();
System.err.printf("安全设置属性字段(%s)失败, 将存储至通用字段", name);
}
//return NSErrGlobal.ThrowAndReturn(NSErrno.ERRNO_SYS_INVALID_FIELD, false);
PARMS().put(name, val);
return false;
}

// json反序列化
@SuppressWarnings("unchecked")
public boolean FromJson(String json)
{
Map<?, ?> map;

if(NSStr.IsEmpty(json))
return false;

map = JSON.parseObject(json, Map.class);
if(CollectionUtil.isEmpty(map))
return false;

return FromMap(map);
}

@SuppressWarnings("unchecked")
public boolean FromMap(Map<?, ?> map)
{
Map<String, Object> p;
Map<String, Object> newParms;
Map<String, Object> newMap;

if(CollectionUtil.isEmpty(map))
return false;

newMap = new HashMap<>();
map.forEach((k, v) -> {
if(null == k)
return;
newMap.put(NSStr.ToString(k), v);
});
newParms = new HashMap<>();
if(newMap.containsKey("parms"))
{
p = (Map<String, Object>)newMap.remove("parms");
if(CollectionUtil.isNotEmpty(p))
{
p.forEach((k, v) -> {
if(null == k)
return;
if("parms".equals(k)) // 不递归parms
{
if(v instanceof Map)
((Map<String, Object>)v).forEach((sk, sv) -> {
if(null == sk)
return;
newParms.put(NSStr.ToString(sk), sv);
});
return;
}
if(newMap.containsKey(k)) // 不覆盖原属性
return;
newMap.put(k, v);
});
}
}

newMap.put("parms", newParms);

BeanUtil.fillBeanWithMap(map, this, true);

return true;
}

// json序列化
public String ToJson()
{
return JSON.toJSONString(this);
}

// 服务端调用, 用来规范化客户端请求, 返回错误数
public int Normalized()
{
Map<String, Object> newMap;
Map<String, Object> newParms;
int[] res = {0};

newMap = new HashMap<>();
newParms = new HashMap<>();
if(CollectionUtil.isNotEmpty(parms))
{
parms.forEach((k, v) -> {
if(null == k)
return;
if("parms".equals(k)) // 不递归parms
{
if(v instanceof Map)
((Map<String, Object>)v).forEach((sk, sv) -> {
if(null == sk)
return;
newParms.put(NSStr.ToString(sk), sv);
});
return;
}
Field field = NSReflect.FindField(getClass(), k);
if(null == field)
{
newParms.put(k, v);
}
else
{
try
{
if(!field.isAccessible())
field.setAccessible(true);
if(null == field.get(this))
newMap.put(k, v);
}
catch(Exception e)
{
e.printStackTrace();
res[0]++;
}
}
});
} }
return NSErrGlobal.ThrowAndReturn(NSErrno.ERRNO_SYS_INVALID_FIELD, false);

BeanUtil.fillBeanWithMap(newMap, this, true);
setParms(newParms);

return res[0];
} }
} }

正在加载...
取消
保存