dev_chen #2

Merged
LiuXin merged 2 commits from dev_chen into main 3 months ago
  1. 111
      WeiCloud.Fusion/WeiCloud.Core/EnumTools/Enumeration.cs
  2. 94
      WeiCloud.Fusion/WeiCloud.Core/EnumTools/RequestBackStatuEnum.cs
  3. 26
      WeiCloud.Fusion/WeiCloud.Core/EnumTools/说明.txt
  4. 68
      WeiCloud.Fusion/WeiCloud.Core/WeiCloud.Core.csproj

@ -0,0 +1,111 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
namespace WeiCloud.Core
{
public class Enumeration : IComparable
{
private readonly int _value;
private readonly string _displayName;
protected Enumeration()
{
}
protected Enumeration(int value, string displayName)
{
_value = value;
_displayName = displayName;
}
public int Value
{
get { return _value; }
}
public string DisplayName
{
get { return _displayName; }
}
public override string ToString()
{
return DisplayName;
}
public static IEnumerable<T> GetAll<T>() where T : Enumeration, new()
{
var type = typeof(T);
var fields = type.GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.DeclaredOnly);
foreach (var info in fields)
{
var instance = new T();
var locatedValue = info.GetValue(instance) as T;
if (locatedValue != null)
{
yield return locatedValue;
}
}
}
public override bool Equals(object obj)
{
var otherValue = obj as Enumeration;
if (otherValue == null)
{
return false;
}
var typeMatches = GetType().Equals(obj.GetType());
var valueMatches = _value.Equals(otherValue.Value);
return typeMatches && valueMatches;
}
public override int GetHashCode()
{
return _value.GetHashCode();
}
public static int AbsoluteDifference(Enumeration firstValue, Enumeration secondValue)
{
var absoluteDifference = Math.Abs(firstValue.Value - secondValue.Value);
return absoluteDifference;
}
public static T FromValue<T>(int value) where T : Enumeration, new()
{
var matchingItem = parse<T, int>(value, "value", item => item.Value == value);
return matchingItem;
}
public static T FromDisplayName<T>(string displayName) where T : Enumeration, new()
{
var matchingItem = parse<T, string>(displayName, "display name", item => item.DisplayName == displayName);
return matchingItem;
}
private static T parse<T, K>(K value, string description, Func<T, bool> predicate) where T : Enumeration, new()
{
var matchingItem = GetAll<T>().FirstOrDefault(predicate);
if (matchingItem == null)
{
var message = string.Format("'{0}' is not a valid {1} in {2}", value, description, typeof(T));
throw new ApplicationException(message);
}
return matchingItem;
}
public int CompareTo(object other)
{
return Value.CompareTo(((Enumeration)other).Value);
}
}
}

@ -0,0 +1,94 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WeiCloud.Core
{
public class RequestBackStatuEnum:Enumeration
{
private RequestBackStatuEnum(int value, string displayName) : base(value, displayName) {
}
/// <summary>
/// 操作成功
/// </summary>
public static readonly RequestBackStatuEnum success = new RequestBackStatuEnum(200, nameof(success).ToLowerInvariant());
/// <summary>
/// 自定义msg
/// </summary>
public static readonly RequestBackStatuEnum diy = new RequestBackStatuEnum(2000, nameof(diy).ToLowerInvariant());
/// <summary>
/// 不存在指定对象
/// </summary>
public static readonly RequestBackStatuEnum notexist = new RequestBackStatuEnum(2001, nameof(notexist).ToLowerInvariant());
/// <summary>
/// 已存在指定对象
/// </summary>
public static readonly RequestBackStatuEnum exist = new RequestBackStatuEnum(2002, nameof(exist).ToLowerInvariant());
/// <summary>
/// 已存在指定条件的数据集
/// </summary>
public static readonly RequestBackStatuEnum hasdata = new RequestBackStatuEnum(2003, nameof(hasdata).ToLowerInvariant());
/// <summary>
/// 不存在指定条件的数据集
/// </summary>
public static readonly RequestBackStatuEnum nodata = new RequestBackStatuEnum(2004, nameof(nodata).ToLowerInvariant());
/// <summary>
/// 服务端处理错误
/// </summary>
public static readonly RequestBackStatuEnum fail = new RequestBackStatuEnum(2005, nameof(fail).ToLowerInvariant());
/// <summary>
/// 请求失败
/// </summary>
public static readonly RequestBackStatuEnum badrequest = new RequestBackStatuEnum(2006, nameof(badrequest).ToLowerInvariant());
/// <summary>
/// 未找到指定接口
/// </summary>
public static readonly RequestBackStatuEnum notfound = new RequestBackStatuEnum(2007, nameof(notfound).ToLowerInvariant());
/// <summary>
/// 网络连接失败
/// </summary>
public static readonly RequestBackStatuEnum loselink = new RequestBackStatuEnum(2008, nameof(loselink).ToLowerInvariant());
/// <summary>
/// 没有权限
/// </summary>
public static readonly RequestBackStatuEnum unauthorized = new RequestBackStatuEnum(401, nameof(unauthorized).ToLowerInvariant());
/// <summary>
/// 失效用户
/// </summary>
public static readonly RequestBackStatuEnum expireUser = new RequestBackStatuEnum(4001, nameof(unauthorized).ToLowerInvariant());
/// <summary>
/// 需要wx同意获取手机号才能登录
/// </summary>
public static readonly RequestBackStatuEnum wx_need_get_phone_by_code = new RequestBackStatuEnum(3001, nameof(wx_need_get_phone_by_code).ToLowerInvariant());
public static IEnumerable<RequestBackStatuEnum> List() =>
new[] { success, badrequest, notfound, loselink };
public static RequestBackStatuEnum From(int value)
{
var state = List().SingleOrDefault(s => s.Value == value);
if (state == null)
{
throw new Exception($"Possible values for Volume: {String.Join(",", List().Select(s => s.Value))}");
}
return state;
}
public static RequestBackStatuEnum FromName(string name)
{
var state = List()
.SingleOrDefault(s => String.Equals(s.DisplayName, name, StringComparison.CurrentCultureIgnoreCase));
if (state == null)
{
throw new Exception($"Possible values for Volume: {String.Join(",", List().Select(s => s.DisplayName))}");
}
return state;
}
}
}

@ -0,0 +1,26 @@
------ 枚举类文件说明 ccx 2022-2-17-----
空气质量类型枚举 ------ AirQuantityEnum
建筑物类型枚举 ------ ConstTypeEnum
能耗分项类型枚举 ------ EnergyItemEnum
能源计费方式枚举 ------ EngeryBillingType
能源类型(水电气)枚举 ------ EngeryTypeEnum
系统类型枚举 ------ EnumSystemModel
设备分组类型枚举 ------ EqGroupTypeEnum
设备运行状态枚举 ------ EquipRuningStatus
设备类型枚举 ------ EquipTypeEnum
国润丰泽角色id枚举 ------ FamilyDecorationEnum
报警类型枚举 ------ FamilyDecorationEnum
报警处理方式类型枚举 ------ FaultHandleEnum
报警状态枚举 ------ FaultStatusEnum
控制面板挡位枚举 ------ GearEnum
人工抄表时间枚举 ------ HandWritetenEnum
知识库的多种枚举 ------ KBEnum
日志类型枚举 ------ NlogTypeNum
后端返回code枚举 ------ RequestBackStatuEnum
能源转标煤换算枚举 ------ StandardCoalEnum
全局参数名称枚举 ------ SyaConfigNameEnum
元数据枚举 ------ SysBaseCodeMeta
文件路径枚举 ------ SysModuleEnum
租户费用支付方式枚举 ------ TenantPayWayEnum
查询数据时间间隔枚举 ------ TimeSpanEnum

@ -0,0 +1,68 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netcoreapp3.1;net8.0</TargetFrameworks>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DocumentationFile>obj\Debug\netstandard2.0\WeiCloud.Core.xml</DocumentationFile>
<NoWarn>1701;1702;1591</NoWarn>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<DocumentationFile>obj\Debug\netstandard2.0\WeiCloud.Core.xml</DocumentationFile>
<NoWarn>1701;1702;1591</NoWarn>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<DocumentationFile>obj\Release\netstandard2.0\WeiCloud.Core.xml</DocumentationFile>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<DocumentationFile>obj\Release\netstandard2.0\WeiCloud.Core.xml</DocumentationFile>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="AlibabaCloud.SDK.Dysmsapi20170525" Version="2.0.8" />
<PackageReference Include="aliyun-net-sdk-core" Version="1.5.8" />
<PackageReference Include="AutoMapper" Version="10.1.1" />
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="8.1.1" />
<PackageReference Include="Confluent.Kafka" Version="1.9.3" />
<PackageReference Include="DotNetCore.CAP" Version="6.2.1" />
<PackageReference Include="DotNetCore.CAP.MySql" Version="6.2.1" />
<PackageReference Include="DotNetCore.CAP.RedisStreams" Version="6.2.1" />
<PackageReference Include="DynamicExpresso.Core" Version="2.8.1" />
<PackageReference Include="GraphQL.Client" Version="3.2.0" />
<PackageReference Include="GraphQL.Client.Serializer.Newtonsoft" Version="3.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.5" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Formatters.Json" Version="2.2.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="5.0.0" />
<PackageReference Include="Microsoft.Extensions.Http" Version="5.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="7.0.0" />
<PackageReference Include="Microsoft.ML" Version="1.5.0" />
<PackageReference Include="Microsoft.ML.FastTree" Version="1.5.0" />
<PackageReference Include="MonitorAopLog.Util" Version="1.0.0" />
<PackageReference Include="NewLife.Core" Version="8.7.2020.601" />
<PackageReference Include="NewLife.Redis" Version="3.6.2020.601" />
<PackageReference Include="NLog.Database" Version="5.0.1" />
<PackageReference Include="NLog.Web.AspNetCore" Version="5.1.0" />
<PackageReference Include="NodaTime" Version="2.4.7" />
<PackageReference Include="NPOI" Version="2.7.3" />
<PackageReference Include="NRules" Version="0.9.0" />
<PackageReference Include="NRules.Fluent" Version="0.9.0" />
<PackageReference Include="NRules.RuleModel" Version="0.9.0" />
<PackageReference Include="NRules.Runtime" Version="0.9.0" />
<PackageReference Include="PinYinConverterCore" Version="1.0.2" />
<PackageReference Include="Snowflake.Core" Version="2.0.0" />
<PackageReference Include="StackExchange.Redis" Version="2.2.79" />
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.6.0" />
<PackageReference Include="System.Management" Version="4.7.0" />
<PackageReference Include="NLog" Version="5.0.1" />
<PackageReference Include="WebSocketUtil" Version="1.0.4.4" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\WeiCloud.Utils\WeiCloud.Utils.csproj" />
</ItemGroup>
</Project>
Loading…
Cancel
Save