| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- import 'dart:convert';
- import 'package:bbyyy/beans/msg_bean_data_entity.dart';
- 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<MessageBeanContent> 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<Map<String, dynamic>> 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() {}
- }
|