ro-table/Asstes/Resources/Script/FrameWork/GUI/view/BeautifulAreaPhotoNetIngManager.txt
2025-06-04 05:02:57 +08:00

230 lines
7.7 KiB
Plaintext

IOPathConfig = autoImport("IOPathConfig")
BeautifulAreaPhotoNetIngManager = class("BeautifulAreaPhotoNetIngManager")
local ThumbnailTail = "!200"
local extension = "png"
function BeautifulAreaPhotoNetIngManager.Ins()
if BeautifulAreaPhotoNetIngManager.ins == null then
BeautifulAreaPhotoNetIngManager.ins = BeautifulAreaPhotoNetIngManager.new()
end
return BeautifulAreaPhotoNetIngManager.ins
end
function BeautifulAreaPhotoNetIngManager:Initialize()
self.downloadTasks = {}
self.uploadTasks = {}
self.waitingSignatureUpload = {}
self.waitingServerPathDownload = {}
-- EventManager.Me():AddEventListener(LoadSceneEvent.BeginLoadScene, self.OnSwitchOn, self)
-- EventManager.Me():AddEventListener(LoadSceneEvent.FinishLoadScene, self.OnSwitchOff, self)
self.m_switch = true
EventManager.Me():AddEventListener(ServiceEvent.NUserUploadSceneryPhotoUserCmd, self.OnRequestSignatureAndPolicyComp, self)
EventManager.Me():AddEventListener(ServiceEvent.NUserDownloadSceneryPhotoUserCmd, self.OnRequestServerPathComp, self)
end
function BeautifulAreaPhotoNetIngManager:NetIsValid(action)
InternetUtil.Ins:WIFIIsValid(action, 5)
end
function BeautifulAreaPhotoNetIngManager:OnSwitchOn()
self.m_switch = true
end
function BeautifulAreaPhotoNetIngManager:OnSwitchOff()
self.m_switch = true
end
function BeautifulAreaPhotoNetIngManager:Download(ba_id, is_origin, local_path, on_start, on_progress, on_complete, on_error)
if self.serverPath == nil then
if not self.isRequestingServerPath then
ServiceNUserProxy.Instance:CallDownloadSceneryPhotoUserCmd()
self.isRequestingServerPath = true
end
table.insert(self.waitingServerPathDownload, {baID = ba_id, isOrigin = is_origin, localPath = local_path, onStart = on_start, onProgress = on_progress, onComplete = on_complete, onError = on_error})
else
self:NetIsValid(function (x)
if x and self.m_switch then
local serverPath = self.serverPath .. ba_id .. '.' .. extension
if not is_origin then
serverPath = serverPath .. ThumbnailTail
end
local id = self:DoDownload(serverPath, local_path, on_start, on_progress, on_complete, on_error)
table.insert(self.downloadTasks, {id = id, localPath = local_path})
end
end)
end
end
function BeautifulAreaPhotoNetIngManager:DoDownload(server_path, local_path, on_start, on_progress, on_complete, on_error)
local id = UpYunNetIngFileTaskManager.Ins:Download(server_path, local_path, function ()
if on_start ~= nil then
on_start()
end
end, function (progress)
if on_progress ~= nil then
on_progress(progress)
end
end, function ()
self:_RemoveDownloadTask(local_path)
if on_complete ~= nil then
on_complete()
end
end, function (error_type, error_code, error_message)
if on_error ~= nil then
on_error(error_type, error_code, error_message)
end
end)
return id
end
function BeautifulAreaPhotoNetIngManager:Upload(ba_id, local_path, on_start, on_progress, on_complete, on_error)
-- request signature and policy
local absolutePath = FileDirectoryHandler.GetAbsolutePath(local_path)
local fileMD5 = MyMD5.HashFile(absolutePath)
local myFile = MyFileFactory.Ins:GetMyFile(absolutePath)
local blockCount = myFile.BlockCount
local fileSize = myFile.Size
ServiceNUserProxy.Instance:CallUploadSceneryPhotoUserCmd(fileMD5, ba_id, nil, nil, blockCount, fileMD5, fileSize)
-- put into waiting signature collection
table.insert(self.waitingSignatureUpload, {baID = ba_id, localPath = local_path, onStart = on_start, onProgress = on_progress, onComplete = on_complete, onError = on_error})
end
function BeautifulAreaPhotoNetIngManager:DoUpload(local_path, signature, policy, on_start, on_progress, on_complete, on_error)
local id = UpYunNetIngFileTaskManager.Ins:Upload(local_path, signature, policy, function ()
if on_start ~= nil then
on_start()
end
end, function (progress)
if on_progress ~= nil then
on_progress(progress)
end
end, function ()
self:_RemoveUploadTask(local_path)
if on_complete ~= nil then
on_complete()
end
end, function (error_type, error_code, error_message)
if on_error ~= nil then
on_error(error_type, error_code, error_message)
end
end)
return id
end
function BeautifulAreaPhotoNetIngManager:OnRequestSignatureAndPolicyComp(data)
if data == nil then return end
local baID = data.sceneryid
local params = nil
for i = 1, #self.waitingSignatureUpload do
local item = self.waitingSignatureUpload[i]
if item.baID == baID then
params = item
table.remove(self.waitingSignatureUpload, i)
break
end
end
if params ~= nil then
--self:RemoveUploadTask(params.localPath)
self:NetIsValid(function (x)
if x and self.m_switch then
local id = self:DoUpload(params.localPath, data.signature, data.policy, params.onStart, params.onProgress, params.onComplete, params.onError)
table.insert(self.uploadTasks, {id = id, localPath = params.localPath})
end
end)
end
end
function BeautifulAreaPhotoNetIngManager:OnRequestServerPathComp(data)
if data == nil then return end
self.serverPath = data.url
self:NetIsValid(function (x)
if x and self.m_switch then
for i = #self.waitingServerPathDownload, 1, -1 do
local item = self.waitingServerPathDownload[i]
local serverPath = self.serverPath .. item.baID .. '.' .. extension
if not item.isOrigin then
serverPath = serverPath .. ThumbnailTail
end
local id = self:DoDownload(serverPath, item.localPath, item.onStart, item.onProgress, item.onComplete, item.onError)
table.insert(self.downloadTasks, {id = id, localPath = item.localPath})
table.remove(self.waitingServerPathDownload, i)
end
end
end)
end
function BeautifulAreaPhotoNetIngManager:_RemoveUploadTask(local_path)
for i = 1, #self.uploadTasks do
local uploadTask = self.uploadTasks[i]
if uploadTask.localPath == local_path then
table.remove(self.uploadTasks, i)
break
end
end
end
function BeautifulAreaPhotoNetIngManager:_RemoveDownloadTask(local_path)
for i = 1, #self.downloadTasks do
local downloadTask = self.downloadTasks[i]
if downloadTask.localPath == local_path then
table.remove(self.downloadTasks, i)
break
end
end
end
function BeautifulAreaPhotoNetIngManager:RemoveUploadTask(local_path)
for i = #self.uploadTasks, 1, -1 do
local uploadTask = self.uploadTasks[i]
if uploadTask.localPath == local_path then
UpYunNetIngFileTaskManager.Ins:RemoveBlocksUploadTaskFromID(uploadTask.id)
table.remove(self.uploadTasks, i)
end
end
end
function BeautifulAreaPhotoNetIngManager:RemoveWaitingUploadTask(local_path)
for i = #self.waitingSignatureUpload, 1, -1 do
local uploadTask = self.waitingSignatureUpload[i]
if uploadTask.localPath == local_path then
table.remove(self.waitingSignatureUpload, i)
end
end
end
function BeautifulAreaPhotoNetIngManager:RemoveDownloadTask(local_path)
for i = #self.downloadTasks, 1, -1 do
local downloadTask = self.downloadTasks[i]
if downloadTask.localPath == local_path then
UpYunNetIngFileTaskManager.Ins:RemoveDownloadTaskFromID(downloadTask.id)
table.remove(self.downloadTasks, i)
end
end
end
function BeautifulAreaPhotoNetIngManager:RemoveWaitingDownloadTask(local_path)
for i = #self.waitingServerPathDownload, 1, -1 do
local downloadTask = self.waitingServerPathDownload[i]
if downloadTask.localPath == local_path then
table.remove(self.waitingServerPathDownload, i)
end
end
end
function BeautifulAreaPhotoNetIngManager:IsDownloading(local_path)
for i = 1, #self.downloadTasks do
local downloadTask = self.downloadTasks[i]
if downloadTask.localPath == local_path then
local downloadTaskInfo = UpYunNetIngFileTaskManager.Ins:GetDownloadTaskInfoFromID(downloadTask.id)
if downloadTaskInfo and (downloadTaskInfo.state == 1 or downloadTaskInfo.state == 5) then
return true
end
end
end
return false
end