直接完成

此提交包含在:
2022-11-23 20:56:28 +08:00
當前提交 b924e94c63
共有 21 個檔案被更改,包括 829 行新增0 行删除

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 一般檔案
查看文件

@@ -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 一般檔案
查看文件

@@ -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
}