直接完成
此提交包含在:
104
dao/checkin.go
一般檔案
104
dao/checkin.go
一般檔案
@@ -0,0 +1,104 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"gorm.io/gorm"
|
||||
"integrity-checkin/data/dto"
|
||||
"integrity-checkin/data/po"
|
||||
"time"
|
||||
)
|
||||
|
||||
type CheckinDAO struct {
|
||||
Tx *gorm.DB
|
||||
}
|
||||
|
||||
func (c CheckinDAO) FindUserActivityByDay(userID int, activityID int, day string) *po.UserActivity {
|
||||
var userActivity po.UserActivity
|
||||
err := c.Tx.Take(&userActivity, "user_id=? and activity_id=? and day=?", userID, activityID, day).Error
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
return nil
|
||||
}
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return &userActivity
|
||||
}
|
||||
func (c CheckinDAO) CreateCheckin(userID int, activityID int, image string) (*po.UserActivity, error) {
|
||||
if activity := c.FindActivityByID(activityID); activity == nil {
|
||||
return nil, errors.New("activityID不存在")
|
||||
}
|
||||
userActivity := po.UserActivity{
|
||||
UserID: userID,
|
||||
UserActivityForm: po.UserActivityForm{
|
||||
ActivityID: activityID,
|
||||
Image: image,
|
||||
},
|
||||
Status: 1,
|
||||
Day: time.Now().Format("20060102"),
|
||||
}
|
||||
err := c.Tx.Create(&userActivity).Error
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return &userActivity, nil
|
||||
}
|
||||
func (c CheckinDAO) FindActivityByID(id int) *po.Activity {
|
||||
var activity po.Activity
|
||||
err := c.Tx.Take(&activity, id).Error
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
return nil
|
||||
}
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return &activity
|
||||
}
|
||||
func (c CheckinDAO) FindUserActivityByID(id int) *po.UserActivity {
|
||||
var userActivity po.UserActivity
|
||||
err := c.Tx.Take(&userActivity, id).Error
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
return nil
|
||||
}
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return &userActivity
|
||||
}
|
||||
func (c CheckinDAO) SaveUserActivity(userActivity *po.UserActivity) {
|
||||
err := c.Tx.Save(userActivity).Error
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
func (c CheckinDAO) FindAllActivities() []po.Activity {
|
||||
var arr []po.Activity
|
||||
err := c.Tx.Find(&arr).Error
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return arr
|
||||
}
|
||||
func getUserActivityExtendedSQL(where string) string {
|
||||
return "select ua.*,a.category activity_category," +
|
||||
"a.name activity_name from user_activity ua left join activities a on a.id=ua.activity_id " + where +
|
||||
" order by created_at desc"
|
||||
}
|
||||
func (c CheckinDAO) FindAllUserActivities() []dto.UserActivityExtended {
|
||||
var arr []dto.UserActivityExtended
|
||||
err := c.Tx.Raw(getUserActivityExtendedSQL("")).Find(&arr).Error
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return arr
|
||||
}
|
||||
func (c CheckinDAO) FindUserActivityExtendedByID(id int) *dto.UserActivityExtended {
|
||||
var userActivityExtended dto.UserActivityExtended
|
||||
err := c.Tx.Raw(getUserActivityExtendedSQL("where id=?"), id).Take(&userActivityExtended).Error
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
return nil
|
||||
}
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return &userActivityExtended
|
||||
}
|
22
dao/dao.go
一般檔案
22
dao/dao.go
一般檔案
@@ -0,0 +1,22 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"gorm.io/driver/mysql"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
var DB *gorm.DB
|
||||
|
||||
func Setup() {
|
||||
db, err := gorm.Open(mysql.Open(fmt.Sprintf("%v:%v@tcp(%v:%v)/%v?charset=utf8mb4&parseTime=True&loc=Local",
|
||||
"integrity",
|
||||
"integrity",
|
||||
"202.194.15.130",
|
||||
3306,
|
||||
"integrity")), &gorm.Config{})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
DB = db
|
||||
}
|
51
dao/user.go
一般檔案
51
dao/user.go
一般檔案
@@ -0,0 +1,51 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"gorm.io/gorm"
|
||||
"integrity-checkin/data/po"
|
||||
)
|
||||
|
||||
type UserDAO struct {
|
||||
Tx *gorm.DB
|
||||
}
|
||||
|
||||
func (u UserDAO) FindUserByUsername(username string) *po.User {
|
||||
var user po.User
|
||||
err := u.Tx.Take(&user, "username=?", username).Error
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
return nil
|
||||
}
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return &user
|
||||
}
|
||||
func (u UserDAO) FindUserByID(id int) *po.User {
|
||||
var user po.User
|
||||
err := u.Tx.Take(&user, id).Error
|
||||
if err == gorm.ErrRecordNotFound {
|
||||
return nil
|
||||
}
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return &user
|
||||
}
|
||||
func (u UserDAO) SaveUser(user *po.User) {
|
||||
err := u.Tx.Save(user).Error
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
func (u UserDAO) CreateUser(username string, realName string) *po.User {
|
||||
user := po.User{
|
||||
Username: username,
|
||||
RealName: realName,
|
||||
RoleID: 1,
|
||||
}
|
||||
err := u.Tx.Create(&user).Error
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
return &user
|
||||
}
|
新增問題並參考
封鎖使用者