import 'package:chat/data/UserData.dart'; import 'package:chat/models/group_info_model.dart'; import 'package:chat/utils/sql_model.dart'; import 'group_member_model.dart'; class GroupMemberTableModel { final String table = 'group_member'; Sql sql; GroupMemberTableModel() { sql = Sql.setTable(table); } createTable() async { print('创建表$table'); await sql.createTable(table, '''rowId INTEGER PRIMARY KEY, userId INTEGER, sessionId INTEGER, memberId INTEGER, identity INTEGER, refName TEXT, nickName TEXT, inGroup INTEGER, avtar TEXT'''); } Future clear() { 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'); } void addSingleMember(int sessionId, GroupMemberModel memberModel) async { var curUserId = UserData().basicInfo.userId; await sql.insert({ 'userId': curUserId, 'sessionId': sessionId, 'memberId': memberModel.memberId, 'identity': memberModel.identity, 'refName': memberModel.refName, 'nickName': memberModel.nickName, 'inGroup': memberModel.inGroup, 'avtar': memberModel.avtar, }); } //更改成员在群状态 void updateMemberState(int sessionId, int uId, int state) { var curUserId = UserData().basicInfo.userId; sql.db.update(table, {'inGroup': state}, where: 'userId=? and sessionId = ? and memberId = ?', whereArgs: [curUserId, sessionId, uId]); } //批量插入群成员 void addMembers(GroupInfoModel infoModel) { print('插入群成员到数据库'); for (var i = 0; i < infoModel.members.length; i++) { addSingleMember(infoModel.sessionId, infoModel.members[i]); } } //批量删除群成员 void deleteMembers(int sessionId) { var curUserId = UserData().basicInfo.userId; sql.db.delete(table, where: 'userId=? and sessionId = ?', whereArgs: [curUserId, sessionId]); } //删除群成员缓存 void clearMemberCache() { var curUserId = UserData().basicInfo.userId; sql.db.delete(table, where: 'userId=?', whereArgs: [curUserId]); } //删除群成员 void deleteMember(int sessionId, int uId) { var curUserId = UserData().basicInfo.userId; print('数据库删除成员$uId'); sql.db.delete(table, where: 'userId=? and sessionId = ? and memberId = ?', whereArgs: [curUserId, sessionId, uId]); } //查询群成员信息 Future> getMemberInfo(int sessionId) async { var curUserId = UserData().basicInfo.userId; List lists = await sql.query(table, where: 'userId = ? and sessionId = ?', whereArgs: [curUserId, sessionId]); List result = []; for (var i = 0; i < lists.length; i++) { var info = GroupMemberModel.fromJson(lists[i]); result.add(info); } return result; } //修改成员身份 updateMemberIdentity(int session, int uId, int identity) async { var curUserId = UserData().basicInfo.userId; sql.db.update(table, {'identity': identity}, where: 'userId=? and sessionId = ? and memberId = ?', whereArgs: [curUserId, session, uId]); } //修改群成员的别名 updateMemberRefName(int session, int uId, String refName) async { var curUserId = UserData().basicInfo.userId; sql.db.update(table, {'refName': refName}, where: 'userId=? and sessionId = ? and memberId = ?', whereArgs: [curUserId, session, uId]); } //修改群公告 updateDescription(int session, String description, int time) async { var curUserId = UserData().basicInfo.userId; sql.db.update(table, {'describe': description, 'decribeTime': time}, where: 'userId=? and sessionId = ?', whereArgs: [curUserId, session]); } }