Example #1
0
        public async Task <IActionResult> ModifyPassword([FromBody] HospitalModifyPasswordRequestDto requestDto)
        {
            if (string.IsNullOrEmpty(UserID))
            {
                return(Failed(ErrorCode.Empty, "账号不存在或已禁用"));
            }

            var hospitalBiz = new HospitalBiz();

            var model = await hospitalBiz.GetAsync(UserID);

            if (model is null)
            {
                return(Failed(ErrorCode.Empty, "账号不存在或已禁用"));
            }

            var addSaltPwd = CryptoHelper.AddSalt(model.HospitalGuid, requestDto.Password);

            if (!model.Password.Equals(addSaltPwd, StringComparison.OrdinalIgnoreCase))
            {
                return(Failed(ErrorCode.Empty, "账号或密码错误"));
            }

            model.LastUpdatedBy   = model.HospitalGuid;
            model.LastUpdatedDate = DateTime.Now;
            model.Password        = CryptoHelper.AddSalt(model.HospitalGuid, requestDto.NewPassword);

            var result = await hospitalBiz.UpdateAsync(model);

            return(result ? Success() : Failed(ErrorCode.Empty, "密码更新失败!"));
        }
Example #2
0
        public IActionResult GetCcupationalDiseaseHospital([FromBody] GetCcupationalDiseaseHospitalRequestDto requestDto)
        {
            HospitalBiz hospitalBiz    = new HospitalBiz();
            var         hospitalModels = hospitalBiz.GetQualificationHospital(requestDto.PageIndex, requestDto.PageSize, DictionaryType.OccupationalDiseaseQualification);

            if (hospitalModels == null)
            {
                return(Failed(ErrorCode.Empty));
            }
            var dtos = hospitalModels.Select(hos => new GetCcupationalDiseaseHospitalResponseDto
            {
                HospitalGuid = hos.HospitalGuid,
                HosName      = hos.HosName,
                HosTag       = hos.HosTag,
                HosAbstract  = hos.HosAbstract,
                Picture      = hos.LogoGuid,
                GuidanceUrl  = hos.GuidanceUrl
            });

            foreach (var item in dtos)
            {
                var picture = MySqlHelper.GetModelById <AccessoryModel>(item.Picture);
                if (picture != null)
                {
                    item.Picture = picture.BasePath + picture.RelativePath;
                }
                else
                {
                    item.Picture = null;
                }
            }
            return(Success(dtos));
        }
Example #3
0
        public async Task <IActionResult> LoginAsync([FromBody] HosipitalLoginRequestDto loginRequestDto)
        {
            var hospitalBiz = new HospitalBiz();

            var model = await hospitalBiz.GetModelByAccountAsync(loginRequestDto.Account);

            if (model is null)
            {
                return(Failed(ErrorCode.Empty, "账号不存在或已禁用"));
            }

            if (!model.Password.Equals(CryptoHelper.AddSalt(model.HospitalGuid, loginRequestDto.Password), StringComparison.OrdinalIgnoreCase))
            {
                return(Failed(ErrorCode.Empty, "账号或密码错误"));
            }

            var response = new HospitalLoginResponseDto
            {
                HospitalGuid = model.HospitalGuid,
                HospitalName = model.HosName,
                Token        = CreateToken(model.HospitalGuid, Common.EnumDefine.UserType.Doctor, 30),
            };

            return(Success(response));
        }
Example #4
0
        public IActionResult GetHospitalOfficeTree()
        {
            var hospitalBiz = new HospitalBiz();
            var officeBiz   = new OfficeBiz();
            var hospitals   = hospitalBiz.GetAllHospital();

            if (hospitals == null)
            {
                return(Failed(ErrorCode.Empty, "没有查到医院数据!"));
            }
            var hospitalDto = hospitals.Select(a => a.ToDto <GetHospitalOfficeTreeItemDto>()).ToList();

            foreach (var hospital in hospitalDto)
            {
                var topOffices = officeBiz.GetHospitalOffice(hospital.HospitalGuid, null);
                if (topOffices == null || !topOffices.Any())
                {
                    continue;
                }
                var officeDtos = topOffices.Select(a => a.ToDto <GetHospitalOfficeTreeOfficeItemDto>()).ToList();
                officeDtos.ForEach(GetSubordinateOffeces);
                hospital.Offeces = officeDtos;
            }
            return(Success(hospitalDto));
        }
Example #5
0
        public async Task <IActionResult> DeleteHospitalAsync(string guid)
        {
            var hospitalBiz = new HospitalBiz();
            var result      = await hospitalBiz.Delete2Async(guid);

            if (!result)
            {
                return(Failed(ErrorCode.UserData, "删除失败"));
            }
            return(Success());
        }
Example #6
0
        public async Task <IActionResult> GetHospitalAllSelectAsync()
        {
            var hospitalBiz = new HospitalBiz();
            var hospitalAll = await hospitalBiz.GetAllAsync();

            var response = hospitalAll.Select(a => new GetHospitalAllSelectItemDto
            {
                Name = a.HosName,
                Guid = a.HospitalGuid
            });

            return(Success(response));
        }
Example #7
0
        public async Task <IActionResult> GetHospitalAsync([FromQuery] string hospitalGuid)
        {
            if (string.IsNullOrEmpty(hospitalGuid))
            {
                return(Failed(ErrorCode.Empty, "医院不存在,参数不正确"));
            }

            var hospitalBiz = new HospitalBiz();

            var hospital = await hospitalBiz.GetAsync(hospitalGuid);

            return(Success(hospital));
        }
Example #8
0
        public async Task <IActionResult> EnterpriseWeChatLogin(string code)
        {
            HospitalLoginResponseDto response = null;
            var result = await GetEnterpriseWeChatUserInfo(code);

            if (result == null)
            {
                return(Failed(ErrorCode.Empty, "未找到对应用户信息"));
            }
            //根据用户部门Id查找对应医院数据
            var enterprise = new EnterpriseWeChat();

            PlatformSettings.Mappings.Bind(enterprise);
            List <Mapping> mapList = enterprise?.Mapping.ToList();

            if (mapList == null)
            {
                return(Failed(ErrorCode.Empty, "配置信息错误"));
            }
            int[] departmentList = result.department;
            if (departmentList == null || departmentList.Count() == 0)
            {
                return(Failed(ErrorCode.Empty, "所属部门为空"));
            }
            var hospitalBiz = new HospitalBiz();

            foreach (var item in departmentList)
            {
                var mappingModel = mapList.FirstOrDefault(s => s.DepartmentId == item);
                if (mappingModel != null)
                {
                    var model = await hospitalBiz.GetAsync(mappingModel.HosId);

                    if (model == null)
                    {
                        return(Failed(ErrorCode.Empty, "未找到对应医院"));
                    }
                    //找到对应医院账号进行登录
                    response = new HospitalLoginResponseDto
                    {
                        HospitalGuid = model.HospitalGuid,
                        HospitalName = model.HosName,
                        Token        = CreateToken(model.HospitalGuid, Common.EnumDefine.UserType.Doctor, 30),
                    };
                    return(Success(response));
                }
            }
            return(Failed(ErrorCode.Empty, "未找到对应用户所在医院"));
        }
Example #9
0
        public IActionResult GetAllHospital()
        {
            HospitalBiz hospitalBiz = new HospitalBiz();
            var         hospitals   = hospitalBiz.GetAllHospital();

            if (hospitals == null || !hospitals.Any())
            {
                return(Failed(ErrorCode.Empty, "没有获取到医院数据"));
            }
            var response = hospitals.Select(a => new GetAllHospitalResponseDto
            {
                HospitalGuid = a.HospitalGuid,
                HosName      = a.HosName
            });

            return(Success(response));
        }
Example #10
0
        public async Task <IActionResult> DisableEnableHospitalAsync([FromBody] DisableEnableHospitalRequestDto request)
        {
            var hospitalBiz = new HospitalBiz();
            var entity      = await hospitalBiz.GetAsync(request.Guid);

            if (entity == null)
            {
                return(Failed(ErrorCode.UserData, "找不到数据"));
            }
            entity.LastUpdatedBy   = UserID;
            entity.LastUpdatedDate = DateTime.Now;
            entity.Enable          = request.Enable;
            var result = await hospitalBiz.UpdateAsync(entity);

            if (!result)
            {
                return(Failed(ErrorCode.UserData, "修改失败"));
            }
            return(Success());
        }
Example #11
0
        public async Task <IActionResult> AddOfficeAsync([FromBody] AddOfficeRequestDto request)
        {
            var officeBiz = new OfficeBiz();
            var officeAll = await officeBiz.GetAllAsync();

            if (officeAll.Any(a => a.OfficeName == request.OfficeName.Trim()))
            {
                return(Failed(ErrorCode.UserData, "系统中存在相同的科室名称"));
            }
            var hospitalBiz = new HospitalBiz();
            var hospitalAll = await hospitalBiz.GetAllAsync();

            var officeModelList = new List <OfficeModel>();

            foreach (var item in hospitalAll)
            {
                officeModelList.Add(new OfficeModel
                {
                    CreatedBy        = UserID,
                    LastUpdatedBy    = UserID,
                    Enable           = request.Enable,
                    OrgGuid          = string.Empty,
                    HospitalGuid     = item.HospitalGuid,
                    HospitalName     = item.HosName,
                    OfficeGuid       = Guid.NewGuid().ToString("N"),
                    OfficeName       = request.OfficeName,
                    ParentOfficeGuid = officeAll.FirstOrDefault(b => b.HospitalGuid == item.HospitalGuid && b.OfficeName == request.ParentName)?.OfficeGuid,
                    PictureGuid      = request.PictureGuid,
                    Recommend        = false,
                    Sort             = request.Sort
                });
            }
            var result = await officeBiz.InsertListAsync(officeModelList);

            if (!result)
            {
                return(Failed(ErrorCode.UserData, "添加失败"));
            }
            return(Success());
        }
Example #12
0
        public async Task <IActionResult> ResetPasswordAsync([FromBody] ResetPasswordResponseDto request)
        {
            HospitalBiz hospitalBiz = new HospitalBiz();
            var         entity      = await hospitalBiz.GetAsync(request.Guid);

            if (entity == null)
            {
                return(Failed(ErrorCode.DataBaseError));
            }
            if (string.IsNullOrWhiteSpace(entity.Account))
            {
                return(Failed(ErrorCode.DataBaseError, "请先设置账号"));
            }
            var password = "******";//默认密码

            entity.Password        = CryptoHelper.AddSalt(entity.HospitalGuid, GD.Common.Helper.CryptoHelper.Md5(password));
            entity.LastUpdatedBy   = UserID;
            entity.LastUpdatedDate = DateTime.Now;
            await hospitalBiz.UpdateAsync(entity);

            return(Success());
        }
Example #13
0
        public async Task <IActionResult> EvaluvationAsync([FromBody] CreateHospitalEvaluvationRequestDto request)
        {
            if (request.Tags.Count() <= 0)
            {
                return(Failed(ErrorCode.Empty, "评价标签必填"));
            }

            var tag = string.Join("", request.Tags);

            if (tag.Length > 500)
            {
                return(Failed(ErrorCode.Empty, "评价标签超过最大长度限制"));
            }

            if (request.Score <= 0 || request.Score > 5)
            {
                return(Failed(ErrorCode.Empty, "满意度参数不正确"));
            }

            var hospitalBiz = new HospitalBiz();
            var hospital    = await hospitalBiz.GetAsync(request.HospitalGuid);

            if (hospital is null)
            {
                return(Failed(ErrorCode.Empty, "医院不存在,请检查提交参数"));
            }

            if (!hospital.Enable)
            {
                return(Failed(ErrorCode.Empty, $"医院“{hospital.HosName}”已被禁用,无法提交"));
            }

            var officeBiz = new OfficeBiz();
            var office    = await officeBiz.GetAsync(request.OfficeGuid);

            if (office is null)
            {
                return(Failed(ErrorCode.Empty, "科室不存在,请检查提交参数"));
            }

            if (!office.Enable)
            {
                return(Failed(ErrorCode.Empty, $"科室“{office.OfficeName}”已被禁用,无法提交"));
            }

            if (!office.HospitalGuid.Equals(hospital.HospitalGuid))
            {
                return(Failed(ErrorCode.Empty, $"科室“{office.OfficeName}”不属于医院“{hospital.HosName}”,无法提交"));
            }

            var evaluationBiz = new HospitalEvaluationBiz();
            var evaluvation   = await evaluationBiz.GetAsync(request.EvaluationGuid);

            if (evaluvation is null)
            {
                return(Failed(ErrorCode.Empty, "预评论参数不正确,请检查"));
            }

            if (!string.IsNullOrEmpty(evaluvation.UserGuid))
            {
                return(Failed(ErrorCode.Empty, "已提交,请勿重复提交"));
            }

            evaluvation.UserGuid        = UserID;
            evaluvation.HospitalGuid    = hospital.HospitalGuid;
            evaluvation.OfficeGuid      = office.OfficeGuid;
            evaluvation.EvaluationTag   = JsonConvert.SerializeObject(request.Tags);
            evaluvation.Score           = request.Score;
            evaluvation.ConditionDetail = request.ConditionDetail;
            evaluvation.Anonymous       = request.Anonymous;
            evaluvation.CreatedBy       = UserID;
            evaluvation.LastUpdatedBy   = UserID;

            var result = await evaluationBiz.UpdateAsync(evaluvation);

            if (!result)
            {
                return(Failed(ErrorCode.DataBaseError, "提交评论失败,请稍后重试"));
            }
            return(Success());
        }
Example #14
0
        public async Task <IActionResult> AddHospitalAsync([FromBody] AddHospitalRequestDto request)
        {
            HospitalBiz hospitalBiz = new HospitalBiz();

            if (await hospitalBiz.AnyAccountAsync(request.Account))
            {
                return(Failed(ErrorCode.UserData, "已经存在相同的账号!"));
            }

            var hospitalGuid = Guid.NewGuid().ToString("N");
            var textGuid     = Guid.NewGuid().ToString("N");

            request.Content = string.IsNullOrWhiteSpace(request.Content) ? "暂无详细" : request.Content;
            request.HosTag  = string.IsNullOrWhiteSpace(request.HosTag) ? "暂无标签" : request.HosTag;

            var richtextModel = new RichtextModel
            {
                Content         = request.Content,
                CreatedBy       = UserID,
                CreationDate    = DateTime.Now,
                Enable          = true,
                LastUpdatedBy   = UserID,
                LastUpdatedDate = DateTime.Now,
                OrgGuid         = string.Empty,
                OwnerGuid       = hospitalGuid,
                TextGuid        = textGuid,
            };
            var hospitalModel = new HospitalModel
            {
                HosAbstract    = request.HosAbstract,
                HosDetailGuid  = textGuid,
                HosLevel       = request.HosLevel,
                HosName        = request.HosName,
                HosTag         = request.HosTag,
                Location       = request.Location,
                LogoGuid       = request.LogoGuid,
                PlatformType   = PlatformType.CloudDoctor.ToString(),
                RegisteredDate = request.RegisteredDate,
                Visibility     = request.Visibility,
                HospitalGuid   = hospitalGuid,
                CreatedBy      = UserID,
                LastUpdatedBy  = UserID,
                Enable         = request.Enable,
                OrgGuid        = string.Empty,
                ContactNumber  = request.ContactNumber,
                Sort           = request.Sort,
                GuidanceUrl    = request.GuidanceUrl ?? string.Empty,
                ExternalLink   = request.ExternalLink ?? string.Empty,
                Password       = CryptoHelper.AddSalt(hospitalGuid, request.Password),
                Account        = request.Account,
                IsHospital     = request.IsHospital,
                Longitude      = request.Longitude,
                Latitude       = request.Latitude
            };
            var officeAll = await new OfficeBiz().GetAllAsync2();
            var offices   = officeAll.Select(a => (new
            {
                a.OfficeName,
                ParentName = officeAll.FirstOrDefault(b => b.OfficeGuid == a.ParentOfficeGuid)?.OfficeName,
                a.Sort,
                a.Enable,
                a.PictureGuid
            })).Distinct();
            var offices2 = new List <OfficeModel>();

            foreach (var item in offices)
            {
                GetOfficeModel(item.ParentName, item.OfficeName, item.Sort, item.Enable, item.PictureGuid, hospitalModel, offices2, offices);
            }
            var result = await hospitalBiz.AddAsync(hospitalModel, richtextModel, offices2);

            if (!result)
            {
                return(Failed(ErrorCode.UserData, "添加失败"));
            }
            return(Success());
        }
Example #15
0
        public async Task <IActionResult> RegisterDoctor([FromBody] RegisterDoctorRequestDto doctorDto)
        {
            var doctorModelGuid = UserID;
            var doctorBiz       = new DoctorBiz();
            var checkModel      = await doctorBiz.GetAsync(doctorModelGuid, true, true);

            bool isAdd       = checkModel == null;;//当前为更新操作还是新增操作
            var  statusCheck = string.Equals(checkModel?.Status, StatusEnum.Submit.ToString(), StringComparison.OrdinalIgnoreCase) || string.Equals(checkModel?.Status, StatusEnum.Approved.ToString(), StringComparison.OrdinalIgnoreCase);

            if (checkModel != null && statusCheck && checkModel.Enable)
            {
                return(Failed(ErrorCode.DataBaseError, "该用户已注册过医生!"));
            }

            var doctorCertificates = await new DictionaryBiz().GetListByParentGuidAsync(DictionaryType.DoctorDicConfig);

            foreach (var item in doctorCertificates)
            {
                if (doctorDto.Certificates.FirstOrDefault(a => a.DicGuid == item.DicGuid) == null)
                {
                    var eMsg = $"[{item.ConfigName}]没有上传";
                    return(Failed(ErrorCode.UserData, $"上传的医生证书项和系统配置的项不符,请核对,详情:{eMsg}"));
                }
            }

            var userModel = await new UserBiz().GetModelAsync(UserID);

            userModel.UserName       = doctorDto.UserName;
            userModel.IdentityNumber = doctorDto.IdentityNumber;
            userModel.Birthday       = doctorDto.Birthday;
            userModel.Gender         = doctorDto.Gender;
            var hospitalBiz  = new HospitalBiz();
            var officeBiz    = new OfficeBiz();
            var accessoryBiz = new AccessoryBiz();
            var doctorModel  = new DoctorModel();

            if (!isAdd)
            {
                doctorModel = checkModel;
            }
            //医生数据
            doctorModel.DoctorGuid         = doctorModelGuid;
            doctorModel.HospitalGuid       = doctorDto.HospitalGuid;
            doctorModel.OfficeGuid         = doctorDto.DocOffice;
            doctorModel.WorkCity           = doctorDto.City;
            doctorModel.PractisingHospital = doctorDto.PractisingHospital;
            doctorModel.Honor           = doctorDto.Honor;
            doctorModel.Background      = doctorDto.Background;
            doctorModel.TitleGuid       = doctorDto.DocTitle;
            doctorModel.AdeptTags       = Newtonsoft.Json.JsonConvert.SerializeObject(doctorDto.Adepts);
            doctorModel.Status          = StatusEnum.Submit.ToString();
            doctorModel.SignatureGuid   = doctorDto.SignatureGuid;
            doctorModel.CreatedBy       = UserID;
            doctorModel.OrgGuid         = "";
            doctorModel.LastUpdatedBy   = UserID;
            doctorModel.PortraitGuid    = doctorDto.PortraitGuid;
            doctorModel.LastUpdatedDate = DateTime.Now;
            doctorModel.Enable          = true;

            //医院名称
            var hospitalModel = await hospitalBiz.GetAsync(doctorModel.HospitalGuid);

            if (hospitalModel == null)
            {
                return(Failed(ErrorCode.Empty, "未查到医院数据"));
            }
            doctorModel.HospitalName = hospitalModel?.HosName;
            //科室名称
            var officeModel = await new OfficeBiz().GetAsync(doctorModel.OfficeGuid);

            if (officeModel == null)
            {
                return(Failed(ErrorCode.Empty, "未查到科室数据"));
            }
            doctorModel.OfficeName = officeModel?.OfficeName;

            //医生证书配置项 & 附件
            var lstCertificate = new List <CertificateModel>();
            var lstAccessory   = new List <AccessoryModel>();

            if (doctorDto.Certificates.Any())
            {
                foreach (var certificate in doctorDto.Certificates)
                {
                    var certificateModel = new CertificateModel
                    {
                        CertificateGuid = Guid.NewGuid().ToString("N"),
                        PictureGuid     = certificate.AccessoryGuid,
                        OwnerGuid       = doctorModel.DoctorGuid,
                        DicGuid         = certificate.DicGuid,
                        CreatedBy       = UserID,
                        OrgGuid         = "",
                        LastUpdatedBy   = UserID
                    };
                    lstCertificate.Add(certificateModel);
                    var accModel = await accessoryBiz.GetAsync(certificate.AccessoryGuid);

                    if (accModel != null)
                    {
                        accModel.OwnerGuid       = certificateModel.CertificateGuid;
                        accModel.LastUpdatedDate = DateTime.Now;
                        lstAccessory.Add(accModel);
                    }
                }
            }
            var doctorCompositeBiz = new DoctorCompositeBiz();
            var result             = await doctorCompositeBiz.RegisterDoctor(doctorModel, lstCertificate, lstAccessory, userModel, isAdd);

            if (result)
            {
                new DoctorActionBiz().RegisterDoctor(this.UserID);
            }
            return(result ? Success() : Failed(ErrorCode.DataBaseError, "医生注册数据插入不成功!"));
        }
Example #16
0
        public async Task <IActionResult> UpdateHospitalAsync([FromBody] UpdateHospitalRequestDto request)
        {
            var hospitalBiz   = new HospitalBiz();
            var hospitalModel = await hospitalBiz.GetAsync(request.HospitalGuid);

            if (hospitalModel == null)
            {
                return(Failed(ErrorCode.DataBaseError, "数据错误"));
            }
            if (request.Account != hospitalModel.Account && await hospitalBiz.AnyAccountAsync(request.Account))
            {
                return(Failed(ErrorCode.UserData, "已经存在相同的账号!"));
            }
            var contentBiz = new RichtextBiz();

            request.Content = string.IsNullOrWhiteSpace(request.Content) ? "暂无详细" : request.Content;
            request.HosTag  = string.IsNullOrWhiteSpace(request.HosTag) ? "暂无标签" : request.HosTag;
            var richtextModel = await contentBiz.GetAsync(hospitalModel.HosDetailGuid);

            var richtextIsAdd = false;

            if (richtextModel != null)
            {
                richtextModel.Content         = request.Content;
                richtextModel.LastUpdatedBy   = UserID;
                richtextModel.LastUpdatedDate = DateTime.Now;
                richtextModel.OrgGuid         = string.Empty;
                richtextModel.OwnerGuid       = request.HospitalGuid;
            }
            else
            {
                var textGuid = Guid.NewGuid().ToString("N");
                richtextModel = new RichtextModel
                {
                    Content         = request.Content,
                    CreatedBy       = UserID,
                    CreationDate    = DateTime.Now,
                    Enable          = true,
                    LastUpdatedBy   = UserID,
                    LastUpdatedDate = DateTime.Now,
                    OrgGuid         = string.Empty,
                    OwnerGuid       = hospitalModel.HospitalGuid,
                    TextGuid        = textGuid,
                };
                hospitalModel.HosDetailGuid = textGuid;
                richtextIsAdd = true;
            }

            hospitalModel.HosAbstract     = request.HosAbstract;
            hospitalModel.HosLevel        = request.HosLevel;
            hospitalModel.HosName         = request.HosName;
            hospitalModel.HosTag          = request.HosTag;
            hospitalModel.Location        = request.Location;
            hospitalModel.LogoGuid        = request.LogoGuid;
            hospitalModel.RegisteredDate  = request.RegisteredDate;
            hospitalModel.Visibility      = request.Visibility;
            hospitalModel.LastUpdatedBy   = UserID;
            hospitalModel.LastUpdatedDate = DateTime.Now;
            hospitalModel.Enable          = request.Enable;
            hospitalModel.ContactNumber   = request.ContactNumber;
            hospitalModel.Sort            = request.Sort;
            hospitalModel.GuidanceUrl     = request.GuidanceUrl ?? string.Empty;
            hospitalModel.ExternalLink    = request.ExternalLink ?? string.Empty;
            hospitalModel.Account         = request.Account;
            hospitalModel.IsHospital      = request.IsHospital;
            hospitalModel.Longitude       = request.Longitude;
            hospitalModel.Latitude        = request.Latitude;
            if (null != request.Password)
            {
                hospitalModel.Password = CryptoHelper.AddSalt(hospitalModel.HospitalGuid, request.Password);
            }

            var response = await hospitalBiz.UpdateAsync(hospitalModel, richtextModel, richtextIsAdd);

            if (!response)
            {
                return(Failed(ErrorCode.DataBaseError, "修改失败"));
            }
            return(Success(response));
        }
        public async Task <IActionResult> AddDoctorInfoAsync([FromBody] AddDoctorInfoRequestDto request)
        {
            var doctorBiz    = new DoctorBiz();
            var userIsInsert = false;
            var userModel    = await new UserBiz().GetByPnoneAsync(request.Phone);

            if (userModel != null)
            {
                var doctor = await doctorBiz.GetAsync(userModel.UserGuid);

                if (doctor != null)
                {
                    return(Failed(ErrorCode.DataBaseError, "该用户已注册医生!"));
                }
                userModel.UserName       = request.UserName;
                userModel.IdentityNumber = request.IdentityNumber;
                userModel.Birthday       = request.Birthday;
                userModel.Gender         = request.Gender;
                userModel.Phone          = request.Phone;
            }
            else
            {
                //var password = request.Phone.Substring(request.Phone.Length - 6);
                var password = "******";//默认密码
                var userid   = Guid.NewGuid().ToString("N");
                userModel = new UserModel
                {
                    Birthday       = request.Birthday,
                    CreatedBy      = userid,
                    Enable         = true,
                    Gender         = request.Gender,
                    LastUpdatedBy  = userid,
                    NickName       = request.UserName,
                    OrgGuid        = string.Empty,
                    Password       = Common.Helper.CryptoHelper.AddSalt(userid, GD.Common.Helper.CryptoHelper.Md5(password)),
                    Phone          = request.Phone,
                    UserGuid       = userid,
                    UserName       = request.UserName,
                    IdentityNumber = request.IdentityNumber
                };
                userIsInsert = true;
            }

            var existNumber = await doctorBiz.ExistJobNumber(request.JobNumber);

            if (existNumber)
            {
                return(Failed(ErrorCode.DataBaseError, $"工号【{request.JobNumber}】已存在"));
            }

            //医生数据
            var doctorModel = new DoctorModel
            {
                DoctorGuid         = userModel.UserGuid,
                HospitalGuid       = request.HospitalGuid,
                OfficeGuid         = request.OfficeGuid,
                WorkCity           = string.Join('-', request.WorkCity),
                PractisingHospital = request.PractisingHospital,
                Honor         = request.Honor,
                Background    = request.Background,
                TitleGuid     = request.TitleGuid,
                AdeptTags     = Newtonsoft.Json.JsonConvert.SerializeObject(request.AdeptTags),
                Status        = DoctorModel.StatusEnum.Approved.ToString(),
                SignatureGuid = string.Empty,
                CreatedBy     = userModel.UserGuid,
                OrgGuid       = string.Empty,
                LastUpdatedBy = userModel.UserGuid,
                PortraitGuid  = request.PortraitGuid,
                //HospitalName = string.Empty,
                //OfficeName = string.Empty,
                CreationDate  = DateTime.Now,
                IsRecommend   = request.IsRecommend,
                RecommendSort = request.RecommendSort,
                Enable        = request.Enable,
                WorkAge       = request.WorkAge,
                JobNumber     = request.JobNumber
            };
            //医院名称
            var hospitalBiz   = new HospitalBiz();
            var hospitalModel = await hospitalBiz.GetAsync(doctorModel.HospitalGuid);

            if (hospitalModel == null)
            {
                return(Failed(ErrorCode.Empty, "未查到医院数据"));
            }
            doctorModel.HospitalName = hospitalModel?.HosName;
            //科室名称
            var officeModel = await new OfficeBiz().GetAsync(doctorModel.OfficeGuid);

            if (officeModel == null)
            {
                return(Failed(ErrorCode.Empty, "未查到科室数据"));
            }
            doctorModel.OfficeName = officeModel?.OfficeName;
            //商户配置项证书信息 & 配置项证书附件信息
            var lstCertificate = request.Certificates.Select(item => new CertificateModel
            {
                CertificateGuid = Guid.NewGuid().ToString("N"),
                PictureGuid     = item.AccessoryGuid,
                OwnerGuid       = doctorModel.DoctorGuid,
                DicGuid         = item.DicGuid,
                CreatedBy       = UserID,
                OrgGuid         = string.Empty,
                LastUpdatedBy   = UserID
            });
            var result = await doctorBiz.AddDoctorAsync(doctorModel, userModel, userIsInsert, lstCertificate);

            if (!result)
            {
                return(Failed(ErrorCode.DataBaseError, "医生数据修改失败!"));
            }
            return(Success());
        }
        public async Task <IActionResult> UpdateDoctorInfoAsync([FromBody] UpdateDoctorInfoRequestDto request)
        {
            var doctorBiz   = new DoctorBiz();
            var doctorModel = await doctorBiz.GetAsync(request.DoctorGuid);

            if (doctorModel == null)
            {
                return(Failed(ErrorCode.DataBaseError, "该用户未注册医生!"));
            }
            var userModel = await new UserBiz().GetAsync(request.DoctorGuid);

            if (userModel.Phone != request.Phone)
            {
                UserModel userPhoneModel = await new UserBiz().GetByPnoneAsync(request.Phone);
                if (userPhoneModel != null)
                {
                    return(Failed(ErrorCode.UserData, "用户手机已注册!"));
                }
            }

            var existNumber = await doctorBiz.ExistJobNumber(request.JobNumber, doctorModel.DoctorGuid);

            if (existNumber)
            {
                return(Failed(ErrorCode.DataBaseError, $"工号【{request.JobNumber}】已存在"));
            }

            userModel.UserName        = request.UserName;
            userModel.IdentityNumber  = request.IdentityNumber;
            userModel.Birthday        = request.Birthday;
            userModel.Gender          = request.Gender;
            userModel.Phone           = request.Phone;
            userModel.LastUpdatedBy   = UserID;
            userModel.LastUpdatedDate = DateTime.Now;

            //医生数据
            doctorModel.HospitalGuid       = request.HospitalGuid;
            doctorModel.OfficeGuid         = request.OfficeGuid;
            doctorModel.WorkCity           = string.Join('-', request.WorkCity);
            doctorModel.JobNumber          = request.JobNumber;
            doctorModel.PractisingHospital = request.PractisingHospital;
            doctorModel.Honor           = request.Honor;
            doctorModel.Background      = request.Background;
            doctorModel.TitleGuid       = request.TitleGuid;
            doctorModel.AdeptTags       = Newtonsoft.Json.JsonConvert.SerializeObject(request.AdeptTags);
            doctorModel.IsRecommend     = request.IsRecommend;
            doctorModel.RecommendSort   = request.RecommendSort;
            doctorModel.LastUpdatedBy   = UserID;
            doctorModel.LastUpdatedDate = DateTime.Now;
            doctorModel.PortraitGuid    = request.PortraitGuid;

            //医院名称
            var hospitalBiz   = new HospitalBiz();
            var hospitalModel = await hospitalBiz.GetAsync(doctorModel.HospitalGuid);

            if (hospitalModel == null)
            {
                return(Failed(ErrorCode.Empty, "未查到医院数据"));
            }
            doctorModel.HospitalName = hospitalModel?.HosName;
            //科室名称
            var officeModel = await new OfficeBiz().GetAsync(doctorModel.OfficeGuid);

            if (officeModel == null)
            {
                return(Failed(ErrorCode.Empty, "未查到科室数据"));
            }
            doctorModel.OfficeName = officeModel?.OfficeName;
            //商户配置项证书信息 & 配置项证书附件信息
            var            clientDicGuids = request.Certificates.Select(b => b.DicGuid);
            CertificateBiz certificateBiz = new CertificateBiz();
            var            dbCertificate  = await certificateBiz.GetListAsync(doctorModel.DoctorGuid);

            var dbDicGuids = dbCertificate.Select(b => b.DicGuid);

            var updateCertificate = dbCertificate.Where(a => clientDicGuids.Contains(a.DicGuid)).Select(a =>
            {
                var cc            = request.Certificates.FirstOrDefault(c => c.DicGuid == a.DicGuid);
                a.PictureGuid     = cc.AccessoryGuid;
                a.LastUpdatedBy   = UserID;
                a.LastUpdatedDate = DateTime.Now;
                return(a);
            });
            var addCertificate = request.Certificates.Where(a => !dbDicGuids.Contains(a.DicGuid)).Select(item => new CertificateModel
            {
                CertificateGuid = Guid.NewGuid().ToString("N"),
                PictureGuid     = item.AccessoryGuid,
                OwnerGuid       = doctorModel.DoctorGuid,
                DicGuid         = item.DicGuid,
                CreatedBy       = UserID,
                OrgGuid         = string.Empty,
                LastUpdatedBy   = UserID
            });
            var delCertificate = dbCertificate.Where(a => !clientDicGuids.Contains(a.DicGuid));
            var result         = await doctorBiz.UpdateDoctorAsync(doctorModel, userModel, addCertificate, delCertificate, updateCertificate);

            if (!result)
            {
                return(Failed(ErrorCode.DataBaseError, "医生数据修改失败!"));
            }
            return(Success());
        }
Example #19
0
        public async Task <IActionResult> ModifyDoctorInfoAsync([FromBody] ModifyDoctorInfoRequestDto doctorDto)
        {
            var doctorModelGuid = UserID;
            var doctorBiz       = new DoctorBiz();
            var checkDoctor     = await doctorBiz.GetAsync(doctorModelGuid);

            if (checkDoctor == null)
            {
                return(Failed(ErrorCode.DataBaseError, "该用户未注册医生!"));
            }

            var userModel = await new UserBiz().GetModelAsync(UserID);

            userModel.UserName       = doctorDto.UserName;
            userModel.IdentityNumber = doctorDto.IdentityNumber;
            userModel.Birthday       = doctorDto.Birthday;
            userModel.Gender         = doctorDto.Gender;

            var hospitalBiz  = new HospitalBiz();
            var officeBiz    = new OfficeBiz();
            var accessoryBiz = new AccessoryBiz();
            var doctorModel  = new DoctorModel();

            doctorModel = checkDoctor;

            //医生数据
            doctorModel.HospitalGuid       = doctorDto.HospitalGuid;
            doctorModel.OfficeGuid         = doctorDto.DocOffice;
            doctorModel.WorkCity           = doctorDto.City;
            doctorModel.PractisingHospital = doctorDto.PractisingHospital;
            doctorModel.Honor      = doctorDto.Honor;
            doctorModel.Background = doctorDto.Background;
            doctorModel.TitleGuid  = doctorDto.DocTitle;
            doctorModel.AdeptTags  = doctorDto.Adepts;
            doctorModel.Status     = StatusEnum.Submit.ToString();
            //doctorModel.SignatureGuid = doctorDto.SignatureGuid;
            doctorModel.CreatedBy       = UserID;
            doctorModel.OrgGuid         = "";
            doctorModel.LastUpdatedBy   = UserID;
            doctorModel.PortraitGuid    = doctorDto.PortraitGuid;
            doctorModel.LastUpdatedDate = DateTime.Now;

            //医院名称
            var hospitalModel = await hospitalBiz.GetAsync(doctorModel.HospitalGuid);

            if (hospitalModel == null)
            {
                return(Failed(ErrorCode.Empty, "未查到医院数据"));
            }
            doctorModel.HospitalName = hospitalModel?.HosName;
            //科室名称
            var officeModel = await new OfficeBiz().GetAsync(doctorModel.OfficeGuid);

            if (officeModel == null)
            {
                return(Failed(ErrorCode.Empty, "未查到科室数据"));
            }
            doctorModel.OfficeName = officeModel?.OfficeName;

            //医生证书配置项 & 附件
            var lstCertificate = new List <CertificateModel>();
            var lstAccessory   = new List <AccessoryModel>();

            if (doctorDto.Certificates.Any())
            {
                foreach (var certificate in doctorDto.Certificates)
                {
                    var certificateModel = new CertificateModel
                    {
                        CertificateGuid = Guid.NewGuid().ToString("N"),
                        PictureGuid     = certificate.AccessoryGuid,
                        OwnerGuid       = doctorModel.DoctorGuid,
                        DicGuid         = certificate.DicGuid,
                        CreatedBy       = UserID,
                        OrgGuid         = "",
                        LastUpdatedBy   = UserID
                    };
                    lstCertificate.Add(certificateModel);
                    var accModel = await accessoryBiz.GetAsync(certificate.AccessoryGuid);

                    if (accModel != null)
                    {
                        accModel.OwnerGuid       = certificateModel.CertificateGuid;
                        accModel.LastUpdatedDate = DateTime.Now;
                        lstAccessory.Add(accModel);
                    }
                }
            }
            var doctorCompositeBiz = new DoctorCompositeBiz();
            var result             = await doctorCompositeBiz.RegisterDoctor(doctorModel, lstCertificate, lstAccessory, userModel, false);

            return(result ? Success() : Failed(ErrorCode.DataBaseError, "医生数据修改失败!"));
        }
Example #20
0
        public async Task <IActionResult> GetUserWeChatQRCodeAsync(string hospiltalGuid)
        {
            if (string.IsNullOrEmpty(hospiltalGuid))
            {
                return(Failed(ErrorCode.Empty, "参数不正确"));
            }

            var hosiptalBiz = new HospitalBiz();
            var hospital    = await hosiptalBiz.GetAsync(hospiltalGuid);

            if (hospital is null)
            {
                return(Failed(ErrorCode.Empty, "对应医院不存在,请检查参数"));
            }

            if (!hospital.Enable)
            {
                return(Failed(ErrorCode.Empty, $"医院“{hospital.HosName}”已被禁用"));
            }

            var tokenResult = await WeChartApi.GetAccessToken(PlatformSettings.CDClientAppId, PlatformSettings.CDClientAppSecret);

            if (tokenResult.Errcode != 0)
            {
                Logger.Error($"GD.API.Controllers.System.{nameof(UserController)}.{nameof(GetUserWeChatQRCodeAsync)}({hospiltalGuid})-- 获取云医用户端token失败  {Environment.NewLine} {tokenResult.Errmsg}");
                return(Failed(ErrorCode.SystemException, "获取云医用户端token失败"));
            }

            var qrcodeResult = (CreateQRCodeResponseDto)null;

            var sceneBiz = new WechatSceneBiz();

            var scene = await sceneBiz.GetAsync(hospiltalGuid);

            if (scene is null)
            {
                var param = new CreateTemporaryQRCodeRequestDto
                {
                    ActionName = ActionNameEnum.QR_LIMIT_STR_SCENE.ToString(),
                    ActionInfo = new QRCodeActionInfo
                    {
                        Scene = new QRCodeActionInfoStringScene
                        {
                            SceneStr = hospiltalGuid
                        }
                    }
                };

                qrcodeResult = await WeChartApi.CreateQRCodeAsync(param, tokenResult.AccessToken);

                scene = new WechatSceneModel()
                {
                    SceneId   = hospiltalGuid,
                    Action    = WeChatSceneActionEnum.pay.ToString(),
                    SceneName = "扫码缴费",
                    Extension = JsonConvert.SerializeObject(new
                    {
                        value = hospiltalGuid,
                        url   = qrcodeResult.Url,
                        name  = HttpUtility.UrlEncode(hospital.HosName)
                    }),
                    CreatedBy     = UserID,
                    LastUpdatedBy = UserID
                };

                var result = await sceneBiz.InsertAsync(scene);

                if (!result)
                {
                    return(Failed(ErrorCode.Empty, "生成二维码场景参数失败,请稍后重试"));
                }
            }
            else
            {
                dynamic extension = JObject.Parse(scene.Extension);
                qrcodeResult = new CreateQRCodeResponseDto()
                {
                    Errcode = 0,
                    Url     = (string)extension.url
                };
            }

            return(Success(qrcodeResult));
        }