/// <summary> /// 根据服务编号获取频道编号 /// </summary> /// <param name="ServiceID"></param> /// <returns></returns> public string GetChannelIDByServiceID(string ServiceID, DBEntities db = null) { var cacheKey_ConversationRoomID = new StringCacheKey(StringCacheKeyType.MAP_GetChannelIDByServiceID, ServiceID); string ConversationRoomID = cacheKey_ConversationRoomID.FromCache <string>(); if (string.IsNullOrEmpty(ConversationRoomID)) { bool dbPrivateFlag = false; if (db == null) { db = CreateDb(); dbPrivateFlag = true; } var model = db.ConversationRooms.Where(a => a.ServiceID == ServiceID).Select(a => new { a.ConversationRoomID }).FirstOrDefault(); if (dbPrivateFlag) { db.Dispose(); } if (model != null) { ConversationRoomID = model.ConversationRoomID; ConversationRoomID.ToCache(cacheKey_ConversationRoomID, TimeSpan.FromHours(1)); } else { return(null); } } return(ConversationRoomID); }
/// <summary> /// 检查验证码 /// </summary> /// <param name="Mobile"></param> /// <param name="MsgType"></param> /// <param name="Title"></param> /// <returns></returns> public bool CheckVerifyCode(string Mobile, string MsgType, string Title) { var cacheKey = new StringCacheKey(StringCacheKeyType.SYS_SMSVerifyCode, $"{Mobile}/{MsgType}/{Title}"); UserShortMessageLog model = cacheKey.FromCache <UserShortMessageLog>(); return(model != null); }
/// <summary> /// 获取房间信息 /// </summary> /// <param name="ConversationRoomID"></param> /// <returns></returns> public ResponseConversationRoomDTO GetChannelInfo(string ConversationRoomID, DBEntities db = null) { var cacheKey = new StringCacheKey(StringCacheKeyType.Channel, ConversationRoomID); ResponseConversationRoomDTO room = cacheKey.FromCache <ResponseConversationRoomDTO>(); if (room == null) { bool dbPrivateFlag = false; if (db == null) { db = CreateDb(); dbPrivateFlag = true; } var model = db.ConversationRooms.Where(a => a.ConversationRoomID == ConversationRoomID).FirstOrDefault(); if (dbPrivateFlag) { db.Dispose(); } if (model != null) { room = model.Map <ConversationRoom, ResponseConversationRoomDTO>(); room.ToCache(cacheKey, TimeSpan.FromHours(1)); } } return(room); }
/// <summary> /// 替换频道成员 /// </summary> /// <param name="ConversationRoomID"></param> /// <param name="members"></param> /// <returns></returns> public bool ReplaceChannelMembers(string ConversationRoomID, List <RequestChannelMemberDTO> members) { using (DBEntities db = new DBEntities()) { var oldmembers = db.ConversationRoomUids.Where(a => a.ConversationRoomID == ConversationRoomID).ToList(); foreach (var member in members) { var roomUid = new ConversationRoomUid() { ConversationRoomID = ConversationRoomID, UserType = member.UserType, Identifier = member.Identifier, UserMemberID = member.UserMemberID.IfNull(""), UserCNName = member.UserCNName.IfNull(""), UserENName = member.UserENName.IfNull(""), PhotoUrl = member.PhotoUrl.IfNull(""), UserID = member.UserID }; db.ConversationRoomUids.Add(roomUid); } if (db.SaveChanges() > 0) { var cacheKey = new StringCacheKey(StringCacheKeyType.Channel_Member, ConversationRoomID); cacheKey.RemoveCache(); return(true); } else { return(false); } } }
List <RequestMessageExtrasConfigDTO> GetAllExtrasConfig() { var cacheKey = new StringCacheKey(StringCacheKeyType.Sys_NoticeMessageExtrasConfig, ""); ////从缓存中取 var list = cacheKey.FromCache <List <RequestMessageExtrasConfigDTO> >(); if (list == null) { using (DBEntities db = new DBEntities()) { list = db.MessageExtrasConfigs.Where(a => !a.IsDeleted).Select(a => new RequestMessageExtrasConfigDTO() { ExtrasConfigID = a.ExtrasConfigID, MsgTitle = a.MsgTitle, MsgType = a.MsgType, PageArgs = "", PageTarget = a.PageTarget, PageType = a.PageType, PageUrl = a.PageUrl, TerminalType = a.TerminalType }).ToList(); } list.ToCache(cacheKey); } return(list); }
/// <summary> /// 服务时间递增 /// </summary> /// <param name="ServiceID">业务编号</param> /// <param name="Seconds">需要递增的服务时长,小于等于0意味着不限制服务时长(秒)</param> /// <returns></returns> public bool IncrementChannelDuration(string ConversationRoomID, string ServiceID, int Seconds, string OrderNo, string NewUpgradeOrderNo) { using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["KMEHospEntities"].ConnectionString)) { SqlCommand cmd = new SqlCommand(@"if(select top 1 1 from ConversationRoomUpgrades where ServiceID=@ServiceID and OrderNo=@OrderNo and NewUpgradeOrderNo=@NewUpgradeOrderNo) begin update ConversationRooms set Duration=case when Duration<0 then 1 else Duration end + @Seconds where ServiceID = @ServiceID insert into ConversationRoomUpgrades(ServiceID,Duration,CreateTime,IsDeleted,OrderNo,NewUpgradeOrderNo) values(@ServiceID,@Seconds,@CreateTime,0,@OrderNo,@NewUpgradeOrderNo) end"); cmd.Parameters.Add("@ServiceID", SqlDbType.VarChar).Value = ServiceID; cmd.Parameters.Add("@OrderNo", SqlDbType.VarChar).Value = OrderNo; cmd.Parameters.Add("@NewUpgradeOrderNo", SqlDbType.VarChar).Value = NewUpgradeOrderNo; cmd.Parameters.Add("@Seconds", SqlDbType.Int).Value = Seconds; cmd.Parameters.Add("@CreateTime", SqlDbType.DateTime).Value = DateTime.Now; cmd.Parameters.Add("@ModifyTime", SqlDbType.DateTime).Value = DateTime.Now; var ret = cmd.ExecuteNonQuery() > 0; if (ret) { var cacheKey = new StringCacheKey(StringCacheKeyType.Channel, ConversationRoomID); cacheKey.RemoveCache(); } return(ret); } }
public SysGrabService(string name) { this._name = name; _CacheKey_TaskPool = new StringCacheKey(StringCacheKeyType.Grab, name); _CacheKey_LatestTakeTime = new StringCacheKey(StringCacheKeyType.Grab, $"{_name}:LatestTakeTime"); _CacheKey_DerepList = $"{_CacheKey_TaskPool.KeyName}:Dereplication"; }
public void InvalidTask(T item, string category) { if (Manager.Instance != null) { var CacheKey_Waiting = new StringCacheKey(StringCacheKeyType.Grab, $"{_name}:{_Scope}:{category}:Waiting"); Manager.Instance.ListRemove <T>(CacheKey_Waiting.KeyName, item); } }
public bool Handle(Dto.EventBus.ChannelNewMsgEvent evt) { if (evt == null) { return(true); } //是通过客户端发送的 if (evt.OptPlatform != "RESTAPI" && IsEnable()) { #region 检查当前咨询中康博士回答情况,判断是否还需要继续使用康博士 var cacheKey_Channel_DrKangState = new StringCacheKey(StringCacheKeyType.Channel_DrKangState, evt.ChannelID.ToString()); var Channel_DrKangState = cacheKey_Channel_DrKangState.FromCache <string>(); switch (Channel_DrKangState) { //问答结束,没有匹配的疾病 case "nullMatchDisease": //问答结束,已有明确诊断 case "diagnosis": //无法响应回复 case "nullMatchResponse": //禁用(医生已回复) case "disabled": //出现异常 case "exception": return(true); } #endregion //文字内容才识别 if (evt.Messages.Length > 0 && evt.Messages[0].MessageContent.Contains("\"MsgType\":\"TIMTextElem\"")) { var room = roomService.GetChannelInfo(evt.ChannelID); //医生未接诊 if (room != null && room.RoomState == EnumRoomState.AlreadyVisit) { // { "MsgContent":{ "Text":"头疼"},"MsgType":"TIMTextElem"} var msg = JsonHelper.FromJson <Msg>(evt.Messages[0].MessageContent); if (msg != null && msg.MsgType == "TIMTextElem" && msg.MsgContent != null) { var text = msg.MsgContent["Text"]; } } else { //医生已经回答 "disabled".ToCache(cacheKey_Channel_DrKangState, TimeSpan.FromHours(24)); } } } return(true); }
public string GetKMSDUserID(EnumUserType UserType, string OrgID, string Mobile, string OuterID) { if (string.IsNullOrWhiteSpace(Mobile) && string.IsNullOrWhiteSpace(OuterID)) { throw new Exception("Mobile,OuterID至少需指定一个"); } if (!string.IsNullOrWhiteSpace(OuterID) && string.IsNullOrWhiteSpace(OrgID)) { throw new Exception("OrgID不能为空"); } string UserID = ""; StringCacheKey GetUserIDByCreateUserID_CacheKey = null; if (!string.IsNullOrEmpty(OuterID)) { GetUserIDByCreateUserID_CacheKey = new StringCacheKey( StringCacheKeyType.MAP_GetUserIDByCreateUserIDAndOrgID, $"{OrgID}&{OuterID}"); } else { GetUserIDByCreateUserID_CacheKey = new StringCacheKey( StringCacheKeyType.MAP_GetUserIDByCreateUserIDAndOrgID, $"{Mobile}"); } UserID = GetUserIDByCreateUserID_CacheKey.FromCache <string>(); if (string.IsNullOrEmpty(UserID)) { using (DBEntities db = new DBEntities()) { var q = from m in db.Users where m.UserType == UserType && m.IsDeleted == false select new { m.UserID, m.Mobile, m.OrgCode, m.CreateUserID }; if (!string.IsNullOrWhiteSpace(OuterID))// OuterID + OrgCode确定一个用户 { q = q.Where(w => w.CreateUserID == OuterID); if (!string.IsNullOrWhiteSpace(OrgID)) { q = q.Where(w => w.OrgCode == OrgID); } } else if (!string.IsNullOrWhiteSpace(Mobile))//手机号确定一个帐号 { q = q.Where(w => w.Mobile == Mobile && string.IsNullOrEmpty(w.CreateUserID)); } var u = q.FirstOrDefault(); UserID = u?.UserID; UserID.ToCache(GetUserIDByCreateUserID_CacheKey, TimeSpan.FromMinutes(_GetUserInfoExpireMinutes())); } } return(UserID); }
/// <summary> /// 领取任务后,执行完成 /// 作者:郭明 /// 日期:2017年8月17日 /// </summary> /// <param name="item"></param> public void FinishTask(T item, string category) { if (Manager.Instance != null) { var CacheKey_DoingTask = new StringCacheKey(StringCacheKeyType.Grab, $"{_name}:{_Scope}:{category}:Doing"); var CacheKey_Finished = new StringCacheKey(StringCacheKeyType.Grab, $"{_name}:{_Scope}:{category}:Finished"); Manager.Instance.ListRemove <T>(CacheKey_DoingTask.KeyName, item); Manager.Instance.ListLeftPush(CacheKey_Finished.KeyName, item); } }
/// <summary> /// 已完成的任务数量 /// </summary> public long FinishedTaskCount(string category) { if (Manager.Instance != null) { var CacheKey_FinishedTask = new StringCacheKey(StringCacheKeyType.Grab, $"{_name}:{_Scope}:{category}:Finished"); return(Manager.Instance.ListLength(CacheKey_FinishedTask.KeyName)); } else { return(0); } }
/// <summary> /// 已完成的人数列表是否为空 /// </summary> /// <returns></returns> public bool FinishedTaskListEmpty(string category) { if (Manager.Instance != null) { var CacheKey_FinishedTask = new StringCacheKey(StringCacheKeyType.Grab, $"{_name}:{_Scope}:{category}:Finished"); return(Manager.Instance.ListLength(CacheKey_FinishedTask.KeyName) <= 0); } else { return(true); } }
/// <summary> /// 领取任务后拒绝执行 /// 作者:郭明 /// 日期:2017年8月17日 /// </summary> /// <param name="item"></param> public void RejectTask(T item, string category, int priority) { if (Manager.Instance != null) { var CacheKey_DoingTask = new StringCacheKey(StringCacheKeyType.Grab, $"{_name}:{_Scope}:{category}:Doing"); var CacheKey_WaitTask = new StringCacheKey(StringCacheKeyType.Grab, $"{_name}:{_Scope}:{category}:Waiting"); Manager.Instance.ListRemove <T>(CacheKey_DoingTask.KeyName, item); Manager.Instance.ListRemove <T>(CacheKey_WaitTask.KeyName, item); Manager.Instance.ListLeftPush <T>($"{_CacheKey_TaskPool.KeyName}:{priority}", item); } }
/// <summary> /// 开始执行任务 /// 作者:郭明 /// 日期:2017年8月17日 /// </summary> /// <param name="item"></param> public void StartTask(T item, string category) { if (Manager.Instance != null) { var CacheKey_Waiting = new StringCacheKey(StringCacheKeyType.Grab, $"{_name}:{_Scope}:{category}:Waiting"); var CacheKey_Doing = new StringCacheKey(StringCacheKeyType.Grab, $"{_name}:{_Scope}:{category}:Doing"); //删除重复列表记录 Manager.Instance.SetRemove(_CacheKey_DerepList, item); Manager.Instance.ListRemove <T>(CacheKey_Waiting.KeyName, item); Manager.Instance.ListLeftPush(CacheKey_Doing.KeyName, item); } }
/// <summary> /// 获取医生的通信唯一标识 /// </summary> /// <param name="doctorIDList"></param> /// <returns></returns> public int GetUserIMUid(string userID) { var cacheKey = new StringCacheKey(StringCacheKeyType.MAP_GetIMUidByUserID, userID); int?uid = cacheKey.FromCache <int?>(); if (uid == null || !uid.HasValue || uid.Value == 0) { uid = GetUserIMUids(userID).FirstOrDefault(); uid.ToCache(cacheKey); } return(uid.Value); }
/// <summary> /// 检查是否已存在 时代,蒙发利,掌上医院 用外部唯一ID;健康档案 一体机 用身份证号 /// </summary> /// <param name="idNumber"></param> /// <param name="outID"></param> /// <param name="orgID"></param> /// <param name="checkType">1-外部唯一ID;2-身份证号</param> /// <returns></returns> public string ExistUserByCreateID(string outID, string orgID, int checkType) { StringCacheKey GetUserIDByCreateUserID_CacheKey = null; string UserID = null; switch (checkType) { case 1: GetUserIDByCreateUserID_CacheKey = new StringCacheKey(StringCacheKeyType.MAP_GetUserIDByCreateUserIDAndOrgID, $"{orgID}&{outID}"); UserID = GetUserIDByCreateUserID_CacheKey.FromCache <string>(); if (string.IsNullOrEmpty(UserID)) { using (DBEntities db = new DBEntities()) { //康美时代会员,蒙发利会员,掌上医院 //判断 outID 和orgID UserID = (from aa in db.Users where aa.CreateUserID == outID && aa.OrgCode == orgID && !aa.IsDeleted select aa.UserID).FirstOrDefault(); if (!string.IsNullOrEmpty(UserID)) { UserID.ToCache(GetUserIDByCreateUserID_CacheKey, TimeSpan.FromMinutes(_GetUserInfoExpireMinutes())); } } } break; case 2: GetUserIDByCreateUserID_CacheKey = new StringCacheKey(StringCacheKeyType.MAP_GetUserIDByCreateUserID, outID); UserID = GetUserIDByCreateUserID_CacheKey.FromCache <string>(); if (string.IsNullOrEmpty(UserID)) { using (DBEntities db = new DBEntities()) { //双佳一体机,健康档案 //双佳一体机 调用,判断 身份证号 UserID = (from aa in db.Users where aa.CreateUserID == outID && !aa.IsDeleted select aa.UserID).FirstOrDefault(); UserID.ToCache(GetUserIDByCreateUserID_CacheKey, TimeSpan.FromMinutes(_GetUserInfoExpireMinutes())); } } break; } return(UserID); }
private string Lookup(StringCacheKey key, params string[] args) { var returnValue = string.Empty; switch (key) { case StringCacheKey.UserPermissions: { returnValue = string.Format("bedrock:{1}:permissions:{0}", args); break; } } return(returnValue); }
public bool UpdateChannelChargeSeq(string conversationRoomID, int chargingSeq, DateTime chargingTime, int chargingInterval , EnumRoomState?roomState, DateTime?endTime) { using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["KMEHospEntities"].ConnectionString)) { var sql = ""; if (roomState.HasValue) { sql = @"update ConversationRooms set ChargingTime=@ChargingTime,ChargingSeq=@ChargingSeq, ChargingInterval=@ChargingInterval,RoomState=@RoomState,EndTime=@EndTime,ModifyTime=@ModifyTime where ConversationRooms.ConversationRoomID=@ConversationRoomID"; } else { sql = @"update ConversationRooms set ChargingTime=@ChargingTime,ChargingSeq=@ChargingSeq, ChargingInterval=@ChargingInterval,ModifyTime=@ModifyTime where ConversationRooms.ConversationRoomID=@ConversationRoomID"; } SqlCommand cmd = new SqlCommand(@"update ConversationRooms set ChargingTime=@ChargingTime,ChargingSeq=@ChargingSeq, ChargingInterval=@ChargingInterval,RoomState=@RoomState,ModifyTime=@ModifyTime where ConversationRooms.ConversationRoomID=@ConversationRoomID"); if (roomState.HasValue) { cmd.Parameters.Add("@RoomState", SqlDbType.Int).Value = (int)roomState.Value; cmd.Parameters.Add("@EndTime", SqlDbType.DateTime).Value = endTime.Value; } cmd.Parameters.Add("@ChargingTime", SqlDbType.DateTime).Value = chargingTime; cmd.Parameters.Add("@ChargingSeq", SqlDbType.Int).Value = chargingSeq; cmd.Parameters.Add("@ChargingInterval", SqlDbType.Int).Value = chargingInterval; cmd.Parameters.Add("@ModifyTime", SqlDbType.DateTime).Value = DateTime.Now; cmd.Parameters.Add("@ConversationRoomID", SqlDbType.Int).Value = conversationRoomID; var ret = cmd.ExecuteNonQuery() > 0; if (ret) { var cacheKey = new StringCacheKey(StringCacheKeyType.Channel, conversationRoomID); cacheKey.RemoveCache(); } return(ret); } }
public static string GetPublicKey(uint SdkAppid) { var cacheKey = new StringCacheKey(StringCacheKeyType.KEY_IM_PublicKey, SdkAppid.ToString()); var key = cacheKey.FromCache <string>(); if (string.IsNullOrEmpty(key)) { var basedir = System.AppDomain.CurrentDomain.BaseDirectory; var pri_key_path = System.IO.Path.Combine(basedir, "App_Data/Key/IM", SdkAppid.ToString(), "public_key"); FileStream f = new FileStream(pri_key_path, FileMode.Open, FileAccess.Read); BinaryReader reader = new BinaryReader(f); byte[] b = new byte[f.Length]; reader.Read(b, 0, b.Length); key = Encoding.Default.GetString(b); key.ToCache(cacheKey); } return(key); }
public bool Handle(Dto.EventBus.ChannelCreatedEvent evt) { if (evt != null && (evt.ServiceType == EnumDoctorServiceType.AudServiceType || evt.ServiceType == EnumDoctorServiceType.VidServiceType)) { var lockName = $"{nameof(IfVideoOrAudioConsultSendConsultContent)}:{evt.ChannelID}"; var lockValue = Guid.NewGuid().ToString("N"); if (lockName.Lock(lockValue, TimeSpan.FromSeconds(5))) { try { var CacheKey_Derep = new StringCacheKey(StringCacheKeyType.SysDerep_ChannelConsultContentMsg, evt.ChannelID.ToString()); //订单续费去重复 if (!CacheKey_Derep.FromCache <bool>()) { if (service.SendConsultContent(evt.ChannelID, evt.ServiceID)) { true.ToCache(CacheKey_Derep, TimeSpan.FromMinutes(5)); } else { return(false); } } } catch (Exception ex) { LogHelper.DefaultLogger.Error(ex); return(false); } finally { lockName.UnLock(lockValue); } } else { return(false); } } return(true); }
/// <summary> /// 获取所有模板 /// </summary> /// <returns></returns> List <SysShortMessageTemplate> GetAllTemplates() { StringCacheKey shortMsgTemplatesKey = new StringCacheKey(StringCacheKeyType.Sys_ShortMsgTemplates); var shortMsgTemplates = shortMsgTemplatesKey.FromCache <List <SysShortMessageTemplate> >(); if (shortMsgTemplates == null) { using (DBEntities db = new DBEntities()) { shortMsgTemplates = db.SysShortMessageTemplates.ToList(); if (shortMsgTemplates == null) { shortMsgTemplates = new List <SysShortMessageTemplate>(); } shortMsgTemplates.ToCache(shortMsgTemplatesKey); } } return(shortMsgTemplates); }
/// <summary> /// 修改分诊编号 /// </summary> /// <param name="ConversationRoomID"></param> /// <param name="triageID"></param> /// <returns></returns> public bool UpdateTriageID(string ConversationRoomID, long triageID) { using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["KMEHospEntities"].ConnectionString)) { SqlCommand cmd = new SqlCommand(@"update ConversationRooms set TriageID=@TriageID,ModifyTime=@ModifyTime where ConversationRooms.ConversationRoomID=@ConversationRoomID"); cmd.Parameters.Add("@ModifyTime", SqlDbType.DateTime).Value = DateTime.Now; cmd.Parameters.Add("@TriageID", SqlDbType.BigInt).Value = triageID; cmd.Parameters.Add("@ConversationRoomID", SqlDbType.Int).Value = ConversationRoomID; var ret = cmd.ExecuteNonQuery() > 0; if (ret) { var cacheKey = new StringCacheKey(StringCacheKeyType.Channel, ConversationRoomID); cacheKey.RemoveCache(); } return(ret); } }
/// <summary> /// 设置频道计费状态 /// </summary> /// <param name="room"></param> /// <returns></returns> public bool UpdateChannelChargeState(string ConversationRoomID, EnumRoomChargingState chargingState) { using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["KMEHospEntities"].ConnectionString)) { SqlCommand cmd = new SqlCommand(@"update ConversationRooms set ChargingState=@ChargingState,ModifyTime=@ModifyTime where ConversationRooms.ConversationRoomID=@ConversationRoomID"); cmd.Parameters.Add("@ModifyTime", SqlDbType.DateTime).Value = DateTime.Now; cmd.Parameters.Add("@ChargingState", SqlDbType.Int).Value = (int)chargingState; cmd.Parameters.Add("@ConversationRoomID", SqlDbType.Int).Value = ConversationRoomID; var ret = cmd.ExecuteNonQuery() > 0; if (ret) { var cacheKey = new StringCacheKey(StringCacheKeyType.Channel, ConversationRoomID.ToString()); cacheKey.RemoveCache(); } return(ret); } }
/// <summary> /// 根据手机号码查询用户编号 /// </summary> /// <param name="UserID"></param> /// <returns></returns> public string GetUserIDByOpenID(string openid) { var GetUserIDByOpenID_CacheKey = new StringCacheKey(StringCacheKeyType.MAP_GetUserIDByOpenID, $"{openid}"); var UserID = GetUserIDByOpenID_CacheKey.FromCache <string>(); //缓存没有命中,则查询数据库获取医生编号并设置缓存(缓存不过期) if (string.IsNullOrEmpty(UserID)) { using (var db = new DBEntities()) { UserID = db.UserWechatMaps.Where(p => p.IsDeleted == false && p.OpenID == openid). Select(t => t.UserID).FirstOrDefault(); if (!string.IsNullOrEmpty(UserID)) { UserID.ToCache(GetUserIDByOpenID_CacheKey, TimeSpan.FromMinutes(_GetUserInfoExpireMinutes())); } } } return(UserID); }
/// <summary> /// 获取房间用户信息 /// </summary> /// <param name="ConversationRoomID"></param> /// <returns></returns> public List <ResponseConversationRoomMemberDTO> GetChannelUsersInfo(string ConversationRoomID, DBEntities db = null) { var cacheKey = new StringCacheKey(StringCacheKeyType.Channel_Member, ConversationRoomID); var result = cacheKey.FromCache <List <ResponseConversationRoomMemberDTO> >(); if (result == null) { bool dbPrivateFlag = false; if (db == null) { db = CreateDb(); dbPrivateFlag = true; } result = ( from roomMember in db.ConversationRoomUids join room in db.ConversationRooms on roomMember.ConversationRoomID equals room.ConversationRoomID where room.ConversationRoomID == ConversationRoomID select new ResponseConversationRoomMemberDTO { identifier = roomMember.Identifier, UserCNName = roomMember.UserCNName, UserENName = roomMember.UserENName, PhotoUrl = roomMember.PhotoUrl, UserType = roomMember.UserType, UserID = roomMember.UserID, }).ToList(); if (dbPrivateFlag) { db.Dispose(); } result.ToCache(cacheKey, TimeSpan.FromHours(2)); } return(result); }
/// <summary> /// 获取医生状态配置 /// </summary> /// <param name="room"></param> /// <returns></returns> public List <ResponseConversationRoomDocConfDTO> GetDoctorConfigs(string DoctorID, DBEntities db = null) { #region 获取医生配置 var CacheKey = new StringCacheKey(StringCacheKeyType.Doctor_Configs, DoctorID); var doctorConfigs = CacheKey.FromCache <List <ResponseConversationRoomDocConfDTO> >(); if (doctorConfigs == null) { bool dbPrivateFlag = false; if (db == null) { db = CreateDb(); dbPrivateFlag = true; } doctorConfigs = db.DoctorConfigs.Where(x => !x.IsDeleted && x.DoctorID == DoctorID).Select(x => new ResponseConversationRoomDocConfDTO { DoctorID = DoctorID, ConfigType = x.ConfigType, ConfigContent = x.ConfigContent }).ToList(); if (dbPrivateFlag) { db.Dispose(); } if (doctorConfigs != null) { doctorConfigs.ToCache(CacheKey); } } return(doctorConfigs); #endregion }
public bool Handle(Dto.EventBus.ChannelNewMsgEvent evt) { try { if (evt.OptPlatform != "RESTAPI" && evt.ServiceType == EnumDoctorServiceType.PicServiceType) { //获取医生回复状态,已经回答的则忽略 var cacheKey_Channel_DoctorAnswerState = new StringCacheKey(StringCacheKeyType.Channel_DoctorAnswerState, evt.ChannelID.ToString()); var Channel_DoctorAnswerState = cacheKey_Channel_DoctorAnswerState.FromCache <bool?>(); if (Channel_DoctorAnswerState.HasValue && Channel_DoctorAnswerState.Value) { return(true); } var room = roomService.GetChannelInfo(evt.ChannelID); if (room != null && ( room.RoomState != EnumRoomState.AlreadyVisit && room.RoomState != EnumRoomState.InMedicalTreatment)) { var userInfo = roomService.GetChannelUsersInfo(evt.ChannelID).Where(t => t.identifier == Convert.ToInt32(evt.FromAccount)).FirstOrDefault(); //医生回复了 if (userInfo != null && userInfo.UserType == EnumUserType.Doctor) { //修改咨询状态为已回复 bllUserConsult.UpdateReplied(evt.ServiceID); var ExpectedState = room.RoomState; if (roomService.CompareAndSetChannelState( room.ConversationRoomID, userInfo.UserID, EnumRoomState.InMedicalTreatment, room.DisableWebSdkInteroperability, ref ExpectedState) != EnumApiStatus.BizOK) { return(false); } //设置医生回复状态 true.ToCache(cacheKey_Channel_DoctorAnswerState, TimeSpan.FromHours(24)); using (MQChannel mqChannel = new MQChannel()) { return(mqChannel.Publish(new Dto.EventBus.UserNoticeEvent() { NoticeType = EnumNoticeSecondType.UserPicDoctorReplyNotice, ServiceID = evt.ServiceID })); } } } } return(true); } catch (Exception ex) { LogHelper.DefaultLogger.Error(ex); } return(false); }
/// <summary> /// 获取流水号 /// </summary> /// <param name="type"></param> /// <returns></returns> public static string GetWaterNo(EnumWaterNoType type) { ICacheKey cachKey = null; double no = 0; switch (type) { case EnumWaterNoType.Identify: cachKey = new StringCacheKey(StringCacheKeyType.User_Identify); no = Manager.Increment(cachKey); if (no < 1000) { if (!$"GetWaterNo_Identify".Lock($"GetWaterNo_Identify", TimeSpan.FromSeconds(10), 100, 3)) { throw new Exception("并发冲突"); } no = Manager.Increment(cachKey); if (no < 1000) { using (var db = new DBEntities()) { no = db.ConversationIMUids.Where(t => !t.IsDeleted). Select(t => t.Identifier).Max(); if (no < 1000) { no = 1000; } Manager.Increment(cachKey, no); } } } return(no.ToString()); case EnumWaterNoType.ChannelID: cachKey = new StringCacheKey(StringCacheKeyType.ChannelID); no = Manager.Increment(cachKey); if (no < 1000) { if (!$"GetWaterNo_Identify".Lock($"GetWaterNo_Identify", TimeSpan.FromSeconds(10), 100, 3)) { throw new Exception("并发冲突"); } no = Manager.Increment(cachKey); if (no < 1000) { using (var db = new DBEntities()) { no = db.ConversationIMUids.Where(t => !t.IsDeleted). Select(t => t.Identifier).Max(); if (no < 1000) { no = 1000; } Manager.Increment(cachKey, no); } } } return(no.ToString()); default: return(no.ToString()); } }
/// <summary> /// 依据角色,系统标识 获取菜单功能权限 /// </summary> /// <param name="roletypes"></param> /// <param name="topModuleID"></param> /// <param name="type">0 菜单 1 功能</param> /// <returns></returns> public List <ResponseSysModuleForDocDTO> GetRoleMenus(List <EnumRoleType> roletypes, string topModuleID, int type = -1) { StringCacheKey SysModuleskey = new StringCacheKey(StringCacheKeyType.Sys_SysModules); var sysModules = SysModuleskey.FromCache <List <ResponseRoleSysModuleDTO> >(); if (sysModules == null) { using (var db = new DBEntities()) { sysModules = (from sys in db.SysModules join sysmap in db.UserRolePrevileges on sys.ModuleID equals sysmap.ModuleID join role in db.UserRoles on sysmap.RoleID equals role.RoleID where !sys.IsDeleted select new ResponseRoleSysModuleDTO() { CSSClass = sys.CSSClass, Level = sys.Level, ModuleID = sys.ModuleID, ModuleName = sys.ModuleName, ModuleType = sys.ModuleType, ModuleUrl = sys.ModuleUrl, ParentModuleID = sys.ParentModuleID, Sort = sys.Sort, Target = sys.Target, TopModuleID = sys.TopModuleID, RoleID = role.RoleID, RoleType = (int)role.RoleType }).ToList(); sysModules.ToCache(SysModuleskey); } } if (sysModules == null) { return(new List <ResponseSysModuleForDocDTO>()); } else { var query = (from sys in sysModules join role in roletypes on sys.RoleType equals(int) role where sys.TopModuleID == topModuleID && !string.IsNullOrEmpty(sys.ModuleUrl) group new { sys.CSSClass, sys.ModuleUrl, sys.Target, sys.ModuleName, sys.Sort, sys.ModuleType } by new { sys.CSSClass, sys.ModuleUrl, sys.Target, sys.ModuleName, sys.Sort, sys.ModuleType } into gro select new ResponseSysModuleForDocDTO() { cssClass = gro.Key.CSSClass, href = gro.Key.ModuleUrl, target = gro.Key.Target, title = gro.Key.ModuleName, Sort = gro.Key.Sort, ModuleType = gro.Key.ModuleType, id = gro.Key.ModuleUrl }); if (type >= 0) { query = query.Where(t => t.ModuleType == type); } return(query.OrderBy(t => t.Sort).ToList()); } }