From 686ac375f268e12698f5b9100099a1662ccd3406 Mon Sep 17 00:00:00 2001 From: guosurui <13012615613@163.com> Date: Mon, 12 Feb 2024 20:58:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E9=99=90=E5=88=B6?= =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E6=89=93=E5=8D=A1=E7=9A=84=E6=80=BB=E6=AC=A1?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dao/checkin.go | 11 +++++++++++ data/po/checkin.go | 2 ++ service/checkin.go | 10 ++++++++++ 3 files changed, 23 insertions(+) diff --git a/dao/checkin.go b/dao/checkin.go index 3a9157d..b0442dc 100644 --- a/dao/checkin.go +++ b/dao/checkin.go @@ -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不存在") diff --git a/data/po/checkin.go b/data/po/checkin.go index d4c743e..bd9e271 100644 --- a/data/po/checkin.go +++ b/data/po/checkin.go @@ -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"` } diff --git a/service/checkin.go b/service/checkin.go index ae44869..7351ef2 100644 --- a/service/checkin.go +++ b/service/checkin.go @@ -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("您今天已参加过该项目,请明天再来") }