feat:取餐
This commit is contained in:
1 parent
5613a2fa9e
commit
2f72e7a3c0
14 files changed
+36
-22
No files matched your search
+1
-1
@@ -15,7 +15,7 @@ public class DatabaseHelper extends SQLiteOpenHelper {
|
||||
|
||||
private static final String DATABASE_PATH = "pj_cashier/database";
|
||||
private static final String DATABASE_NAME = "cash_register.db";
|
||||
private static final int DATABASE_VERSION = 2;
|
||||
private static final int DATABASE_VERSION = 1;
|
||||
|
||||
public DatabaseHelper(Context context) {
|
||||
super(context, getCustomDatabasePath(context), null, DATABASE_VERSION);
|
||||
|
||||
@@ -212,6 +212,9 @@ class ServiceQRCode {
|
||||
|
||||
@JsonSerializable()
|
||||
class ServiceHardOrder {
|
||||
/// 用户id
|
||||
final String? userId;
|
||||
|
||||
/// 用户名
|
||||
final String? username;
|
||||
|
||||
@@ -222,6 +225,7 @@ class ServiceHardOrder {
|
||||
final String? userAvatar;
|
||||
|
||||
ServiceHardOrder({
|
||||
this.userId,
|
||||
this.username,
|
||||
this.userMobile,
|
||||
this.userAvatar,
|
||||
|
||||
@@ -121,6 +121,7 @@ Map<String, dynamic> _$ServiceQRCodeToJson(ServiceQRCode instance) =>
|
||||
|
||||
ServiceHardOrder _$ServiceHardOrderFromJson(Map<String, dynamic> json) =>
|
||||
ServiceHardOrder(
|
||||
userId: json['userId'] as String?,
|
||||
username: json['username'] as String?,
|
||||
userMobile: json['userMobile'] as String?,
|
||||
userAvatar: json['userAvatar'] as String?,
|
||||
@@ -128,6 +129,7 @@ ServiceHardOrder _$ServiceHardOrderFromJson(Map<String, dynamic> json) =>
|
||||
|
||||
Map<String, dynamic> _$ServiceHardOrderToJson(ServiceHardOrder instance) =>
|
||||
<String, dynamic>{
|
||||
'userId': instance.userId,
|
||||
'username': instance.username,
|
||||
'userMobile': instance.userMobile,
|
||||
'userAvatar': instance.userAvatar,
|
||||
|
||||
@@ -30,7 +30,7 @@ abstract class BroadcastDao {
|
||||
DELETE FROM broadcast
|
||||
WHERE
|
||||
serviceCode IN ($placeholders)
|
||||
AND strftime('%Y-%m-%d', saleDate) = strftime('%Y-%m-%d', 'now', 'localtime')
|
||||
AND strftime('%Y-%m-%d', createTime) = strftime('%Y-%m-%d', 'now', 'localtime')
|
||||
''';
|
||||
return await database.rawDelete(sql, [...codes]);
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@ const typeConverters = <Type>[
|
||||
BoolConverter,
|
||||
];
|
||||
|
||||
@Database(version: 2, entities: entities)
|
||||
@Database(version: 1, entities: entities)
|
||||
@TypeConverters(typeConverters)
|
||||
abstract class AppDatabase extends FloorDatabase {
|
||||
BroadcastDao get getBroadcastDao;
|
||||
|
||||
@@ -102,7 +102,7 @@ class _$AppDatabase extends AppDatabase {
|
||||
Callback? callback,
|
||||
]) async {
|
||||
final databaseOptions = sqflite.OpenDatabaseOptions(
|
||||
version: 2,
|
||||
version: 1,
|
||||
onConfigure: (database) async {
|
||||
await database.execute('PRAGMA foreign_keys = ON');
|
||||
await callback?.onConfigure?.call(database);
|
||||
|
||||
@@ -70,7 +70,7 @@ abstract class SyncTakeFoodBroadcastTool {
|
||||
msg += "${v.content},";
|
||||
}
|
||||
msg = msg.substring(0, msg.length - 1);
|
||||
msg += "的用户,请尽快取餐";
|
||||
msg += "的用户,尽快取餐";
|
||||
// 播报当前组
|
||||
await TtsManage.speak(msg);
|
||||
// 如果不是最后一组,等待一段时间再播报下一组
|
||||
@@ -117,7 +117,7 @@ abstract class SyncTakeFoodBroadcastTool {
|
||||
static Future<bool> _queryTodayBroadcastGroup(dynamic pa) async {
|
||||
final serviceList = await HardApi.broadcastToday(pa);
|
||||
if (serviceList == null) return false;
|
||||
final result = serviceList.size == 100;
|
||||
final result = serviceList.total == 100;
|
||||
if (ObjectUtil.isEmptyList(serviceList.records)) return false;
|
||||
final appC = Get.find<AppControl>();
|
||||
final broadcastDao = appC.dataBase.getBroadcastDao;
|
||||
@@ -141,9 +141,9 @@ abstract class SyncTakeFoodBroadcastTool {
|
||||
) {
|
||||
return BroadcastEntity(
|
||||
content: obj.content,
|
||||
broadcastCount: 0,
|
||||
broadcastCount: obj.broadcastCount ?? 0,
|
||||
broadcastMaxCount: obj.broadcastMaxCount ?? 20,
|
||||
isBroadcast: true,
|
||||
isBroadcast: obj.isBroadcast,
|
||||
isDone: false,
|
||||
productDesc: obj.productDesc,
|
||||
serviceCode: obj.id,
|
||||
|
||||
@@ -9,6 +9,7 @@ Widget appUserInfo(
|
||||
dynamic username = "未知",
|
||||
dynamic balance = "未知",
|
||||
String? avatar = "",
|
||||
bool visibleMoney = true,
|
||||
}) {
|
||||
if (ObjectUtil.isEmpty(username)) {
|
||||
username = "未知";
|
||||
@@ -23,7 +24,7 @@ Widget appUserInfo(
|
||||
final style = theme.typography.lg;
|
||||
return <Widget>[
|
||||
ObjectUtil.isNotEmpty(avatar)
|
||||
? appImg(avatar)
|
||||
? appImg(avatar).width(80.w).height(80.w)
|
||||
: Image.asset(
|
||||
AssetsImages.defaultAvatar,
|
||||
fit: BoxFit.cover,
|
||||
@@ -36,7 +37,7 @@ Widget appUserInfo(
|
||||
<Widget>[
|
||||
Text("饭卡余额:", style: style),
|
||||
appPrice(context, balance),
|
||||
].toRow(),
|
||||
].toRow().offstage(offstage: !visibleMoney),
|
||||
].toColumn(crossAxisAlignment: CrossAxisAlignment.start),
|
||||
].toRow(mainAxisAlignment: MainAxisAlignment.center).width(double.infinity);
|
||||
}
|
||||
@@ -111,6 +111,12 @@ class CanteenReserveController extends GetxController {
|
||||
final broadcastDao = appC.dataBase.getBroadcastDao;
|
||||
v.broadcastCount = 0;
|
||||
await broadcastDao.edit(v);
|
||||
// 同步给后台
|
||||
final pa = {
|
||||
"ids": [v.serviceCode],
|
||||
"count": -1
|
||||
};
|
||||
await HardApi.broadcast(pa);
|
||||
await _getReservePage();
|
||||
EasyLoading.dismiss();
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ class CanteenReservePage extends GetView<CanteenReserveController> {
|
||||
size: theme.typography.base.fontSize,
|
||||
),
|
||||
label: Text(
|
||||
'同步所有广播',
|
||||
'刷新',
|
||||
style: theme.typography.base.copyWith(
|
||||
color: theme.colorScheme.primary,
|
||||
),
|
||||
|
||||
@@ -91,11 +91,11 @@ class LoginController extends GetxController {
|
||||
userSetting.password = passwordC.value.text;
|
||||
userSetting.tenantId = currentTenant.id;
|
||||
await AppSettingTool.setUserSetting(userSetting);
|
||||
await TtsManage.speak("登录成功");
|
||||
if (visibleMsg) {
|
||||
Toast.success(msg: "登录成功");
|
||||
EasyLoading.dismiss();
|
||||
}
|
||||
await TtsManage.speak("登录成功");
|
||||
Get.offAndToNamed(RouteNames.panel);
|
||||
_clearForm();
|
||||
} catch (e) {
|
||||
|
||||
@@ -55,6 +55,7 @@ class TakeFoodController extends GetxController {
|
||||
}
|
||||
|
||||
doPay() async {
|
||||
payUser.refresh();
|
||||
await orderQrCodeCancel();
|
||||
}
|
||||
|
||||
@@ -67,7 +68,7 @@ class TakeFoodController extends GetxController {
|
||||
if (data == null) throw Error();
|
||||
if (ObjectUtil.isEmpty(data)) return;
|
||||
payUser.value?.username = data.username;
|
||||
payUser.value?.userId = globalQrCode?.userId;
|
||||
payUser.value?.userId = data.userId;
|
||||
payUser.value?.userAvatar = data.userAvatar;
|
||||
payUser.refresh();
|
||||
await getCarList();
|
||||
@@ -137,7 +138,7 @@ class TakeFoodController extends GetxController {
|
||||
final flag = await HardApi.cancelQrCode(pa);
|
||||
if (flag == false) throw Error();
|
||||
EasyLoading.dismiss();
|
||||
Toast.error(msg: "核销成功");
|
||||
Toast.success(msg: "核销成功");
|
||||
TtsManage.speak("核销成功");
|
||||
doCancelPay();
|
||||
} catch (e, stack) {
|
||||
@@ -1,4 +1,4 @@
|
||||
library;
|
||||
|
||||
export 'widgets/controller.dart';
|
||||
export './controller.dart';
|
||||
export './view.dart';
|
||||
@@ -83,10 +83,10 @@ class TakeFoodPage extends GetView<TakeFoodController> {
|
||||
).center(),
|
||||
),
|
||||
DataCell(
|
||||
appPrice(context, v.productPrice),
|
||||
appPrice(context, v.productPrice).center(),
|
||||
),
|
||||
DataCell(
|
||||
appPrice(context, v.totalPrice),
|
||||
appPrice(context, v.totalPrice).center(),
|
||||
),
|
||||
],
|
||||
),
|
||||
@@ -103,14 +103,14 @@ class TakeFoodPage extends GetView<TakeFoodController> {
|
||||
final theme = FTheme.of(context);
|
||||
return <Widget>[
|
||||
Obx(() {
|
||||
final payUser = controller.payUser.value;
|
||||
return appUserInfo(
|
||||
context,
|
||||
username: payUser?.username,
|
||||
balance: payUser?.walletBalance,
|
||||
avatar: payUser?.userAvatar,
|
||||
username: controller.payUser.value?.username,
|
||||
balance: controller.payUser.value?.walletBalance,
|
||||
avatar: controller.payUser.value?.userAvatar,
|
||||
visibleMoney: false,
|
||||
);
|
||||
}).width(400.w).center(),
|
||||
}).width(600.w).center(),
|
||||
SizedBox(height: 200.h),
|
||||
<Widget>[
|
||||
FButton(
|
||||
|
||||
Reference in new issue
Block a user