public bool Handle(EventBus.Events.OrderEvaluationCompletedEvent evt)
        {
            if (evt == null)
            {
                return(true);
            }

            try
            {
                var order = orderService.Single <XuHos.Entity.Order>(a => a.OrderOutID == evt.OuterID);
                if (order != null)
                {
                    order.IsEvaluated = true;
                    var result = orderService.Update(order);
                    if (result == true)
                    {
                        var CacheKey_Order = new XuHos.Common.Cache.Keys.EntityCacheKey <DTO.Platform.OrderDTO>(XuHos.Common.Cache.Keys.StringCacheKeyType.Order, order.OrderNo);
                        CacheKey_Order.RemoveCache();
                    }
                    return(result);
                }
                else
                {
                    return(true);
                }
            }
            catch (Exception ex)
            {
                Common.LogHelper.WriteError(ex);
            }

            return(false);
        }
Exemple #2
0
        public SysGrabService(string name)
        {
            this._name = name;

            _CacheKey_TaskPool       = new XuHos.Common.Cache.Keys.EntityCacheKey <T>(XuHos.Common.Cache.Keys.StringCacheKeyType.Grab, name);
            _CacheKey_LatestTakeTime = new XuHos.Common.Cache.Keys.EntityCacheKey <T>(XuHos.Common.Cache.Keys.StringCacheKeyType.Grab, $"{_name}:LatestTakeTime");
            _CacheKey_DerepList      = $"{_CacheKey_TaskPool.KeyName}:Dereplication";
        }
Exemple #3
0
 public void InvalidTask(T item, string category)
 {
     if (Manager.Instance != null)
     {
         var CacheKey_Waiting = new XuHos.Common.Cache.Keys.EntityCacheKey <T>(XuHos.Common.Cache.Keys.StringCacheKeyType.Grab, $"{_name}:{_Scope}:{category}:Waiting");
         Manager.Instance.ListRemove <T>(CacheKey_Waiting.KeyName, item);
     }
 }
Exemple #4
0
        /// <summary>
        /// 登入,保存用户信息
        /// </summary>
        /// <param name="userTokenStr"></param>
        /// <param name="user"></param>
        public static void SetUserTicket(UserLoginServerTicketDTO user, string userToken)
        {
            //设置缓存
            var expireMinute        = _GetUserTokenExpireMinute();
            var UserTicket_CacheKey = new XuHos.Common.Cache.Keys.EntityCacheKey <UserLoginServerTicketDTO>(
                XuHos.Common.Cache.Keys.StringCacheKeyType.User_Ticket, userToken);

            user.ToCache(UserTicket_CacheKey, TimeSpan.FromMinutes(expireMinute));
        }
Exemple #5
0
        /// <summary>
        /// 领取任务后,执行完成
        /// </summary>
        /// <param name="item"></param>
        public void FinishTask(T item, string category)
        {
            if (Manager.Instance != null)
            {
                var CacheKey_DoingTask = new XuHos.Common.Cache.Keys.EntityCacheKey <T>(XuHos.Common.Cache.Keys.StringCacheKeyType.Grab, $"{_name}:{_Scope}:{category}:Doing");
                var CacheKey_Finished  = new XuHos.Common.Cache.Keys.EntityCacheKey <T>(XuHos.Common.Cache.Keys.StringCacheKeyType.Grab, $"{_name}:{_Scope}:{category}:Finished");

                Manager.Instance.ListRemove <T>(CacheKey_DoingTask.KeyName, item);
                Manager.Instance.ListLeftPush(CacheKey_Finished.KeyName, item);
            }
        }
Exemple #6
0
 /// <summary>
 /// 已完成的任务数量
 /// </summary>
 public long FinishedTaskCount(string category)
 {
     if (Manager.Instance != null)
     {
         var CacheKey_FinishedTask = new XuHos.Common.Cache.Keys.EntityCacheKey <T>(XuHos.Common.Cache.Keys.StringCacheKeyType.Grab, $"{_name}:{_Scope}:{category}:Finished");
         return(Manager.Instance.ListLength(CacheKey_FinishedTask.KeyName));
     }
     else
     {
         return(0);
     }
 }
Exemple #7
0
 /// <summary>
 /// 领取的任务列表是空的
 /// </summary>
 /// <returns></returns>
 public bool DoingTaskListEmpty(string category)
 {
     if (Manager.Instance != null)
     {
         var CacheKey_DoingTask = new XuHos.Common.Cache.Keys.EntityCacheKey <T>(XuHos.Common.Cache.Keys.StringCacheKeyType.Grab, $"{_name}:{_Scope}:{category}:Doing");
         return(Manager.Instance.ListLength(CacheKey_DoingTask.KeyName) <= 0);
     }
     else
     {
         return(true);
     }
 }
Exemple #8
0
        /// <summary>
        /// 领取任务后拒绝执行
        /// </summary>
        /// <param name="item"></param>
        public void RejectTask(T item, string category, int priority)
        {
            if (Manager.Instance != null)
            {
                var CacheKey_DoingTask = new XuHos.Common.Cache.Keys.EntityCacheKey <T>(XuHos.Common.Cache.Keys.StringCacheKeyType.Grab, $"{_name}:{_Scope}:{category}:Doing");
                var CacheKey_WaitTask  = new XuHos.Common.Cache.Keys.EntityCacheKey <T>(XuHos.Common.Cache.Keys.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);
            }
        }
Exemple #9
0
        /// <summary>
        /// 开始执行任务
        /// </summary>
        /// <param name="item"></param>
        public void StartTask(T item, string category)
        {
            if (Manager.Instance != null)
            {
                var CacheKey_Waiting = new XuHos.Common.Cache.Keys.EntityCacheKey <T>(XuHos.Common.Cache.Keys.StringCacheKeyType.Grab, $"{_name}:{_Scope}:{category}:Waiting");
                var CacheKey_Doing   = new XuHos.Common.Cache.Keys.EntityCacheKey <T>(XuHos.Common.Cache.Keys.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);
            }
        }
Exemple #10
0
        public static UserLoginServerTicketDTO GetUserTicket(string userTokenStr)
        {
            var CacheKey = new XuHos.Common.Cache.Keys.EntityCacheKey <UserLoginServerTicketDTO>(XuHos.Common.Cache.Keys.StringCacheKeyType.User_Ticket, userTokenStr);
            var ticket   = CacheKey.FromCache();

            if (ticket != null)
            {
                return(ticket);
            }
            else
            {
                return(default(UserLoginServerTicketDTO));
            }
        }
Exemple #11
0
        /// <summary>
        /// 更新个人信息
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public bool UpdateUserInfo(UserDTO model)
        {
            using (var db = new DBEntities())
            {
                var user = db.Users.Where(t => t.UserID == model.UserID).FirstOrDefault();

                if (user != null)
                {
                    if (model.UserCNName != null)
                    {
                        user.UserCNName = model.UserCNName;
                        var member = (from m in db.UserMembers
                                      where m.UserID == user.UserID && m.Relation == EnumUserRelation.MySelf &&
                                      m.IsDeleted == false
                                      select m).FirstOrDefault();
                        if (member != null)
                        {
                            member.MemberName = model.UserCNName;
                        }
                    }

                    if (model.UserENName != null)
                    {
                        user.UserENName = model.UserENName;
                    }

                    if (model.Email != null)
                    {
                        user.Email = model.Email;
                    }

                    if (model._PhotoUrl != null)
                    {
                        user.PhotoUrl = model._PhotoUrl;
                    }

                    var CacheKey_User =
                        new XuHos.Common.Cache.Keys.EntityCacheKey <XuHos.Entity.User>(StringCacheKeyType.User,
                                                                                       user.UserID);
                    CacheKey_User.RemoveCache();

                    return(db.SaveChanges() > 0);
                }
                return(false);
            }
        }
Exemple #12
0
        /// <summary>
        /// 领取任务
        /// 从主队列移除后放入临时队列,此操作是原子操作
        /// </summary>
        /// <param name=""></param>
        /// <returns></returns>
        public XuHos.Common.Enum.EnumApiStatus TakeTask(string category, out T task, List <string> taskGroups)
        {
            task = default(T);

            if (taskGroups == null)
            {
                taskGroups = new List <string>()
                {
                    "ALL"
                };
            }
            else
            {
                taskGroups.Add("ALL");
            }

            if (Manager.Instance != null)
            {
                // 记录最后一次领单时间
                Manager.Instance.StringSet <DateTime?>(_CacheKey_LatestTakeTime.KeyName, DateTime.Now);

                var CacheKey_Waiting = new XuHos.Common.Cache.Keys.EntityCacheKey <T>(XuHos.Common.Cache.Keys.StringCacheKeyType.Grab, $"{_name}:{_Scope}:{category}:Waiting");

                //按照分组下优先级获取
                Func <int, string, T> getGroupPriorityTask = (p, taskGroupName) =>
                {
                    return(Manager.Instance.ListRightPopLeftPush <T>($"{_CacheKey_TaskPool.KeyName}:{taskGroupName}:{p}", CacheKey_Waiting.KeyName));
                };

                //当前任务已经被消耗了才重新获取新任务
                if (Manager.Instance.ListRange <T>(CacheKey_Waiting.KeyName).Count <= 0)
                {
                    if (task == null)
                    {
                        foreach (var taskGroupName in taskGroups)
                        {
                            //依次获取
                            for (int i = max_priority; i >= min_priority; i--)
                            {
                                task = getGroupPriorityTask(i, taskGroupName);

                                if (task != null)
                                {
                                    return(XuHos.Common.Enum.EnumApiStatus.BizOK);
                                }
                            }
                        }
                    }
                }
                else
                {
                    task = Manager.Instance.ListRange <T>(CacheKey_Waiting.KeyName).FirstOrDefault();

                    return(XuHos.Common.Enum.EnumApiStatus.BizDoctorTaskAlreadyTaskUnhandledFinish);
                }

                return(XuHos.Common.Enum.EnumApiStatus.BizDoctorTaskPoolEmpty);
            }
            else
            {
                return(XuHos.Common.Enum.EnumApiStatus.BizError);
            }
        }
Exemple #13
0
        /// <summary>
        /// 获取验证通过的接入端信息
        /// </summary>
        /// <param name="token"></param>
        /// <returns></returns>
        public static XuHos.BLL.Common.DTOs.Response.ResponseToken GetAppToken(string apptoken)
        {
            var CacheKey = new XuHos.Common.Cache.Keys.EntityCacheKey <XuHos.BLL.Common.DTOs.Response.ResponseToken>(XuHos.Common.Cache.Keys.StringCacheKeyType.API_apptoken, apptoken);

            return(CacheKey.FromCache());
        }