Hibok
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 
 
 

138 řádky
4.1 KiB

  1. import 'package:chat/data/UserData.dart';
  2. import 'package:chat/models/group_info_model.dart';
  3. import 'package:chat/utils/sql_model.dart';
  4. import 'group_member_model.dart';
  5. class GroupMemberTableModel {
  6. final String table = 'group_member';
  7. Sql sql;
  8. GroupMemberTableModel() {
  9. sql = Sql.setTable(table);
  10. }
  11. createTable() async {
  12. print('创建表$table');
  13. await sql.createTable(table, '''rowId INTEGER PRIMARY KEY,
  14. userId INTEGER,
  15. sessionId INTEGER,
  16. memberId INTEGER,
  17. identity INTEGER,
  18. refName TEXT,
  19. nickName TEXT,
  20. inGroup INTEGER,
  21. avtar TEXT''');
  22. }
  23. Future clear() {
  24. return sql.clearTable(table);
  25. }
  26. Future clearSelfData() async {
  27. var curUserId = UserData().basicInfo.userId;
  28. var res =
  29. await sql.db.delete(table, where: 'userId=?', whereArgs: [curUserId]);
  30. print('删除结果$res');
  31. }
  32. void addSingleMember(int sessionId, GroupMemberModel memberModel) async {
  33. var curUserId = UserData().basicInfo.userId;
  34. await sql.insert({
  35. 'userId': curUserId,
  36. 'sessionId': sessionId,
  37. 'memberId': memberModel.memberId,
  38. 'identity': memberModel.identity,
  39. 'refName': memberModel.refName,
  40. 'nickName': memberModel.nickName,
  41. 'inGroup': memberModel.inGroup,
  42. 'avtar': memberModel.avtar,
  43. });
  44. }
  45. //更改成员在群状态
  46. void updateMemberState(int sessionId, int uId, int state) {
  47. var curUserId = UserData().basicInfo.userId;
  48. sql.db.update(table, {'inGroup': state},
  49. where: 'userId=? and sessionId = ? and memberId = ?',
  50. whereArgs: [curUserId, sessionId, uId]);
  51. }
  52. //批量插入群成员
  53. void addMembers(GroupInfoModel infoModel) {
  54. print('插入群成员到数据库');
  55. for (var i = 0; i < infoModel.members.length; i++) {
  56. addSingleMember(infoModel.sessionId, infoModel.members[i]);
  57. }
  58. }
  59. //批量删除群成员
  60. void deleteMembers(int sessionId) {
  61. var curUserId = UserData().basicInfo.userId;
  62. sql.db.delete(table,
  63. where: 'userId=? and sessionId = ?', whereArgs: [curUserId, sessionId]);
  64. }
  65. //删除群成员缓存
  66. void clearMemberCache() {
  67. var curUserId = UserData().basicInfo.userId;
  68. sql.db.delete(table, where: 'userId=?', whereArgs: [curUserId]);
  69. }
  70. //删除群成员
  71. void deleteMember(int sessionId, int uId) {
  72. var curUserId = UserData().basicInfo.userId;
  73. print('数据库删除成员$uId');
  74. sql.db.delete(table,
  75. where: 'userId=? and sessionId = ? and memberId = ?',
  76. whereArgs: [curUserId, sessionId, uId]);
  77. }
  78. //查询群成员信息
  79. Future<List<GroupMemberModel>> getMemberInfo(int sessionId) async {
  80. var curUserId = UserData().basicInfo.userId;
  81. List lists = await sql.query(table,
  82. where: 'userId = ? and sessionId = ?',
  83. whereArgs: [curUserId, sessionId]);
  84. List<GroupMemberModel> result = [];
  85. for (var i = 0; i < lists.length; i++) {
  86. var info = GroupMemberModel.fromJson(lists[i]);
  87. result.add(info);
  88. }
  89. return result;
  90. }
  91. //修改成员身份
  92. updateMemberIdentity(int session, int uId, int identity) async {
  93. var curUserId = UserData().basicInfo.userId;
  94. sql.db.update(table, {'identity': identity},
  95. where: 'userId=? and sessionId = ? and memberId = ?',
  96. whereArgs: [curUserId, session, uId]);
  97. }
  98. //修改群成员的别名
  99. updateMemberRefName(int session, int uId, String refName) async {
  100. var curUserId = UserData().basicInfo.userId;
  101. sql.db.update(table, {'refName': refName},
  102. where: 'userId=? and sessionId = ? and memberId = ?',
  103. whereArgs: [curUserId, session, uId]);
  104. }
  105. //修改群公告
  106. updateDescription(int session, String description, int time) async {
  107. var curUserId = UserData().basicInfo.userId;
  108. sql.db.update(table, {'describe': description, 'decribeTime': time},
  109. where: 'userId=? and sessionId = ?', whereArgs: [curUserId, session]);
  110. }
  111. }