Exemple #1
0
        public bool Handle(EventBus.Events.OrderCompletedEvent evt)
        {
            if (evt == null)
            {
                return(true);
            }

            var orderService = new XuHos.BLL.OrderService("");
            var order        = orderService.GetOrder(evt.OrderNo);

            if (order == null)
            {
                return(true);
            }

            var opd = opdService.Single(order.OrderOutID);

            if (opd == null)
            {
                return(true);
            }

            if (opd.IsUseTaskPool && (order.OrderType == Common.Enum.EnumProductType.video || order.OrderType == Common.Enum.EnumProductType.Phone))
            {
                var grabService = new XuHos.BLL.Sys.Implements.SysGrabService <string>(nameof(UserOPDRegister));
                grabService.FinishTask(order.OrderOutID, opd.DoctorID);
                return(true);
            }
            else
            {
                return(true);
            }
        }
Exemple #2
0
        public bool Handle(EventBus.Events.OrderCanceledEvent evt)
        {
            if (evt == null)
            {
                return(true);
            }

            var order = orderService.GetOrder(evt.OrderNo);

            if (order != null)
            {
                if (order.OrderType == Common.Enum.EnumProductType.video || order.OrderType == Common.Enum.EnumProductType.Phone)
                {
                    var grabService = new XuHos.BLL.Sys.Implements.SysGrabService <string>(nameof(UserOPDRegister));
                    grabService.CancelTask(order.OrderOutID);

                    return(true);
                }
            }

            return(true);
        }
        public bool Handle(EventBus.Events.OrderPayCompletedEvent evt)
        {
            if (evt != null && evt.OrderNo != "" && evt.OrderType == Common.Enum.EnumProductType.RenewUpgrade)
            {
                var LockName  = $"{typeof(IfRenewUpgradeUpdateOrderDetail)}:{evt.OrderNo}";
                var lockValue = Guid.NewGuid().ToString("N");

                //获取分布式锁,获取锁失败时进行锁等待(锁超时时间5秒)
                if (LockName.Lock(lockValue, TimeSpan.FromSeconds(5)))
                {
                    try
                    {
                        XuHos.Common.LogHelper.WriteDebug($"订单续费:订单{evt.OrderNo}支付完成,需更新原订单明细");

                        //通过外部订单编号查询原订单信息
                        var origOrder = orderService.GetOrder(evt.OrderOutID);

                        if (origOrder != null)
                        {
                            var room = roomService.GetChannelInfo(origOrder.OrderOutID);

                            //服务倒计时结束或者已经就诊
                            if (room != null && (room.Duration - room.TotalTime <= 0 || room.RoomState == Common.Enum.EnumRoomState.AlreadyVisit))
                            {
                                XuHos.Common.LogHelper.WriteDebug($"订单续费:订单{evt.OrderNo}支付完成,就诊已经结束,原订单已经完成需申请退款");
                                return(orderService.Cancel(evt.OrderNo));
                            }
                            //当原订单已经完成时,用户对订单进行续费那么则进行退款
                            else if (origOrder.OrderState == Common.Enum.EnumOrderState.Finish)
                            {
                                XuHos.Common.LogHelper.WriteDebug($"订单续费:订单{evt.OrderNo}支付完成,原订单已经完成需申请退款");
                                var order = orderService.GetOrder(evt.OrderNo);
                                if (order.OrderState == Common.Enum.EnumOrderState.Finish)
                                {
                                    return(true);
                                }
                                else
                                {
                                    return(orderService.Cancel(evt.OrderNo));
                                }
                            }
                            else
                            {
                                XuHos.Common.LogHelper.WriteDebug($"订单续费:{evt.OrderNo}支付完成,修改原订单明细");
                                return(orderService.RenewUpgradePayCompleted(evt.OrderNo));
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        XuHos.Common.LogHelper.WriteError(ex);
                        return(false);
                    }
                    finally
                    {
                        LockName.UnLock(lockValue);
                    }
                }
                else
                {
                    //获取锁失败,进行重试
                    return(false);
                }
            }

            return(true);
        }