videoplayer/dao/user.go

167 lines
5.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package dao
import (
"fmt"
"gorm.io/gorm"
"videoplayer/proto"
)
type User struct {
gorm.Model
Name string `gorm:"column:name"`
Age int `gorm:"column:age"`
Email string `gorm:"column:email"`
Password string `gorm:"column:password"`
Gender string `gorm:"column:gender"`
Role string `gorm:"column:role"`
Redis bool `gorm:"column:redis"`
Run bool `gorm:"column:run"`
Upload bool `gorm:"column:upload"`
VideoFunc bool `gorm:"column:video_func"` //视频功能
DeviceFunc bool `gorm:"column:device_func"` //设备功能
CIDFunc bool `gorm:"column:cid_func"` //持续集成功能
Avatar string `gorm:"column:avatar"`
CreateTime string `gorm:"column:create_time"`
UpdateTime string `gorm:"column:update_time"`
}
func CreateUser(name, password, email, gender string, age int) uint {
user := User{Name: name, Email: email, Password: password, Gender: gender, Age: age}
res := DB.Create(&user)
if res.Error != nil {
return 0
}
return user.ID
}
func DeleteUserByID(id int) int {
res := DB.Delete(&User{}, id)
if res.Error != nil {
return 0
}
return id
}
func FindUserByID(id int) []proto.User {
var users []proto.User
DB.Where("id = ?", id).First(&users)
return users
}
func FindUserByID2(id int) User {
var user User
DB.Where("id = ?", id).First(&user)
return user
}
func FindUserByUserID(id int) User {
var user User
DB.Where("id = ?", id).First(&user)
return user
}
func FindUserByName(name string) User {
var user User
fmt.Println("name:", name)
DB.Where("name = ?", name).First(&user)
return user
}
// 根据name模糊查询邮箱也是,不查询密码
func FindUserByNameLike(name string) []proto.User {
var users []proto.User
DB.Where("name LIKE ? OR email LIKE ?", "%"+name+"%", "%"+name+"%").Find(&users).Limit(32)
return users
}
func FindUserByEmail(email string) User {
var user User
DB.Where("email = ?", email).First(&user)
return user
}
func UpdateUserByID(id int, name, password, email string) {
DB.Model(&User{}).Where("id = ?", id).Updates(User{Name: name, Password: password, Email: email})
}
// 管理员修改用户信息
func UpdateUserByID2(id int, req proto.UpdateUserInfoReq) error {
updateData := make(map[string]interface{})
updateData["Name"] = req.Username
updateData["Age"] = req.Age
updateData["Role"] = req.Role
updateData["Run"] = req.Run
updateData["Redis"] = req.Redis
updateData["Upload"] = req.Upload
updateData["VideoFunc"] = req.VideoFunc
updateData["DeviceFunc"] = req.DeviceFunc
updateData["CIDFunc"] = req.CIDFunc
updateData["Avatar"] = req.Avatar
updateData["Gender"] = req.Gender
res := DB.Model(&User{}).Where("id =?", id).Updates(updateData)
if res.Error != nil {
return res.Error
}
return nil
}
// 用户修改自己的信息
func UpdateUserByID3(id int, req proto.UpdateUserInfoReq) error {
res := DB.Model(&User{}).Where("id = ?", id).Updates(User{Name: req.Username, Age: req.Age, Avatar: req.Avatar, Gender: req.Gender})
return res.Error
}
// 用户数据同步-添加
func AddUserSync(req proto.UserAddOrUpdate) uint {
res := DB.Exec("insert into users (id, created_at, updated_at, deleted_at, name, age, email, password,gender,role,redis,run,upload,video_func,device_func,cid_func,avatar,create_time,update_time) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", req.ID, req.CreatedAt, req.UpdatedAt, req.DeletedAt, req.Name, req.Age, req.Email, req.Password, req.Gender, req.Role, req.Redis, req.Run, req.Upload, req.VideoFunc, req.DeviceFunc, req.CIDFunc, req.Avatar, req.CreateTime, req.UpdateTime)
if res.Error != nil {
return 0
}
res = DB.Exec("update users set created_at=null where id=?", req.ID)
if res.Error != nil {
return 0
}
return req.ID
}
// 用户数据同步-更新
func UpdateUserSync(req proto.UserAddOrUpdate) uint {
res := DB.Exec("update users set created_at=?, updated_at=?, deleted_at=?, name=?, age=?, email=?, password=?,gender=?,role=?,redis=?,run=?,upload=?,video_func=?,device_func=?,cid_func=?,avatar=?,create_time=?,update_time=? where id=?", req.CreatedAt, req.UpdatedAt, req.DeletedAt, req.Name, req.Age, req.Email, req.Password, req.Gender, req.Role, req.Redis, req.Run, req.Upload, req.VideoFunc, req.DeviceFunc, req.CIDFunc, req.Avatar, req.CreateTime, req.UpdateTime, req.ID)
if res.Error != nil {
return 0
}
res = DB.Exec("update users set created_at=null where id=?", req.ID)
if res.Error != nil {
return 0
}
return req.ID
}
// 用户数据同步-删除
func DeleteUserSync(req proto.UserDelID) uint {
res := DB.Delete(&User{}, req.ID)
if res.Error != nil {
return 0
}
return req.ID
}
// 获取所有用户
func GetAllUser() []User {
var users []User
DB.Find(&users)
return users
}
// 用户数据同步
type UserSyncResp struct {
Update []User `json:"update" form:"update"` //更新用户
Add []User `json:"add" form:"add"` //添加用户
Delete []proto.UserDelID `json:"delete" form:"delete"` //删除用户
}
// 清空用户表
func ClearAllUsers() error {
res := DB.Exec("TRUNCATE TABLE users")
return res.Error
}