Exemple #1
0
        /// <summary>
        /// 获取成员信息
        /// </summary>
        /// <param name="PatientUserID"></param>
        /// <param name="PatientMemberID"></param>
        /// <returns></returns>
        public ResponseUserMemberDTO GetMemberInfo(string DoctorID, string UserID, string PatientMemberID)
        {
            if (Exists(a => a.DoctorID == DoctorID && a.MemberID == PatientMemberID))
            {
                BLL.User.Implements.UserMemberService service = new User.Implements.UserMemberService();

                var member = service.GetMemberInfo(PatientMemberID);

                if (member == null)
                {
                    //兼容药店端看诊,MemberID非当前用户下的Member
                    BLL.User.Implements.UserService ser = new User.Implements.UserService();
                    var user = ser.GetUserInfoByUserId(UserID);
                    if (user != null && user.UserType == EnumUserType.Drugstore)
                    {
                        return(service.GetMemberInfo(UserID, PatientMemberID));
                    }
                }
                return(member);
            }
            else
            {
                return(null);
            }
        }
        public Response <List <ResponseUserOPDRegisterDTO> > GetPageList(RequestUserQueryOPDRegisterDTO request)
        {
            Response <List <ResponseUserOPDRegisterDTO> > result = new Response <List <ResponseUserOPDRegisterDTO> >();

            var today = DateTime.Now;

            using (XuHos.DAL.EF.DBEntities db = new DBEntities())
            {
                int           Total          = 0;
                string        queryPredicate = "IsDeleted = @0 AND (OPDType = @1 OR OPDType = @2)";
                List <object> paramValues    = new List <object> {
                    false, EnumDoctorServiceType.VidServiceType, EnumDoctorServiceType.AudServiceType
                };

                if (!string.IsNullOrEmpty(request.MemberID))
                {
                    BLL.User.Implements.UserMemberService memser = new UserMemberService();
                    var member = memser.GetMemberInfo(request.MemberID);
                    if (!string.IsNullOrEmpty(member.IDNumber))
                    {
                        queryPredicate += " AND IDNumber = @3";
                        paramValues.Add(member.IDNumber);
                    }
                    else
                    {
                        queryPredicate += " AND MemberID = @3";
                        paramValues.Add(request.MemberID);
                    }
                }
                else
                {
                    queryPredicate += " AND UserID = @3";
                    paramValues.Add(CurrentOperatorUserID);
                }

                var query = from opd in db.UserOpdRegisters.Where(queryPredicate, paramValues.ToArray())
                            join doctor in db.Doctors.Where(a => !a.IsDeleted) on opd.DoctorID equals doctor.DoctorID
                            join order in db.Orders.Where(a => !a.IsDeleted) on opd.OPDRegisterID equals order.OrderOutID
                            join room in db.ConversationRooms.Where(a => !a.IsDeleted) on opd.OPDRegisterID equals room.ServiceID into leftJoinRoom
                            from roomIfEmpty in leftJoinRoom.DefaultIfEmpty()
                            select new ResponseUserOPDRegisterDTO()
                {
                    OPDRegisterID  = opd.OPDRegisterID, //预约编号
                    OPDDate        = opd.OPDDate,       //排版日期
                    OPDType        = opd.OPDType,       //预约类型
                    RegDate        = opd.RegDate,       //预约时间
                    UserID         = opd.UserID,        //用户编号
                    Fee            = opd.Fee,           //费用
                    ConsultContent = opd.ConsultContent,
                    IDNumber       = opd.IDNumber,
                    MemberID       = opd.MemberID,
                    Room           = new DTO.ConversationRoomDTO()
                    {
                        //就诊当天,没有就诊,用户已经支付
                        ChannelID = roomIfEmpty != null && (order.OrderState == EnumOrderState.Finish ||
                                                            (order.OrderState == EnumOrderState.Paid &&
                                                             (opd.OPDDate.Year == today.Year &&
                                                              opd.OPDDate.Month == today.Month &&
                                                              opd.OPDDate.Day == today.Day))
                                                            ) ? roomIfEmpty.ChannelID : 0,                   //就诊房间
                        RoomState = roomIfEmpty != null ? roomIfEmpty.RoomState : EnumRoomState.NoTreatment, //预约状态
                        Secret    = roomIfEmpty != null ? roomIfEmpty.Secret : "",                           //房间密码
                    },
                    Order = new DTO.Platform.OrderDTO()
                    {
                        OrderNo       = order.OrderNo,      //订单编号
                        OrderTime     = order.OrderTime,    //订单时间
                        OrderState    = order.OrderState,
                        LogisticNo    = order.LogisticNo,
                        LogisticState = order.LogisticState,
                        PayType       = order.PayType,
                        CostType      = order.CostType,
                        TotalFee      = order.totalFee,
                        TradeNo       = order.TradeNo,
                        IsEvaluated   = order.IsEvaluated,
                        RefundState   = order.RefundState
                    },
                    Member = new DTO.UserMemberDTO()
                    {
                        UserID     = opd.UserID,
                        MemberID   = opd.MemberID,          //成员编号
                        MemberName = opd.MemberName,
                        Gender     = opd.Gender,
                        IDNumber   = opd.IDNumber
                    },
                    Doctor = new DTO.DoctorDto()
                    {
                        DoctorID       = opd.DoctorID,      //医生编号
                        DoctorName     = doctor.DoctorName,
                        HospitalID     = doctor.HospitalID,
                        HospitalName   = doctor.HospitalName,
                        DepartmentID   = doctor.DepartmentID,
                        DepartmentName = doctor.DepartmentName,
                        Specialty      = doctor.Specialty,
                        Title          = doctor.Title,
                        Duties         = doctor.Duties,
                    }
                };


                #region 处理搜索条件
                //查询关键字
                if (!string.IsNullOrEmpty(request.Keyword))
                {
                    query = query.Where(a => a.Member.MemberName.Contains(request.Keyword));
                }

                //开始日期
                if (request.BeginDate.HasValue)
                {
                    query = query.Where(a => a.OPDDate >= request.BeginDate);
                }

                //结束日期
                if (request.EndDate.HasValue)
                {
                    request.EndDate = request.EndDate.Value.AddDays(1);
                    query           = query.Where(a => a.OPDDate < request.EndDate);
                }

                //类型
                if (request.OPDType.HasValue)
                {
                    query = query.Where(a => a.OPDType == request.OPDType.Value);
                }
                //状态
                if (request.OrderState.HasValue)
                {
                    query = query.Where(a => a.Order.OrderState == request.OrderState.Value);
                }

                //传了MemberID,查memberid 的身份号的所有记录
                //if (!string.IsNullOrEmpty(request.MemberID))
                //{
                //    BLL.User.Implements.UserMemberService memser = new UserMemberService();
                //    var member = memser.GetMemberInfo(request.MemberID);
                //    if (!string.IsNullOrEmpty(member.IDNumber))
                //        query = query.Where(t => t.IDNumber == member.IDNumber);
                //    else
                //        query = query.Where(t => t.MemberID == member.MemberID);
                //}
                //else
                //{
                //    query = query.Where(t => t.UserID == CurrentOperatorUserID);
                //}

                #endregion

                query        = query.OrderByDescending(a => new { a.Order.OrderTime, a.Order.OrderState });
                result.Data  = query.Pager <ResponseUserOPDRegisterDTO>(out Total, request.CurrentPage, request.PageSize);
                result.Total = Total;
            }

            return(result);
        }
Exemple #3
0
        /// <summary>
        /// 根据用户编号获取用户信息
        /// </summary>
        /// <param name="userId"></param>
        public ResponseUserDTO GetUserInfoByUserId(string userId)
        {
            if (string.IsNullOrEmpty(userId))
            {
                return(default(ResponseUserDTO));
            }

            var User_CacheKey = new XuHos.Common.Cache.Keys.EntityCacheKey <ResponseUserDTO>(StringCacheKeyType.User, userId);
            var userModel     = User_CacheKey.FromCache();

            if (userModel == null)
            {
                using (DBEntities db = new DBEntities())
                {
                    var query = from user in db.Users.Where(a => a.UserID == userId && a.IsDeleted == false)
                                join userUid in db.ConversationIMUids on user.UserID equals userUid.UserID
                                select new ResponseUserDTO()
                    {
                        CancelTime   = user.CancelTime,
                        Email        = user.Email,
                        Identifier   = userUid.Identifier,
                        UserID       = user.UserID,
                        Mobile       = user.Mobile,
                        Password     = user.Password,
                        PhotoUrl     = user.PhotoUrl,
                        RegTime      = user.RegTime,
                        UserType     = user.UserType,
                        UserState    = user.UserState,
                        UserLevel    = user.UserLevel,
                        UserAccount  = user.UserAccount,
                        OrgID        = user.OrgCode,
                        UserCNName   = user.UserCNName,
                        UserENName   = user.UserENName,
                        CreateUserID = user.CreateUserID
                    };

                    userModel = query.FirstOrDefault();

                    if (userModel != null)
                    {
                        XuHos.BLL.User.Implements.UserMemberService service = new UserMemberService();
                        var MemberIsEmpty = service.GetMemberList(userModel.UserID).Find(a => a.Relation == EnumUserRelation.MySelf);

                        //取 usercnname, 先取自己关系membername, 为空则取users.usercname,还为空则取手机号
                        var UserCNName = userModel.UserCNName;
                        if (MemberIsEmpty != null && !string.IsNullOrWhiteSpace(MemberIsEmpty.MemberName))
                        {
                            UserCNName = MemberIsEmpty.MemberName;
                        }

                        if (string.IsNullOrEmpty(UserCNName))
                        {
                            UserCNName = userModel.Mobile;
                        }
                        userModel.UserCNName = UserCNName;
                        userModel.UserENName = MemberIsEmpty != null ? MemberIsEmpty.MemberName : userModel.UserENName;
                        userModel.MemberID   = MemberIsEmpty != null ? MemberIsEmpty.MemberID : "";
                        userModel.IDType     = MemberIsEmpty != null ? MemberIsEmpty.IDType : EnumUserCardType.IDCard;
                        userModel.IDNumber   = MemberIsEmpty != null ? MemberIsEmpty.IDNumber : "";
                        userModel.Gender     = MemberIsEmpty != null ? MemberIsEmpty.Gender : EnumUserGender.Other;
                    }

                    userModel.ToCache(User_CacheKey, TimeSpan.FromMinutes(_GetUserInfoExpireMinutes()));
                }
            }

            return(userModel);
        }