package service import ( "case-api/api/dao" "case-api/api/model" "case-api/utils" ) // ProjectPlatformWhiteService 项目关联平台白名单 type ProjectPlatformWhiteService struct { } // CheckProjectPlatformWhiteByUser 检测用户是否属于白名单 func (r *ProjectPlatformWhiteService) CheckProjectPlatformWhiteByUser(user *model.User, projectId, platformId int64) (b bool, err error) { // 获取项目关联平台数据 projectPlatformDao := dao.ProjectPlatformDao{} maps := make(map[string]interface{}) maps["project_id"] = projectId maps["platform_id"] = platformId projectPlatform, err := projectPlatformDao.GetProjectPlatform(maps) if err != nil { return false, err } // 肝胆相照平台,如果没有开启白名单,默认返回用户属于白名单 if projectPlatform.PlatformId == 1 && projectPlatform.IsWhite == 0 { return true, err } // 白名单-医生 projectPlatformDoctorDao := dao.ProjectPlatformDoctorDao{} maps = make(map[string]interface{}) maps["project_platform_id"] = projectPlatform.ProjectPlatformId maps["user_id"] = user.UserId projectPlatformDoctor, _ := projectPlatformDoctorDao.GetProjectPlatformDoctor(maps) if projectPlatformDoctor != nil { if projectPlatformDoctor.Status == 1 { return true, err } } // 获取用户医院数据 basicHospitalDao := dao.BasicHospitalDao{} basicHospital, err := basicHospitalDao.GetBasicHospitalById(user.HospitalId) if err != nil { return false, err } // 白名单-医院 projectPlatformHospitalDao := dao.ProjectPlatformHospitalDao{} maps = make(map[string]interface{}) maps["project_platform_id"] = projectPlatform.ProjectPlatformId maps["hospital_id"] = user.HospitalId projectPlatformHospital, _ := projectPlatformHospitalDao.GetProjectPlatformHospital(maps) if projectPlatformHospital != nil { if projectPlatformHospital.Status == 1 { return true, err } } // 白名单-动态 projectPlatformDynamicDao := dao.ProjectPlatformDynamicDao{} maps = make(map[string]interface{}) maps["project_platform_id"] = projectPlatform.ProjectPlatformId projectPlatformDynamics, _ := projectPlatformDynamicDao.GetProjectPlatformDynamicPreloadList(maps) if len(projectPlatformDynamics) > 0 { area := true level := true title := true department := true for _, dynamic := range projectPlatformDynamics { if dynamic.Status == 2 { continue } if dynamic.DynamicType == "area" { area = false } if dynamic.DynamicType == "level" { level = false } if dynamic.DynamicType == "title" { title = false } if dynamic.DynamicType == "department" { department = false } for _, item := range dynamic.ProjectPlatformDynamicItem { // 省份 if dynamic.DynamicType == "area" { if basicHospital.Province == item.ItemValue { area = true } } // 医院等级 if dynamic.DynamicType == "level" { if basicHospital.HospitalLevel == item.ItemValue { level = true } } // 职称 if dynamic.DynamicType == "title" { if utils.DoctorTitleToString(user.Title) == item.ItemValue { title = true } } // 科室 if dynamic.DynamicType == "department" { if user.DepartmentName == item.ItemValue { department = true } } } } if area == true && level == true && title == true && department == true { return true, err } } return false, err }