package payment import ( "SciencesServer/app/api/website/model" model2 "SciencesServer/app/common/model" "gorm.io/gorm" ) type Activity struct { uid, activityID uint64 identity int } type ActivityCallback func(uid, activityID uint64, identity int) *Activity func (c *Activity) grant(tx *gorm.DB) error { var count int64 mActivityJoin := model.NewActivityJoin() err := model2.Count(mActivityJoin.ActivityJoin, &count, model2.NewWhere("uid", c.uid), model2.NewWhere("activity_id", c.activityID), model2.NewWhere("identity", c.identity), model2.NewWhere("status", model2.ActivityJoinStatusForSuccess)) if err != nil { return err } else if count > 0 { return nil } mActivityJoin.UID = c.uid mActivityJoin.ActivityID = c.activityID mActivityJoin.Identity = c.identity mActivityJoin.Status = model2.ActivityJoinStatusForSuccess return model2.Create(mActivityJoin.ActivityJoin, tx) } func NewActivity() ActivityCallback { return func(uid, activityID uint64, identity int) *Activity { return &Activity{ uid: uid, activityID: activityID, identity: identity, } } }