开发商瞄准了企业转型的痛点,传统企业的经营模式和理念比较原始,但是对应用程序的开发和升级需求在同步激增,但是没有做好信息化规划,头疼医头脚痛医脚。如此一来,低门槛运作代表的低代码或许就是不二选择。

低代码可以从软件开发费用和人力支出两个角度降低总开发成本,按需开发的特性缩短了软件试错时间和交付周期,降低整体机会成本,让企业有更多时间和资金投身于行业业务新动态的捕捉。

平台特性

  • 采用前后端分离的模式:前端基于vue-element-admin框架定制开发;
  • 统一授权、认证:基于 Spring SecuritySpring OAuth2、JWT 实现的统一认证服务中心,登录基于 Spring Security 的标准登录流程。客户端授权支持 Oauth2.0的四种授权模式:授权码模式简化模式密码模式客户端模式,授权流程跟标准的Oauth2流程一致。web 端采用简化模式登录系统,移动端可使用密码模式(password)登录系统。同时还支持基于Spring Social的三方账号登录方式,如微信/QQ微博等,并提供拓展模式,支持更多三方渠道。
  • 灵活的权限控制:基于RBAC权限管理,该功能模块下的功能用于维护企业的组织架构信息以及员工信息。主要包含了组织信息、组织架构、企业通讯录、通信录同步等功能。用户可在此功能模块下维护公司的组织架构信息(组织/部门/角色/岗位)和用户信息,也可以通过第三方应用(钉钉/企业微信)将组织架构信息一键导入到系统中,也可以使用组织架构和员工信息的导入功能将数据导入到系统中。
  • 支持多租户:简单配置即可转变多租户模式,实现数据隔离;
  • 支持多种数据库:支持MySQLSQL ServerOraclePostgreSQL达梦数据库人大金仓数据库等,您无需关心不同类型数据库间的语法区别;
  • 统一接口管理:基于Swagger拓展的API文档服务,主要提供在平台开发阶段的API文档管理和API调试等功能。
if (format.IsDefault)
    return TryFormatInt64Default(value, destination, out bytesWritten);

switch (format.Symbol)
{
    case 'G':
    case 'g':
        if (format.HasPrecision)
            throw new NotSupportedException(SR.Argument_GWithPrecisionNotSupported);
        return TryFormatInt64D(value, format.Precision, destination, out bytesWritten);

    case 'd':
    case 'D':
        return TryFormatInt64D(value, format.Precision, destination, out bytesWritten);

    case 'n':
    case 'N':
        return TryFormatInt64N(value, format.Precision, destination, out bytesWritten);

    case 'x':
        return TryFormatUInt64X((ulong)value & mask, format.Precision, true, destination, out bytesWritten);

    case 'X':
        return TryFormatUInt64X((ulong)value & mask, format.Precision, false, destination, out bytesWritten);

    default:
        return FormattingHelpers.TryFormatThrowFormatException(out bytesWritten);
}
using System.Text.Json;
namespace SerializeWithGenericParameter
 {
     public class WeatherForecast
     {
         public DateTimeOffset Date { get; set; }
         public int TemperatureCelsius { get; set; }
         public string? Summary { get; set; }
     }    public class Program
     {
         public static void Main()
         {
             var weatherForecast = new WeatherForecast
             {
                 Date = DateTime.Parse("2019-08-01"),
                 TemperatureCelsius = 25,
                 Summary = "Hot"
             };            string jsonString = JsonSerializer.Serialize<WeatherForecast>(weatherForecast);
            Console.WriteLine(jsonString);
         }
     }
 }
 // output:
 //{"Date":"2019-08-01T00:00:00-07:00","TemperatureCelsius":25,"Summary":"Hot"}
if (format.IsDefault)
    return TryFormatInt64Default(value, destination, out bytesWritten);

switch (format.Symbol)
{
    case 'G':
    case 'g':
        if (format.HasPrecision)
            throw new NotSupportedException(SR.Argument_GWithPrecisionNotSupported);
        return TryFormatInt64D(value, format.Precision, destination, out bytesWritten);

    case 'd':
    case 'D':
        return TryFormatInt64D(value, format.Precision, destination, out bytesWritten);

    case 'n':
    case 'N':
        return TryFormatInt64N(value, format.Precision, destination, out bytesWritten);

    case 'x':
        return TryFormatUInt64X((ulong)value & mask, format.Precision, true, destination, out bytesWritten);

    case 'X':
        return TryFormatUInt64X((ulong)value & mask, format.Precision, false, destination, out bytesWritten);

    default:
        return FormattingHelpers.TryFormatThrowFormatException(out bytesWritten);
}
using System.Text.Json;
namespace SerializeToFileAsync
 {
     public class WeatherForecast
     {
         public DateTimeOffset Date { get; set; }
         public int TemperatureCelsius { get; set; }
         public string? Summary { get; set; }
     }    public class Program
     {
         public static async Task Main()
         {
             var weatherForecast = new WeatherForecast
             {
                 Date = DateTime.Parse("2019-08-01"),
                 TemperatureCelsius = 25,
                 Summary = "Hot"
             };            string fileName = "WeatherForecast.json";
             using FileStream createStream = File.Create(fileName);
             await JsonSerializer.SerializeAsync(createStream, weatherForecast);
             await createStream.DisposeAsync();            Console.WriteLine(File.ReadAllText(fileName));
         }
     }
 }
 // output:
 //{"Date":"2019-08-01T00:00:00-07:00","TemperatureCelsius":25,"Summary":"Hot"}