feat:消费机更新

feat:人员调用钱包部门不调动的bug
This commit is contained in:
dzc committed 2026-09-09 11:56:19 +08:00
1 parent 842402e364
commit 60d9380a65
144 files changed
+27832 -1666

No files matched your search

@@ -36,31 +36,68 @@ enum OrderType implements BaseEnum {
/// 付款方式
enum OrderPayType implements BaseEnum {
/// 默认钱包余额支付。
WALLET_DEFAULT("1", "普通钱包支付"),
/// 用户向终端出示自有钱包二维码支付。
WALLET_QR_CODE("2", "钱包二维码支付"),
/// 旧版终端展示自有钱包订单码,由移动端扫码支付。
WALLET_QR_CODE_SCAN("22", "钱包扫一扫支付"),
/// 终端展示支付宝、微信共用的 HTTPS 聚合收银二维码。
AGGREGATE_ORDER_PAY("23", "支付宝微信聚合码支付"),
/// 实体饭卡钱包支付。
WALLET_CARD("3", "钱包饭卡支付"),
/// 人脸识别钱包支付。
FACE("4", "人脸识别支付"),
/// 跨单位业务二维码支付。
STRIDE_DEPT_QR_CODE("5", "跨单位二维码支付"),
/// 外来人员票券二维码支付。
FOREIGN_TICKET_QR_CODE("6", "外来人员二维码支付"),
/// 线上预约订单二维码核销支付。
RESERVE_QR_CODE("7", "线上订餐二维码支付"),
/// 终端线下现金支付。
CASH("8", "现金支付"),
/// 微信用户付款码支付。
WECHANT_SELF_QR_CODE_PAY("10", "微信付款码支付"),
/// 支付宝用户付款码支付。
ALI_SELF_QR_CODE_PAY("11", "支付宝付款码支付"),
/// 中医院渠道支付。
ZYY("12", "中医院"),
/// 人民医院渠道支付。
RMYY("13", "人民医院"),
/// 超市消费卡渠道支付。
CSXFK("13", "超市消费卡"),
/// 活动订单核销。
ACT_CANCEL("50", "活动核销"),
;
@override
/// 数据库和服务端接口使用的稳定支付类型编码。
final String code;
@override
/// 支付方式的中文展示名称。
final String title;
/// 创建一个使用稳定协议编码的支付方式枚举值。
const OrderPayType(this.code, this.title);
// 是否是外部人员支付
/// 判断是否为跨单位或外来人员二维码支付。
static bool isStrideOrForeign(OrderPayType payType) {
return [
OrderPayType.STRIDE_DEPT_QR_CODE,
@@ -68,7 +105,7 @@ enum OrderPayType implements BaseEnum {
].contains(payType);
}
// 是否是自付款(微信、支付宝)
/// 判断是否为顾客直接使用微信或支付宝付款码支付。
static bool isExternalPay(OrderPayType payType) {
return [
OrderPayType.WECHANT_SELF_QR_CODE_PAY,
@@ -22,6 +22,30 @@ class SysSetting extends Equatable {
/// 商户id
String? serviceMerchantId;
/// 当前业务终端绑定的 EY_PRINT 逻辑打印机资产 ID;未绑定时为空。
String? printerHardId;
/// 当前业务终端绑定的 EY_PRINT 逻辑打印机资产名称;未绑定时为空。
String? printerHardName;
/// 当前业务终端代理的 USB 打印机型号,由服务端绑定配置下发。
String? printerModel;
/// 当前绑定打印机的 USB Vendor ID 十进制值;尚未上报时为空。
int? printerUsbVendorId;
/// 当前绑定打印机的 USB Product ID 十进制值;尚未上报时为空。
int? printerUsbProductId;
/// 当前绑定打印机的纸宽,单位毫米;旧配置缺失时默认 80。
int printerPaperWidth;
/// 当前绑定打印机是否在完整写入后发送自动切刀指令。
bool printerAutoCut;
/// 当前绑定打印机的 ESC/POS 图片指令模式,默认使用 GS_V0。
String printerImageMode;
/// 商户部门id
String? merchantDeptId;
@@ -94,6 +118,18 @@ class SysSetting extends Equatable {
// 全局字体大小
SettingGlobalFontSize? globalFontSize;
/// 按钮、标签及小型操作控件的圆角。
@JsonKey(defaultValue: SettingButtonRadius.standard)
SettingButtonRadius buttonRadius;
/// 页面分组、信息卡片及 Forui 卡片的圆角。
@JsonKey(defaultValue: SettingCardRadius.standard)
SettingCardRadius cardRadius;
/// 按钮和标签的内边距档位,不改变全局字体大小。
@JsonKey(defaultValue: SettingButtonSize.standard)
SettingButtonSize buttonSize;
// 使用支付方式
List<OrderPayDisplayType>? usePayDisplayType;
@@ -103,6 +139,20 @@ class SysSetting extends Equatable {
// 租户列表
List<ServiceTenant>? tenantList;
/// 设置为主控后不访问扫码、饭卡和人脸硬件,改由操作员输入硬件结果。
@JsonKey(defaultValue: false)
bool manualHardwareInput;
/// Root 最近一次真实命令检查状态;旧配置缺失时按未检查处理。
@JsonKey(defaultValue: RootAccessStatus.unknown)
RootAccessStatus rootAccessStatus;
/// Root 最近一次检查时间;旧配置或从未检查时为空。
DateTime? rootAccessCheckedAt;
/// Root 检查诊断摘要;可用时说明确认结果,不可用时说明拒绝、超时等原因。
String? rootAccessDiagnostic;
SysSetting({
required this.sysType,
this.androidId,
@@ -112,7 +162,17 @@ class SysSetting extends Equatable {
this.sqlAddress,
this.logAddress,
this.hardGroupId,
this.printerPaperWidth = 80,
this.printerAutoCut = true,
this.printerImageMode = 'GS_V0',
this.tenantList,
this.manualHardwareInput = false,
this.rootAccessStatus = RootAccessStatus.unknown,
this.rootAccessCheckedAt,
this.rootAccessDiagnostic,
this.buttonRadius = SettingButtonRadius.standard,
this.cardRadius = SettingCardRadius.standard,
this.buttonSize = SettingButtonSize.standard,
});
factory SysSetting.fromJson(Map<String, dynamic> json) =>
@@ -127,6 +187,14 @@ class SysSetting extends Equatable {
serviceId,
serviceName,
serviceMerchantId,
printerHardId,
printerHardName,
printerModel,
printerUsbVendorId,
printerUsbProductId,
printerPaperWidth,
printerAutoCut,
printerImageMode,
merchantDeptId,
hardGroupId,
mqSocketAddress,
@@ -151,9 +219,16 @@ class SysSetting extends Equatable {
mqSyncTime?.millisecondsSinceEpoch,
hourType,
globalFontSize,
buttonRadius,
cardRadius,
buttonSize,
usePayDisplayType,
defaultPayDisplayType,
tenantList,
manualHardwareInput,
rootAccessStatus,
rootAccessCheckedAt?.millisecondsSinceEpoch,
rootAccessDiagnostic,
];
}
@@ -15,12 +15,37 @@ SysSetting _$SysSettingFromJson(Map<String, dynamic> json) => SysSetting(
sqlAddress: json['sqlAddress'] as String?,
logAddress: json['logAddress'] as String?,
hardGroupId: json['hardGroupId'] as String?,
printerPaperWidth: (json['printerPaperWidth'] as num?)?.toInt() ?? 80,
printerAutoCut: json['printerAutoCut'] as bool? ?? true,
printerImageMode: json['printerImageMode'] as String? ?? 'GS_V0',
tenantList: (json['tenantList'] as List<dynamic>?)
?.map((e) => ServiceTenant.fromJson(e as Map<String, dynamic>))
.toList(),
manualHardwareInput: json['manualHardwareInput'] as bool? ?? false,
rootAccessStatus: $enumDecodeNullable(
_$RootAccessStatusEnumMap, json['rootAccessStatus']) ??
RootAccessStatus.unknown,
rootAccessCheckedAt: json['rootAccessCheckedAt'] == null
? null
: DateTime.parse(json['rootAccessCheckedAt'] as String),
rootAccessDiagnostic: json['rootAccessDiagnostic'] as String?,
buttonRadius: $enumDecodeNullable(
_$SettingButtonRadiusEnumMap, json['buttonRadius']) ??
SettingButtonRadius.standard,
cardRadius:
$enumDecodeNullable(_$SettingCardRadiusEnumMap, json['cardRadius']) ??
SettingCardRadius.standard,
buttonSize:
$enumDecodeNullable(_$SettingButtonSizeEnumMap, json['buttonSize']) ??
SettingButtonSize.standard,
)
..serviceName = json['serviceName'] as String?
..serviceMerchantId = json['serviceMerchantId'] as String?
..printerHardId = json['printerHardId'] as String?
..printerHardName = json['printerHardName'] as String?
..printerModel = json['printerModel'] as String?
..printerUsbVendorId = (json['printerUsbVendorId'] as num?)?.toInt()
..printerUsbProductId = (json['printerUsbProductId'] as num?)?.toInt()
..merchantDeptId = json['merchantDeptId'] as String?
..mqSocketPort = json['mqSocketPort'] as String?
..mqUsername = json['mqUsername'] as String?
@@ -70,6 +95,14 @@ Map<String, dynamic> _$SysSettingToJson(SysSetting instance) =>
'serviceId': instance.serviceId,
'serviceName': instance.serviceName,
'serviceMerchantId': instance.serviceMerchantId,
'printerHardId': instance.printerHardId,
'printerHardName': instance.printerHardName,
'printerModel': instance.printerModel,
'printerUsbVendorId': instance.printerUsbVendorId,
'printerUsbProductId': instance.printerUsbProductId,
'printerPaperWidth': instance.printerPaperWidth,
'printerAutoCut': instance.printerAutoCut,
'printerImageMode': instance.printerImageMode,
'merchantDeptId': instance.merchantDeptId,
'hardGroupId': instance.hardGroupId,
'mqSocketAddress': instance.mqSocketAddress,
@@ -98,12 +131,19 @@ Map<String, dynamic> _$SysSettingToJson(SysSetting instance) =>
'mqSyncTime': instance.mqSyncTime?.toIso8601String(),
'hourType': _$ProductHourTypeEnumMap[instance.hourType],
'globalFontSize': _$SettingGlobalFontSizeEnumMap[instance.globalFontSize],
'buttonRadius': _$SettingButtonRadiusEnumMap[instance.buttonRadius]!,
'cardRadius': _$SettingCardRadiusEnumMap[instance.cardRadius]!,
'buttonSize': _$SettingButtonSizeEnumMap[instance.buttonSize]!,
'usePayDisplayType': instance.usePayDisplayType
?.map((e) => _$OrderPayDisplayTypeEnumMap[e]!)
.toList(),
'defaultPayDisplayType':
_$OrderPayDisplayTypeEnumMap[instance.defaultPayDisplayType],
'tenantList': instance.tenantList,
'manualHardwareInput': instance.manualHardwareInput,
'rootAccessStatus': _$RootAccessStatusEnumMap[instance.rootAccessStatus]!,
'rootAccessCheckedAt': instance.rootAccessCheckedAt?.toIso8601String(),
'rootAccessDiagnostic': instance.rootAccessDiagnostic,
};
const _$SysTypeEnumMap = {
@@ -111,6 +151,30 @@ const _$SysTypeEnumMap = {
SysType.CANTEEN: 'CANTEEN',
};
const _$RootAccessStatusEnumMap = {
RootAccessStatus.unknown: 'unknown',
RootAccessStatus.available: 'available',
RootAccessStatus.unavailable: 'unavailable',
};
const _$SettingButtonRadiusEnumMap = {
SettingButtonRadius.compact: 'compact',
SettingButtonRadius.standard: 'standard',
SettingButtonRadius.large: 'large',
};
const _$SettingCardRadiusEnumMap = {
SettingCardRadius.compact: 'compact',
SettingCardRadius.standard: 'standard',
SettingCardRadius.large: 'large',
};
const _$SettingButtonSizeEnumMap = {
SettingButtonSize.compact: 'compact',
SettingButtonSize.standard: 'standard',
SettingButtonSize.large: 'large',
};
const _$ProductHourTypeEnumMap = {
ProductHourType.TOTAL: 'TOTAL',
ProductHourType.MORNING: 'MORNING',