|
|
@@ -1,14 +1,19 @@ |
|
|
|
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.NSErrno; |
|
|
|
import com.nsgk.agentcentersdk.utility.NSArr; |
|
|
|
import com.nsgk.agentcentersdk.utility.NSReflect; |
|
|
|
import com.nsgk.agentcentersdk.utility.NSStr; |
|
|
|
import lombok.Data; |
|
|
|
import lombok.experimental.Accessors; |
|
|
|
|
|
|
|
import java.io.Serializable; |
|
|
|
import java.lang.reflect.Field; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.LinkedHashMap; |
|
|
|
import java.util.Map; |
|
|
|
|
|
|
@@ -28,6 +33,8 @@ public class NSEntityBase implements Serializable |
|
|
|
/** 外部ID */ |
|
|
|
protected Long outId; |
|
|
|
|
|
|
|
// 存储其他没有声明的属性, 用于当客户与服务端字段不一致时, 在不更新sdk的情况下, 保持兼容性 |
|
|
|
// 不会覆盖已设置的属性 |
|
|
|
protected Map<String, Object> parms; |
|
|
|
|
|
|
|
protected Map<String, Object> PARMS() |
|
|
@@ -89,9 +96,12 @@ public class NSEntityBase implements Serializable |
|
|
|
} |
|
|
|
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) |
|
|
|
{ |
|
|
|
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]; |
|
|
|
} |
|
|
|
} |