%% DataLink.SqlWebCall 默认分支次流程图
flowchart TD
A([MESCommonBase default 分支])
B[DataLink.SqlWebCall(type,jsonData,dataobj)]
C{initSystemIsOk?}
D[InitSystemReg
读取 Web.config appSettings ConnectionString
initSystemIsOk = true]
E{switch(type)}
A --> B --> C
C -->|否| D --> E
C -->|是| E
E -->|8888| L1[GetEncryptStr
读取 Name/name 并加密]
E -->|5001| L2[ExePROCEDURE_Type11_AddUser
Password MD5
执行 Name 指定存储过程]
E -->|5002| L3[ExePROCEDURE_Type11_Login
解密密码并比对
成功写入 token]
E -->|1/2/5| O1[旧协议存储过程
对象: jsonobj dataobj
Param 为拼接字符串]
O1 --> O2[SQLCommon.GetCmdParam
按 & / = / | 拆参数
支持 output 参数]
O2 --> DBP[SQLCommon.ExecuteStoredProcedure]
E -->|11/111/12/13/21| N1[新协议存储过程
对象: JsonData jsonData
Param 为 JSON 数组字符串]
N1 --> N2[GetString_JsonData
读取 Type/Name/Param/token/pageSize/pageList]
N2 --> T{token 非空?}
T -->|是| T1[CheckToken
权限管理_Token_查询数据]
T -->|否| N3[解析 Param 为 SqlParameter[]]
T1 -->|通过| N3
T1 -->|失败| R3[返回 result=3]
N3 --> N4{Type=111 且有分页字段?}
N4 -->|是| N5[追加 PageCurrent/PageSize/PageCount/ItemCount]
N4 -->|否| DBP
N5 --> DBP
E -->|1001/1002/3/4/7/22/3001| S1[SQL / 建表导入 / 命令执行类
Name/name 可能是 SQL 文本或表名]
S1 --> DBS[SQLCommon.ExecuteDataTable / ExecuteDataset
ExecuteInsertMesWork / ExecuteSelectMesWork
或 DbCallType1003_SqlCmd.SqlExec]
L1 --> R1[返回加密字符串]
L2 --> DBP
L3 --> DBP
DBP --> R2[返回结果
DataTable JSON / DataSet JSON
result=1/0 / rows-total / code-message-data]
DBS --> R2
R1 --> Z[Response.Write(responseText)]
R2 --> Z
R3 --> Z
Z --> END([返回 MESCommonBase default 响应出口])
subgraph RISK[次流程关键风险]
K1[token 多数是非空才校验
不传 token 常见路径不拒绝]
K2[客户端可控制 Name/name
存储过程名 / SQL 文本 / 表名]
K3[CommandTimeout = 0
长 SQL 或存储过程可能长期阻塞]
K4[未支持 Type 返回空字符串
异常常返回 result=0]
end
END --> RISK