package topic import ( "errors" "gorm.io/gorm" "live/app/model/topic" ) type Substance struct { } // @Title 添加参与人 func (s *Substance) AddSubstance(userId, topicId uint, orm ...*gorm.DB) bool { topicSubstance := &topic.TopicSubstance{} if len(orm) > 0 { topicSubstance.SetDb(orm[0]) } // 查询记录 result := topicSubstance.GetSubstanceByUserIdAndTopicId(userId, topicId) if result.Id <= 0 { resId := int64(0) // 事物处理 err := topicSubstance.Transaction(func(tx *gorm.DB) error { topicSubstance.SetDb(tx) subId := topicSubstance.AddSubstance(userId, topicId) if subId > 0 { // 处理统计数据 topicModel := &topic.Topic{} topicModel.SetDb(topicSubstance.GetDb()) resId = topicModel.AddSubstance(topicId) if resId > 0 { return nil } } return errors.New("网络异常") }) if err != nil { return false } } return true }