feat: 支持限制活动打卡的总次数
This commit is contained in:
父節點
e1e1049b45
當前提交
686ac375f2
@ -23,6 +23,17 @@ func (c CheckinDAO) FindUserActivityByDay(userID int, activityID int, day string
|
||||
}
|
||||
return &userActivity
|
||||
}
|
||||
func (c CheckinDAO) FindUserActivityInHistorySince(userID int, activityID int) *po.UserActivity {
|
||||
var userActivity po.UserActivity
|
||||
err := c.Tx.Take(&userActivity, "user_id=? and activity_id=?", userID, activityID).Error
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
return nil
|
||||
}
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return &userActivity
|
||||
}
|
||||
func (c CheckinDAO) CreateCheckin(userID int, activityID int, files string) (*po.UserActivity, error) {
|
||||
if activity := c.FindActivityByID(activityID); activity == nil {
|
||||
return nil, errors.New("activityID不存在")
|
||||
|
@ -10,6 +10,8 @@ type Activity struct {
|
||||
Name string `json:"name"`
|
||||
Image string `json:"image"`
|
||||
Credit int `json:"credit"`
|
||||
Visible int `json:"visible"`
|
||||
Limit int `json:"limit"`
|
||||
TeacherAvailable int `json:"teacher_available"`
|
||||
}
|
||||
|
||||
|
@ -25,6 +25,16 @@ func (c CheckinService) Submit(aw *app.Wrapper) app.Result {
|
||||
return aw.Error(err.Error())
|
||||
}
|
||||
today := time.Now().Format("20060102")
|
||||
// 检查是否为限制打卡总次数的活动
|
||||
activity := checkinDAO.FindActivityByID(req.ActivityID)
|
||||
if activity == nil {
|
||||
return aw.Error("活动不存在")
|
||||
} else if activity.Limit > 0 {
|
||||
if checkinDAO.FindUserActivityInHistorySince(uc.UserID, req.ActivityID) != nil {
|
||||
return aw.Error("该打卡活动已经达到限制次数")
|
||||
}
|
||||
}
|
||||
// 检查当天是否已经打卡过
|
||||
if checkinDAO.FindUserActivityByDay(uc.UserID, req.ActivityID, today) != nil {
|
||||
return aw.Error("您今天已参加过该项目,请明天再来")
|
||||
}
|
||||
|
載入中…
x
新增問題並參考
Block a user