2026-06-08 08:55:10 +08:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
using Kill.Managers;
|
|
|
|
|
|
using Kill.Network;
|
|
|
|
|
|
using Kill.UI.Components;
|
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
using UnityEngine.UI;
|
|
|
|
|
|
namespace Kill.UI.Pages
|
|
|
|
|
|
{
|
|
|
|
|
|
public class ShareDevicePage : MonoBehaviour
|
|
|
|
|
|
{
|
|
|
|
|
|
public InputField userIdInput;
|
|
|
|
|
|
public Button shareButton;
|
|
|
|
|
|
public ScanQRcode scanQRcode;
|
|
|
|
|
|
public Button backButton;
|
2026-08-19 17:08:15 +08:00
|
|
|
|
/// <summary>待分享设备的蓝牙MAC(为空时取当前选中设备)</summary>
|
|
|
|
|
|
private string deviceMac;
|
|
|
|
|
|
/// <summary>关闭页面时的回调(用于恢复上层页面的返回事件)</summary>
|
|
|
|
|
|
private Action onCloseAction;
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 初始化
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="deviceMac">设备蓝牙MAC(分享非选中设备时传入)</param>
|
|
|
|
|
|
/// <param name="onClose">关闭页面回调</param>
|
|
|
|
|
|
public void Init(string deviceMac = null, Action onClose = null)
|
|
|
|
|
|
{
|
|
|
|
|
|
this.deviceMac = deviceMac;
|
|
|
|
|
|
this.onCloseAction = onClose;
|
|
|
|
|
|
}
|
2026-06-08 08:55:10 +08:00
|
|
|
|
void Start()
|
|
|
|
|
|
{
|
|
|
|
|
|
UIManager.Instance.RegisterBackAction(Back);
|
|
|
|
|
|
backButton.onClick.RemoveAllListeners();
|
|
|
|
|
|
backButton.onClick.AddListener(Back);
|
|
|
|
|
|
userIdInput.text = "";
|
|
|
|
|
|
shareButton.onClick.RemoveAllListeners();
|
|
|
|
|
|
shareButton.onClick.AddListener(async () => await Share());
|
|
|
|
|
|
scanQRcode.OnQRCodeScanned += ScanOver;
|
|
|
|
|
|
}
|
|
|
|
|
|
public void BeginScan()
|
|
|
|
|
|
{
|
|
|
|
|
|
scanQRcode.scanType = ScanQRcode.ScanType.Other;
|
|
|
|
|
|
|
|
|
|
|
|
scanQRcode.gameObject.SetActive(true);
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
public void ScanOver(string scannedData)
|
|
|
|
|
|
{
|
|
|
|
|
|
userIdInput.text = scannedData;
|
|
|
|
|
|
scanQRcode.gameObject.SetActive(false);
|
|
|
|
|
|
}
|
|
|
|
|
|
public void Back()
|
|
|
|
|
|
{
|
2026-08-19 17:08:15 +08:00
|
|
|
|
if (onCloseAction != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
// 恢复上层页面的返回事件
|
|
|
|
|
|
UIManager.Instance.RegisterBackAction(onCloseAction);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
var infoPage = GetComponentInParent<DeviceInfoPage>();
|
|
|
|
|
|
if (infoPage != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
UIManager.Instance.RegisterBackAction(infoPage.Back);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
UIManager.Instance.ClearBackAction();
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2026-06-08 08:55:10 +08:00
|
|
|
|
Destroy(gameObject);
|
|
|
|
|
|
}
|
|
|
|
|
|
public async Task Share()
|
|
|
|
|
|
{
|
|
|
|
|
|
string targetUserId = userIdInput.text.Trim();
|
|
|
|
|
|
if (string.IsNullOrEmpty(targetUserId))
|
|
|
|
|
|
{
|
|
|
|
|
|
ToastUI.Show("100204");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
// 调用后端接口共享设备
|
|
|
|
|
|
LoadingUI.Show();
|
|
|
|
|
|
|
|
|
|
|
|
var requestData = new ShareDeviceRequest
|
|
|
|
|
|
{
|
2026-08-19 17:08:15 +08:00
|
|
|
|
device_sn = string.IsNullOrEmpty(deviceMac)
|
|
|
|
|
|
? DataManager.Instance.selectedDevice.ble_mac
|
|
|
|
|
|
: deviceMac,
|
2026-06-08 08:55:10 +08:00
|
|
|
|
target_user_id = targetUserId,
|
|
|
|
|
|
owner_id = DataManager.Instance.userInfo.id
|
|
|
|
|
|
};
|
|
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
var response = await NetworkCtrl.Instance.Post<NoDataResponse>("/api/v1/device/share", requestData);
|
|
|
|
|
|
|
|
|
|
|
|
LoadingUI.Hide();
|
|
|
|
|
|
|
|
|
|
|
|
ResponseCodeHandler.HandleResponse(response,
|
|
|
|
|
|
onSuccess: (data) =>
|
|
|
|
|
|
{
|
|
|
|
|
|
Debug.Log("设备共享成功");
|
|
|
|
|
|
ToastUI.Show("100205");
|
|
|
|
|
|
Back();
|
|
|
|
|
|
},
|
|
|
|
|
|
onError: (code, msg) =>
|
|
|
|
|
|
{
|
2026-06-26 13:29:59 +08:00
|
|
|
|
//610 重复分享
|
|
|
|
|
|
//404 用户不存在
|
|
|
|
|
|
//608 已达上限
|
|
|
|
|
|
switch(code)
|
|
|
|
|
|
{
|
|
|
|
|
|
case 404:
|
|
|
|
|
|
ToastUI.Show("100282");
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 610:
|
|
|
|
|
|
ToastUI.Show("100299");
|
|
|
|
|
|
break;
|
|
|
|
|
|
case 608:
|
|
|
|
|
|
ToastUI.Show("100298");
|
|
|
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
|
|
|
ToastUI.Show("100282");
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
2026-06-08 08:55:10 +08:00
|
|
|
|
}
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
{
|
|
|
|
|
|
LoadingUI.Hide();
|
|
|
|
|
|
Debug.LogError("设备共享失败: " + ex.Message);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|