599 lines
13 KiB
C#
Raw Normal View History

2026-04-16 14:57:19 +08:00
using System;
using System.Collections.Generic;
using UnityEngine;
namespace Kill.Managers
{
#region AssetBundle
[System.Serializable]
public class AssetBundleInfoList
{
public string version;
public List<AssetBundleInfo> assetbundles;
public AssetBundleInfoList(List<AssetBundleInfo> list)
{
assetbundles = list;
}
}
[System.Serializable]
public class AssetBundleInfo
{
public string name;
public long size;
public string md5;
}
#endregion
#region
/// <summary>
/// 登录请求数据
/// </summary>
[Serializable]
public class LoginRequest
{
public string email;
public string password;
}
/// <summary>
/// 登录响应数据
/// </summary>
[Serializable]
public class LoginResponse
{
public int code;
public string message;
public LoginData data;
}
[Serializable]
public class LoginData
{
public string token;
public UserInfo user;
}
[Serializable]
public class UserInfo
{
public string id;
public string email;
2026-06-08 08:55:10 +08:00
public string avatar;
2026-04-16 14:57:19 +08:00
public string username;
public string role;
2026-04-20 08:31:41 +08:00
public bool exam_completed;
public int device_count;
public int total_kill_count;
/// <summary>
/// 单位系统 0公制 1英制
/// </summary>
public int unit_system;
2026-06-08 08:55:10 +08:00
public bool has_simple_password;
public bool has_complex_password;
2026-04-16 14:57:19 +08:00
}
#endregion
#region
public class EmailCodeRequest
{
public string email;
}
public class NoDataResponse
{
public int code;
public string message;
}
public class BoolResponse
{
public int code;
public string message;
public BoolData data;
}
public class BoolData
{
public bool registered;
}
public class VerifyCodeRequest
{
public string email;
public string code;
}
public class RegisterRequest
{
public string email;
public string password;
public int password_type;
}
public class ResetPasswordRequest
{
public string email;
public string password;
public int password_type;
}
public class FireBaseLoginRequest
{
public string firebase_token;
}
2026-04-20 08:31:41 +08:00
public class BindFireBaseRequest
{
public string code;
public string email;
public string temp_token;
}
/// <summary>
/// Firebase 绑定响应
/// </summary>
public class FirebaseBindResponse
{
public int code;
public string message;
public FirebaseBindData data;
}
public class FirebaseBindData
{
public bool firebase_bind;
}
2026-04-16 14:57:19 +08:00
#endregion
2026-04-24 16:57:44 +08:00
#region
/// <summary>
/// 题目列表响应
/// </summary>
[Serializable]
public class QuestionListResponse
{
public int code;
public string message;
public QuestionListData data;
}
[Serializable]
public class QuestionListData
{
public int total;
public int pages;
public int limit;
public int page;
public List<QuestionInfo> list;
}
/// <summary>
/// 题目信息
/// </summary>
[Serializable]
public class QuestionInfo
{
public int id;
public string questionNumber;
public string questionContent;
public string questionContentEn;
public string correctAnswer;
public string videoUrl;
2026-06-10 15:04:14 +08:00
public string videoUrlEn;
2026-04-24 16:57:44 +08:00
public List<QuestionOption> options;
}
/// <summary>
/// 题目选项
/// </summary>
[Serializable]
public class QuestionOption
{
public int id;
public string optionLabel;
public string optionContent;
public string optionContentEn;
public bool isCorrect;
public string explanation;
public string explanationEn;
}
2026-06-08 08:55:10 +08:00
2026-04-24 16:57:44 +08:00
#endregion
#region
/// <summary>
/// 答题记录(用于本地存储)
/// </summary>
[Serializable]
public class QuestionRecord
{
public int questionId;
public int correctCount; // 累计答对次数
}
/// <summary>
/// 答题记录数据
/// </summary>
[Serializable]
public class QuestionRecordData
{
public List<QuestionRecord> records = new List<QuestionRecord>();
public int totalAnsweredCount; // 总答题序号(累加)
}
#endregion
2026-04-28 16:35:51 +08:00
[Serializable]
public class BandDeviceRequest
{
public string device_sn;
public string user_id;
}
2026-06-08 08:55:10 +08:00
#region
2026-04-24 16:57:44 +08:00
/// <summary>
/// 设备列表响应
/// </summary>
[Serializable]
public class DeviceListResponse
{
public int code;
public string message;
public DeviceListData data;
}
[Serializable]
public class DeviceListData
{
public List<DeviceInfo> owned_devices;
public List<DeviceInfo> shared_devices;
public int? online_count;
public int? offline_count;
public int? fault_count;
public int? total;
public int? page;
public int? size;
public int? pages;
}
/// <summary>
/// 设备信息
/// </summary>
[Serializable]
public class DeviceInfo
{
public string device_sn;
2026-06-08 08:55:10 +08:00
public string ble_mac;
public string wifi_mac;
public string device_name;
public string product_id;
public string status;
public string bind_time;
public string device_model;
public string firmware_version;
public int? total_work_hours;
public int? total_mosquitoes_killed;
public string location;
public string last_online_time;
public string owner_id;
public string owner_name;
public string owner_username;
public string share_time;
}
#endregion
2026-06-08 08:55:10 +08:00
/// <summary>
/// 单位设置请求数据
/// </summary>
[Serializable]
public class UnitRequest
{
/// <summary>
/// 0公制 1英制
/// </summary>
public int unit_system;
}
2026-05-18 08:42:33 +08:00
/// <summary>
/// 密码校验
/// </summary>
[Serializable]
public class PasswordRequest
{
public string password;
}
/// <summary>
/// 重置设备请求数据
/// </summary>
[Serializable]
public class ResetDeviceRequest
{
public string device_sn;
}
2026-06-08 08:55:10 +08:00
public class ShareDeviceRequest
{
public string device_sn;
public string target_user_id;
public string owner_id;
}
[Serializable]
public class SharedUserInfo
{
public string user_id;
public string user_name;
public string avatar;
public DateTime share_time;
}
public class SharedUserInfoListData
{
public List<SharedUserInfo> list;
}
public class ShareUserInfoRequest
{
public string device_sn;
}
public class ShareUserListResponse
{
public int code;
public string message;
public SharedUserInfoListData data;
}
public class OTAResponse
{
public int code;
public string message;
public OTAData data;
}
public class OTAData
{
public string version;
public string download_url;
public string md5;
public string release_notes;
}
public class MessageData
{
public string id;
public string title;
public string type;
public string content;
public DateTime create_at;
public DateTime publish_time;
public bool is_read;
}
public class AnnouncementData
{
public string id;
public string title;
public string type;
public string content;
public DateTime publish_time;
public bool is_read;
}
public enum MessageType
{
device,
warning,
announcement
}
[Serializable]
public class MessageTypeData
{
public int device;
public int warning;
public int announcement;
}
public class MessageTypeDataListResponse
{
public int code;
public string message;
public MessageTypeData data;
}
public class RecordData
{
public string id;
public DateTime time;
public float angle;
public float distance;
}
public class DeviceVideoData
{
public string id;
public string video_url;
public string cover_url;
public DateTime record_time;
}
public class RecordDataList
{
public int total;
public List<RecordData> records;
}
public class DeviceVideoDataList
{
public int total;
public List<DeviceVideoData> list;
}
public class RecordDataListResponse
{
public int code;
public string message;
public RecordDataList data;
}
public class DeviceVideoDataListResponse
{
public int code;
public string message;
public DeviceVideoDataList data;
}
public class KillCountData
{
public string time_point;
public int count;
}
public class KillCountDataList
{
public int total_count;
public List<KillCountData> stats;
}
public class KillCountDataResponse
{
public int code;
public string message;
public KillCountDataList data;
}
public class HeatmapData
{
public float angle;
public float distance;
public int count;
}
public class HeatmapDataList
{
public List<HeatmapData> points;
}
public class HeatmapDataListResponse
{
public int code;
public string message;
public HeatmapDataList data;
}
public class RankData
{
public int rank;
public string nickname;
public string avatar;
public int kill_count;
}
public class RankDataList
{
public List<RankData> top_list;
public RankData my_rank;
}
public class RankDataListResponse
{
public int code;
public string message;
public RankDataList data;
}
public class BundleData
{
public string bundle_version;
public string bundle_url;
}
public class BundleDataResponse
{
public int code;
public string message;
public BundleData data;
}
[Serializable]
public class PostRecordData
{
public string device_sn;
public string record_time;
public float angle;
public float distance;
}
public class FileRequest
{
public byte[] file;
}
2026-06-12 09:42:44 +08:00
/// <summary>
/// 设备在线状态响应
/// </summary>
[System.Serializable]
public class DeviceOnlineResponse
{
public int code;
public string message;
public bool data;
}
#region
/// <summary>
/// 设备配置对应Java DeviceConfig实体
/// </summary>
[System.Serializable]
public class DeviceConfig
{
public string device_sn;
public int? language;
public bool? is_locked;
public int? fov_angle;
public int? detection_distance;
public int? aim_distance;
public string work_mode;
public bool? fill_light_enable;
public string fill_light_type;
public string fill_light_intensity;
public bool? laser_visible_enable;
public bool? visual_detect_enable;
public string visual_sensitivity;
public bool? radar_enable;
public string radar_sensitivity;
public int? radar_safe_distance;
public bool? rgb_enable;
public byte? rgb_red;
public byte? rgb_green;
public byte? rgb_blue;
public string rgb_effect;
public bool? lcd_auto_brightness;
public byte? lcd_brightness;
public bool? lcd_sleep_enable;
public byte? lcd_sleep_time;
public bool? wifi_enable;
public string wifi_ssid;
public string wifi_password;
public bool? video_record_enable;
public byte? record_duration;
public bool? sound_enable;
public string sound_type;
public byte? volume;
2026-06-17 15:42:55 +08:00
/// <summary>
/// 将服务器配置字符串解析为枚举值
/// </summary>
public static T ParseServerEnum<T>(string serverValue, T defaultValue) where T : struct
{
if (string.IsNullOrEmpty(serverValue))
return defaultValue;
if (System.Enum.TryParse<T>(serverValue, true, out T result))
return result;
return defaultValue;
}
/// <summary>
/// 将枚举值转换为服务器配置字符串(小写)
/// </summary>
public static string ToServerString<T>(T enumValue) where T : struct
{
return enumValue.ToString().ToLower();
}
2026-06-12 09:42:44 +08:00
}
/// <summary>
/// 设备配置响应
/// </summary>
[System.Serializable]
public class DeviceConfigResponse
{
public int code;
public string message;
public DeviceConfig data;
}
#endregion
2026-06-08 08:55:10 +08:00
2026-05-18 08:42:33 +08:00
2026-04-16 14:57:19 +08:00
}
2026-06-08 08:55:10 +08:00