import 'package:bbyyy/beans/message_bean_entity.dart'; import 'package:bbyyy/msgDB/sql_manager.dart'; import 'package:bbyyy/my_tools/event_bus.dart'; import 'package:bbyyy/my_tools/my_cookie.dart'; import 'package:sqflite/sqflite.dart'; class MsgDB extends BaseDbProvider { String name; final String uuid = 'uuid'; final String sentAt = 'sent_at'; final String receiverUid = 'receiver_uid'; final String receiverName = 'receiver_name'; final String receiverPic = 'receiver_pic'; final String senderUid = 'sender_uid'; final String senderName = 'sender_name'; final String senderPic = 'sender_pic'; final String type = 'type'; final String content = 'content'; MsgDB(this.name); @override createTableString() { return '''CREATE TABLE $name ($uuid TEXT, $sentAt TEXT, $receiverUid INT, $receiverName TEXT, $receiverPic TEXT, $senderUid INT, $senderName TEXT, $senderPic TEXT, $type TEXT, $content TEXT)'''; } @override tableName() { return name; } //添加表数据 addTableData(List data) async { Database db = await getDataBase(); Batch batch = db.batch(); String roomName = this.name.replaceAll('table', '').replaceAll('_', '-'); String lastTime = MyCookie().prefs.getString('最后阅读时间$roomName'); data.forEach((element) { DateTime d1 = DateTime.parse(element.sentAt); DateTime d2; try { d2 = DateTime.parse(lastTime); } catch (e) {} if (d2 == null) { int noRead = MyCookie().prefs.getInt('未读消息$roomName'); if (noRead == null) { noRead = 0; } noRead++; MyCookie().prefs.setInt('未读消息$roomName', noRead); } else { if (d1.isAfter(d2)) { int noRead = MyCookie().prefs.getInt('未读消息$roomName'); noRead++; MyCookie().prefs.setInt('未读消息$roomName', noRead); } else {} } batch.insert(name, element.toJson()); }); print(await batch.commit()); } //删除表数据 deleteTableData() async { Database db = await getDataBase(); int count = await db.rawDelete('DELETE FROM $name'); EventBus().emit('delDBChatMsg$name'); return count == 1; } //撤回消息删除数据 withdrawMessage(String uuID) async { Database db = await getDataBase(); int count = await db.rawDelete('DELETE FROM $name WHERE $uuid = \'$uuID\''); EventBus().emit('withdrawMessage'); return count == 1; } //更新表数据 updateTableData(String c, String ID) async { Database db = await getDataBase(); int count = await db .rawUpdate('UPDATE $name SET $content = \'$c\' WHERE $uuid = \'$ID\''); EventBus().emit('updateTableData'); return count == 1; } //查询表数据 queryTableData(int page, int count) async { Database db = await getDataBase(); List> maps = await db.rawQuery( "select distinct ${this.uuid}," "${this.sentAt}," "${this.receiverUid}," "${this.receiverName}," "${this.receiverPic}," "${this.senderUid}," "${this.senderName}," "${this.senderPic}," "${this.type}," "${this.content}" " from $name ORDER BY ${this.sentAt} DESC LIMIT ${count * (page - 1)},$count"); return maps; } //删除保存记录前的聊天数据 delPassMsg() {} }