简要描述:

  • 生成统一的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