diff --git a/api/service/User.go b/api/service/User.go index 7110ac7..eb898ca 100644 --- a/api/service/User.go +++ b/api/service/User.go @@ -64,9 +64,96 @@ func (r *UserService) HandleUserImage(wxAvatar string) (ossPath string, err erro // ReportUserScore 发放积分 // scoreType : 积分类型(1:完成阅读 2:阅读时间满足 3:优质留言 4:再次优质留言 ) func (r *UserService) ReportUserScore(tx *gorm.DB, projectId, caseId, platformId int64, scoreType int, user *model.User) (err error) { + maps := make(map[string]interface{}) + // // 获取项目关联平台 + // projectPlatformDao := dao.ProjectPlatformDao{} + // maps["project_id"] = projectId + // maps["platform_id"] = platformId + // projectPlatform, err := projectPlatformDao.GetProjectPlatform(maps) + // if err != nil { + // return err + // } + + // // 检测福利开关 + // if projectPlatform.IsWelfare == 0 { + // // 福利未开 + // return nil + // } + + // // 获取需发放积分 + // score := 0 + // appScoreTypeStr := "" // 积分发放原因-app + // superScoreTypeStr := "" // 积分发放原因-超级袋鼠 + // nodeName := "" // 获取积分节点名称 + // if scoreType == 1 { + // // 完成阅读 + // score = projectPlatform.CompleteRead + // appScoreTypeStr = "互动病例-完成阅读" + // superScoreTypeStr = "调研奖励(完成阅读)" + // nodeName = "学习" + // } else if scoreType == 2 { + // // 阅读时间满足 + // score = projectPlatform.CompleteReadTime + // appScoreTypeStr = "互动病例-阅读时间满足" + // superScoreTypeStr = "调研奖励(阅读质量)" + // nodeName = "阅读达标" + // } else if scoreType == 3 { + // // 优质留言 + // score = projectPlatform.FirstHighQuality + // appScoreTypeStr = "互动病例-优质留言" + // superScoreTypeStr = "调研奖励(社区贡献)" + // nodeName = "优质留言" + // } else if scoreType == 4 { + // // 再次优质留言 + // score = projectPlatform.OnceMoreHighQuality + // appScoreTypeStr = "互动病例-优质留言" + // superScoreTypeStr = "调研奖励(社区贡献)" + // nodeName = "优质留言" + // } + + recordScoreDao := dao.RecordScoreDao{} + + // 检测是否有相同手机号用户 + userDao := dao.UserDao{} + maps = make(map[string]interface{}) + maps["mobile_encryption"] = user.MobileEncryption + users, err := userDao.GetUserList(maps) + if err != nil { + return nil + } + for _, m := range users { + // 检测积分是否已在其他平台发放过 + maps = make(map[string]interface{}) + maps["project_id"] = projectId + maps["case_id"] = caseId + maps["user_id"] = m.UserId + recordScore, _ := recordScoreDao.GetRecordScoreUseTx(tx, maps) + if recordScore != nil { + if recordScore.PlatformId != platformId { + // 由其他平台进行发放积分 修改平台id为其他平台id + platformId = recordScore.PlatformId + + user = m + } + } + + // 检测该类型积分是否已经发放(其他平台也算) + maps = make(map[string]interface{}) + maps["project_id"] = projectId + maps["case_id"] = caseId + maps["platform_id"] = platformId + maps["user_id"] = m.UserId + maps["type"] = scoreType + recordScore, _ = recordScoreDao.GetRecordScore(maps) + if recordScore != nil { + // 积分已发放过 + return nil + } + } + + // 获取项目关联平台 projectPlatformDao := dao.ProjectPlatformDao{} - maps := make(map[string]interface{}) maps["project_id"] = projectId maps["platform_id"] = platformId projectPlatform, err := projectPlatformDao.GetProjectPlatform(maps) @@ -111,46 +198,7 @@ func (r *UserService) ReportUserScore(tx *gorm.DB, projectId, caseId, platformId nodeName = "优质留言" } - recordScoreDao := dao.RecordScoreDao{} - - // 检测是否有相同手机号用户 - userDao := dao.UserDao{} - maps = make(map[string]interface{}) - maps["mobile_encryption"] = user.MobileEncryption - users, err := userDao.GetUserList(maps) - if err != nil { - return nil - } - for _, m := range users { - // 检测积分是否已在其他平台发放过 - maps = make(map[string]interface{}) - maps["project_id"] = projectId - maps["case_id"] = caseId - maps["user_id"] = m.UserId - recordScore, _ := recordScoreDao.GetRecordScoreUseTx(tx, maps) - if recordScore != nil { - if recordScore.PlatformId != platformId { - // 由其他平台进行发放积分 修改平台id为其他平台id - platformId = recordScore.PlatformId - - user = m - } - } - - // 检测该类型积分是否已经发放(其他平台也算) - maps = make(map[string]interface{}) - maps["project_id"] = projectId - maps["case_id"] = caseId - maps["platform_id"] = platformId - maps["user_id"] = m.UserId - maps["type"] = scoreType - recordScore, _ = recordScoreDao.GetRecordScore(maps) - if recordScore != nil { - // 积分已发放过 - return nil - } - } - + // 默认为白名单用户 isWhite := true if projectPlatform.IsWhite == 1 {