67 lines
2.5 KiB
Swift
67 lines
2.5 KiB
Swift
//
|
||
// UserManager.swift
|
||
// IOS_study
|
||
//
|
||
// Created by CC-star on 2025/7/14.
|
||
//
|
||
|
||
import Foundation
|
||
import LeanCloud
|
||
|
||
final class UserManager {
|
||
static var shared = UserManager()
|
||
private init() {}
|
||
private let className = "DBUser"
|
||
|
||
func findUserByREST() async throws -> DBUser {
|
||
let query = LCQuery(className: className)
|
||
query.whereKey("id", .equalTo(AuthManager.shared.getUserID()))
|
||
guard let objectId = (try await query.getFirst()).objectId?.value else { throw UserError.objectIdNotFound }
|
||
let urlStr = "\(kServerURLStr)/1.1/classes/\(className)/\(objectId)"
|
||
return try await RESTManager.shared.findOne(form: urlStr)
|
||
}
|
||
|
||
func create(user: LCUser) async throws {
|
||
let dbUser = LCObject(className: className)
|
||
try dbUser.set(DBUser.CodingKeys.id.rawValue, value: user.objectId)
|
||
var nickName = ""
|
||
if let objectId = user.objectId?.value {
|
||
nickName = objectId.suffix(4).uppercased()//取后四位,并字母大写
|
||
} else {
|
||
nickName = String.randomString(4)
|
||
}
|
||
try dbUser.set(DBUser.CodingKeys.nickName.rawValue, value: "数据猫用户\(nickName)")
|
||
try await dbUser.save()
|
||
}
|
||
|
||
func update(user: DBUser) async throws {
|
||
let query = LCQuery(className: className)
|
||
query.whereKey("id", .equalTo(AuthManager.shared.getUserID()))
|
||
let userObject = try await query.getFirst()
|
||
|
||
try userObject.set(DBUser.CodingKeys.cName.rawValue, value: user.cName)
|
||
try userObject.set(DBUser.CodingKeys.cLogoURLStr.rawValue, value: user.cLogoURLStr)
|
||
try userObject.set(DBUser.CodingKeys.cImageURLStrs.rawValue, value: user.cImageURLStrs)
|
||
try userObject.set(DBUser.CodingKeys.cAboutUS.rawValue, value: user.cAboutUS)
|
||
try userObject.set(DBUser.CodingKeys.cProvince.rawValue, value: user.cProvince)
|
||
try userObject.set(DBUser.CodingKeys.cCity.rawValue, value: user.cCity)
|
||
|
||
try await userObject.save()
|
||
}
|
||
|
||
func setTo(filed: String, _ value: Bool) async throws {
|
||
let query = LCQuery(className: className)
|
||
query.whereKey("id", .equalTo(AuthManager.shared.getUserID()))
|
||
let userObject = try await query.getFirst()
|
||
try userObject.set(filed, value: value)
|
||
try await userObject.save()
|
||
}
|
||
|
||
func removeUser(id: String) async {
|
||
let query = LCQuery(className: className)
|
||
query.whereKey("id", .equalTo(id))
|
||
guard let userObject = try? await query.getFirst() else { return }
|
||
try? await userObject.delete()
|
||
}
|
||
}
|