1/** 2 * Copyright (c) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16import BaseModel from "./BaseModel"; 17import MorkDataModel from "./MorkDataModel"; 18import common from "../data/commonData"; 19import mmsTable from "../data/tableData"; 20import HiLog from "../utils/HiLog" 21import LooseObject from "../data/LooseObject" 22import dataShare from "@ohos.data.dataShare"; 23import dataSharePredicates from "@ohos.data.dataSharePredicates"; 24 25const TAG = "ConversationModel"; 26 27let morkDataModel = new MorkDataModel(); 28 29export default class ConversationModel extends BaseModel { 30 async queryMessageDetail(actionData, callback, context?) { 31 let dataHelper = await dataShare.createDataShareHelper(context ? context : globalThis.mmsContext, 32 common.string.URI_MESSAGE_LOG); 33 var resultColumns = this.buildResultColumns(); 34 let condition = this.buildQueryCondition(actionData); 35 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 36 dataHelper.query(managerUri, condition, resultColumns).then(resultSet => { 37 let resultList = []; 38 if( !resultSet.goToFirstRow() ) { 39 callback(this.encapsulateReturnResult(common.int.SUCCESS, resultList)); 40 return; 41 } 42 if (resultSet != undefined) { 43 do { 44 let result: LooseObject = {}; 45 this.dealBaseColumnsData(result, resultSet); 46 result.operatorServiceNumber = resultSet.getString(resultSet.getColumnIndex("operator_service_number")); 47 result.msgCode = resultSet.getString(resultSet.getColumnIndex("msg_code")); 48 result.isLock = resultSet.getString(resultSet.getColumnIndex("is_lock")); 49 result.isRead = resultSet.getString(resultSet.getColumnIndex("is_read")); 50 result.isCollect = resultSet.getString(resultSet.getColumnIndex("is_collect")); 51 result.sessionType = resultSet.getString(resultSet.getColumnIndex("session_type")); 52 result.retryNumber = resultSet.getString(resultSet.getColumnIndex("retry_number")); 53 result.isSubsection = resultSet.getString(resultSet.getColumnIndex("is_subsection")); 54 result.sessionId = resultSet.getString(resultSet.getColumnIndex("session_id")); 55 result.groupId = resultSet.getString(resultSet.getColumnIndex("group_id")); 56 result.isSender = resultSet.getString(resultSet.getColumnIndex("is_sender")); 57 result.isSendReport = resultSet.getString(resultSet.getColumnIndex("is_send_report")); 58 resultList.push(result); 59 } while (resultSet.goToNextRow()) 60 } 61 callback(this.encapsulateReturnResult(common.int.SUCCESS, resultList)); 62 }).catch(error => { 63 HiLog.e(TAG, "queryMessageDetail, error: " + JSON.stringify(error.message)); 64 callback(this.encapsulateReturnCode(common.int.FAILURE)); 65 }); 66 } 67 68 buildQueryCondition(actionData) { 69 let condition = new dataSharePredicates.DataSharePredicates(); 70 if (actionData.isDraft != null && actionData.isDraft) { 71 condition.equalTo(mmsTable.messageInfo.groupId, actionData.groupId); 72 condition.equalTo(mmsTable.messageInfo.msgState, actionData.sendStatus); 73 } 74 if (actionData.threadId != null) { 75 let sessionId = actionData.threadId + common.string.EMPTY_STR; 76 condition.equalTo(mmsTable.messageInfo.sessionId, sessionId); 77 } 78 if (actionData.threadIds != null && actionData.threadIds.length > 0) { 79 let sessionIds = this.groupIdToString(actionData.threadIds); 80 condition.in(mmsTable.messageInfo.sessionId, sessionIds); 81 } 82 if (actionData.msgIds != null && actionData.msgIds.length != 0) { 83 condition.in(mmsTable.messageInfo.msgId, actionData.msgIds); 84 } 85 if (actionData.hasLock != null) { 86 condition.equalTo(mmsTable.messageInfo.isLock, actionData.hasLock); 87 } 88 if (actionData.hasRead != null) { 89 condition.equalTo(mmsTable.messageInfo.isRead, actionData.hasRead); 90 } 91 return condition; 92 } 93 94 buildBaseColumns() { 95 var resultColumns = [ 96 mmsTable.messageInfo.msgId, 97 mmsTable.messageInfo.slotId, 98 // Recipient Mobile Number 99 mmsTable.messageInfo.receiverNumber, 100 mmsTable.messageInfo.senderNumber, 101 mmsTable.messageInfo.startTime, 102 mmsTable.messageInfo.endTime, 103 mmsTable.messageInfo.msgType, 104 // sms = 0,mms, 105 mmsTable.messageInfo.smsType, 106 // 0: normal; 1: notification 107 mmsTable.messageInfo.msgTitle, 108 mmsTable.messageInfo.msgContent, 109 mmsTable.messageInfo.msgState 110 ]; 111 return resultColumns; 112 } 113 114 buildResultColumns() { 115 let basicColumns = this.buildBaseColumns(); 116 var resultColumns = [ 117 mmsTable.messageInfo.operatorServiceNumber, 118 mmsTable.messageInfo.msgCode, 119 mmsTable.messageInfo.isLock, 120 mmsTable.messageInfo.isRead, 121 mmsTable.messageInfo.isCollect, 122 mmsTable.messageInfo.sessionType, 123 // 0: common; 1: broadcast; 2: group-send 124 mmsTable.messageInfo.retryNumber, 125 // Number of resending times 126 mmsTable.messageInfo.isSubsection, 127 mmsTable.messageInfo.sessionId, 128 mmsTable.messageInfo.groupId, 129 mmsTable.messageInfo.isSender, 130 mmsTable.messageInfo.isSendReport, 131 ]; 132 return basicColumns.concat(resultColumns); 133 } 134 135 async searchSmsMessageByContent(actionData, callback, context?) { 136 let dataHelper = await dataShare.createDataShareHelper(context ? context : globalThis.mmsContext, 137 common.string.URI_MESSAGE_LOG); 138 var resultColumns = this.buildSearchResultColumns(); 139 let condition = new dataSharePredicates.DataSharePredicates(); 140 condition.like(mmsTable.messageInfo.msgContent, "%" + actionData.content + "%"); 141 condition.equalTo(mmsTable.messageInfo.msgType, 0); 142 if (actionData.numberType != null) { 143 condition.equalTo(mmsTable.messageInfo.smsType, actionData.numberType); 144 } 145 let resultList = []; 146 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 147 dataHelper.query(managerUri, condition, resultColumns).then(resultSet => { 148 if (resultSet != undefined) { 149 while (resultSet.goToNextRow()) { 150 let result: LooseObject = {}; 151 this.dealBaseColumnsData(result, resultSet); 152 result.isCollect = resultSet.getString(resultSet.getColumnIndex("is_collect")); 153 result.sessionId = resultSet.getString(resultSet.getColumnIndex("session_id")); 154 result.groupId = resultSet.getString(resultSet.getColumnIndex("group_id")); 155 result.isSender = resultSet.getString(resultSet.getColumnIndex("is_sender")); 156 resultList.push(result); 157 } 158 } 159 callback(this.encapsulateReturnResult(common.int.SUCCESS, resultList)); 160 }).catch(error => { 161 HiLog.e(TAG, "searchSmsMessageByContent, error: " + JSON.stringify(error.message)); 162 callback(this.encapsulateReturnCode(common.int.FAILURE)); 163 }); 164 } 165 166 buildSearchResultColumns() { 167 let basicColumns = this.buildBaseColumns(); 168 var resultColumns = [ 169 mmsTable.messageInfo.isCollect, 170 mmsTable.messageInfo.sessionId, 171 mmsTable.messageInfo.groupId, 172 mmsTable.messageInfo.isSender 173 ]; 174 return basicColumns.concat(resultColumns); 175 } 176 177 dealBaseColumnsData(result, resultSet) { 178 result.msgId = resultSet.getString(resultSet.getColumnIndex("msg_id")); 179 result.slotId = resultSet.getString(resultSet.getColumnIndex("slot_id")); 180 result.receiverNumber = resultSet.getString(resultSet.getColumnIndex("receiver_number")); 181 result.senderNumber = resultSet.getString(resultSet.getColumnIndex("sender_number")); 182 result.startTime = resultSet.getString(resultSet.getColumnIndex("start_time")); 183 result.endTime = resultSet.getString(resultSet.getColumnIndex("end_time")); 184 result.msgType = resultSet.getString(resultSet.getColumnIndex("msg_type")); 185 result.smsType = resultSet.getString(resultSet.getColumnIndex("sms_type")); 186 result.msgTitle = resultSet.getString(resultSet.getColumnIndex("msg_title")); 187 result.msgContent = resultSet.getString(resultSet.getColumnIndex("msg_content")); 188 result.msgState = resultSet.getString(resultSet.getColumnIndex("msg_state")); 189 } 190 191 async insertMessageDetail(actionData, callback, context?) { 192 let dataHelper = await dataShare.createDataShareHelper(context ? context : globalThis.mmsContext, 193 common.string.URI_MESSAGE_LOG); 194 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 195 dataHelper.insert(managerUri, actionData.stringValue).then(data => { 196 callback(this.encapsulateReturnResult(common.int.SUCCESS, data)); 197 }).catch(error => { 198 HiLog.e(TAG, "insertMessageDetail, fail: " + JSON.stringify(error.message)); 199 callback(this.encapsulateReturnCode(common.int.FAILURE)); 200 }); 201 } 202 203 async updateLock(actionData, callback, context?) { 204 let dataHelper = await dataShare.createDataShareHelper(context ? context : globalThis.mmsContext, 205 common.string.URI_MESSAGE_LOG); 206 var groupIds = this.groupIdToString(actionData.groupIds); 207 var condition = new dataSharePredicates.DataSharePredicates(); 208 condition.in(mmsTable.messageInfo.groupId, groupIds); 209 var stringValue = { 210 "is_lock": actionData.hasLock, 211 }; 212 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 213 dataHelper.update(managerUri, condition, stringValue).then((data) => { 214 callback(this.encapsulateReturnCode(common.int.SUCCESS)); 215 }).catch((err) => { 216 HiLog.e(TAG, "updateLock, err: " + JSON.stringify(err.message)); 217 callback(this.encapsulateReturnCode(common.int.FAILURE)); 218 }); 219 } 220 221 groupIdToString(groupIds) { 222 let ids = []; 223 groupIds.forEach(item => { 224 ids.push(item + ''); 225 }); 226 return ids; 227 } 228 229 async updateCollect(actionData, callback, context?) { 230 let dataHelper = await dataShare.createDataShareHelper(context ? context : globalThis.mmsContext, 231 common.string.URI_MESSAGE_LOG); 232 var groupIds = this.groupIdToString(actionData.groupIds); 233 var condition = new dataSharePredicates.DataSharePredicates(); 234 condition.in(mmsTable.messageInfo.groupId, groupIds); 235 var stringValue = { 236 "is_collect": actionData.hasCollect, 237 }; 238 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 239 dataHelper.update(managerUri, condition, stringValue).then((data) => { 240 callback(this.encapsulateReturnCode(common.int.SUCCESS)); 241 }).catch((err) => { 242 HiLog.e(TAG, "updateCollect, err: " + JSON.stringify(err.message)); 243 callback(this.encapsulateReturnCode(common.int.FAILURE)); 244 }); 245 } 246 247 async deleteMessageByIds(actionData, context?) { 248 let dataHelper = await dataShare.createDataShareHelper(context ? context : globalThis.mmsContext, 249 common.string.URI_MESSAGE_LOG); 250 var msgIds = actionData.msgIds; 251 let condition = new dataSharePredicates.DataSharePredicates(); 252 condition.in(mmsTable.messageInfo.msgId, msgIds); 253 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 254 dataHelper.delete(managerUri, condition); 255 } 256 257 async deleteMessageByGroupIds(actionData, callback, context?) { 258 let dataHelper = await dataShare.createDataShareHelper(context ? context : globalThis.mmsContext, 259 common.string.URI_MESSAGE_LOG); 260 var groupIds = this.groupIdToString(actionData.groupIds); 261 let condition = new dataSharePredicates.DataSharePredicates(); 262 condition.in(mmsTable.messageInfo.groupId, groupIds); 263 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 264 dataHelper.delete(managerUri, condition).then((data) => { 265 callback(this.encapsulateReturnCode(common.int.SUCCESS)); 266 }).catch((err) => { 267 HiLog.e(TAG, "deleteMessageByGroupIds, err: " + JSON.stringify(err.message)); 268 callback(this.encapsulateReturnCode(common.int.FAILURE)); 269 }); 270 } 271 272 async deleteMessageBySessionIds(actionData, callback, context?) { 273 let dataHelper = await dataShare.createDataShareHelper(context ? context : globalThis.mmsContext, 274 common.string.URI_MESSAGE_LOG); 275 let threadIds = []; 276 for (let id of actionData.threadIds) { 277 let threadId = id + common.string.EMPTY_STR; 278 threadIds.push(threadId); 279 } 280 let condition = new dataSharePredicates.DataSharePredicates(); 281 condition.in(mmsTable.messageInfo.sessionId, threadIds); 282 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 283 dataHelper.delete(managerUri, condition).then((data) => { 284 callback(this.encapsulateReturnCode(common.int.SUCCESS)); 285 }).catch((err) => { 286 HiLog.e(TAG, "deleteMessageBySessionIds, err: " + JSON.stringify(err.message)); 287 callback(this.encapsulateReturnCode(common.int.FAILURE)); 288 }); 289 } 290 291 async deleteMessageBySessionIdsAndLock(actionData, callback, context?) { 292 let dataHelper = await dataShare.createDataShareHelper(context ? context : globalThis.mmsContext, 293 common.string.URI_MESSAGE_LOG); 294 let threadIds = this.groupIdToString(actionData.threadIds); 295 let condition = new dataSharePredicates.DataSharePredicates(); 296 condition.equalTo(mmsTable.messageInfo.isLock, actionData.hasLock); 297 condition.in(mmsTable.messageInfo.sessionId, threadIds); 298 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 299 dataHelper.delete(managerUri, condition).then((data) => { 300 callback(this.encapsulateReturnCode(common.int.SUCCESS)); 301 }).catch((err) => { 302 HiLog.e(TAG, "deleteMessageBySessionIdsAndLock, err: " + JSON.stringify(err.message)); 303 callback(this.encapsulateReturnCode(common.int.FAILURE)); 304 }); 305 } 306 307 async updateById(actionData, callback, context?) { 308 let dataHelper = await dataShare.createDataShareHelper(context ? context : globalThis.mmsContext, 309 common.string.URI_MESSAGE_LOG); 310 var msgId = actionData.msgId; 311 let condition = new dataSharePredicates.DataSharePredicates(); 312 condition.equalTo(mmsTable.messageInfo.msgId, msgId); 313 var stringValue = { 314 "msg_state": actionData.sendStatus, 315 }; 316 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 317 dataHelper.update(managerUri, condition, stringValue).then((data) => { 318 callback(this.encapsulateReturnCode(common.int.SUCCESS)); 319 }).catch((err) => { 320 HiLog.e(TAG, "updateById, err: " + JSON.stringify(err.message)); 321 callback(this.encapsulateReturnCode(common.int.FAILURE)); 322 }); 323 } 324 325 async markAllAsRead(actionData, callback, context?) { 326 let dataHelper = await dataShare.createDataShareHelper(context ? context : globalThis.mmsContext, 327 common.string.URI_MESSAGE_LOG); 328 let threadIds = []; 329 for (let id of actionData.threadIds) { 330 let threadId = id + common.string.EMPTY_STR; 331 threadIds.push(threadId); 332 } 333 let condition = new dataSharePredicates.DataSharePredicates(); 334 condition.in(mmsTable.messageInfo.sessionId, threadIds); 335 var stringValue = { 336 "is_read": actionData.hasRead 337 }; 338 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 339 dataHelper.update(managerUri, condition, stringValue).then((data) => { 340 callback(this.encapsulateReturnCode(common.int.SUCCESS)); 341 }).catch((err) => { 342 HiLog.e(TAG, "markAllAsRead, err: " + JSON.stringify(err.message)); 343 callback(this.encapsulateReturnCode(common.int.FAILURE)); 344 }); 345 } 346 347 async markAllToRead(actionData, callback, context?) { 348 let dataHelper = await dataShare.createDataShareHelper(context ? context : globalThis.mmsContext, 349 common.string.URI_MESSAGE_LOG); 350 let condition = new dataSharePredicates.DataSharePredicates(); 351 condition.equalTo(mmsTable.messageInfo.isRead, 0); 352 condition.equalTo(mmsTable.messageInfo.smsType, actionData.smsType); 353 var stringValue = { 354 "is_read": actionData.hasRead 355 }; 356 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 357 dataHelper.update(managerUri, condition, stringValue).then((data) => { 358 callback(this.encapsulateReturnCode(common.int.SUCCESS)); 359 }).catch((err) => { 360 HiLog.e(TAG, "markAllToRead, err: " + JSON.stringify(err.message)); 361 callback(this.encapsulateReturnCode(common.int.FAILURE)); 362 }); 363 } 364 365 async queryMaxGroupId(actionData, callback, context?) { 366 let dataHelper = await dataShare.createDataShareHelper(context ? context : globalThis.mmsContext, 367 common.string.URI_MESSAGE_LOG); 368 let resultColumns = [ 369 "maxGroupId" 370 ]; 371 let condition = new dataSharePredicates.DataSharePredicates(); 372 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_MAX_GROUP; 373 dataHelper.query(managerUri, condition, resultColumns, (err, resultSet) => { 374 HiLog.i(TAG, "queryMaxGroupId, query callback"); 375 let result: LooseObject = {}; 376 if (resultSet != undefined) { 377 if (resultSet.goToLastRow()) { 378 result.maxGroupId = resultSet.getString(0); 379 HiLog.d(TAG, "queryMaxGroupId, maxGroupId=" + result.maxGroupId); 380 } 381 } 382 callback(this.encapsulateReturnResult(common.int.SUCCESS, result)); 383 }); 384 } 385 386 saveImage(actionData, callback) { 387 var savedImageInfo = morkDataModel.saveImage(); 388 callback(this.encapsulateReturnResult(common.int.SUCCESS, savedImageInfo)); 389 } 390 391 gotoShare(actionData, callback) { 392 callback(this.encapsulateReturnCode(common.int.SUCCESS)); 393 } 394 395 queryFromGallery(actionData, callback) { 396 var pictureListFromGallery = morkDataModel.queryFromGallery(); 397 callback(this.encapsulateReturnResult(common.int.SUCCESS, pictureListFromGallery)); 398 } 399 400 dealContractsTransmit(actionData, callback) { 401 callback(this.encapsulateReturnCode(common.int.SUCCESS)); 402 } 403 404 async queryMessageThirty(actionData, callback, context?) { 405 let dataHelper = await dataShare.createDataShareHelper(context ? context : globalThis.mmsContext, 406 common.string.URI_MESSAGE_LOG); 407 let timestamp = new Date().getTime(); 408 let lastTime = timestamp - 2592000000; 409 let resultColumns = [ 410 mmsTable.messageInfo.msgId, 411 mmsTable.messageInfo.sessionId 412 ]; 413 let condition = new dataSharePredicates.DataSharePredicates(); 414 condition.lessThan(mmsTable.messageInfo.endTime, lastTime); 415 condition.equalTo(mmsTable.messageInfo.smsType, actionData.numberType); 416 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 417 dataHelper.query(managerUri, condition, resultColumns).then((resultSet) => { 418 let mmsList = []; 419 if (resultSet != undefined) { 420 while (resultSet.goToNextRow()) { 421 let item: LooseObject = {}; 422 item.msgId = resultSet.getString(0); 423 item.sessionId = resultSet.getString(1); 424 mmsList.push(item); 425 } 426 } 427 callback(this.encapsulateReturnResult(common.int.SUCCESS, mmsList)); 428 }).catch((err) => { 429 HiLog.e(TAG, "queryMessageThirty, err: " + JSON.stringify(err.message)); 430 callback(this.encapsulateReturnCode(common.int.FAILURE)); 431 }); 432 } 433 434 async statisticsUnreadNotify(actionData, callback, context?) { 435 let mmsContext = context ? context : globalThis.mmsContext; 436 if (actionData.mmsContext) { 437 mmsContext = actionData.mmsContext; 438 } 439 let dataHelper = await dataShare.createDataShareHelper(mmsContext, common.string.URI_MESSAGE_LOG); 440 let condition = new dataSharePredicates.DataSharePredicates(); 441 condition.equalTo(mmsTable.messageInfo.isRead, 0); 442 condition.equalTo(mmsTable.messageInfo.smsType, 1); 443 let resultColumns = [ 444 mmsTable.messageInfo.msgId 445 ]; 446 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 447 dataHelper.query(managerUri, condition, resultColumns).then((resultSet) => { 448 let count = 0; 449 if (resultSet != undefined) { 450 count = resultSet.rowCount; 451 } 452 callback(this.encapsulateReturnResult(common.int.SUCCESS, count)); 453 }).catch((err) => { 454 HiLog.e(TAG, "statisticsUnreadNotify, err: " + JSON.stringify(err.message)); 455 callback(this.encapsulateReturnCode(common.int.FAILURE)); 456 }); 457 } 458 459 async searchMmsPartByContent(actionData, callback, context?) { 460 let dataHelper = await dataShare.createDataShareHelper(context ? context : globalThis.mmsContext, 461 common.string.URI_MESSAGE_LOG); 462 let resultColumns = this.buildMmsPartResultColumns(); 463 let condition = new dataSharePredicates.DataSharePredicates(); 464 condition.like(mmsTable.mmsPart.content, "%" + actionData.content + "%"); 465 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_MMS_PART; 466 dataHelper.query(managerUri, condition, resultColumns).then(resultSet => { 467 let resultList = this.dealMmsPartResult(resultSet); 468 callback(this.encapsulateReturnResult(common.int.SUCCESS, resultList)); 469 }).catch(error => { 470 HiLog.e(TAG, "searchMmsPartByContent, error: " + JSON.stringify(error.message)); 471 callback(this.encapsulateReturnCode(common.int.FAILURE)); 472 }); 473 } 474 475 async queryMmsPart(actionData, callback, context?) { 476 let dataHelper = await dataShare.createDataShareHelper(context ? context : globalThis.mmsContext, 477 common.string.URI_MESSAGE_LOG); 478 var resultColumns = this.buildMmsPartResultColumns(); 479 let condition = new dataSharePredicates.DataSharePredicates(); 480 condition.in(mmsTable.mmsPart.msgId, actionData.msgIds); 481 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_MMS_PART; 482 dataHelper.query(managerUri, condition, resultColumns).then(resultSet => { 483 let resultList = this.dealMmsPartResult(resultSet); 484 callback(this.encapsulateReturnResult(common.int.SUCCESS, resultList)); 485 }).catch(error => { 486 HiLog.e(TAG, "queryMmsPart, error: " + JSON.stringify(error.message)); 487 callback(this.encapsulateReturnCode(common.int.FAILURE)); 488 }); 489 } 490 491 buildMmsPartResultColumns() { 492 let resultColumns = [ 493 mmsTable.mmsPart.msgId, 494 mmsTable.mmsPart.groupId, 495 mmsTable.mmsPart.type, 496 mmsTable.mmsPart.locationPath, 497 mmsTable.mmsPart.content, 498 mmsTable.mmsPart.recordingTime, 499 mmsTable.mmsPart.partSize, 500 mmsTable.mmsPart.state 501 ]; 502 return resultColumns; 503 } 504 505 dealMmsPartResult(resultSet) { 506 let resultList = []; 507 if (resultSet != undefined) { 508 while (resultSet.goToNextRow()) { 509 let result: LooseObject = {}; 510 result.msgId = resultSet.getString(0); 511 result.groupId = resultSet.getString(1); 512 result.type = resultSet.getString(2); 513 result.locationPath = resultSet.getString(3); 514 result.content = resultSet.getString(4); 515 result.recordingTime = resultSet.getString(5); 516 result.fileSize = resultSet.getString(6); 517 result.messageType = resultSet.getString(7); 518 resultList.push(result); 519 } 520 } 521 return resultList; 522 } 523 524 async deleteMmsPartByGroupIds(actionData, callback, context?) { 525 let dataHelper = await dataShare.createDataShareHelper(context ? context : globalThis.mmsContext, 526 common.string.URI_MESSAGE_LOG); 527 let groupIds = this.groupIdToString(actionData.groupIds); 528 let condition = new dataSharePredicates.DataSharePredicates(); 529 condition.in(mmsTable.mmsPart.groupId, groupIds); 530 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_MMS_PART; 531 dataHelper.delete(managerUri, condition).then((data) => { 532 callback(this.encapsulateReturnCode(common.int.SUCCESS)); 533 }).catch((err) => { 534 HiLog.e(TAG, "deleteMmsPartByGroupIds, err: " + JSON.stringify(err.message)); 535 callback(this.encapsulateReturnCode(common.int.FAILURE)); 536 }); 537 } 538 539 async batchInsertMmsPart(actionData, callback, context?) { 540 for (let stringValue of actionData.batchMmsParts) { 541 this.insertMmsPart(actionData, stringValue, res => { 542 }, context); 543 } 544 callback(this.encapsulateReturnCode(common.int.SUCCESS)); 545 } 546 547 async insertMmsPart(actionData, stringValue, callback, context?) { 548 let dataHelper = await dataShare.createDataShareHelper(context ? context : globalThis.mmsContext, 549 common.string.URI_MESSAGE_LOG); 550 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_MMS_PART; 551 dataHelper.insert(managerUri, stringValue).then(data => { 552 callback(this.encapsulateReturnResult(data, common.int.SUCCESS)); 553 }).catch(error => { 554 HiLog.e(TAG, "insertMmsPart, error: " + JSON.stringify(error.message)); 555 callback(this.encapsulateReturnCode(common.int.FAILURE)); 556 }); 557 } 558 559 async queryMessageLockBySessionId(actionData, callback, context?) { 560 let dataHelper = await dataShare.createDataShareHelper(context ? context : globalThis.mmsContext, 561 common.string.URI_MESSAGE_LOG); 562 var resultColumns = [mmsTable.messageInfo.isLock]; 563 let condition = new dataSharePredicates.DataSharePredicates(); 564 let sessionId = actionData.threadId + common.string.EMPTY_STR; 565 condition.equalTo(mmsTable.messageInfo.sessionId, sessionId); 566 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 567 dataHelper.query(managerUri, condition, resultColumns).then(resultSet => { 568 let lockStatus = []; 569 if (resultSet != undefined) { 570 while (resultSet.goToNextRow()) { 571 let result: LooseObject = {}; 572 result.isLock = resultSet.getString(0); 573 lockStatus.push(result); 574 } 575 } 576 callback(this.encapsulateReturnResult(common.int.SUCCESS, lockStatus)); 577 }).catch(error => { 578 HiLog.e(TAG, "queryMessageLockBySessionId, error: " + JSON.stringify(error.message)); 579 callback(this.encapsulateReturnCode(common.int.FAILURE)); 580 }); 581 } 582 583 async queryGroupIdBySessionId(actionData, callback, context?) { 584 let dataHelper = await dataShare.createDataShareHelper(context ? context : globalThis.mmsContext, 585 common.string.URI_MESSAGE_LOG); 586 var resultColumns = [mmsTable.messageInfo.groupId]; 587 let condition = new dataSharePredicates.DataSharePredicates(); 588 let threadIds = this.groupIdToString(actionData.threadIds); 589 condition.in(mmsTable.messageInfo.sessionId, threadIds); 590 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 591 dataHelper.query(managerUri, condition, resultColumns).then(resultSet => { 592 let groupIds = []; 593 if (resultSet != undefined) { 594 resultSet.goToFirstRow(); 595 do { 596 let groupId = resultSet.getString(0); 597 groupIds.push(groupId); 598 } while (resultSet.goToNextRow()); 599 } 600 callback(this.encapsulateReturnResult(common.int.SUCCESS, groupIds)); 601 }).catch(error => { 602 HiLog.e(TAG, "queryGroupIdBySessionId, error: " + JSON.stringify(error.message)); 603 callback(this.encapsulateReturnCode(common.int.FAILURE)); 604 }); 605 } 606}