case-open-api/api/service/ProjectPlatformWhite.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
}