Hibok
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 
 
 
 

246 satır
7.5 KiB

  1. import 'package:chat/data/UserData.dart';
  2. import 'package:chat/data/chat_data_mgr.dart';
  3. import 'package:chat/models/group_info_model.dart';
  4. import 'package:chat/utils/sql_model.dart';
  5. import 'package:chat/utils/sql_util.dart';
  6. import 'package:sqflite/sqflite.dart';
  7. class GroupInfoTableModel {
  8. final String table = 'group_info';
  9. Sql sql;
  10. GroupInfoTableModel() {
  11. sql = Sql.setTable(table);
  12. }
  13. createTable() async {
  14. print('创建表$table');
  15. await sql.createTable(table, '''rowId INTEGER PRIMARY KEY,
  16. userId INTEGER,
  17. sessionId INTEGER,
  18. topTag INTEGER,
  19. describe TEXT,
  20. decribeTime INTEGER,
  21. name TEXT,
  22. hosterId INTEGER,
  23. image TEXT,
  24. my_name TEXT,
  25. messageFree INTEGER,
  26. ask_switch INTEGER,
  27. is_idle INTEGER,
  28. is_save INTEGER,
  29. show_name INTEGER''');
  30. }
  31. Future clear() async {
  32. return sql.clearTable(table);
  33. }
  34. Future clearSelfData() async {
  35. var curUserId = UserData().basicInfo.userId;
  36. var res =
  37. await sql.db.delete(table, where: 'userId=?', whereArgs: [curUserId]);
  38. print('删除结果$res');
  39. }
  40. //获取群的数量
  41. Future<int> getGroupCount() async {
  42. var curUserId = UserData().basicInfo.userId;
  43. var res = await sql.db.rawQuery(
  44. 'select count(*) as count from $table where userId=$curUserId');
  45. var count = Sqflite.firstIntValue(res);
  46. print('本地数据群数量$count');
  47. return count;
  48. }
  49. //查询群信息
  50. Future<List<GroupInfoModel>> getGroupList() async {
  51. var curUserId = UserData().basicInfo.userId;
  52. List lists = await sql.query(table, where: 'userId = $curUserId ');
  53. print('群查询结果${lists.length}');
  54. List<GroupInfoModel> result = [];
  55. for (var i = 0; i < lists.length; i++) {
  56. var info = GroupInfoModel.fromJson(lists[i]);
  57. //查询群成员
  58. var members =
  59. await SqlUtil.groupMemberTableModel.getMemberInfo(info.sessionId);
  60. var lastMsg = ChatDataMgr().getLastMsg(info.sessionId, true);
  61. for (var i = 0; i < members.length; i++) {
  62. if (members[i].memberId == curUserId) {
  63. info.isInGroup = members[i].inGroup > 0;
  64. break;
  65. }
  66. }
  67. info.members = members;
  68. info.updateLastMsg(lastMsg);
  69. result.add(info);
  70. }
  71. return result;
  72. }
  73. //清楚群缓存
  74. Future clearGroupCache() async {
  75. print('clearGroupCache');
  76. var curUserId = UserData().basicInfo.userId;
  77. var res =
  78. await sql.db.delete(table, where: 'userId=?', whereArgs: [curUserId]);
  79. print('clearGroupCache $res');
  80. }
  81. //删除群
  82. Future deleteGroup(int sessionId) async {
  83. print('DB删除群 $sessionId');
  84. var curUserId = UserData().basicInfo.userId;
  85. var res = await sql.db.delete(table,
  86. where: 'userId=? and sessionId = ?', whereArgs: [curUserId, sessionId]);
  87. print('删除结果$res');
  88. }
  89. //该群是否存在
  90. Future isExistGroup(int sessionId) async {
  91. print('该群是否存在 $sessionId');
  92. var curUserId = UserData().basicInfo.userId;
  93. var res = await sql.db.rawQuery(
  94. 'select count(*) as count from $table where userId=$curUserId and sessionId = $sessionId');
  95. var count = res[0]['count'];
  96. print('该群是否存在 ${count > 0}');
  97. return count > 0;
  98. }
  99. //插入新的群
  100. Future addGroup(GroupInfoModel groupInfo) async {
  101. if (groupInfo.sessionId == null) {
  102. print('sessionId 为空.............................');
  103. return;
  104. }
  105. print('DB插入新群:${groupInfo.sessionId}');
  106. var curUserId = UserData().basicInfo.userId;
  107. await sql.insert({
  108. 'userId': curUserId,
  109. 'sessionId': groupInfo.sessionId,
  110. 'topTag': groupInfo.topTag,
  111. 'describe': groupInfo.describe,
  112. 'decribeTime': groupInfo.decribeTime ?? 0,
  113. 'name': groupInfo.name,
  114. 'hosterId': groupInfo.hosterId,
  115. 'image': groupInfo.image,
  116. 'my_name': groupInfo.myName,
  117. 'messageFree': groupInfo.messageFree,
  118. 'is_save': groupInfo.isSave,
  119. 'show_name': groupInfo.isShowName
  120. });
  121. }
  122. Future updateGroup(GroupInfoModel groupInfo) async {
  123. print('更新群:${groupInfo.sessionId}');
  124. if (groupInfo.sessionId == null) {
  125. print('sessionId 为空.............................');
  126. return;
  127. }
  128. var curUserId = UserData().basicInfo.userId;
  129. await sql.insert({
  130. 'userId': curUserId,
  131. 'sessionId': groupInfo.sessionId,
  132. 'topTag': groupInfo.topTag,
  133. 'describe': groupInfo.describe,
  134. 'decribeTime': groupInfo.decribeTime ?? 0,
  135. 'name': groupInfo.name,
  136. 'hosterId': groupInfo.hosterId,
  137. 'image': groupInfo.image,
  138. 'my_name': groupInfo.myName,
  139. 'messageFree': groupInfo.messageFree,
  140. 'is_save': groupInfo.isSave,
  141. 'show_name': groupInfo.isShowName
  142. });
  143. }
  144. //修改群名称
  145. updateGroupName(int session, String groupName) async {
  146. print('Db修改群名称');
  147. var curUserId = UserData().basicInfo.userId;
  148. sql.db.update(table, {'name': groupName},
  149. where: 'userId=? and sessionId = ?', whereArgs: [curUserId, session]);
  150. }
  151. //修改群头像
  152. updateImage(int sessionId, String img) async {
  153. print('修改群头像');
  154. var curUserId = UserData().basicInfo.userId;
  155. sql.db.update(table, {'image': img},
  156. where: 'userId=? and sessionId = ?', whereArgs: [curUserId, sessionId]);
  157. }
  158. //修改群验证开关
  159. updateAskSwitch(int sessionId, int ask) {
  160. print('修改群验证开关');
  161. var curUserId = UserData().basicInfo.userId;
  162. sql.db.update(table, {'ask_switch': ask},
  163. where: 'userId=? and sessionId = ?', whereArgs: [curUserId, sessionId]);
  164. }
  165. //修改置顶设置
  166. updateTopTag(int sessionId, int topTag) {
  167. print('修改置顶设置');
  168. var curUserId = UserData().basicInfo.userId;
  169. sql.db.update(table, {'topTag': topTag},
  170. where: 'userId=? and sessionId = ?', whereArgs: [curUserId, sessionId]);
  171. }
  172. //修改是否在聊天中展示用户名称
  173. updateShowNameSwitch(int sessionId, int isShow) {
  174. print('修改是否在聊天中展示用户名称:$isShow');
  175. var curUserId = UserData().basicInfo.userId;
  176. sql.db.update(table, {'show_name': isShow},
  177. where: 'userId=? and sessionId = ?', whereArgs: [curUserId, sessionId]);
  178. }
  179. //修改群主
  180. updateHoster(int session, int hostId) async {
  181. var curUserId = UserData().basicInfo.userId;
  182. sql.db.update(table, {'hosterId': hostId},
  183. where: 'userId=? and sessionId = ?', whereArgs: [curUserId, session]);
  184. }
  185. //修改自己的别名
  186. updateMyName(int session, String myName) async {
  187. var curUserId = UserData().basicInfo.userId;
  188. sql.db.update(table, {'my_name': myName},
  189. where: 'userId=? and sessionId = ?', whereArgs: [curUserId, session]);
  190. }
  191. //修改群公告
  192. updateGroupNotice(int session, String description) async {
  193. var curUserId = UserData().basicInfo.userId;
  194. sql.db.update(table, {'describe': description},
  195. where: 'userId=? and sessionId = ?', whereArgs: [curUserId, session]);
  196. }
  197. //修改群免打扰
  198. updateGroupMesssageFree(int session, int isOpen) async {
  199. var curUserId = UserData().basicInfo.userId;
  200. sql.db.update(table, {'messageFree': isOpen},
  201. where: 'userId=? and sessionId = ?', whereArgs: [curUserId, session]);
  202. }
  203. }