简要描述:
- 生成统一的guid,便于分布式处理
接口版本:
版本号 | 制定人 | 制定日期 | 修订日期 |
---|---|---|---|
v3 | 陈碧贵 | 2021-08-22 | xxxx-xx-xx |
请求URL:
http://{url参数}/bo/api/v3/db/help/guid?ownerId={ownerId}&_sysId={sysId}&ignore=true
http://localhost:5901/bo/api/v3/db/help/guid?ownerId=bt&_sysId=abcded&ignore=true
请求方式:
- GET
请求头:
参数名 | 是否必须 | 类型 | 说明 |
---|---|---|---|
XownerId | 是 | string | 项目唯一ID,对应bo_project {ownerId} |
XsysId | 否 | string | 所属系统 对应 bo_system 表 |
XuserFromFirstShareId | string | 否 | 一级分享用户ID, bo_user user_id |
XuserFromSecondShareId | string | 否 | 二级分享用户ID, bo_user user_id |
XverifyApi | 是 | string | 加密规则encryptByDES(`${newGuid()} |
XfilterAreaCode | 否 | string | 行政区编码, 对应 bo_sys_area area_code |
Content-Type: | 是 | string | application/json; charset=utf-8 请求类型 |
请求参数:
- 当事件发生时,调用http/https接口,传递参数信息,响应请求结果。
参数名 | 是否必须 | 类型 | 说明 |
---|---|---|---|
depId | 是 | string | 主键唯一标识值 (名称根据实际进行调整) |
_nodejs | 是 | string | common-data 对应/Config/AppNodeJs/Plugins/fn- common-data.js, 通过nodejs插件,对响应结果进行二次处理 common-data 普通数据(小写驼峰)common-data-under 普通数据下划线 |
返回示例:
正确时返回:
{
"data": "3949798709092421632",
"code": "0",
"retCode": "0",
"success": true
}
错误时返回:
{
"code": 0,
"message": ""
"error":{
errorCode:null,
errorText:null
}
"success": false,
}
返回参数说明:
参数名 | 类型 | 说明 |
---|---|---|
success | bool | true 表示数据请求成功(跟code=0一致),调用者优先使用 |
code | int | true 表示数据请求成功(跟code=0一致),调用者优先使用 |
data | string | 通常为雪花算法得到的ID |
cacheType | string | redis/sqlite/local 数据来源缓存 的类型(便于开发调试和性能优化) |
cacheDate | date | 最后数据获取时间 |
注入服务
private readonly IGuid _guidRepository;
IGuid guidRepository,
_guidRepository = guidRepository;
public string GetDataGuid
后端源码
###
/// <summary>
/// 获取 主键ID信息
/// </summary>
/// <param name="ownerId"></param>
/// <param name="sysId"></param>
/// <param name="dictionaryUrl"></param>
/// <param name="noGidSnowflake">是否禁用雪花算法获取ID</param>
/// <returns></returns>
public string GetDataGuid([RequiredStringPF("ownerId")] string ownerId, string sysId, Dictionary<string, object> dictionaryUrl, bool noGidSnowflake = false)
{
sysId = sysId ?? "sys";
string envId = EnvPFUtil.CurrentEnv();
//{ envId}
string configKey = $"snowflake:machine:{ownerId}{sysId}";
long datacenterId = _configuration.GetValue<long>(configKey);
if (noGidSnowflake == true || _configuration.GetValue<bool>("snowflake:machine:no"))
{
string guid = Guid.NewGuid().ToString();
StringBuilder sbGuid = new StringBuilder();
if (!string.IsNullOrEmpty(ownerId))
{
sbGuid.Append($"{ownerId.Substring(0, ownerId.Length <= 4 ? ownerId.Length : 4)}-".ToLower());
}
if (!string.IsNullOrEmpty(envId))
{
sbGuid.Append($"{envId.Substring(0, envId.Length <= 4 ? envId.Length : 4)}-".ToLower());
}
if (!string.IsNullOrEmpty(sysId) && sysId.Length > 16)
{
sbGuid.Append($"{sysId.Substring(4, sysId.Length <= 8 ? sysId.Length : 8)}-");
}
else if (!string.IsNullOrEmpty(sysId))
{
sbGuid.Append($"{sysId.Substring(0, sysId.Length <= 8 ? sysId.Length : 8)}-");
}
// 机器码 用于分布式扩展
string guidId = GidSnowflakeGuid(datacenterId);// _configuration.GetValue<string>("snowflake:machineId") ?? "";
//处理字符串问题
sbGuid.Replace("--", "-");
return $"{guidId}-{sbGuid.ToString()}{guid.Substring(0, 36 - sbGuid.Length - guidId.Length - 1)}".Trim('-').PadRight(36, '0');
}
else
{
long machineId = _configuration.GetValue<long>("snowflake:machineId");
GidSnowflakeUtil GidSnowflakeUtil = new GidSnowflakeUtil(machineId, datacenterId);
return GidSnowflakeUtil.GetId().ToString();
}
}
文档更新时间: 2021-08-27 08:00 作者:admin