videoplayer/service/userService.go

119 lines
3.1 KiB
Go

package service
import (
"regexp"
"strconv"
"videoplayer/dao"
"videoplayer/proto"
"videoplayer/worker"
)
func CreateUser(name, password, email, gender string, age int) uint {
return dao.CreateUser(name, password, email, gender, age)
}
func GetUser(name, email, password string) dao.User {
emailRegex := `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`
re := regexp.MustCompile(emailRegex)
var user dao.User
if re.MatchString(name) {
user = dao.FindUserByEmail(name)
} else {
user = dao.FindUserByName(name)
}
if user.ID != 0 && user.Password == password {
return user
}
return dao.User{}
}
func ContainsUser(name, email string) bool {
user := dao.FindUserByName(name)
user2 := dao.FindUserByEmail(email)
if user.ID != 0 || user2.ID != 0 {
return true
}
return false
}
func GetUserByID(id int) []proto.User {
return dao.FindUserByID(id)
}
func GetUserByNameLike(name string) []proto.User {
return dao.FindUserByNameLike(name)
}
func UpdateUser(user_id int, req proto.UpdateUserInfoReq) (int, error) {
cur_user := dao.FindUserByID2(user_id)
//fmt.Println("cur_user:", cur_user, "req:", req)
if user_id == req.ID && cur_user.Role != "admin" {
dao.UpdateUserByID3(user_id, req) //用户修改自己的信息,不能修改权限信息
return user_id, nil
} else if cur_user.Role == "admin" {
dao.UpdateUserByID2(req.ID, req)
return req.ID, nil
} else {
return 0, nil
}
}
func UserSyncDataFromMaster() {
//从接口获取数据
url := "http://" + proto.Config.MASTER_SERVER_DOMAIN + "/user/sync"
tokens := worker.GetRedisSetMembers("super_permission_tokens")
user_sync_data := worker.SyncDataFromMasterReq(url, tokens[0])
add_users := user_sync_data.Add
update_users := user_sync_data.Update
delete_users := user_sync_data.Delete
//未成功操作的id
var fail_ids []uint
//添加用户
for _, v := range add_users {
res := dao.AddUserSync()
if res == 0 {
fail_ids = append(fail_ids, v.ID)
}
}
//更新用户
for _, v := range update_users {
res := dao.UpdateUserSync(v)
if res == 0 {
fail_ids = append(fail_ids, v.ID)
}
}
//删除用户
for _, v := range delete_users {
res := dao.DeleteUserSync(v)
if res == 0 {
fail_ids = append(fail_ids, v.ID)
}
}
}
// 同步数据到主服务器-增删改数据
func GetUserSyncData() proto.UserSyncResp {
add_user_ids := worker.GetRedisSetMembers("sync_add_user_ids")
update_user_ids := worker.GetRedisSetMembers("sync_update_user_ids")
delete_user_ids := worker.GetRedisSetMembers("sync_delete_user_ids")
add_users := []dao.User{}
update_users := []dao.User{}
delete_users := []proto.UserDelID{}
for _, v := range add_user_ids {
id, _ := strconv.Atoi(v)
user := dao.FindUserByUserID(id)
add_users = append(add_users, user)
}
for _, v := range update_user_ids {
id, _ := strconv.Atoi(v)
user := dao.FindUserByUserID(id)
update_users = append(update_users, user)
}
for _, v := range delete_user_ids {
id, _ := strconv.Atoi(v)
delete_users = append(delete_users, proto.UserDelID{ID: uint(id)})
}
return proto.UserSyncResp{Add: add_users, Update: update_users, Delete: delete_users}
}