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