47 lines
1.1 KiB
Go
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,
|
|
}
|
|
}
|
|
}
|