Compare commits

...

10 Commits

Author SHA1 Message Date
haomingming
1a2dcdd2be 去除注释2 2025-10-11 14:46:50 +08:00
haomingming
058ea3f8d6 去除注释 2025-10-11 14:43:50 +08:00
haomingming
e45d806d91 同时修改平台id 2025-10-11 14:27:01 +08:00
haomingming
e261364482 打印日志 2025-10-11 14:14:01 +08:00
haomingming
48a5141054 调试信息 2025-10-11 14:02:53 +08:00
haomingming
410933e5b0 添加调试信息 2025-10-11 13:58:20 +08:00
haomingming
8fab74e064 优质留言 2025-10-11 13:52:39 +08:00
haomingming
54b66ed80a 修改优质留言发放逻辑 2025-10-11 11:31:30 +08:00
haomingming
b1605f025f 修改优质留言发放积分逻辑 2025-10-10 14:08:06 +08:00
haomingming
30ab9f8fa0 测试分支 2025-10-10 13:59:28 +08:00
2 changed files with 120 additions and 60 deletions

View File

@ -269,17 +269,28 @@ func (b *CaseComment) AddCaseCommentHighQuality(c *gin.Context) {
}
}()
// 发放积分-优质留言
// println(user)
// str := fmt.Sprintf("%+v", user) // %+v 会带上字段名
// fmt.Println(str)
// fmt.Println(caseComment.PlatformId)
// println("========")
// 发放积分-优质留言-1010 修改
userService := service.UserService{}
err = userService.ReportUserScore(tx, result.ProjectId, caseComment.CaseId, caseComment.PlatformId, scoreType, user)
reportPlatformId := caseComment.PlatformId
reportPlatformId,user,err = userService.ReportUserScore(tx, result.ProjectId, caseComment.CaseId, caseComment.PlatformId, scoreType, user)
if err != nil {
tx.Rollback()
responses.FailWithMessage(err.Error(), c)
return
}
// println(user)
// str2 := fmt.Sprintf("%+v", user) // %+v 会带上字段名
// fmt.Println(str2)
// fmt.Println(reportPlatformId)
// 上报用户参与情况-只上报优质留言-佳动力
if caseComment.PlatformId == 2 {
if reportPlatformId == 2 {
err = userService.ReportCaseRecord(tx, result.ProjectId, caseComment.CaseId, user)
if err != nil {
tx.Rollback()

View File

@ -63,21 +63,109 @@ 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) {
func (r *UserService) ReportUserScore(tx *gorm.DB, projectId, caseId, platformId int64, scoreType int, user *model.User) (reportPlatformId int64, reportUser *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 platformId,user,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 platformId,user,nil
}
}
// 获取项目关联平台
projectPlatformDao := dao.ProjectPlatformDao{}
maps := make(map[string]interface{})
maps = make(map[string]interface{})
maps["project_id"] = projectId
maps["platform_id"] = platformId
projectPlatform, err := projectPlatformDao.GetProjectPlatform(maps)
if err != nil {
return err
return platformId,user,err
}
// 检测福利开关
if projectPlatform.IsWelfare == 0 {
// 福利未开
return nil
return platformId,user,nil
}
// 获取需发放积分
@ -111,53 +199,14 @@ 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 {
projectPlatformWhiteService := ProjectPlatformWhiteService{}
isWhite, err = projectPlatformWhiteService.CheckProjectPlatformWhiteByUser(user, projectId, platformId)
if err != nil {
return err
return platformId,user,err
}
}
@ -174,14 +223,14 @@ func (r *UserService) ReportUserScore(tx *gorm.DB, projectId, caseId, platformId
maps["platform_id"] = platformId
casePlatform, err := casePlatformDao.GetCasePlatform(maps)
if err != nil {
return err
return platformId,user,err
}
// 检测全部积分是否已发放完毕
remainingScore := projectPlatform.SingleCaseScore - casePlatform.IssuedScore
if remainingScore <= 0 {
// 积分已发放完毕
return nil
return platformId,user,nil
}
// 新增发放记录-每发一次记录一次
@ -198,7 +247,7 @@ func (r *UserService) ReportUserScore(tx *gorm.DB, projectId, caseId, platformId
recordScore, err = recordScoreDao.AddRecordScore(tx, recordScore)
if err != nil {
return err
return platformId,user,err
}
// 获取用户参与记录
@ -209,38 +258,38 @@ func (r *UserService) ReportUserScore(tx *gorm.DB, projectId, caseId, platformId
maps["user_id"] = user.UserId
caseUser, _ := caseUserDao.GetCaseUserUseTx(tx, maps)
if caseUser == nil {
return errors.New("用户还未完成该病例阅读,请稍后再试")
return platformId,user,errors.New("用户还未完成该病例阅读,请稍后再试")
}
// 累计用户领取积分数据
err = caseUserDao.Inc(tx, caseUser.CaseUserId, "total_score", score)
if err != nil {
return err
return platformId,user,err
}
// 累计平台发放积分数据
err = casePlatformDao.Inc(tx, casePlatform.CasePlatformId, "issued_score", score)
if err != nil {
return err
return platformId,user,err
}
// 累计发放积分数据
caseDao := dao.CaseDao{}
err = caseDao.Inc(tx, caseId, "issued_score", score)
if err != nil {
return err
return platformId,user,err
}
// 发放积分-
if platformId != 1 && platformId != 2 {
return errors.New("积分发放失败")
return platformId,user,errors.New("积分发放失败")
}
// 肝胆相照
if platformId == 1 && score > 0 {
_, err = app.ReportUserScore(appScoreTypeStr, user.UserIden, score)
if err != nil {
return err
return platformId,user,err
}
}
@ -250,16 +299,16 @@ func (r *UserService) ReportUserScore(tx *gorm.DB, projectId, caseId, platformId
caseDao := dao.CaseDao{}
result, err := caseDao.GetCaseById(caseId)
if err != nil {
return err
return platformId,user,err
}
_, err = superKangaroo.ReportUserScore(caseId, user.UserIden, superScoreTypeStr, recordScore, result)
if err != nil {
return err
return platformId,user,err
}
}
return nil
return platformId,user,nil
}
// ReportCaseRecord 上报用户参与情况-只上报优质留言