36 lines
1.8 KiB
C#
36 lines
1.8 KiB
C#
using Model;
|
||
using Model.Dto.Asset;
|
||
using SqlSugar;
|
||
using System.Collections.Generic;
|
||
using System.Threading.Tasks;
|
||
|
||
namespace Service.Interface
|
||
{
|
||
/// <summary>
|
||
/// 设备二维码 服务接口
|
||
/// 编码内容为扫码直达 URL:{baseUrl}/asset/ledger/equipment?id={equipmentId}
|
||
/// baseUrl 由 Controller 从 HTTP 请求构造(scheme://host)后传入,保持 Service 层框架无关
|
||
/// 生成时把 URL 写入 EquipmentEntity.QrCodeUrl;打印返回 HTML 页面(含 base64 二维码图)
|
||
/// </summary>
|
||
public interface IQrCodeService
|
||
{
|
||
/// <summary>生成二维码 URL 并写入设备(baseUrl 形如 http://host:port)</summary>
|
||
Task<Result<QrCodeDto>> GenerateAsync(long equipmentId, string baseUrl);
|
||
|
||
/// <summary>生成二维码 PNG 图片字节(同时确保 URL 已写库)</summary>
|
||
Task<Result<byte[]>> GenerateImageAsync(long equipmentId, string baseUrl);
|
||
|
||
/// <summary>批量生成二维码 URL(逐个写库,单条失败不影响其它)</summary>
|
||
Task<Result<List<QrCodeBatchResultDto>>> BatchGenerateAsync(long[] equipmentIds, string baseUrl);
|
||
|
||
/// <summary>设备二维码列表(分页,关键字匹配 Code/Name;qrOnly=1 仅看已生成)</summary>
|
||
Task<Result<List<QrCodeDto>>> GetListPagedAsync(int pageIndex, int pageSize, RefAsync<int> total, string? keyword = null, bool qrOnly = false);
|
||
|
||
/// <summary>获取打印用 HTML 页面(含二维码 base64 图 + 设备信息,浏览器 Ctrl+P 打印)</summary>
|
||
Task<Result<string>> GetPrintHtmlAsync(long equipmentId, string baseUrl);
|
||
|
||
/// <summary>绑定 RFID 编号到设备(覆盖式写入 RfidCode)</summary>
|
||
Task<Result> BindRfidAsync(long equipmentId, string rfidCode);
|
||
}
|
||
}
|