diff --git a/android/app/src/main/java/io/flutter/plugins/facediscern/database/DatabaseHelper.java b/android/app/src/main/java/io/flutter/plugins/facediscern/database/DatabaseHelper.java index 6bc4c4a..ee2961e 100644 --- a/android/app/src/main/java/io/flutter/plugins/facediscern/database/DatabaseHelper.java +++ b/android/app/src/main/java/io/flutter/plugins/facediscern/database/DatabaseHelper.java @@ -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); diff --git a/lib/common/models/api/hard_api_models.dart b/lib/common/models/api/hard_api_models.dart index dd081dd..38e612c 100644 --- a/lib/common/models/api/hard_api_models.dart +++ b/lib/common/models/api/hard_api_models.dart @@ -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, diff --git a/lib/common/models/api/hard_api_models.g.dart b/lib/common/models/api/hard_api_models.g.dart index 0757f1f..b78f925 100644 --- a/lib/common/models/api/hard_api_models.g.dart +++ b/lib/common/models/api/hard_api_models.g.dart @@ -121,6 +121,7 @@ Map _$ServiceQRCodeToJson(ServiceQRCode instance) => ServiceHardOrder _$ServiceHardOrderFromJson(Map 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 json) => Map _$ServiceHardOrderToJson(ServiceHardOrder instance) => { + 'userId': instance.userId, 'username': instance.username, 'userMobile': instance.userMobile, 'userAvatar': instance.userAvatar, diff --git a/lib/common/services/database/dao/broadcast_dao.dart b/lib/common/services/database/dao/broadcast_dao.dart index bacf850..511cedc 100644 --- a/lib/common/services/database/dao/broadcast_dao.dart +++ b/lib/common/services/database/dao/broadcast_dao.dart @@ -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]); } diff --git a/lib/common/services/database/database.dart b/lib/common/services/database/database.dart index 1280362..3bb8329 100644 --- a/lib/common/services/database/database.dart +++ b/lib/common/services/database/database.dart @@ -35,7 +35,7 @@ const typeConverters = [ BoolConverter, ]; -@Database(version: 2, entities: entities) +@Database(version: 1, entities: entities) @TypeConverters(typeConverters) abstract class AppDatabase extends FloorDatabase { BroadcastDao get getBroadcastDao; diff --git a/lib/common/services/database/database.g.dart b/lib/common/services/database/database.g.dart index a922132..2b11c75 100644 --- a/lib/common/services/database/database.g.dart +++ b/lib/common/services/database/database.g.dart @@ -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); diff --git a/lib/common/utils/sync/sync_take_food_broadcast_tool.dart b/lib/common/utils/sync/sync_take_food_broadcast_tool.dart index ec26831..cd8142d 100644 --- a/lib/common/utils/sync/sync_take_food_broadcast_tool.dart +++ b/lib/common/utils/sync/sync_take_food_broadcast_tool.dart @@ -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 _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(); 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, diff --git a/lib/common/widgets/user/user_info.dart b/lib/common/widgets/user/user_info.dart index a18ce19..c5739ff 100644 --- a/lib/common/widgets/user/user_info.dart +++ b/lib/common/widgets/user/user_info.dart @@ -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 [ 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( [ Text("饭卡余额:", style: style), appPrice(context, balance), - ].toRow(), + ].toRow().offstage(offstage: !visibleMoney), ].toColumn(crossAxisAlignment: CrossAxisAlignment.start), ].toRow(mainAxisAlignment: MainAxisAlignment.center).width(double.infinity); } diff --git a/lib/pages/canteen_reserve/controller.dart b/lib/pages/canteen_reserve/controller.dart index 76e80fb..05de3dc 100644 --- a/lib/pages/canteen_reserve/controller.dart +++ b/lib/pages/canteen_reserve/controller.dart @@ -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(); } diff --git a/lib/pages/canteen_reserve/view.dart b/lib/pages/canteen_reserve/view.dart index 859cceb..a8bf6d0 100644 --- a/lib/pages/canteen_reserve/view.dart +++ b/lib/pages/canteen_reserve/view.dart @@ -45,7 +45,7 @@ class CanteenReservePage extends GetView { size: theme.typography.base.fontSize, ), label: Text( - '同步所有广播', + '刷新', style: theme.typography.base.copyWith( color: theme.colorScheme.primary, ), diff --git a/lib/pages/login/controller.dart b/lib/pages/login/controller.dart index 5e9bc93..73f144e 100644 --- a/lib/pages/login/controller.dart +++ b/lib/pages/login/controller.dart @@ -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) { diff --git a/lib/pages/take_food/widgets/controller.dart b/lib/pages/take_food/controller.dart similarity index 97% rename from lib/pages/take_food/widgets/controller.dart rename to lib/pages/take_food/controller.dart index 9f292e5..8966083 100644 --- a/lib/pages/take_food/widgets/controller.dart +++ b/lib/pages/take_food/controller.dart @@ -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) { diff --git a/lib/pages/take_food/index.dart b/lib/pages/take_food/index.dart index 6b6cab6..b16b2f8 100644 --- a/lib/pages/take_food/index.dart +++ b/lib/pages/take_food/index.dart @@ -1,4 +1,4 @@ library; -export 'widgets/controller.dart'; +export './controller.dart'; export './view.dart'; diff --git a/lib/pages/take_food/view.dart b/lib/pages/take_food/view.dart index 3fd5d2b..f122dd2 100644 --- a/lib/pages/take_food/view.dart +++ b/lib/pages/take_food/view.dart @@ -83,10 +83,10 @@ class TakeFoodPage extends GetView { ).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 { final theme = FTheme.of(context); return [ 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), [ FButton(