From eeb5ffe4eed13d91c4dba60ba605385df13b32ad Mon Sep 17 00:00:00 2001 From: xiaochanghai Date: Tue, 10 Jun 2025 15:38:19 +0800 Subject: [PATCH] =?UTF-8?q?=E8=80=83=E8=AF=95=E7=AE=A1=E7=90=86=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E4=BA=BA=E5=B7=A5=E9=98=85=E5=8D=B7=E5=A4=84=E7=90=86?= =?UTF-8?q?=E5=AE=8C=E6=88=90=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Lib/Tiobon.Core.Base.dll | Bin 176128 -> 176128 bytes Lib/Tiobon.Core.dll | Bin 212992 -> 245760 bytes Lib/Tiobon.Core.xml | 338 +++++ Model/Tiobon.Web.pdm | 14 +- .../Ghre/Ghre_ExamRecordController.cs | 6 + .../Controllers/Ghre/Ghre_SurveyController.cs | 13 +- Tiobon.Core.Common/Helper/ExamHelper.cs | 6 +- Tiobon.Core.Common/Helper/NumberConverter.cs | 168 --- Tiobon.Core.Common/Helper/RecursionHelper.cs | 214 ---- Tiobon.Core.Common/Helper/SerializeHelper.cs | 34 - Tiobon.Core.Common/Helper/ShaHelper.cs | 1086 ----------------- Tiobon.Core.Common/Helper/StringHelper.cs | 293 ----- Tiobon.Core.Common/Helper/UnicodeHelper.cs | 45 - Tiobon.Core.Common/Helper/UrlHelper.cs | 22 - Tiobon.Core.Common/Helper/XmlHelper.cs | 59 - Tiobon.Core.Common/Hubs/ChatHub.cs | 105 -- Tiobon.Core.Common/Hubs/IChatClient.cs | 21 - .../Ghre/IGhre_ExamRecordServices.cs | 2 + .../Ghre/IGhre_SurveyServices.cs | 2 + .../ViewModels/Extend/Ghre_ESSSurvey.cs | 18 + .../Ghre/Ghre_ExamRecordServices.cs | 13 + .../Ghre/Ghre_SurveyServices.cs | 80 +- Tiobon.Core.Tasks/QuartzNet/Jobs/JobBase.cs | 2 +- Tiobon.Core/Tiobon.Core.Api.xml | 7 + 24 files changed, 473 insertions(+), 2075 deletions(-) delete mode 100644 Tiobon.Core.Common/Helper/NumberConverter.cs delete mode 100644 Tiobon.Core.Common/Helper/RecursionHelper.cs delete mode 100644 Tiobon.Core.Common/Helper/SerializeHelper.cs delete mode 100644 Tiobon.Core.Common/Helper/ShaHelper.cs delete mode 100644 Tiobon.Core.Common/Helper/StringHelper.cs delete mode 100644 Tiobon.Core.Common/Helper/UnicodeHelper.cs delete mode 100644 Tiobon.Core.Common/Helper/UrlHelper.cs delete mode 100644 Tiobon.Core.Common/Helper/XmlHelper.cs delete mode 100644 Tiobon.Core.Common/Hubs/ChatHub.cs delete mode 100644 Tiobon.Core.Common/Hubs/IChatClient.cs create mode 100644 Tiobon.Core.Model/ViewModels/Extend/Ghre_ESSSurvey.cs diff --git a/Lib/Tiobon.Core.Base.dll b/Lib/Tiobon.Core.Base.dll index 8f0d34590cecf55bcb564ae6a89d332cb4dc9adf..7b4f60cdb988f6a804695ad13a0c68ba19dcf952 100644 GIT binary patch delta 254 zcmZp8z}4`8YeEML%emV#8hcuM7`OH?een{|)Y)08;D)_+*9zkPx?(<(=e z#8k87#3b|N#58lWMAIZg!(<}^69WrFQ*#pwOXJkEq$Eo-%S20)=?i+9Y`4$vWeSpF zK3lwM`j_QQ0Rpe5UE2G7U!CiOKjQpFD=!|J9W(>&;i3~{$=3qJvNSguqra%!xAWUX3VlZGZ0b&av&lD(Y e0%Tb-7z1^t0o5b{*=9hT2*f7a>(??hG64V`Tv>4d delta 254 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 literal 212992 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%0APg>@t;-Msb;s^Wy<}$Bph$*!!4gJMjWI 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 b=6tB0eg*!vHqk1hXe*1m|Nr~H$ASL_lV%CL diff --git a/Lib/Tiobon.Core.xml b/Lib/Tiobon.Core.xml index 8147e0bf..dab351fa 100644 --- a/Lib/Tiobon.Core.xml +++ b/Lib/Tiobon.Core.xml @@ -1742,6 +1742,276 @@ 【-1 取值结束】【0 未开始】【1 无引号开始】【2 单引号开始】【3 双引号开始】 + + + + 大数据json序列化重写 + + + + + 转换成字符串的类型 + + + + + 大数据json序列化重写实例化 + + + + + 大数据json序列化重写实例化 + + 转换成字符串的类型 + + + + + 确定此实例是否可以转换指定的对象类型。 + + 对象的类型。 + 如果此实例可以转换指定的对象类型,则为:true,否则为:false + + + + + 读取对象的JSON表示。 + + 中读取。 + 对象的类型。 + 正在读取的对象的现有值。 + 调用的序列化器实例。 + 对象值。 + + + + 字符串格式数据转其他类型数据 + + 输入的字符串 + 目标格式 + 转换结果 + + + + + 写入对象的JSON表示形式。 + + 要写入的 。 + 要写入对象值 + 调用的序列化器实例。 + + + + 转换成字符串的类型 + + + + + 长整数 + + + + + 无符号长整数 + + + + + 浮点数 + + + + + 双精度浮点数 + + + + + 大数字 + + + + + 泛型递归求树形结构 + + + + + 将父子级数据结构转换为普通list + + + + + + + 递归子级数据 + + 树形列表数据 + Item + + + + 根据分隔符返回前n条数据 + + 数据内容 + 分隔符 + 前n条 + 是否倒序(默认false) + + + + + 根据字段拼接get参数 + + + + + + + 根据字段拼接get参数 + + + + + + + 获取一个GUID + + 格式-默认为N + + + + + 根据GUID获取19位的唯一数字序列 + + + + + + 获取字符串最后X行 + + + + + + + + 求系统唯一字符串,常用于ROW_ID值。 + + 字符串 + + + + 格式化数字字符,如传入1.24500,返回1.245 + + + + + + + 格式化数字字符,并保留指定的小数位 + + 需要处理的值 + 保留小数点后位数 + + + + + 格式化数字字符,并保留指定的小数位 + + 需要处理的值 + 保留小数点后位数,-1时只会去除小数点后最后几位的0 + + + + + 格式化数字字符,并保留指定的小数位 + + 需要处理的值 + 保留小数点后位数,-1时只会去除小数点后最后几位的0 + + + + + 对象字段描述 + + + + + 获取字段的描述(描述 - 列名) + + + + + + + 字符串转Unicode码 + + The to unicode. + Value. + + + + Unicode转字符串 + + The to string. + Unicode. + + + + UrlEncode编码 + + url + + + + + UrlEncode解码 + + 数据 + + + + + xml序列化帮助类 + + + + + 存储序列类型,防止内存泄漏 + + + + + 转换对象为JSON格式数据 + + + 对象 + 字符格式的JSON数据 + + + + Xml格式字符转换为T类型的对象 + + + + + + + + 序列化 + + + + + + + 反序列化 + + + + + @@ -1869,6 +2139,74 @@ + + + + + + + + 向指定群组发送信息 + + 组名 + 信息内容 + + + + + 加入指定组 + + 组名 + + + + + 退出指定组 + + 组名 + + + + + 向指定成员发送信息 + + 成员名 + 信息内容 + + + + + 当连接建立时运行 + + + + + + 当链接断开时运行 + + + + + + + + + + + + SignalR接收信息 + + 信息内容 + + + + + SignalR接收信息 + + 指定接收客户端 + 信息内容 + + 读取文件内容 diff --git a/Model/Tiobon.Web.pdm b/Model/Tiobon.Web.pdm index 60428180..72f8fe95 100644 --- a/Model/Tiobon.Web.pdm +++ b/Model/Tiobon.Web.pdm @@ -1,5 +1,5 @@ - + @@ -9743,7 +9743,7 @@ DESTINATION 0 新宋体,8,N 1717726229 1719381754 -((-42449,11400), (-39225,18375)) +((-42337,11400), (-39337,18375)) ((-40837,11400),(-40837,18375)) 2 1 @@ -9966,7 +9966,7 @@ DESTINATION 0 新宋体,8,N 1727337857 1727337857 -((-54898,11250), (-48674,18150)) +((-54786,11250), (-48786,18150)) ((-51786,18150),(-51786,11250)) 2 1 @@ -10010,7 +10010,7 @@ DESTINATION 0 新宋体,8,N 1738913762 1747275741 -((-45223,-30675), (-40499,-24525)) +((-45111,-30675), (-40611,-24525)) ((-44099,-30675),(-44099,-27375),(-41624,-27375),(-41624,-24525)) 2 1 @@ -10056,7 +10056,7 @@ DESTINATION 0 新宋体,8,N 1738915648 1738915648 -((-43123,-23625), (-38399,-17925)) +((-43011,-23625), (-38511,-17925)) ((-40761,-17925),(-40761,-23625)) 2 1 @@ -10078,7 +10078,7 @@ DESTINATION 0 新宋体,8,N 1738916095 1738916119 -((-54036,-23812), (-39449,-17325)) +((-53924,-23812), (-39449,-17325)) ((-51674,-17325),(-51674,-23400),(-39449,-23400)) 2 1 @@ -10100,7 +10100,7 @@ DESTINATION 0 新宋体,8,N 1738916098 1738916104 -((-54111,-31050), (-42899,-24863)) +((-53999,-31050), (-42899,-24863)) ((-51749,-31050),(-51749,-25275),(-42899,-25275)) 2 1 diff --git a/Tiobon.Core.Api/Controllers/Ghre/Ghre_ExamRecordController.cs b/Tiobon.Core.Api/Controllers/Ghre/Ghre_ExamRecordController.cs index 0bd34dd4..4142a2fe 100644 --- a/Tiobon.Core.Api/Controllers/Ghre/Ghre_ExamRecordController.cs +++ b/Tiobon.Core.Api/Controllers/Ghre/Ghre_ExamRecordController.cs @@ -302,4 +302,10 @@ public class Ghre_ExamRecordController : BaseController MarkCompleteStatus(long id) + { + return await _service.MarkCompleteStatus(id); + } } \ No newline at end of file diff --git a/Tiobon.Core.Api/Controllers/Ghre/Ghre_SurveyController.cs b/Tiobon.Core.Api/Controllers/Ghre/Ghre_SurveyController.cs index 7e1717f4..3d7356c1 100644 --- a/Tiobon.Core.Api/Controllers/Ghre/Ghre_SurveyController.cs +++ b/Tiobon.Core.Api/Controllers/Ghre/Ghre_SurveyController.cs @@ -143,8 +143,6 @@ public class Ghre_SurveyController : BaseController /// 记录 @@ -155,4 +153,15 @@ public class Ghre_SurveyController : BaseController QueryRecord(long id) => await _service.QueryRecord(id); #endregion + + #region QueryESS + /// + /// QueryESS + /// + /// + /// + [HttpPost("QueryESS")] + public async Task> QueryESS([FromBody] QueryBody id) => await _service.QueryESS(id); + + #endregion } diff --git a/Tiobon.Core.Common/Helper/ExamHelper.cs b/Tiobon.Core.Common/Helper/ExamHelper.cs index 4a335f00..debe36bc 100644 --- a/Tiobon.Core.Common/Helper/ExamHelper.cs +++ b/Tiobon.Core.Common/Helper/ExamHelper.cs @@ -97,7 +97,11 @@ public class ExamHelper { if (record.ExamId != null) { - if (await Db.Queryable().Where(x => x.Id == record.ExamId && x.StudyFinishedRule == DIC_EXAM_STUDY_FINISHED_RULE.STUDY_FINISHED).AnyAsync() || await Db.Queryable().Where(x => x.StudyRecordId == record.Id && x.IsPass == true).AnyAsync()) + if (await Db.Queryable() + .Where(x => x.Id == record.ExamId && + x.StudyFinishedRule == DIC_EXAM_STUDY_FINISHED_RULE.STUDY_FINISHED) + .AnyAsync() || await Db.Queryable() + .Where(x => x.StudyRecordId == record.Id && x.IsPass == true).AnyAsync()) record.CompleteStatus = DIC_STUDY_RECORD_STUDY_COMPLETE_STATUS.FINISHED; } else diff --git a/Tiobon.Core.Common/Helper/NumberConverter.cs b/Tiobon.Core.Common/Helper/NumberConverter.cs deleted file mode 100644 index 6026b515..00000000 --- a/Tiobon.Core.Common/Helper/NumberConverter.cs +++ /dev/null @@ -1,168 +0,0 @@ -using Newtonsoft.Json; -using System.ComponentModel; - -namespace Tiobon.Core.Common.Helper; - -/// -/// -/// 大数据json序列化重写 -/// -public sealed class NumberConverter : JsonConverter -{ - /// - /// 转换成字符串的类型 - /// - private readonly NumberConverterShip _ship; - - /// - /// 大数据json序列化重写实例化 - /// - public NumberConverter() - { - _ship = (NumberConverterShip)0xFF; - } - - /// - /// 大数据json序列化重写实例化 - /// - /// 转换成字符串的类型 - public NumberConverter(NumberConverterShip ship) - { - _ship = ship; - } - - /// - /// - /// 确定此实例是否可以转换指定的对象类型。 - /// - /// 对象的类型。 - /// 如果此实例可以转换指定的对象类型,则为:true,否则为:false - public override bool CanConvert(Type objectType) - { - var typecode = Type.GetTypeCode(objectType.Name.Equals("Nullable`1") ? objectType.GetGenericArguments().First() : objectType); - switch (typecode) - { - case TypeCode.Decimal: - return (_ship & NumberConverterShip.Decimal) == NumberConverterShip.Decimal; - case TypeCode.Double: - return (_ship & NumberConverterShip.Double) == NumberConverterShip.Double; - case TypeCode.Int64: - return (_ship & NumberConverterShip.Int64) == NumberConverterShip.Int64; - case TypeCode.UInt64: - return (_ship & NumberConverterShip.UInt64) == NumberConverterShip.UInt64; - case TypeCode.Single: - return (_ship & NumberConverterShip.Single) == NumberConverterShip.Single; - default: return false; - } - } - - /// - /// - /// 读取对象的JSON表示。 - /// - /// 中读取。 - /// 对象的类型。 - /// 正在读取的对象的现有值。 - /// 调用的序列化器实例。 - /// 对象值。 - public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) - { - return AsType(reader.Value.ObjToString(), objectType); - } - - /// - /// 字符串格式数据转其他类型数据 - /// - /// 输入的字符串 - /// 目标格式 - /// 转换结果 - public static object AsType(string input, Type destinationType) - { - try - { - var converter = TypeDescriptor.GetConverter(destinationType); - if (converter.CanConvertFrom(typeof(string))) - { - return converter.ConvertFrom(null, null, input); - } - - converter = TypeDescriptor.GetConverter(typeof(string)); - if (converter.CanConvertTo(destinationType)) - { - return converter.ConvertTo(null, null, input, destinationType); - } - } - catch - { - return null; - } - return null; - } - - /// - /// - /// 写入对象的JSON表示形式。 - /// - /// 要写入的 。 - /// 要写入对象值 - /// 调用的序列化器实例。 - public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) - { - if (value == null) - { - writer.WriteNull(); - } - else - { - var objectType = value.GetType(); - var typeCode = Type.GetTypeCode(objectType.Name.Equals("Nullable`1") ? objectType.GetGenericArguments().First() : objectType); - switch (typeCode) - { - case TypeCode.Decimal: - writer.WriteValue(((decimal)value).ToString("f6")); - break; - case TypeCode.Double: - writer.WriteValue(((double)value).ToString("f4")); - break; - case TypeCode.Single: - writer.WriteValue(((float)value).ToString("f2")); - break; - default: - writer.WriteValue(value.ToString()); - break; - } - } - } -} - -/// -/// 转换成字符串的类型 -/// -[Flags] -public enum NumberConverterShip -{ - /// - /// 长整数 - /// - Int64 = 1, - - /// - /// 无符号长整数 - /// - UInt64 = 2, - - /// - /// 浮点数 - /// - Single = 4, - - /// - /// 双精度浮点数 - /// - Double = 8, - - /// - /// 大数字 - /// - Decimal =16 -} diff --git a/Tiobon.Core.Common/Helper/RecursionHelper.cs b/Tiobon.Core.Common/Helper/RecursionHelper.cs deleted file mode 100644 index df449b17..00000000 --- a/Tiobon.Core.Common/Helper/RecursionHelper.cs +++ /dev/null @@ -1,214 +0,0 @@ -namespace Tiobon.Core.Common.Helper; - -/// -/// 泛型递归求树形结构 -/// -public static class RecursionHelper -{ - public static void LoopToAppendChildren(List all, PermissionTree curItem, long pid, bool needbtn) - { - var subItems = all.Where(ee => ee.Pid == curItem.value).ToList(); - - var btnItems = subItems.Where(ss => ss.isbtn == true).ToList(); - if (subItems.Count > 0) - { - curItem.btns = new List(); - curItem.btns.AddRange(btnItems); - } - else - { - curItem.btns = null; - } - - if (!needbtn) - { - subItems = subItems.Where(ss => ss.isbtn == false).ToList(); - } - - if (subItems.Count > 0) - { - curItem.children = new List(); - curItem.children.AddRange(subItems); - } - else - { - curItem.children = null; - } - - if (curItem.isbtn) - { - //curItem.label += "按钮"; - } - - foreach (var subItem in subItems) - { - if (subItem.value == pid && pid > 0) - { - //subItem.disabled = true;//禁用当前节点 - } - - LoopToAppendChildren(all, subItem, pid, needbtn); - } - } - public static void LoopToAppendChildren(List all, DepartmentTree curItem, long pid) - { - var subItems = all.Where(ee => ee.Pid == curItem.value).ToList(); - - if (subItems.Count > 0) - { - curItem.children = new List(); - curItem.children.AddRange(subItems); - } - else - { - curItem.children = null; - } - - foreach (var subItem in subItems) - { - if (subItem.value == pid && pid > 0) - { - //subItem.disabled = true;//禁用当前节点 - } - - LoopToAppendChildren(all, subItem, pid); - } - } - - - public static void LoopNaviBarAppendChildren(List all, NavigationBar curItem) - { - var subItems = all.Where(ee => ee.pid == curItem.id).ToList(); - - if (subItems.Count > 0) - { - curItem.children = new List(); - curItem.children.AddRange(subItems); - } - else - { - curItem.children = null; - } - - - foreach (var subItem in subItems) - { - LoopNaviBarAppendChildren(all, subItem); - } - } - - - public static void LoopToAppendChildrenT(List all, T curItem, string parentIdName = "Pid", string idName = "value", string childrenName = "children") - { - var subItems = all.Where(ee => ee.GetType().GetProperty(parentIdName).GetValue(ee, null).ToString() == curItem.GetType().GetProperty(idName).GetValue(curItem, null).ToString()).ToList(); - - if (subItems.Count > 0) curItem.GetType().GetField(childrenName).SetValue(curItem, subItems); - foreach (var subItem in subItems) - { - LoopToAppendChildrenT(all, subItem); - } - } - - /// - /// 将父子级数据结构转换为普通list - /// - /// - /// - public static List TreeToList(List list, Action> action = null) - { - List results = new List(); - foreach (var item in list) - { - results.Add(item); - OperationChildData(results, item, action); - } - - return results; - } - - /// - /// 递归子级数据 - /// - /// 树形列表数据 - /// Item - public static void OperationChildData(List allList, T item, Action> action) - { - dynamic dynItem = item; - if (dynItem.Children == null) return; - if (dynItem.Children.Count <= 0) return; - allList.AddRange(dynItem.Children); - foreach (var subItem in dynItem.Children) - { - action?.Invoke(item, subItem, allList); - OperationChildData(allList, subItem, action); - } - } -} - -public class PermissionTree -{ - public long value { get; set; } - public long Pid { get; set; } - public string label { get; set; } - public int order { get; set; } - public bool isbtn { get; set; } - public bool disabled { get; set; } - public List children { get; set; } - public List btns { get; set; } -} - -public class DepartmentTree -{ - public long value { get; set; } - public long Pid { get; set; } - public string label { get; set; } - public int order { get; set; } - public bool disabled { get; set; } - public List children { get; set; } -} - -public class NavigationBar -{ - public long id { get; set; } - public long pid { get; set; } - public int order { get; set; } - public string name { get; set; } - public bool IsHide { get; set; } = false; - public bool IsButton { get; set; } = false; - public string path { get; set; } - public string Func { get; set; } - public string iconCls { get; set; } - public NavigationBarMeta meta { get; set; } - public List children { get; set; } -} - -public class NavigationBarMeta -{ - public string title { get; set; } - public bool requireAuth { get; set; } = true; - public bool NoTabPage { get; set; } = false; - public bool keepAlive { get; set; } = false; -} - - -public class NavigationBarPro -{ - public long id { get; set; } - public long parentId { get; set; } - public int order { get; set; } - public string name { get; set; } - public bool IsHide { get; set; } = false; - public bool IsButton { get; set; } = false; - public string path { get; set; } - public string component { get; set; } - public string Func { get; set; } - public string iconCls { get; set; } - public NavigationBarMetaPro meta { get; set; } -} - -public class NavigationBarMetaPro -{ - public string title { get; set; } - public string icon { get; set; } - public bool show { get; set; } = false; -} \ No newline at end of file diff --git a/Tiobon.Core.Common/Helper/SerializeHelper.cs b/Tiobon.Core.Common/Helper/SerializeHelper.cs deleted file mode 100644 index fe7f485d..00000000 --- a/Tiobon.Core.Common/Helper/SerializeHelper.cs +++ /dev/null @@ -1,34 +0,0 @@ -using Newtonsoft.Json; -using System.Text; - -namespace Tiobon.Core.Common; - -public class SerializeHelper -{ - /// - /// 序列化 - /// - /// - /// - public static byte[] Serialize(object item) - { - var jsonString = JsonConvert.SerializeObject(item); - - return Encoding.UTF8.GetBytes(jsonString); - } - /// - /// 反序列化 - /// - /// - /// - /// - public static TEntity Deserialize(byte[] value) - { - if (value == null) - { - return default(TEntity); - } - var jsonString = Encoding.UTF8.GetString(value); - return JsonConvert.DeserializeObject(jsonString); - } -} diff --git a/Tiobon.Core.Common/Helper/ShaHelper.cs b/Tiobon.Core.Common/Helper/ShaHelper.cs deleted file mode 100644 index 96a765c5..00000000 --- a/Tiobon.Core.Common/Helper/ShaHelper.cs +++ /dev/null @@ -1,1086 +0,0 @@ -// This is an implementation of -// http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf - -namespace Tiobon.Core.Common.Helper; - -using Word32 = System.UInt32; -using Word64 = System.UInt64; - - -public static class ShaHelper -{ - // Constants K - static Word32[] K1; - static Word32[] K256; - static Word64[] K512; - - // Initial hash values H0 - static Word32[] H0Sha1; - static Word32[] H0Sha224; - static Word32[] H0Sha256; - static Word64[] H0Sha384; - static Word64[] H0Sha512; - static Word64[] H0Sha512_224; - static Word64[] H0Sha512_256; - - - static ShaHelper() - { - DefineK1(); - DefineK256(); - DefineK512(); - - DefineH0Sha1(); - DefineH0Sha224(); - DefineH0Sha256(); - DefineH0Sha384(); - DefineH0Sha512(); - DefineH0Sha512_224(); - DefineH0Sha512_256(); - } - - - #region Public Functions - - public static byte[] Sha1(byte[] plaintext) - { - DefineH0Sha1(); - return Sha1Algorithm(plaintext); - } - - public static string Sha1(string plaintext) - { - return ShaUtilities.ByteArrayToHexString(Sha1(ShaUtilities.StringToByteArray(plaintext))); - } - - public static byte[] Sha224(byte[] plaintext) - { - DefineH0Sha224(); - return Sha256Algorithm(plaintext, H0Sha224, 224); - } - - public static string Sha224(string plaintext) - { - return ShaUtilities.ByteArrayToHexString(Sha224(ShaUtilities.StringToByteArray(plaintext))); - } - - public static byte[] Sha256(byte[] plaintext) - { - DefineH0Sha256(); - return Sha256Algorithm(plaintext, H0Sha256, 256); - } - - public static string Sha256(string plaintext) - { - return ShaUtilities.ByteArrayToHexString(Sha256(ShaUtilities.StringToByteArray(plaintext))); - } - - public static byte[] Sha512(byte[] plaintext) - { - DefineH0Sha512(); - return Sha512Algorithm(plaintext, H0Sha512, 512); - } - - public static string Sha512(string plaintext) - { - return ShaUtilities.ByteArrayToHexString(Sha512(ShaUtilities.StringToByteArray(plaintext))); - } - - public static byte[] Sha384(byte[] plaintext) - { - DefineH0Sha384(); - return Sha512Algorithm(plaintext, H0Sha384, 384); - } - - public static string Sha384(string plaintext) - { - return ShaUtilities.ByteArrayToHexString(Sha384(ShaUtilities.StringToByteArray(plaintext))); - } - - public static byte[] Sha512_224(byte[] plaintext) - { - DefineH0Sha512_224(); - return Sha512Algorithm(plaintext, H0Sha512_224, 224); - } - - public static string Sha512_224(string plaintext) - { - return ShaUtilities.ByteArrayToHexString(Sha512_224(ShaUtilities.StringToByteArray(plaintext))); - } - - public static byte[] Sha512_256(byte[] plaintext) - { - DefineH0Sha512_256(); - return Sha512Algorithm(plaintext, H0Sha512_256, 256); - } - - public static string Sha512_256(string plaintext) - { - return ShaUtilities.ByteArrayToHexString(Sha512_256(ShaUtilities.StringToByteArray(plaintext))); - } - - #endregion - - - - - - #region Hash Algorithms - - static Word32[] CreateMessageScheduleSha1(Block512 block) - { - // The message schedule. - Word32[] W = new Word32[80]; - - // Prepare the message schedule W. - // The first 16 words in W are the same as the words of the block. - // The remaining 80-16 = 64 words in W are functions of the previously defined words. - for (int t = 0; t < 80; t++) - { - if (t < 16) - { - W[t] = block.words[t]; - } - else - { - W[t] = RotL(1, W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16]); - } - } - - return W; - } - - static Word32[] CreateMessageScheduleSha256(Block512 block) - { - // The message schedule. - Word32[] W = new Word32[64]; - - // Prepare the message schedule W. - // The first 16 words in W are the same as the words of the block. - // The remaining 64-16 = 48 words in W are functions of the previously defined words. - for (int t = 0; t < 64; t++) - { - if (t < 16) - { - W[t] = block.words[t]; - } - else - { - W[t] = sigma1_256(W[t - 2]) + W[t - 7] + sigma0_256(W[t - 15]) + W[t - 16]; - } - } - - return W; - } - - static Word64[] CreateMessageScheduleSha512(Block1024 block) - { - // The message schedule. - Word64[] W = new Word64[80]; - - // Prepare the message schedule W. - // The first 16 words in W are the same as the words of the block. - // The remaining 80-16 =64 words in W are functions of the previously defined words. - for (int t = 0; t < 80; t++) - { - if (t < 16) - { - W[t] = block.words[t]; - } - else - { - W[t] = sigma1_512(W[t - 2]) + W[t - 7] + sigma0_512(W[t - 15]) + W[t - 16]; - } - } - - return W; - } - - static byte[] Sha1Algorithm(byte[] plaintext) - { - Block512[] blocks = ConvertPaddedTextToBlock512Array(PadPlainText512(plaintext)); - - // Define the hash variable and set its initial values. - Word32[] H = new Word32[5]; - H0Sha1.CopyTo(H, 0); - - for (int i = 0; i < blocks.Length; i++) - { - Word32[] W = CreateMessageScheduleSha1(blocks[i]); - - // Set the working variables a,...,e to the current hash values. - Word32 a = H[0]; - Word32 b = H[1]; - Word32 c = H[2]; - Word32 d = H[3]; - Word32 e = H[4]; - - for (int t = 0; t < 80; t++) - { - Word32 T = RotL(5, a) + f(t, b, c, d) + e + K1[t] + W[t]; - e = d; - d = c; - c = RotL(30, b); - b = a; - a = T; - } - - // Update the current value of the hash H after processing block i. - H[0] += a; - H[1] += b; - H[2] += c; - H[3] += d; - H[4] += e; - } - - // Concatenating the final 5 hash words H[0],...,H[4] gives the digest. - // Since each H[i] is 4 bytes, the digest is 5 * 4 = 20 bytes = 160 bits. - return ShaUtilities.Word32ArrayToByteArray(H); - } - - static byte[] Sha256Algorithm(byte[] plaintext, Word32[] H0, int numberBits) - { - Block512[] blocks = ConvertPaddedTextToBlock512Array(PadPlainText512(plaintext)); - - // Define the hash variables and set their initial values. - Word32[] H = H0; - - for (int i = 0; i < blocks.Length; i++) - { - Word32[] W = CreateMessageScheduleSha256(blocks[i]); - - // Set the working variables a,...,h to the current hash values. - Word32 a = H[0]; - Word32 b = H[1]; - Word32 c = H[2]; - Word32 d = H[3]; - Word32 e = H[4]; - Word32 f = H[5]; - Word32 g = H[6]; - Word32 h = H[7]; - - for (int t = 0; t < 64; t++) - { - Word32 T1 = h + Sigma1_256(e) + Ch(e, f, g) + K256[t] + W[t]; - Word32 T2 = Sigma0_256(a) + Maj(a, b, c); - h = g; - g = f; - f = e; - e = d + T1; - d = c; - c = b; - b = a; - a = T1 + T2; - } - - // Update the current value of the hash H after processing block i. - H[0] += a; - H[1] += b; - H[2] += c; - H[3] += d; - H[4] += e; - H[5] += f; - H[6] += g; - H[7] += h; - } - - // Concatenate all the Word32 Hash Values - byte[] hash = ShaUtilities.Word32ArrayToByteArray(H); - - // The number of bytes in the final output hash - int numberBytes = numberBits / 8; - byte[] truncatedHash = new byte[numberBytes]; - Array.Copy(hash, truncatedHash, numberBytes); - - return truncatedHash; - } - - static byte[] Sha512Algorithm(byte[] plaintext, Word64[] H0, int numberBits) - { - Block1024[] blocks = ConvertPaddedMessageToBlock1024Array(PadPlainText1024(plaintext)); - - // Define the hash variable and set its initial values. - Word64[] H = H0; - - for (int i = 0; i < blocks.Length; i++) - { - Word64[] W = CreateMessageScheduleSha512(blocks[i]); - - // Set the working variables a,...,h to the current hash values. - Word64 a = H[0]; - Word64 b = H[1]; - Word64 c = H[2]; - Word64 d = H[3]; - Word64 e = H[4]; - Word64 f = H[5]; - Word64 g = H[6]; - Word64 h = H[7]; - - for (int t = 0; t < 80; t++) - { - Word64 T1 = h + Sigma1_512(e) + Ch(e, f, g) + K512[t] + W[t]; - Word64 T2 = Sigma0_512(a) + Maj(a, b, c); - h = g; - g = f; - f = e; - e = d + T1; - d = c; - c = b; - b = a; - a = T1 + T2; - } - - // Update the current value of the hash H after processing block i. - H[0] += a; - H[1] += b; - H[2] += c; - H[3] += d; - H[4] += e; - H[5] += f; - H[6] += g; - H[7] += h; - } - - // Concatenate all the Word64 Hash Values - byte[] hash = ShaUtilities.Word64ArrayToByteArray(H); - - // The number of bytes in the final output hash - int numberBytes = numberBits / 8; - byte[] truncatedHash = new byte[numberBytes]; - Array.Copy(hash, truncatedHash, numberBytes); - - return truncatedHash; - } - - #endregion - - - #region Plaintext preprocessing functions - - static byte[] PadPlainText512(byte[] plaintext) - { - // After padding the total bits of the output will be divisible by 512. - int numberBits = plaintext.Length * 8; - int t = (numberBits + 8 + 64) / 512; - - // Note that 512 * (t + 1) is the least multiple of 512 greater than (numberBits + 8 + 64) - // Therefore the number of zero bits we need to add is - int k = 512 * (t + 1) - (numberBits + 8 + 64); - - // Since numberBits % 8 = 0, we know k % 8 = 0. So n = k / 8 is the number of zero bytes to add. - int n = k / 8; - - List paddedtext = plaintext.ToList(); - - // Start the padding by concatenating 1000_0000 = 0x80 = 128 - paddedtext.Add(0x80); - - // Next add n zero bytes - for (int i = 0; i < n; i++) - { - paddedtext.Add(0); - } - - // Now add 8 bytes (64 bits) to represent the length of the message in bits - byte[] B = BitConverter.GetBytes((ulong)numberBits); - Array.Reverse(B); - - for (int i = 0; i < B.Length; i++) - { - paddedtext.Add(B[i]); - } - - return paddedtext.ToArray(); - } - - static byte[] PadPlainText1024(byte[] plaintext) - { - // After padding the total bits of the output will be divisible by 1024. - int numberBits = plaintext.Length * 8; - int t = (numberBits + 8 + 128) / 1024; - - // Note that 1024 * (t + 1) is the least multiple of 1024 greater than (numberBits + 8 + 128) - // Therefore the number of zero bits we need to add is - int k = 1024 * (t + 1) - (numberBits + 8 + 128); - - // Since numberBits % 8 = 0, we know k % 8 = 0. So n = k / 8 is the number of zero bytes to add. - int n = k / 8; - - List paddedtext = plaintext.ToList(); - - // Start the padding by concatenating 1000_0000 = 0x80 = 128 - paddedtext.Add(0x80); - - // Next add n zero bytes - for (int i = 0; i < n; i++) - { - paddedtext.Add(0); - } - - // Now add 16 bytes (128 bits) to represent the length of the message in bits. - // C# does not have 128 bit integer. - // For now just add 8 zero bytes and then 8 bytes to represent the int - for (int i = 0; i < 8; i++) - { - paddedtext.Add(0); - } - - byte[] B = BitConverter.GetBytes((ulong)numberBits); - Array.Reverse(B); - - for (int i = 0; i < B.Length; i++) - { - paddedtext.Add(B[i]); - } - - return paddedtext.ToArray(); - } - - static Block512[] ConvertPaddedTextToBlock512Array(byte[] paddedtext) - { - // We are assuming M has been padded, so the number of bits in M is divisible by 512 - int numberBlocks = (paddedtext.Length * 8) / 512; // same as: paddedtext.Length / 64 - Block512[] blocks = new Block512[numberBlocks]; - - for (int i = 0; i < numberBlocks; i++) - { - // First extract the relavant subarray from paddedtext - byte[] B = new byte[64]; // 64 * 8 = 512 - - for (int j = 0; j < 64; j++) - { - B[j] = paddedtext[i * 64 + j]; - } - - Word32[] words = ShaUtilities.ByteArrayToWord32Array(B); - blocks[i] = new Block512(words); - } - - return blocks; - } - - static Block1024[] ConvertPaddedMessageToBlock1024Array(byte[] M) - { - // We are assuming M is padded, so the number of bits in M is divisible by 1024 - int numberBlocks = (M.Length * 8) / 1024; // same as: M.Length / 128 - Block1024[] blocks = new Block1024[numberBlocks]; - - for (int i = 0; i < numberBlocks; i++) - { - // First extract the relavant subarray from M - byte[] B = new byte[128]; // 128 * 8 = 1024 - - for (int j = 0; j < 128; j++) - { - B[j] = M[i * 128 + j]; - } - - Word64[] words = ShaUtilities.ByteArrayToWord64Array(B); - blocks[i] = new Block1024(words); - } - - return blocks; - } - - - #endregion - - - - #region Functions used in the hashing process. - - // Most of these functions have a Word32 version and a Word64 version. - // Sometimes they are the same (Ch, Maj,..) but sometimes different (Sigma0_256, Sigma0_512). - // We do not need a RotL or Parity function for Word64 since they are only used in Sha-1. - - static Word32 ShR(int n, Word32 x) - { - // should have 0 <= n < 32 - return (x >> n); - } - - static Word64 ShR(int n, Word64 x) - { - // should have 0 <= n < 64 - return (x >> n); - } - - static Word32 RotR(int n, Word32 x) - { - // should have 0 <= n < 32 - return (x >> n) | (x << 32 - n); - } - - static Word64 RotR(int n, Word64 x) - { - // should have 0 <= n < 64 - return (x >> n) | (x << 64 - n); - } - - static Word32 RotL(int n, Word32 x) - { - // should have 0 <= n < 32 - return (x << n) | (x >> 32 - n); - } - - static Word32 Ch(Word32 x, Word32 y, Word32 z) - { - return (x & y) ^ (~x & z); - } - - static Word64 Ch(Word64 x, Word64 y, Word64 z) - { - return (x & y) ^ (~x & z); - } - - static Word32 Maj(Word32 x, Word32 y, Word32 z) - { - return (x & y) ^ (x & z) ^ (y & z); - } - - static Word64 Maj(Word64 x, Word64 y, Word64 z) - { - return (x & y) ^ (x & z) ^ (y & z); - } - - static Word32 Parity(Word32 x, Word32 y, Word32 z) - { - return x ^ y ^ z; - } - - static Word32 f(int t, Word32 x, Word32 y, Word32 z) - { - // This function is used in Sha-1 - // should have 0 <= t <= 79 - - if (t >= 0 && t <= 19) - { - return Ch(x, y, z); - } - else if (t >= 20 && t <= 39) - { - return Parity(x, y, z); - } - else if (t >= 40 && t <= 59) - { - return Maj(x, y, z); - } - else if (t >= 60 && t <= 79) - { - return Parity(x, y, z); - } - else - { - throw new ArgumentException("ERROR: t is out of bounds"); - } - } - - static Word32 Sigma0_256(Word32 x) - { - return RotR(2, x) ^ RotR(13, x) ^ RotR(22, x); - } - - static Word32 Sigma1_256(Word32 x) - { - return RotR(6, x) ^ RotR(11, x) ^ RotR(25, x); - } - - static Word32 sigma0_256(Word32 x) - { - return RotR(7, x) ^ RotR(18, x) ^ ShR(3, x); - } - - static Word32 sigma1_256(Word32 x) - { - return RotR(17, x) ^ RotR(19, x) ^ ShR(10, x); - } - - static Word64 Sigma0_512(Word64 x) - { - return RotR(28, x) ^ RotR(34, x) ^ RotR(39, x); - } - - static Word64 Sigma1_512(Word64 x) - { - return RotR(14, x) ^ RotR(18, x) ^ RotR(41, x); - } - - static Word64 sigma0_512(Word64 x) - { - return RotR(1, x) ^ RotR(8, x) ^ ShR(7, x); - } - - static Word64 sigma1_512(Word64 x) - { - return RotR(19, x) ^ RotR(61, x) ^ ShR(6, x); - } - - #endregion - - - - #region Functions to define the constants K and the initial hashes H0. - - static void DefineK1() - { - // The eighty 32-bit words in the array K1 are used in Sha-1. - - K1 = new Word32[80]; - - for (int i = 0; i < 80; i++) - { - if (i <= 19) - { - K1[i] = 0x5a827999; - } - else if (i <= 39) - { - K1[i] = 0x6ed9eba1; - } - else if (i <= 59) - { - K1[i] = 0x8f1bbcdc; - } - else - { - K1[i] = 0xca62c1d6; - } - } - } - - static void DefineK256() - { - // The sixty four 32-bit words in the array K256 are used in Sha-224 and Sha-256. - // They are obtained by taking the first 32 bits of the fractional - // parts of the cube roots of the first sixty four primes. - // ------------------------------------------------------- - // NOTE: To find the first 32 bits of the fractional part of the cube root of an integer n: - // double x = Math.Pow(n, 1d / 3); - // x = x - Math.Floor(x); - // x = x * Math.Pow(2, 32); - // return (uint)x; - - K256 = new Word32[] - { - 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, - 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, - 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, - 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, - 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, - 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, - 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, - 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 - }; - } - - static void DefineK512() - { - // The eighty 64-bit words in the array K512 are used in Sha-384, Sha-512, Sha-512/224, Sha-512/256. - // They are obtained by taking the first 64 bits of the fractional - // parts of the cube roots of the first eighty primes. - - K512 = new Word64[] - { - 0x428a2f98d728ae22, 0x7137449123ef65cd, 0xb5c0fbcfec4d3b2f, 0xe9b5dba58189dbbc, - 0x3956c25bf348b538, 0x59f111f1b605d019, 0x923f82a4af194f9b, 0xab1c5ed5da6d8118, - 0xd807aa98a3030242, 0x12835b0145706fbe, 0x243185be4ee4b28c, 0x550c7dc3d5ffb4e2, - 0x72be5d74f27b896f, 0x80deb1fe3b1696b1, 0x9bdc06a725c71235, 0xc19bf174cf692694, - 0xe49b69c19ef14ad2, 0xefbe4786384f25e3, 0x0fc19dc68b8cd5b5, 0x240ca1cc77ac9c65, - 0x2de92c6f592b0275, 0x4a7484aa6ea6e483, 0x5cb0a9dcbd41fbd4, 0x76f988da831153b5, - 0x983e5152ee66dfab, 0xa831c66d2db43210, 0xb00327c898fb213f, 0xbf597fc7beef0ee4, - 0xc6e00bf33da88fc2, 0xd5a79147930aa725, 0x06ca6351e003826f, 0x142929670a0e6e70, - 0x27b70a8546d22ffc, 0x2e1b21385c26c926, 0x4d2c6dfc5ac42aed, 0x53380d139d95b3df, - 0x650a73548baf63de, 0x766a0abb3c77b2a8, 0x81c2c92e47edaee6, 0x92722c851482353b, - 0xa2bfe8a14cf10364, 0xa81a664bbc423001, 0xc24b8b70d0f89791, 0xc76c51a30654be30, - 0xd192e819d6ef5218, 0xd69906245565a910, 0xf40e35855771202a, 0x106aa07032bbd1b8, - 0x19a4c116b8d2d0c8, 0x1e376c085141ab53, 0x2748774cdf8eeb99, 0x34b0bcb5e19b48a8, - 0x391c0cb3c5c95a63, 0x4ed8aa4ae3418acb, 0x5b9cca4f7763e373, 0x682e6ff3d6b2b8a3, - 0x748f82ee5defb2fc, 0x78a5636f43172f60, 0x84c87814a1f0ab72, 0x8cc702081a6439ec, - 0x90befffa23631e28, 0xa4506cebde82bde9, 0xbef9a3f7b2c67915, 0xc67178f2e372532b, - 0xca273eceea26619c, 0xd186b8c721c0c207, 0xeada7dd6cde0eb1e, 0xf57d4f7fee6ed178, - 0x06f067aa72176fba, 0x0a637dc5a2c898a6, 0x113f9804bef90dae, 0x1b710b35131c471b, - 0x28db77f523047d84, 0x32caab7b40c72493, 0x3c9ebe0a15c9bebc, 0x431d67c49c100d4c, - 0x4cc5d4becb3e42b6, 0x597f299cfc657e2a, 0x5fcb6fab3ad6faec, 0x6c44198c4a475817 - }; - } - - static void DefineH0Sha1() - { - H0Sha1 = new Word32[] - { - 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 - }; - } - - static void DefineH0Sha224() - { - H0Sha224 = new Word32[] - { - 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, - 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 - }; - - } - - static void DefineH0Sha256() - { - // These eight 32-bit words are obtained by taking the first 32 bits of the - // fractional parts of the square roots of the first 8 prime numbers. - - H0Sha256 = new Word32[] - { - 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, - 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19 - }; - } - - static void DefineH0Sha384() - { - // These eight 64-bit words are obtained by taking the first 64 bits of the - // fractional parts of the square roots of the ninth through sixteenth prime numbers. - - H0Sha384 = new Word64[] - { - 0xcbbb9d5dc1059ed8, 0x629a292a367cd507, 0x9159015a3070dd17, 0x152fecd8f70e5939, - 0x67332667ffc00b31, 0x8eb44a8768581511, 0xdb0c2e0d64f98fa7, 0x47b5481dbefa4fa4 - }; - } - - static void DefineH0Sha512() - { - // These eight 64-bit words are obtained by taking the first 64 bits of the - // fractional parts of the square roots of the first eight prime numbers. - - H0Sha512 = new Word64[] - { - 0x6a09e667f3bcc908, 0xbb67ae8584caa73b, 0x3c6ef372fe94f82b, 0xa54ff53a5f1d36f1, - 0x510e527fade682d1, 0x9b05688c2b3e6c1f, 0x1f83d9abfb41bd6b, 0x5be0cd19137e2179 - }; - } - - static void DefineH0Sha512_224() - { - // These eight 64-bit words are obtained from GenerateInitialHashSha512t(224) - - H0Sha512_224 = new Word64[] - { - 0x8c3d37c819544da2, 0x73e1996689dcd4d6, 0x1dfab7ae32ff9c82, 0x679dd514582f9fcf, - 0x0f6d2b697bd44da8, 0x77e36f7304c48942, 0x3f9d85a86a1d36c8, 0x1112e6ad91d692a1 - }; - } - - static void DefineH0Sha512_256() - { - // These eight 64-bit words are obtained from GenerateInitialHashSha512t(256) - - H0Sha512_256 = new Word64[] - { - 0x22312194fc2bf72c, 0x9f555fa3c84c64c2, 0x2393b86b6f53b151, 0x963877195940eabd, - 0x96283ee2a88effe3, 0xbe5e1e2553863992, 0x2b0199fc2c85b8aa, 0x0eb72ddc81c52ca2 - }; - } - - /* - static Word64[] GenerateInitialHashSha512t(int t) - { - // t = number of bits. - // We assume t is postive, divisible by 8 and is strictly less than 512. - // Also assume numberBits != 384 (WHY does 384 get its own initial hash?) - - Word64[] H0 = new Word64[8]; - - for (int i = 0; i < 8; i++) - { - H0[i] = H0Sha512[i] ^ 0xa5a5a5a5a5a5a5a5; - } - - byte[] B = ShaUtil.StringToByteArray("SHA-512/" + t.ToString()); // so arbitary! - - return ShaUtil.ByteArrayToWord64Array(Sha512(B)); ; - } - */ - - #endregion - -} - - -// Helper Classes - -class Block512 -{ - // A Block512 consists of an array of 16 elements of type Word32. - public Word32[] words; - - public Block512(Word32[] words) - { - if (words.Length == 16) - { - this.words = words; - } - else - { - Console.WriteLine("ERROR: A block must be 16 words"); - this.words = null; - } - } -} - - -class Block1024 -{ - // A Block1024 consists of an array of 16 elements of type Word64. - public Word64[] words; - - public Block1024(Word64[] words) - { - if (words.Length == 16) - { - this.words = words; - } - else - { - Console.WriteLine("ERROR: A block must be 16 words"); - this.words = null; - } - } -} - - -static class ShaUtilities -{ - #region Functions to convert between byte arrays and Word32 arrays, and Word64 arrays. - - public static bool ByteArraysEqual(byte[] B1, byte[] B2) - { - if ((B1 == null) && (B2 == null)) - return true; - - if ((B1 == null) || (B2 == null)) - return false; - - if (B1.Length != B2.Length) - return false; - - for (int i = 0; i < B1.Length; i++) - { - if (B1[i] != B2[i]) - return false; - } - - return true; - } - - public static byte[] StringToByteArray(string plaintext) - { - char[] c = plaintext.ToCharArray(); - int numberBytes = plaintext.Length; - byte[] b = new byte[numberBytes]; - - for (int i = 0; i < numberBytes; i++) - { - b[i] = Convert.ToByte(c[i]); - } - - return b; - } - - // Returns an array of 4 bytes. - public static byte[] Word32ToByteArray(Word32 x) - { - byte[] b = BitConverter.GetBytes(x); - Array.Reverse(b); - return b; - } - - // Returns an array of 8 bytes. - public static byte[] Word64ToByteArray(Word64 x) - { - byte[] b = BitConverter.GetBytes(x); - Array.Reverse(b); - return b; - } - - public static byte[] Word32ArrayToByteArray(Word32[] words) - { - List b = new List(); - - for (int i = 0; i < words.Length; i++) - { - b.AddRange(Word32ToByteArray(words[i])); - } - - return b.ToArray(); - } - - public static byte[] Word32ArrayToByteArray(Word32[] words, int startIndex, int numberWords) - { - // This overload is useful in Sha224 - // assume 0 <= startIndex < words.Length and startIndex + numberWords <= words.Length - - List b = new List(); - - for (int i = startIndex; i < startIndex + numberWords; i++) - { - b.AddRange(Word32ToByteArray(words[i])); - } - - return b.ToArray(); - } - - public static byte[] Word64ArrayToByteArray(Word64[] words) - { - List b = new List(); - - for (int i = 0; i < words.Length; i++) - { - b.AddRange(Word64ToByteArray(words[i])); - } - - return b.ToArray(); - } - - public static Word32 ByteArrayToWord32(byte[] B, int startIndex) - { - // We assume: 0 <= startIndex < B. Length, and startIndex + 4 <= B.Length - - Word32 c = 256; - Word32 output = 0; - - for (int i = startIndex; i < startIndex + 4; i++) - { - output = output * c + (Word32)B[i]; - } - - return output; - } - - public static Word64 ByteArrayToWord64(byte[] B, int startIndex) - { - // We assume: 0 <= startIndex < B. Length, and startIndex + 8 <= B.Length - Word64 c = 256; - Word64 output = 0; - - for (int i = startIndex; i < startIndex + 8; i++) - { - output = output * c + B[i]; - } - - return output; - } - - public static Word32[] ByteArrayToWord32Array(byte[] B) - { - // We assume B is not null, is not empty and number elements is divisible by 4 - int numberBytes = B.Length; - int n = numberBytes / 4; // 4 bytes for each Word32 - Word32[] word32Array = new Word32[n]; - - for (int i = 0; i < n; i++) - { - word32Array[i] = ByteArrayToWord32(B, 4 * i); - } - - return word32Array; - } - - - public static Word64[] ByteArrayToWord64Array(byte[] B) - { - // We assume B is not null, is not empty and number elements is divisible by 8 - int numberWords = B.Length / 8; // 8 bytes for each Word32 - Word64[] word64Array = new Word64[numberWords]; - - for (int i = 0; i < numberWords; i++) - { - word64Array[i] = ByteArrayToWord64(B, 8 * i); - } - - return word64Array; - } - - #endregion - - - #region To string methods - - public static string ByteToBinaryString(byte b) - { - string binaryString = Convert.ToString(b, 2).PadLeft(8, '0'); - return binaryString.Substring(0, 4) + "_" + binaryString.Substring(4, 4); - } - - public static string ByteArrayToBinaryString(byte[] x) - { - string binaryString = ""; - - for (int i = 0; i < x.Length; i++) - { - binaryString += ByteToBinaryString(x[i]); - - if (i < x.Length - 1) - { - binaryString += " "; - } - } - - return binaryString; - } - - public static string ByteToHexString(byte b) - { - return Convert.ToString(b, 16).PadLeft(2, '0'); - } - - public static string ByteArrayToHexString(byte[] a) - { - string hexString = ""; - - for (int i = 0; i < a.Length; i++) - { - hexString += ByteToHexString(a[i]); - } - - return hexString; - } - - public static string Word32ToBinaryString(Word32 x) - { - return ByteArrayToBinaryString(Word32ToByteArray(x)); - } - - public static string Word32ToHexString(Word32 x) - { - return ByteArrayToHexString(Word32ToByteArray(x)); - } - - public static string Word64ToHexString(Word64 x) - { - return ByteArrayToHexString(Word64ToByteArray(x)); - } - - public static string ByteArrayToString(byte[] X) - { - if (X == null) - { - Console.WriteLine("ERROR: The byte array is null"); - return null; - } - - string s = ""; - - for (int i = 0; i < X.Length; i++) - { - s += (char)X[i]; - } - - return s; - } - - #endregion -} - - - - - diff --git a/Tiobon.Core.Common/Helper/StringHelper.cs b/Tiobon.Core.Common/Helper/StringHelper.cs deleted file mode 100644 index 90c9e64c..00000000 --- a/Tiobon.Core.Common/Helper/StringHelper.cs +++ /dev/null @@ -1,293 +0,0 @@ -using System.ComponentModel; -using System.Reflection; -using System.Text; - -namespace Tiobon.Core.Common.Helper; - -public class StringHelper -{ - /// - /// 根据分隔符返回前n条数据 - /// - /// 数据内容 - /// 分隔符 - /// 前n条 - /// 是否倒序(默认false) - /// - public static List GetTopDataBySeparator(string content, string separator, int top, bool isDesc = false) - { - if (string.IsNullOrEmpty(content)) - { - return new List() { }; - } - - if (string.IsNullOrEmpty(separator)) - { - throw new ArgumentException("message", nameof(separator)); - } - - var dataArray = content.Split(separator).Where(d => !string.IsNullOrEmpty(d)).ToArray(); - if (isDesc) - { - Array.Reverse(dataArray); - } - - if (top > 0) - { - dataArray = dataArray.Take(top).ToArray(); - } - - return dataArray.ToList(); - } - /// - /// 根据字段拼接get参数 - /// - /// - /// - public static string GetPars(Dictionary dic) - { - - StringBuilder sb = new StringBuilder(); - string urlPars = null; - bool isEnter = false; - foreach (var item in dic) - { - sb.Append($"{(isEnter ? "&" : "")}{item.Key}={item.Value}"); - isEnter = true; - } - urlPars = sb.ToString(); - return urlPars; - } - /// - /// 根据字段拼接get参数 - /// - /// - /// - public static string GetPars(Dictionary dic) - { - - StringBuilder sb = new StringBuilder(); - string urlPars = null; - bool isEnter = false; - foreach (var item in dic) - { - sb.Append($"{(isEnter ? "&" : "")}{item.Key}={item.Value}"); - isEnter = true; - } - urlPars = sb.ToString(); - return urlPars; - } - /// - /// 获取一个GUID - /// - /// 格式-默认为N - /// - public static string GetGUID(string format = "N") - { - return Guid.NewGuid().ToString(format); - } - /// - /// 根据GUID获取19位的唯一数字序列 - /// - /// - public static long GetGuidToLongID() - { - byte[] buffer = Guid.NewGuid().ToByteArray(); - return BitConverter.ToInt64(buffer, 0); - } - /// - /// 获取字符串最后X行 - /// - /// - /// - /// - public static string GetCusLine(string resourceStr, int length) - { - string[] arrStr = resourceStr.Split("\r\n"); - return string.Join("", (from q in arrStr select q).Skip(arrStr.Length - length + 1).Take(length).ToArray()); - } - #region 求系统唯一字符串 - /// - /// 求系统唯一字符串,常用于ROW_ID值。 - /// - /// 字符串 - public static string GetSysID() - { - string sid = string.Empty; - - byte[] buffer = Guid.NewGuid().ToByteArray(); - sid = DateTime.Now.ToString("yyMMddHHmmss") + BitConverter.ToInt64(buffer, 0).ToString(); - return sid; - } - #endregion - - #region 格式化数字字符 - /// - /// 格式化数字字符,如传入1.24500,返回1.245 - /// - /// - /// - public static string TrimDecimalString(string value) - { - try - { - string result = string.Empty; - if (!string.IsNullOrEmpty(value)) - { - Decimal tmp = Decimal.Parse(value); - result = string.Format("{0:#0.##########}", tmp); - } - return result; - } - catch (Exception) - { - throw; - } - } - - public static string TrimDecimalString(decimal value) - { - return TrimDecimalString(value.ToString()); - } - public static string TrimDecimalString(decimal? value) - { - if (value is null) return ""; - return TrimDecimalString(value.ToString()); - } - /// - /// 格式化数字字符,并保留指定的小数位 - /// - /// 需要处理的值 - /// 保留小数点后位数 - /// - public static string TrimDecimalString(string value, int reservedDigit) - { - try - { - string result = string.Empty; - if (!string.IsNullOrEmpty(value)) - { - Decimal tmp = Decimal.Parse(value); - if (reservedDigit == -1) - result = string.Format("{0:#0.##########}", tmp); - else - { - result = String.Format("{0:N" + reservedDigit.ToString() + "}", tmp); - result = result.Replace(",", ""); - } - } - return result; - } - catch (Exception) { throw; } - } - - /// - /// 格式化数字字符,并保留指定的小数位 - /// - /// 需要处理的值 - /// 保留小数点后位数,-1时只会去除小数点后最后几位的0 - /// - public static string TrimDecimalString(object value, int reservedDigit) - { - try - { - string result = string.Empty; - if (!string.IsNullOrEmpty(Convert.ToString(value))) - { - Decimal tmp = Decimal.Parse(Convert.ToString(value)); - if (reservedDigit == -1) - result = string.Format("{0:#0.##########}", tmp); - else - { - result = String.Format("{0:N" + reservedDigit.ToString() + "}", tmp); - result = result.Replace(",", ""); - } - } - return result; - } - catch (Exception) { throw; } - } - - /// - /// 格式化数字字符,并保留指定的小数位 - /// - /// 需要处理的值 - /// 保留小数点后位数,-1时只会去除小数点后最后几位的0 - /// - public static decimal TrimDecimal(object value, int reservedDigit) - { - try - { - string result = string.Empty; - if (!string.IsNullOrEmpty(Convert.ToString(value))) - { - Decimal tmp = Decimal.Parse(Convert.ToString(value)); - if (reservedDigit == -1) - result = string.Format("{0:#0.##########}", tmp); - else - { - result = String.Format("{0:N" + reservedDigit.ToString() + "}", tmp); - result = result.Replace(",", ""); - } - } - return Convert.ToDecimal(result); - } - catch (Exception) { throw; } - } - #endregion - - #region 获取字段描述 - /// - /// 对象字段描述 - /// - private static Dictionary> m_FieldDesc = new Dictionary>(); - - /// - /// 获取字段的描述(描述 - 列名) - /// - /// - /// - public static Dictionary GetFieldDesc() - { - var type = typeof(T).ToString(); - lock (m_FieldDesc) - { - if (m_FieldDesc.ContainsKey(type)) - return m_FieldDesc[type]; - } - Dictionary dic = new Dictionary(); - try - { - PropertyInfo[] peroperties = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance); - if (peroperties != null) - { - foreach (PropertyInfo property in peroperties) - { - object[] objs = property.GetCustomAttributes(typeof(DescriptionAttribute), true); - if (objs.Length > 0) - { - var desc = ((DescriptionAttribute)objs[0]).Description.Trim(); - if (!dic.ContainsKey(desc)) - { - dic.Add(desc, property.Name); - } - else - { - dic[desc] = property.Name; - } - } - } - } - } - catch //(Exception ex) - { - } - lock (m_FieldDesc) - { - if (!m_FieldDesc.ContainsKey(type)) - m_FieldDesc.Add(type, dic); - } - return dic; - } - #endregion -} diff --git a/Tiobon.Core.Common/Helper/UnicodeHelper.cs b/Tiobon.Core.Common/Helper/UnicodeHelper.cs deleted file mode 100644 index 63c5315f..00000000 --- a/Tiobon.Core.Common/Helper/UnicodeHelper.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System.Text; -using System.Text.RegularExpressions; - -namespace Tiobon.Core.Common.Helper; - -public static class UnicodeHelper -{ - /// - /// 字符串转Unicode码 - /// - /// The to unicode. - /// Value. - public static string StringToUnicode(string value) - { - byte[] bytes = Encoding.Unicode.GetBytes(value); - StringBuilder stringBuilder = new StringBuilder(); - for (int i = 0; i < bytes.Length; i += 2) - { - // 取两个字符,每个字符都是右对齐。 - stringBuilder.AppendFormat("u{0}{1}", bytes[i + 1].ToString("x").PadLeft(2, '0'), bytes[i].ToString("x").PadLeft(2, '0')); - } - return stringBuilder.ToString(); - } - - /// - /// Unicode转字符串 - /// - /// The to string. - /// Unicode. - public static string UnicodeToString(string unicode) - { - unicode = unicode.Replace("%", "\\"); - - return new Regex(@"\\u([0-9A-F]{4})", RegexOptions.IgnoreCase | RegexOptions.Compiled).Replace( - unicode, x => string.Empty + Convert.ToChar(Convert.ToUInt16(x.Result("$1"), 16))); - - //string resultStr = ""; - //string[] strList = unicode.Split('u'); - //for (int i = 1; i < strList.Length; i++) - //{ - // resultStr += (char)int.Parse(strList[i], System.Globalization.NumberStyles.HexNumber); - //} - //return resultStr; - } -} diff --git a/Tiobon.Core.Common/Helper/UrlHelper.cs b/Tiobon.Core.Common/Helper/UrlHelper.cs deleted file mode 100644 index 6a5480c2..00000000 --- a/Tiobon.Core.Common/Helper/UrlHelper.cs +++ /dev/null @@ -1,22 +0,0 @@ -namespace Tiobon.Core.Common.Helper; - -public class UrlHelper -{ - /// - /// UrlEncode编码 - /// - /// url - /// - public static string UrlEncode(string url) { - return System.Web.HttpUtility.UrlEncode(url, System.Text.Encoding.UTF8); - } - /// - /// UrlEncode解码 - /// - /// 数据 - /// - public static string UrlDecode(string data) - { - return System.Web.HttpUtility.UrlDecode(data, System.Text.Encoding.UTF8); - } -} diff --git a/Tiobon.Core.Common/Helper/XmlHelper.cs b/Tiobon.Core.Common/Helper/XmlHelper.cs deleted file mode 100644 index 8db9f124..00000000 --- a/Tiobon.Core.Common/Helper/XmlHelper.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System.Collections.Concurrent; -using System.Xml.Serialization; - -namespace Tiobon.Core.Common.Helper; - -/// -/// xml序列化帮助类 -/// -public class XmlHelper -{ - /// - /// 存储序列类型,防止内存泄漏 - /// - private static ConcurrentDictionary hasTypes = new ConcurrentDictionary(); - /// - /// 转换对象为JSON格式数据 - /// - /// - /// 对象 - /// 字符格式的JSON数据 - public static string GetXML(object obj, string rootName = "root") - { - XmlSerializer xs; - var xsType = typeof(T); - hasTypes.TryGetValue(xsType, out xs); - if(xs == null) - { - xs = new XmlSerializer(typeof(T)); - hasTypes.TryAdd(xsType, xs); - } - using (TextWriter tw = new StringWriter()) - { - xs.Serialize(tw, obj); - return tw.ObjToString(); - } - } - - /// - /// Xml格式字符转换为T类型的对象 - /// - /// - /// - /// - public static T ParseFormByXml(string xml, string rootName = "root") - { - XmlSerializer xs; - var xsType = typeof(T); - hasTypes.TryGetValue(xsType, out xs); - if (xs == null) - { - xs = new XmlSerializer(xsType, new XmlRootAttribute(rootName)); - hasTypes.TryAdd(xsType, xs); - } - using (StringReader reader = new StringReader(xml)) - { - return (T)xs.Deserialize(reader); - } - } -} diff --git a/Tiobon.Core.Common/Hubs/ChatHub.cs b/Tiobon.Core.Common/Hubs/ChatHub.cs deleted file mode 100644 index ec4b107f..00000000 --- a/Tiobon.Core.Common/Hubs/ChatHub.cs +++ /dev/null @@ -1,105 +0,0 @@ -using Microsoft.AspNetCore.SignalR; -using System.Security.Claims; -using Tiobon.Core.LogHelper; - -namespace Tiobon.Core.Hubs; - -public class ChatHub : Hub -{ - /// - /// 向指定群组发送信息 - /// - /// 组名 - /// 信息内容 - /// - public async Task SendMessageToGroupAsync(string groupName, string message) - { - await Clients.Group(groupName).ReceiveMessage(message); - } - - /// - /// 加入指定组 - /// - /// 组名 - /// - public async Task AddToGroup(string groupName) - { - await Groups.AddToGroupAsync(Context.ConnectionId, groupName); - } - - /// - /// 退出指定组 - /// - /// 组名 - /// - public async Task RemoveFromGroup(string groupName) - { - await Groups.RemoveFromGroupAsync(Context.ConnectionId, groupName); - } - - /// - /// 向指定成员发送信息 - /// - /// 成员名 - /// 信息内容 - /// - public async Task SendPrivateMessage(string user, string message) - { - await Clients.User(user).ReceiveMessage(message); - } - - /// - /// 当连接建立时运行 - /// - /// - public override async Task OnConnectedAsync() - { - await base.OnConnectedAsync(); - if (Context.User?.Identity?.IsAuthenticated == true) - { - //按用户分组 - //是有必要的 例如多个浏览器、多个标签页使用同个用户登录 应当归属于一组 - await AddToGroup(Context.User.Identity.Name); - - //加入角色组 - //根据角色分组 例如管理员分组发送管理员的消息 - var roles = Context.User.Claims.Where(s => s.Type == ClaimTypes.Role).ToList(); - foreach (var role in roles) - { - await AddToGroup(role.Value); - } - } - } - - /// - /// 当链接断开时运行 - /// - /// - /// - public override Task OnDisconnectedAsync(System.Exception ex) - { - //TODO.. - return base.OnDisconnectedAsync(ex); - } - - - public async Task SendMessage(string user, string message) - { - await Clients.All.ReceiveMessage(user, message); - } - - //定于一个通讯管道,用来管理我们和客户端的连接 - //1、客户端调用 GetLatestCount,就像订阅 - public async Task GetLatestCount(string random) - { - //2、服务端主动向客户端发送数据,名字千万不能错 - if (AppSettings.app(new string[] {"Middleware", "SignalRSendLog", "Enabled"}).ObjToBool()) - { - //TODO 主动发送错误消息 - await Clients.All.ReceiveUpdate(LogLock.GetLogData()); - } - - - //3、客户端再通过 ReceiveUpdate ,来接收 - } -} \ No newline at end of file diff --git a/Tiobon.Core.Common/Hubs/IChatClient.cs b/Tiobon.Core.Common/Hubs/IChatClient.cs deleted file mode 100644 index f9edaaf5..00000000 --- a/Tiobon.Core.Common/Hubs/IChatClient.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace Tiobon.Core.Hubs; - -public interface IChatClient -{ - /// - /// SignalR接收信息 - /// - /// 信息内容 - /// - Task ReceiveMessage(object message); - - /// - /// SignalR接收信息 - /// - /// 指定接收客户端 - /// 信息内容 - /// - Task ReceiveMessage(string user, string message); - - Task ReceiveUpdate(object message); -} diff --git a/Tiobon.Core.IServices/Ghre/IGhre_ExamRecordServices.cs b/Tiobon.Core.IServices/Ghre/IGhre_ExamRecordServices.cs index d3bcf4f9..dd5b7110 100644 --- a/Tiobon.Core.IServices/Ghre/IGhre_ExamRecordServices.cs +++ b/Tiobon.Core.IServices/Ghre/IGhre_ExamRecordServices.cs @@ -35,4 +35,6 @@ public interface IGhre_ExamRecordServices : IBaseServices IssueCertificate(); Task>> QueryGroups(long examRecordId); + + Task MarkCompleteStatus(long id); } \ No newline at end of file diff --git a/Tiobon.Core.IServices/Ghre/IGhre_SurveyServices.cs b/Tiobon.Core.IServices/Ghre/IGhre_SurveyServices.cs index 6b8e1312..c01f1fba 100644 --- a/Tiobon.Core.IServices/Ghre/IGhre_SurveyServices.cs +++ b/Tiobon.Core.IServices/Ghre/IGhre_SurveyServices.cs @@ -24,4 +24,6 @@ public interface IGhre_SurveyServices : IBaseServices Start(long id); Task QueryRecord(long id); + + Task> QueryESS(QueryBody filter); } \ No newline at end of file diff --git a/Tiobon.Core.Model/ViewModels/Extend/Ghre_ESSSurvey.cs b/Tiobon.Core.Model/ViewModels/Extend/Ghre_ESSSurvey.cs new file mode 100644 index 00000000..3d25a2f3 --- /dev/null +++ b/Tiobon.Core.Model/ViewModels/Extend/Ghre_ESSSurvey.cs @@ -0,0 +1,18 @@ +namespace Tiobon.Core.Model; + +public class Ghre_ESSSurvey +{ + public long Id { get; set; } + public string SurveyClass { get; set; } + public string SurveyName { get; set; } + public DateTime? BeginTime { get; set; } + public DateTime? EndTime { get; set; } + public DateTime? SubmitDate { get; set; } + public string Status { get; set; } + public string SurveyStatus { get; set; } + + public string BeginEndTime { get; set; } + public string IsAnonymous1 { get; set; } + public bool? IsAnonymous { get; set; } + +} \ No newline at end of file diff --git a/Tiobon.Core.Services/Ghre/Ghre_ExamRecordServices.cs b/Tiobon.Core.Services/Ghre/Ghre_ExamRecordServices.cs index 0135491e..e66fe519 100644 --- a/Tiobon.Core.Services/Ghre/Ghre_ExamRecordServices.cs +++ b/Tiobon.Core.Services/Ghre/Ghre_ExamRecordServices.cs @@ -476,6 +476,12 @@ public class Ghre_ExamRecordServices : BaseServices().Where(x => x.Id == record.StudyRecordId).FirstAsync(); + await ExamHelper.MarkCompleteStatusAsync(Db, studyRecord); + } + return ServiceResult.OprateSuccess("提交成功!"); } @@ -1839,4 +1845,11 @@ public class Ghre_ExamRecordServices : BaseServices MarkCompleteStatus(long id) + { + var studyRecord = await Db.Queryable().Where(x => x.Id == id).FirstAsync(); + await ExamHelper.MarkCompleteStatusAsync(Db, studyRecord); + return ServiceResult.OprateSuccess(); + } } \ No newline at end of file diff --git a/Tiobon.Core.Services/Ghre/Ghre_SurveyServices.cs b/Tiobon.Core.Services/Ghre/Ghre_SurveyServices.cs index 7f747d44..bfda756d 100644 --- a/Tiobon.Core.Services/Ghre/Ghre_SurveyServices.cs +++ b/Tiobon.Core.Services/Ghre/Ghre_SurveyServices.cs @@ -1,4 +1,5 @@ -using System.Text.RegularExpressions; +using MySqlX.XDevAPI.Common; +using System.Text.RegularExpressions; namespace Tiobon.Core.Services; @@ -118,7 +119,6 @@ public class Ghre_SurveyServices : BaseServices> InsertData(long id, InsertGhre_SurveyExtend insertModel) { @@ -200,7 +200,6 @@ public class Ghre_SurveyServices : BaseServices> QueryESSData(long id, long? openClassId = null) { long? feedbackId = null; @@ -812,20 +811,67 @@ public class Ghre_SurveyServices : BaseServices> QueryESS(QueryBody filter) + { + + var deptId = await Db.Queryable().Where(x => x.StaffID == App.User.StaffId).Select(x => x.DeptID).FirstAsync(); + var sql1 = @$"SELECT A.Id, + A.SurveyClass, + A.SurveyName, + A.BeginTime, + A.EndTime, B.SubmitDate, A.CreateTime,A.Status SurveyStatus,A.IsAnonymous +FROM Ghre_Survey A + LEFT JOIN Ghre_SurveyRecord B ON A.Id = B.SurveyId AND B.IsEnable = 1 and B.StaffId=9 +WHERE A.IsEnable = 1 AND A.Status ! = 'Temporary' + and ({App.User.StaffId} in (select value from openjson(A.StaffID)) + or {deptId} in (select value from openjson(A.deptId)))"; + + if (string.IsNullOrWhiteSpace(filter.orderBy)) + filter.orderBy = "CreateTime DESC"; + + if (filter.pageSize == 0) + filter.pageSize = 10000; + + var countSql = @$" SELECT COUNT(1) FROM ({sql1}) A"; + + string conditions = " "; + + if (filter.jsonParam != null) + foreach (JProperty jProperty in filter.jsonParam.Properties()) + { + var name = jProperty.Name; + var value = jProperty.Value.ToString(); + if (name == "page" || name == "pageSize") + continue; + if (!string.IsNullOrWhiteSpace(value)) + conditions = DealConditions(conditions, name, value); + } + + sql1 += conditions; + countSql += conditions; + int total = await Db.Ado.GetIntAsync(countSql); + + var sql = "SELECT * FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY " + filter.orderBy + ") NUM FROM (SELECT * FROM (" + sql1 + " "; + sql += ") A ) B ) C"; + + sql += " WHERE NUM <= " + filter.pageNum * filter.pageSize + " AND NUM >" + (filter.pageNum - 1) * filter.pageSize; + //sql = sql1 + sql; + var entitys = await Db.Ado.SqlQueryAsync(sql); -// public async Task QueryRecord(long id) -// { -// var sql = @$"SELECT A.Id, -// A.SurveyClass, -// A.SurveyName, -// A.BeginTime, -// A.EndTime, B.SubmitDate -//FROM Ghre_Survey A -// LEFT JOIN Ghre_SurveyRecord B ON A.Id = B.SurveyId AND B.IsEnable = 1 and B.StaffId=9 -//WHERE A.IsEnable = 1 AND A.Status ! = 'Temporary' -// and (9 in (select value from openjson(A.StaffID)) -// or 41 in (select value from openjson(A.deptId)))" -// return obj; -// } + + entitys.ForEach(async x => + { + x.IsAnonymous1 = x.IsAnonymous == true ? "是" : "否"; + x.Status = x.SubmitDate != null ? "已填" : "未填"; + x.SurveyClass = await GetParaLabel("TrainSurveyClass", x.SurveyClass); + if (x.BeginTime != null && x.EndTime != null) + x.BeginEndTime = $"{DateTimeHelper.ConvertToMiniuteString(x.BeginTime)}~{DateTimeHelper.ConvertToMiniuteString(x.EndTime)}"; + else + x.BeginEndTime = "长期"; + }); + + return new ServicePageResult(filter.pageNum, total, filter.pageSize, entitys); + + } } diff --git a/Tiobon.Core.Tasks/QuartzNet/Jobs/JobBase.cs b/Tiobon.Core.Tasks/QuartzNet/Jobs/JobBase.cs index aec34117..da89b7d8 100644 --- a/Tiobon.Core.Tasks/QuartzNet/Jobs/JobBase.cs +++ b/Tiobon.Core.Tasks/QuartzNet/Jobs/JobBase.cs @@ -1,4 +1,4 @@ -using Tiobon.Core.Common.Helper; +using Tiobon.Core.Helper; using Tiobon.Core.Model.Models; namespace Tiobon.Core.Tasks; diff --git a/Tiobon.Core/Tiobon.Core.Api.xml b/Tiobon.Core/Tiobon.Core.Api.xml index c9716450..56df0c66 100644 --- a/Tiobon.Core/Tiobon.Core.Api.xml +++ b/Tiobon.Core/Tiobon.Core.Api.xml @@ -1654,6 +1654,13 @@ + + + QueryESS + + + + 问卷调查选项(Controller)