126 lines
3.2 KiB
Go
126 lines
3.2 KiB
Go
package service
|
|
|
|
import (
|
|
"case-open-api/api/dao"
|
|
"case-open-api/api/model"
|
|
"case-open-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
|
|
}
|
|
|
|
// 白名单-医生
|
|
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
|
|
}
|