using FastExpressionCompiler.LightExpression; using HKLib.Dto; using HKLib.RabbitMQ.Config; using HKLib.RabbitMQ.Publisher; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using XExten.Advance.HttpFramework.MultiCommon; using XExten.Advance.HttpFramework.MultiFactory; using XExten.Advance.LinqFramework; using static RabbitMQ.Client.Logging.RabbitMqClientEventSource; namespace HKLib.Interfaces { public class HKLibHelper { static Dictionary Header = new Dictionary { {"TenantId",Configer.TenantId } }; /// /// 设置刷卡时间端 /// public static async Task SetTime(TimeSpilte input) { TimeSpilteDto dto = new TimeSpilteDto { AMEndTime = input.AMEndTime.ToShortTimeString(), AMStartTime = input.AMStartTime.ToShortTimeString(), PMEndTime = input.PMEndTime.ToShortTimeString(), PMStartTime = input.PMStartTime.ToShortTimeString(), ATEndTime = input.ATEndTime.ToShortTimeString(), ATStartTime = input.ATStartTime.ToShortTimeString(), }; var data = await IHttpMultiClient.HttpMulti .AddHeader(t => t.Headers = Header) .AddNode(t => { t.NodePath = $"{Configer.SaasRoute}api/one-card/eat-time-interval"; t.JsonParam = dto.ToJson(); t.ReqType = MultiType.PUT; }).Build().RunStringFirstAsync(); var res = data.ToModel()["data"]["isSuccess"].ToString().AsBool(); if (res) { Task.Run(() => ServiceQueryPush.QueryPush.PushMQAsync(input, "TimeChanged", MQEnum.Push)); return res; } return false; } /// /// 获取时间 /// /// public static async Task GetTime() { var data = await IHttpMultiClient.HttpMulti.AddNode(t => { t.NodePath = $"{Configer.SaasRoute}api/one-card/eat-time-interval"; t.ReqType = MultiType.GET; }).Build().RunStringFirstAsync(); return data.ToModel()["data"]["data"].ToJson().ToModel(); } /// /// 添加机构 /// public static async Task SetOrg(string input) { try { var data = await IHttpMultiClient.HttpMulti.AddHeader(t => t.Headers = Header).AddNode(t => { t.NodePath = $"{Configer.SaasRoute}api/one-card/member-tag"; t.ReqType = MultiType.POST; t.JsonParam = (new { Name = input }).ToJson(); }).Build().RunStringFirstAsync(); return data.ToModel()["data"]["data"]["id"].ToString(); } catch (System.Exception) { return string.Empty; } } public static string SetOrgSync(string input) { var data = IHttpMultiClient.HttpMulti .AddHeader(t => t.Headers = Header) .AddNode(t => { t.NodePath = $"{Configer.SaasRoute}api/one-card/member-tag"; t.ReqType = MultiType.POST; t.JsonParam = (new { Name = input }).ToJson(); }).Build().RunStringFirst(); return data.ToModel()["data"]["data"]["id"].ToString(); } /// /// 删除机构 /// /// /// public static async Task DelOrg(string Id) { var data = await IHttpMultiClient.HttpMulti .AddHeader(t => t.Headers = Header) .AddNode(t => { t.NodePath = $"{Configer.SaasRoute}api/one-card/member-tag/{Id}"; t.ReqType = MultiType.DELETE; }).Build().RunStringFirstAsync(); var res = data.ToModel()["data"]["isSuccess"].ToString().AsBool(); return res; } /// /// /获取机构 /// /// public static async Task> GetOrg() { var data = await IHttpMultiClient.HttpMulti.AddHeader(t => t.Headers = Header).AddNode(t => { t.NodePath = $"{Configer.SaasRoute}api/one-card/member-tag-list"; t.ReqType = MultiType.GET; }).Build().RunStringFirstAsync(); if (data.IsNullOrEmpty()) return new List(); var model = data.ToModel()["data"]["data"].ToJson().ToModel>(); return model.Where(t => !t.Name.IsNullOrEmpty()).Select(t => new OrgDto { Name = t.Name, SId = t.Id }).ToList(); } /// /// 修改机构 /// public static async Task AlterOrg(string input, string Sid) { var param = (new { Name = input, Id = Sid }).ToJson(); var data = await IHttpMultiClient.HttpMulti.AddHeader(t => t.Headers = Header).AddNode(t => { t.NodePath = $"{Configer.SaasRoute}api/one-card/member-tag"; t.ReqType = MultiType.PUT; t.JsonParam = param; }).Build().RunStringFirstAsync(); return data.ToModel()["data"]["isSuccess"].ToString().AsBool(); } public static async Task GetUserMaxNum() { var data = await IHttpMultiClient.HttpMulti.AddHeader(t => t.Headers = Header).AddNode(t => { t.NodePath = $"{Configer.SaasRoute}api/one-card/max-num"; t.ReqType = MultiType.GET; }).Build().RunStringFirstAsync(); var str = data.ToModel()["data"]["data"].ToString(); var check = str.IsNullOrEmpty(); if (check) return "0001"; return (str.AsInt() + 1).ToString().PadLeft(4, '0'); } public static string GetUserMaxNumSync() { var data = IHttpMultiClient.HttpMulti.AddHeader(t => t.Headers = Header).AddNode(t => { t.NodePath = $"{Configer.SaasRoute}api/one-card/max-num"; t.ReqType = MultiType.GET; }).Build().RunStringFirst(); var str = data.ToModel()["data"]["data"].ToString(); var check = str.IsNullOrEmpty(); if (check) return "0001"; return (str.AsInt() + 1).ToString().PadLeft(4, '0'); } /// /// 根据用户命获取下拉用户列表 /// /// public static async Task> GetUserList(string keyword) { var data = await IHttpMultiClient.HttpMulti.AddHeader(t => t.Headers = Header).AddNode(t => { t.NodePath = $"{Configer.SaasRoute}api/one-card/staff-list"; t.ReqType = MultiType.POST; t.JsonParam = (new { realName = keyword }).ToJson(); }).Build().RunStringFirstAsync(); if (string.IsNullOrEmpty(data)) return new List(); var res = data.ToModel()["data"]["data"].ToJson().ToModel>(); return res.Where(t=>!string.IsNullOrEmpty(t.Name)).OrderByDescending(t=>t.Num).ToList(); } public static List GetUserListSync(string keyword) { var data = IHttpMultiClient.HttpMulti.AddHeader(t => t.Headers = Header).AddNode(t => { t.NodePath = $"{Configer.SaasRoute}api/one-card/staff-list"; t.ReqType = MultiType.POST; t.JsonParam = (new { realName = keyword }).ToJson(); }).Build().RunStringFirst(); if (string.IsNullOrEmpty(data)) return new List(); var res = data.ToModel()["data"]["data"].ToJson().ToModel>(); return res.Where(t => !string.IsNullOrEmpty(t.Name)).OrderBy(t => t.Num).ToList(); } /// /// 添加用户并绑卡 /// /// /// public static async Task AddUserAndBindCard(UserDto input) { var data = await IHttpMultiClient.HttpMulti.AddHeader(t => t.Headers = Header).AddNode(t => { t.NodePath = $"{Configer.SaasRoute}api/one-card/mmenber-card"; t.ReqType = MultiType.POST; t.JsonParam = (new { tagId = input.OrgId, realName = input.Name, num = input.Num, phone = input.Phone, cardNum = input.CardNo }).ToJson(); }).Build().RunStringFirstAsync(); return data.ToModel()["data"]["isSuccess"].ToString().AsBool(); } public static bool AddUserAndBindCardSync(UserDto input) { var data = IHttpMultiClient.HttpMulti.AddHeader(t => t.Headers = Header).AddNode(t => { t.NodePath = $"{Configer.SaasRoute}api/one-card/mmenber-card"; t.ReqType = MultiType.POST; t.JsonParam = (new { tagId = input.OrgId, realName = input.Name, num = input.Num, phone = input.Phone, cardNum = input.CardNo }).ToJson(); }).Build().RunStringFirst(); return data.ToModel()["data"]["isSuccess"].ToString().AsBool(); } /// /// 删除用户 /// /// public static async Task DisableUser(string userName) { List a = new List() { userName }; var data = await IHttpMultiClient.HttpMulti.AddHeader(t => t.Headers = Header).AddNode(t => { t.NodePath = $"{Configer.SaasRoute}api/one-card/del-staff"; t.ReqType = MultiType.POST; t.JsonParam = a.ToJson(); }).Build().RunStringFirstAsync(); return data.ToModel()["data"]["isSuccess"].ToString().AsBool(); } /// /// 添加用户 /// /// public static async Task AddUser(UserDto input) { var data = await IHttpMultiClient.HttpMulti.AddHeader(t => t.Headers = Header).AddNode(t => { t.NodePath = $"{Configer.SaasRoute}api/one-card/staff"; t.ReqType = MultiType.POST; t.JsonParam = (new { tagId = input.OrgId, realName = input.Name, phone = input.Phone, num = input.Num }).ToJson(); }).Build().RunStringFirstAsync(); return data.ToModel()["data"]["isSuccess"].ToString().AsBool(); } public static bool AddUserSync(UserDto input) { var data = IHttpMultiClient.HttpMulti.AddHeader(t => t.Headers = Header).AddNode(t => { t.NodePath = $"{Configer.SaasRoute}api/one-card/staff"; t.ReqType = MultiType.POST; t.JsonParam = (new { tagId = input.OrgId, realName = input.Name, phone = input.Phone, num = input.Num }).ToJson(); }).Build().RunStringFirst(); return data.ToModel()["data"]["isSuccess"].ToString().AsBool(); } /// /// 变更卡状态 销户 /// /// public static async Task CardStutasChange(CardStutasDto input) { input.CardNo = (await GetUserList(input.keywrod)).FirstOrDefault(t => t.Name.Equals(input.keywrod))?.Cards?.FirstOrDefault()?.CardNum; var res = await IHttpMultiClient.HttpMulti.AddHeader(t => t.Headers = Header).AddNode(t => { t.NodePath = $"{Configer.SaasRoute}api/one-card/mmenber-card-state"; t.ReqType = MultiType.PUT; t.JsonParam = (new { CardNum = input.CardNo, State = input.Stutas }).ToJson(); }).Build().RunStringFirstAsync(); var data = res.ToModel()["data"]["isSuccess"].ToString().AsBool(); if (data) { Task.Run(() => ServiceQueryPush.QueryPush.PushMQAsync(input, "CardStutasChanged", MQEnum.Top)); return data; } return false; } /// /// 报表数据 /// type=1 数据参考 /// /// { ///"name": "张三", /// "phone": "18208263734", /// "date": "2022-09-24", /// "tag": null, /// "amCount": 3, /// "pmCount": 0, /// "atCount": 0, /// "totalCount": 3 /// } /// /// type=2 数据参考 /// /// { ///"name": null, ///"phone": null, ///"date": "2022-09-13", ///"tag": null, ///"amCount": 3, ///"pmCount": 1, ///"atCount": 0, ///"totalCount": 4 ///} /// /// /// /// /// 1 计次就餐天消费表(每人),2每月餐段消费报表,3月餐段汇总表 public static async Task> Report(ReportDto input, int type = 1) { var Route = Configer.SaasRoute; if (type == 1) Route += "api/one-card/day-consume-info"; if (type == 2) Route += "api/one-card/consume-info"; if (type == 3) Route += "api/one-card/time-interval-consume-info"; var data = await IHttpMultiClient.HttpMulti.AddHeader(t => t.Headers = Header).AddNode(t => { t.NodePath = Route; t.ReqType = MultiType.POST; t.JsonParam = (new { StartTime = input.StartTime.ToShortDateString(), EndTime = input.EndTime.ToShortDateString() }).ToJson(); }).Build().RunStringFirstAsync(); return data.ToModel()["data"]["data"].ToJson().ToModel>(); } } }