import 'package:chat/data/UserData.dart'; import 'package:chat/data/chat_data_mgr.dart'; import 'package:chat/models/group_info_model.dart'; import 'package:chat/utils/sql_model.dart'; import 'package:chat/utils/sql_util.dart'; import 'package:sqflite/sqflite.dart'; class GroupInfoTableModel { final String table = 'group_info'; Sql sql; GroupInfoTableModel() { sql = Sql.setTable(table); } createTable() async { print('创建表$table'); await sql.createTable(table, '''rowId INTEGER PRIMARY KEY, userId INTEGER, sessionId INTEGER, topTag INTEGER, describe TEXT, decribeTime INTEGER, name TEXT, hosterId INTEGER, image TEXT, my_name TEXT, messageFree INTEGER, ask_switch INTEGER, is_idle INTEGER, is_save INTEGER, show_name INTEGER'''); } Future clear() async { return sql.clearTable(table); } Future clearSelfData() async { var curUserId = UserData().basicInfo.userId; var res = await sql.db.delete(table, where: 'userId=?', whereArgs: [curUserId]); print('删除结果$res'); } //获取群的数量 Future getGroupCount() async { var curUserId = UserData().basicInfo.userId; var res = await sql.db.rawQuery( 'select count(*) as count from $table where userId=$curUserId'); var count = Sqflite.firstIntValue(res); print('本地数据群数量$count'); return count; } //查询群信息 Future> getGroupList() async { var curUserId = UserData().basicInfo.userId; List lists = await sql.query(table, where: 'userId = $curUserId '); print('群查询结果${lists.length}'); List result = []; for (var i = 0; i < lists.length; i++) { var info = GroupInfoModel.fromJson(lists[i]); //查询群成员 var members = await SqlUtil.groupMemberTableModel.getMemberInfo(info.sessionId); var lastMsg = ChatDataMgr().getLastMsg(info.sessionId, true); for (var i = 0; i < members.length; i++) { if (members[i].memberId == curUserId) { info.isInGroup = members[i].inGroup > 0; break; } } info.members = members; info.updateLastMsg(lastMsg); result.add(info); } return result; } //清楚群缓存 Future clearGroupCache() async { print('clearGroupCache'); var curUserId = UserData().basicInfo.userId; var res = await sql.db.delete(table, where: 'userId=?', whereArgs: [curUserId]); print('clearGroupCache $res'); } //删除群 Future deleteGroup(int sessionId) async { print('DB删除群 $sessionId'); var curUserId = UserData().basicInfo.userId; var res = await sql.db.delete(table, where: 'userId=? and sessionId = ?', whereArgs: [curUserId, sessionId]); print('删除结果$res'); } //该群是否存在 Future isExistGroup(int sessionId) async { print('该群是否存在 $sessionId'); var curUserId = UserData().basicInfo.userId; var res = await sql.db.rawQuery( 'select count(*) as count from $table where userId=$curUserId and sessionId = $sessionId'); var count = res[0]['count']; print('该群是否存在 ${count > 0}'); return count > 0; } //插入新的群 Future addGroup(GroupInfoModel groupInfo) async { if (groupInfo.sessionId == null) { print('sessionId 为空.............................'); return; } print('DB插入新群:${groupInfo.sessionId}'); var curUserId = UserData().basicInfo.userId; await sql.insert({ 'userId': curUserId, 'sessionId': groupInfo.sessionId, 'topTag': groupInfo.topTag, 'describe': groupInfo.describe, 'decribeTime': groupInfo.decribeTime ?? 0, 'name': groupInfo.name, 'hosterId': groupInfo.hosterId, 'image': groupInfo.image, 'my_name': groupInfo.myName, 'messageFree': groupInfo.messageFree, 'is_save': groupInfo.isSave, 'show_name': groupInfo.isShowName }); } Future updateGroup(GroupInfoModel groupInfo) async { print('更新群:${groupInfo.sessionId}'); if (groupInfo.sessionId == null) { print('sessionId 为空.............................'); return; } var curUserId = UserData().basicInfo.userId; await sql.insert({ 'userId': curUserId, 'sessionId': groupInfo.sessionId, 'topTag': groupInfo.topTag, 'describe': groupInfo.describe, 'decribeTime': groupInfo.decribeTime ?? 0, 'name': groupInfo.name, 'hosterId': groupInfo.hosterId, 'image': groupInfo.image, 'my_name': groupInfo.myName, 'messageFree': groupInfo.messageFree, 'is_save': groupInfo.isSave, 'show_name': groupInfo.isShowName }); } //修改群名称 updateGroupName(int session, String groupName) async { print('Db修改群名称'); var curUserId = UserData().basicInfo.userId; sql.db.update(table, {'name': groupName}, where: 'userId=? and sessionId = ?', whereArgs: [curUserId, session]); } //修改群头像 updateImage(int sessionId, String img) async { print('修改群头像'); var curUserId = UserData().basicInfo.userId; sql.db.update(table, {'image': img}, where: 'userId=? and sessionId = ?', whereArgs: [curUserId, sessionId]); } //修改群验证开关 updateAskSwitch(int sessionId, int ask) { print('修改群验证开关'); var curUserId = UserData().basicInfo.userId; sql.db.update(table, {'ask_switch': ask}, where: 'userId=? and sessionId = ?', whereArgs: [curUserId, sessionId]); } //修改置顶设置 updateTopTag(int sessionId, int topTag) { print('修改置顶设置'); var curUserId = UserData().basicInfo.userId; sql.db.update(table, {'topTag': topTag}, where: 'userId=? and sessionId = ?', whereArgs: [curUserId, sessionId]); } //修改是否在聊天中展示用户名称 updateShowNameSwitch(int sessionId, int isShow) { print('修改是否在聊天中展示用户名称:$isShow'); var curUserId = UserData().basicInfo.userId; sql.db.update(table, {'show_name': isShow}, where: 'userId=? and sessionId = ?', whereArgs: [curUserId, sessionId]); } //修改群主 updateHoster(int session, int hostId) async { var curUserId = UserData().basicInfo.userId; sql.db.update(table, {'hosterId': hostId}, where: 'userId=? and sessionId = ?', whereArgs: [curUserId, session]); } //修改自己的别名 updateMyName(int session, String myName) async { var curUserId = UserData().basicInfo.userId; sql.db.update(table, {'my_name': myName}, where: 'userId=? and sessionId = ?', whereArgs: [curUserId, session]); } //修改群公告 updateGroupNotice(int session, String description) async { var curUserId = UserData().basicInfo.userId; sql.db.update(table, {'describe': description}, where: 'userId=? and sessionId = ?', whereArgs: [curUserId, session]); } //修改群免打扰 updateGroupMesssageFree(int session, int isOpen) async { var curUserId = UserData().basicInfo.userId; sql.db.update(table, {'messageFree': isOpen}, where: 'userId=? and sessionId = ?', whereArgs: [curUserId, session]); } }