Files
2022-02-15 17:19:23 +08:00

47 lines
1.1 KiB
Go

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,
}
}
}