DBactApi.ts 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413
  1. import type Message from '@/mode/Message'
  2. import type Chat from '@/mode/Chat'
  3. import Auth from "@/api/Auth";
  4. const dbPath = '_doc/locateDB.db'
  5. const name = 'imdata'
  6. class DBactApi {
  7. static openDb = () :Boolean => {//打开数据库
  8. return new Promise((resolve, reject) => {
  9. plus.sqlite.openDatabase({
  10. name:name,
  11. path:dbPath,
  12. success: res=> {
  13. console.log('打开数据库',res)
  14. resolve(true)
  15. },
  16. fail: function (err) {
  17. console.log('打开数据库 false',err)
  18. reject(false)
  19. },
  20. })
  21. })
  22. };
  23. static DBisOpen = () :Boolean => {//判断数据库是否打开
  24. if(plus.sqlite.isOpenDatabase({name:name,path:dbPath})){
  25. console.log('判断数据库是否打开')
  26. return true;
  27. }
  28. else{
  29. console.log('判断数据库是否打开 false')
  30. return false;
  31. }
  32. };
  33. static closeDB = () :Boolean => {//关闭数据库
  34. return new Promise((resolve, reject) => {
  35. plus.sqlite.closeDatabase({
  36. name:name,
  37. success: res=> {
  38. resolve(true)
  39. },
  40. fail: function (err) {
  41. reject(false)
  42. },
  43. })
  44. })
  45. };
  46. static deleatDB = () :Boolean => {//删除数据库
  47. return new Promise((resolve, reject) => {
  48. uni.removeSavedFile({
  49. filePath:dbPath,
  50. success() {
  51. console.log('数据库删除成功');
  52. resolve(true)
  53. },
  54. fail() {
  55. console.log('数据库删除失败');
  56. reject(false)
  57. }
  58. })
  59. })
  60. };
  61. // "id": "1813376960010895360",
  62. // "chatId": "1808714465480523777",
  63. // "type": "1",
  64. // "messageType": "0",
  65. // "content": "1111",
  66. // "mine": false,
  67. // "fromId": "48",
  68. // "timestamp": 1721177732838,
  69. // "extend": {
  70. // "atAll": false,
  71. // "atUserIds": []
  72. // },
  73. // "video": false,
  74. // "duration": 0,
  75. // "result": false,
  76. // "offline": false
  77. //创建消息表
  78. static createMSGtable(){
  79. plus.sqlite.executeSql({
  80. name:name,
  81. sql:'create table if not exists msglist_'+Auth.getUserName()+'("id" CHAR PRIMARY KEY,"chatId" CHAR,"type" CHAR,"messageType" CHAR,"content" TEXT,"mine" int,"fromId" CHAR,"timestamp" BIGINT,"extend" TEXT,"video" int,"duration" int,"result" int,"offline" int)',
  82. success: res=> {
  83. console.log('创建消息表',res)
  84. return res;
  85. },
  86. fail: function (err) {
  87. console.log(err)
  88. return false;
  89. },
  90. })
  91. };
  92. static delmsglistTable(username:string){//删除消息表
  93. return new Promise((resolve, reject) => {
  94. plus.sqlite.executeSql({
  95. name:name,
  96. sql:'DROP TABLE msglist_'+username,
  97. success: res=> {
  98. console.log('DROP TABLE',res);
  99. resolve(true)
  100. },
  101. fail: function (err) {
  102. reject(false)
  103. },
  104. })
  105. })
  106. };
  107. static insertmsg(msg: Message){//插入消息
  108. var values="('"+msg.id+"','"+msg.chatId+"','"+msg.type+"','"+msg.messageType+"','"+msg.content+"',"+msg.mine+",'"+msg.fromId+"',"+msg.timestamp+",'"+JSON.stringify(msg.extend)+"')";
  109. plus.sqlite.executeSql({
  110. name:name,
  111. sql:"insert into msglist_"+Auth.getUserName()+"('id','chatId','type','messageType','content','mine','fromId','timestamp','extend') values " +values,
  112. success: res=> {
  113. console.log('insertmsg11',res)
  114. return res;
  115. },
  116. fail: function (err) {
  117. console.log('insertmsg22',err)
  118. return false;
  119. },
  120. })
  121. };
  122. static selectmsg(chatId:string){//查询消息
  123. return new Promise((resolve, reject) => {
  124. var sql='select * from(select * from msglist_'+Auth.getUserName()+' where chatId = '+chatId+' ORDER BY "id" DESC LIMIT 10) ORDER BY "id"';
  125. //console.log('sql',sql);
  126. plus.sqlite.selectSql({
  127. name: name,
  128. sql:sql,// 'select * from userfl',
  129. success: function(res){
  130. console.log('selectSql success:',res);
  131. resolve(res)
  132. },
  133. fail: function(e){
  134. console.log('UserMsg: ',e);
  135. reject(false)
  136. }
  137. });
  138. })
  139. };
  140. static deletemsgs(idlist:Array){//删除多个消息 DELETE FROM users WHERE id IN (100, 101);
  141. var values='("'+JSON.stringify(idlist)+'")';
  142. var sql='DELETE FROM msglist_'+Auth.getUserName()+' WHERE id IN'+values;
  143. // console.log('sql',sql);
  144. // console.log(name);
  145. plus.sqlite.executeSql({
  146. name: name,
  147. sql:sql,// 'select * from userfl',
  148. success: function(data){
  149. //console.log('executeSql success: ',data);
  150. return data;
  151. },
  152. fail: function(e){
  153. console.log('UserMsg: ',e);
  154. return false;
  155. }
  156. });
  157. };
  158. static deletemsg(msg: Message){//删除单个消息 DELETE FROM users WHERE id IN (100, 101);
  159. var values='("'+msg.id+'")';
  160. var sql='DELETE FROM msglist_'+Auth.getUserName()+' WHERE id IN'+values;
  161. // console.log('sql',sql);
  162. // console.log(name);
  163. plus.sqlite.executeSql({
  164. name: name,
  165. sql:sql,// 'select * from userfl',
  166. success: function(data){
  167. //console.log('executeSql success: ',data);
  168. return data;
  169. },
  170. fail: function(e){
  171. //console.log('UserMsg: ',e);
  172. return false;
  173. }
  174. });
  175. }
  176. //-- 假设我们要将students表中id为1的学生的名字改为"John Doe"
  177. //UPDATE students SET name = 'John Doe' WHERE id = 1;
  178. static updataemsg(sql:string){
  179. plus.sqlite.executeSql({
  180. name: name,
  181. sql:sql,// 'select * from userfl',
  182. success: function(data){
  183. //console.log('executeSql success: ',data);
  184. return data;
  185. },
  186. fail: function(e){
  187. console.log('UserMsg: ',e);
  188. return false;
  189. }
  190. });
  191. }
  192. //-----------------------------------------------------------------------------------
  193. static createchattable(){
  194. plus.sqlite.executeSql({
  195. name:name,
  196. sql:'create table if not exists chatlist_'+Auth.getUserName()+'("id" CHAR PRIMARY KEY,"name" CHAR,"avatar" CHAR,"type" CHAR,"lastMessage" TEXT,"lastTime" BIGINT,"unreadCount" int,"loaded" int,"loading" int)',
  197. success: res=> {
  198. console.log('创建消息表',res)
  199. return res;
  200. },
  201. fail: function (err) {
  202. console.log(err)
  203. return false;
  204. },
  205. })
  206. };
  207. static delchatlistTable(username:string){//删除消息表
  208. return new Promise((resolve, reject) => {
  209. plus.sqlite.executeSql({
  210. name:name,
  211. sql:'DROP TABLE chatlist_'+username,
  212. success: res=> {
  213. //console.log('DROP TABLE',res);
  214. resolve(true)
  215. },
  216. fail: function (err) {
  217. reject(false)
  218. },
  219. })
  220. })
  221. };
  222. static insertchat(chat: Chat){//插入消息
  223. var values="('"+chat.id+"','"+chat.name+"','"+chat.avatar+"','"+chat.type+"','"+chat.lastMessage+"',"+chat.lastTime+","+chat.unreadCount+","+chat.loaded+","+chat.loading+")";
  224. plus.sqlite.executeSql({
  225. name:name,
  226. sql:"INSERT OR REPLACE INTO chatlist_"+Auth.getUserName()+"('id','name','avatar','type','lastMessage','lastTime','unreadCount','loaded','loading') values " +values,
  227. success: res=> {
  228. //console.log('insertmsg1',res)
  229. return res;
  230. },
  231. fail: function (err) {
  232. //console.log('insertmsg2',err)
  233. return false;
  234. },
  235. })
  236. };
  237. static selectchats(){//查询消息
  238. return new Promise((resolve, reject) => {
  239. var sql='select * from chatlist_'+Auth.getUserName()+';';
  240. console.log('sql',sql);
  241. plus.sqlite.selectSql({
  242. name: name,
  243. sql:sql,// 'select * from userfl',
  244. success: function(res){
  245. //console.log('selectchats success:',res);
  246. resolve(res)
  247. },
  248. fail: function(e){
  249. console.log('UserMsg: ',e);
  250. reject(false)
  251. }
  252. });
  253. })
  254. };
  255. //重整消息本地数据库----------------------------------------
  256. //创建消息表
  257. static createLocalMSGtable(){
  258. plus.sqlite.executeSql({
  259. name:name,
  260. sql:'create table if not exists lcmsglist_'+Auth.getUserName()+'("id" CHAR PRIMARY KEY,"chatId" CHAR,"type" CHAR,"messageType" CHAR,"timestamp" BIGINT,"Message" TEXT)',
  261. success: res=> {
  262. console.log('创建消息表',res)
  263. return res;
  264. },
  265. fail: function (err) {
  266. console.log(err)
  267. return false;
  268. },
  269. })
  270. };
  271. static delLocalmsglistTable(username:string){//删除消息表
  272. return new Promise((resolve, reject) => {
  273. plus.sqlite.executeSql({
  274. name:name,
  275. sql:'DROP TABLE lcmsglist_'+username,
  276. success: res=> {
  277. console.log('DROP TABLE',res);
  278. resolve(true)
  279. },
  280. fail: function (err) {
  281. reject(false)
  282. },
  283. })
  284. })
  285. };
  286. static insertLocalmsg(msg: Message){//插入消息
  287. var values="('"+msg.id+"','"+msg.chatId+"','"+msg.type+"','"+msg.messageType+"',"+msg.timestamp+",'"+JSON.stringify(msg)+"')";
  288. //console.log(msg);
  289. plus.sqlite.executeSql({
  290. name:name,
  291. sql:"insert into lcmsglist_"+Auth.getUserName()+"('id','chatId','type','messageType','timestamp','Message') values " +values,
  292. success: res=> {
  293. //console.log('insertmsg1',res)
  294. return res;
  295. },
  296. fail: function (err) {
  297. // console.log('insertmsg2',err)
  298. return false;
  299. },
  300. })
  301. };
  302. static selectLocalmsg(chatId:string){//查询消息
  303. return new Promise((resolve, reject) => {
  304. var sql='select * from(select * from lcmsglist_'+Auth.getUserName()+' where chatId = '+chatId+' ORDER BY "timestamp" DESC LIMIT 10) ORDER BY "timestamp"';
  305. //console.log('sql',sql);
  306. plus.sqlite.selectSql({
  307. name: name,
  308. sql:sql,// 'select * from userfl',
  309. success: function(res){
  310. //console.log('selectSql success:',res);
  311. resolve(res)
  312. },
  313. fail: function(e){
  314. //console.log('UserMsg: ',e);
  315. reject(false)
  316. }
  317. });
  318. })
  319. };
  320. static selectLocalmsgType(chatId:string,messageType:string,page:number){//查询消息
  321. return new Promise((resolve, reject) => {
  322. var sql='';
  323. if(messageType&&messageType!=''){
  324. sql='select * from(select * from lcmsglist_'+Auth.getUserName()+' where chatId = '+chatId+' AND messageType='+messageType+' ORDER BY "timestamp" DESC LIMIT '+(page-1)*20+',20) ORDER BY "timestamp" DESC';
  325. }
  326. else{
  327. sql='select * from(select * from lcmsglist_'+Auth.getUserName()+' where chatId = '+chatId+' ORDER BY "timestamp" DESC LIMIT '+(page-1)*20+',20) ORDER BY "timestamp" DESC';
  328. }
  329. console.log('sql',sql);
  330. plus.sqlite.selectSql({
  331. name: name,
  332. sql:sql,// 'select * from userfl',
  333. success: function(res){
  334. //console.log('selectSql success:',res);
  335. resolve(res)
  336. },
  337. fail: function(e){
  338. //console.log('UserMsg: ',e);
  339. reject(false)
  340. }
  341. });
  342. })
  343. };
  344. static deleteLocalmsgs(idlist:Array){//删除多个消息 DELETE FROM users WHERE id IN (100, 101);
  345. var values='("'+JSON.stringify(idlist)+'")';
  346. var sql='DELETE FROM lcmsglist_'+Auth.getUserName()+' WHERE id IN'+values;
  347. // console.log('sql',sql);
  348. // console.log(name);
  349. plus.sqlite.executeSql({
  350. name: name,
  351. sql:sql,// 'select * from userfl',
  352. success: function(data){
  353. //console.log('executeSql success: ',data);
  354. return data;
  355. },
  356. fail: function(e){
  357. console.log('UserMsg: ',e);
  358. return false;
  359. }
  360. });
  361. };
  362. static deleteLocalmsg(msg: Message){//删除单个消息 DELETE FROM users WHERE id IN (100, 101);
  363. var values='("'+msg.id+'")';
  364. var sql='DELETE FROM lcmsglist_'+Auth.getUserName()+' WHERE id IN'+values;
  365. console.log('sql',sql);
  366. // console.log(name);
  367. plus.sqlite.executeSql({
  368. name: name,
  369. sql:sql,// 'select * from userfl',
  370. success: function(data){
  371. console.log('executeSql success: ',data);
  372. return data;
  373. },
  374. fail: function(e){
  375. console.log('UserMsg: ',e);
  376. return false;
  377. }
  378. });
  379. }
  380. static deleteMyLocalmsg(msg: Message){//删除单个消息 DELETE FROM users WHERE id IN (100, 101);
  381. var sql='DELETE FROM lcmsglist_'+Auth.getUserName()+' WHERE id=='+JSON.stringify(msg.localtime);
  382. console.log('sql',sql);
  383. // console.log(name);
  384. plus.sqlite.executeSql({
  385. name: name,
  386. sql:sql,// 'select * from userfl',
  387. success: function(data){
  388. //console.log('deleteMyLocalmsg success: ',data);
  389. return data;
  390. },
  391. fail: function(e){
  392. console.log('deleteMyLocalmsg: ',e);
  393. return false;
  394. }
  395. });
  396. }
  397. }
  398. export default DBactApi;