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