Compare commits

..

3 Commits

3 changed files with 47 additions and 25 deletions

View File

@ -150,6 +150,9 @@ func (r *CaseUserDao) GetCaseUserPageSearch(req requests.GetStatsCaseUserPage, p
// 用户 // 用户
query = query.Preload("User") query = query.Preload("User")
// 病例
query = query.Preload("Case")
// 用户医院 // 用户医院
query = query.Preload("User.Hospital") query = query.Preload("User.Hospital")

View File

@ -2,6 +2,7 @@ package dto
import ( import (
"case-admin-api/api/model" "case-admin-api/api/model"
"case-admin-api/api/service"
"case-admin-api/utils" "case-admin-api/utils"
"fmt" "fmt"
) )
@ -25,6 +26,7 @@ type CaseUserDto struct {
DepartmentName string `json:"department_name"` // 科室 DepartmentName string `json:"department_name"` // 科室
Title string `json:"title"` // 职称 Title string `json:"title"` // 职称
UserName string `json:"user_name"` // 用户名称 UserName string `json:"user_name"` // 用户名称
UserIsWhite int `json:"user_is_white"` // 用户是否白名单0:否 1:是)
} }
// GetCaseUserListDto 列表 // GetCaseUserListDto 列表
@ -69,6 +71,9 @@ func GetCaseUserListDto(m []*model.CaseUser) []*CaseUserDto {
response = response.LoadHospitalName(v.User.Hospital) response = response.LoadHospitalName(v.User.Hospital)
} }
// 加载数据-用户白名单
response = response.LoadUserIsWhite(v.User, v.Case, v.Platform)
} }
// 将转换后的结构体添加到新切片中 // 将转换后的结构体添加到新切片中
@ -132,3 +137,16 @@ func (r *CaseUserDto) LoadHospitalName(m *model.BasicHospital) *CaseUserDto {
return r return r
} }
// LoadUserIsWhite 加载数据-用户白名单
func (r *CaseUserDto) LoadUserIsWhite(m *model.User, c *model.Case, p *model.Platform) *CaseUserDto {
if m != nil && c != nil && p != nil {
projectPlatformWhiteService := service.ProjectPlatformWhiteService{}
isWhite, _ := projectPlatformWhiteService.CheckProjectPlatformWhiteByUser(m, c.ProjectId, p.PlatformId)
if isWhite {
r.UserIsWhite = 1
}
}
return r
}

View File

@ -80,51 +80,52 @@ func (r *UserService) ReportUserScore(tx *gorm.DB, projectId, caseId, platformId
return nil return nil
} }
// 检测白名单
if projectPlatform.IsWhite == 1 {
projectPlatformWhiteService := ProjectPlatformWhiteService{}
isWhite, err := projectPlatformWhiteService.CheckProjectPlatformWhiteByUser(user, projectId, platformId)
if err != nil {
return err
}
// 非白名单用户,无需发放积分
if isWhite == false {
return nil
}
}
// 获取需发放积分 // 获取需发放积分
reportScore := 0 score := 0
appScoreTypeStr := "" // 积分发放原因-app appScoreTypeStr := "" // 积分发放原因-app
superScoreTypeStr := "" // 积分发放原因-超级袋鼠 superScoreTypeStr := "" // 积分发放原因-超级袋鼠
nodeName := "" // 获取积分节点名称 nodeName := "" // 获取积分节点名称
if scoreType == 1 { if scoreType == 1 {
// 完成阅读 // 完成阅读
reportScore = projectPlatform.CompleteRead score = projectPlatform.CompleteRead
appScoreTypeStr = "互动病例-完成阅读" appScoreTypeStr = "互动病例-完成阅读"
superScoreTypeStr = "调研奖励(完成阅读)" superScoreTypeStr = "调研奖励(完成阅读)"
nodeName = "学习" nodeName = "学习"
} else if scoreType == 2 { } else if scoreType == 2 {
// 阅读时间满足 // 阅读时间满足
reportScore = projectPlatform.CompleteReadTime score = projectPlatform.CompleteReadTime
appScoreTypeStr = "互动病例-阅读时间满足" appScoreTypeStr = "互动病例-阅读时间满足"
superScoreTypeStr = "调研奖励(阅读质量)" superScoreTypeStr = "调研奖励(阅读质量)"
nodeName = "阅读达标" nodeName = "阅读达标"
} else if scoreType == 3 { } else if scoreType == 3 {
// 优质留言 // 优质留言
reportScore = projectPlatform.FirstHighQuality score = projectPlatform.FirstHighQuality
appScoreTypeStr = "互动病例-优质留言" appScoreTypeStr = "互动病例-优质留言"
superScoreTypeStr = "调研奖励(社区贡献)" superScoreTypeStr = "调研奖励(社区贡献)"
nodeName = "优质留言" nodeName = "优质留言"
} else if scoreType == 4 { } else if scoreType == 4 {
// 再次优质留言 // 再次优质留言
reportScore = projectPlatform.OnceMoreHighQuality score = projectPlatform.OnceMoreHighQuality
appScoreTypeStr = "互动病例-优质留言" appScoreTypeStr = "互动病例-优质留言"
superScoreTypeStr = "调研奖励(社区贡献)" superScoreTypeStr = "调研奖励(社区贡献)"
nodeName = "优质留言" nodeName = "优质留言"
} }
// 检测白名单-无需检测白名单
var isWhite bool
if projectPlatform.IsWhite == 1 {
projectPlatformWhiteService := ProjectPlatformWhiteService{}
isWhite, err = projectPlatformWhiteService.CheckProjectPlatformWhiteByUser(user, projectId, platformId)
if err != nil {
return err
}
}
// 当用户为非白名单时,重置积分数
if isWhite == false {
score = 0
}
recordScoreDao := dao.RecordScoreDao{} recordScoreDao := dao.RecordScoreDao{}
// 检测是否有相同手机号用户 // 检测是否有相同手机号用户
@ -191,7 +192,7 @@ func (r *UserService) ReportUserScore(tx *gorm.DB, projectId, caseId, platformId
UserName: user.UserName, UserName: user.UserName,
Type: scoreType, Type: scoreType,
NodeName: nodeName, NodeName: nodeName,
Score: reportScore, Score: score,
} }
recordScore, err = recordScoreDao.AddRecordScore(tx, recordScore) recordScore, err = recordScoreDao.AddRecordScore(tx, recordScore)
@ -211,20 +212,20 @@ func (r *UserService) ReportUserScore(tx *gorm.DB, projectId, caseId, platformId
} }
// 累计用户领取积分数据 // 累计用户领取积分数据
err = caseUserDao.Inc(tx, caseUser.CaseUserId, "total_score", reportScore) err = caseUserDao.Inc(tx, caseUser.CaseUserId, "total_score", score)
if err != nil { if err != nil {
return err return err
} }
// 累计平台发放积分数据 // 累计平台发放积分数据
err = casePlatformDao.Inc(tx, casePlatform.CasePlatformId, "issued_score", reportScore) err = casePlatformDao.Inc(tx, casePlatform.CasePlatformId, "issued_score", score)
if err != nil { if err != nil {
return err return err
} }
// 累计发放积分数据 // 累计发放积分数据
caseDao := dao.CaseDao{} caseDao := dao.CaseDao{}
err = caseDao.Inc(tx, caseId, "issued_score", reportScore) err = caseDao.Inc(tx, caseId, "issued_score", score)
if err != nil { if err != nil {
return err return err
} }
@ -235,8 +236,8 @@ func (r *UserService) ReportUserScore(tx *gorm.DB, projectId, caseId, platformId
} }
// 肝胆相照 // 肝胆相照
if platformId == 1 { if platformId == 1 && score > 0 {
_, err = app.ReportUserScore(appScoreTypeStr, user.UserIden, reportScore) _, err = app.ReportUserScore(appScoreTypeStr, user.UserIden, score)
if err != nil { if err != nil {
return err return err
} }