IOS_Boss/IOS_study/Manager/UserManager.swift
2025-07-27 12:33:06 +08:00

67 lines
2.5 KiB
Swift
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.

//
// 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()
}
}