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("Case")
// 用户医院
query = query.Preload("User.Hospital")

View File

@ -2,6 +2,7 @@ package dto
import (
"case-admin-api/api/model"
"case-admin-api/api/service"
"case-admin-api/utils"
"fmt"
)
@ -25,6 +26,7 @@ type CaseUserDto struct {
DepartmentName string `json:"department_name"` // 科室
Title string `json:"title"` // 职称
UserName string `json:"user_name"` // 用户名称
UserIsWhite int `json:"user_is_white"` // 用户是否白名单0:否 1:是)
}
// GetCaseUserListDto 列表
@ -69,6 +71,9 @@ func GetCaseUserListDto(m []*model.CaseUser) []*CaseUserDto {
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
}
// 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
}
// 检测白名单
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
superScoreTypeStr := "" // 积分发放原因-超级袋鼠
nodeName := "" // 获取积分节点名称
if scoreType == 1 {
// 完成阅读
reportScore = projectPlatform.CompleteRead
score = projectPlatform.CompleteRead
appScoreTypeStr = "互动病例-完成阅读"
superScoreTypeStr = "调研奖励(完成阅读)"
nodeName = "学习"
} else if scoreType == 2 {
// 阅读时间满足
reportScore = projectPlatform.CompleteReadTime
score = projectPlatform.CompleteReadTime
appScoreTypeStr = "互动病例-阅读时间满足"
superScoreTypeStr = "调研奖励(阅读质量)"
nodeName = "阅读达标"
} else if scoreType == 3 {
// 优质留言
reportScore = projectPlatform.FirstHighQuality
score = projectPlatform.FirstHighQuality
appScoreTypeStr = "互动病例-优质留言"
superScoreTypeStr = "调研奖励(社区贡献)"
nodeName = "优质留言"
} else if scoreType == 4 {
// 再次优质留言
reportScore = projectPlatform.OnceMoreHighQuality
score = projectPlatform.OnceMoreHighQuality
appScoreTypeStr = "互动病例-优质留言"
superScoreTypeStr = "调研奖励(社区贡献)"
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{}
// 检测是否有相同手机号用户
@ -191,7 +192,7 @@ func (r *UserService) ReportUserScore(tx *gorm.DB, projectId, caseId, platformId
UserName: user.UserName,
Type: scoreType,
NodeName: nodeName,
Score: reportScore,
Score: score,
}
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 {
return err
}
// 累计平台发放积分数据
err = casePlatformDao.Inc(tx, casePlatform.CasePlatformId, "issued_score", reportScore)
err = casePlatformDao.Inc(tx, casePlatform.CasePlatformId, "issued_score", score)
if err != nil {
return err
}
// 累计发放积分数据
caseDao := dao.CaseDao{}
err = caseDao.Inc(tx, caseId, "issued_score", reportScore)
err = caseDao.Inc(tx, caseId, "issued_score", score)
if err != nil {
return err
}
@ -235,8 +236,8 @@ func (r *UserService) ReportUserScore(tx *gorm.DB, projectId, caseId, platformId
}
// 肝胆相照
if platformId == 1 {
_, err = app.ReportUserScore(appScoreTypeStr, user.UserIden, reportScore)
if platformId == 1 && score > 0 {
_, err = app.ReportUserScore(appScoreTypeStr, user.UserIden, score)
if err != nil {
return err
}