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"; 24import featureAbility from "@ohos.ability.featureAbility"; 25import dataAbility from "@ohos.data.dataAbility"; 26 27const TAG = "ConversationModel"; 28 29let morkDataModel = new MorkDataModel(); 30 31export default class ConversationModel extends BaseModel { 32 async queryMessageDetail(actionData, callback) { 33 let dataAbilityHelper = await featureAbility.acquireDataAbilityHelper(globalThis.mmsContext, common.string.URI_MESSAGE_LOG); 34 var resultColumns = this.buildResultColumns(); 35 let condition = this.buildQueryCondition(actionData); 36 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 37 dataAbilityHelper.query(managerUri, resultColumns, condition).then(resultSet => { 38 let resultList = []; 39 if( !resultSet.goToFirstRow() ) { 40 callback(this.encapsulateReturnResult(common.int.SUCCESS, resultList)); 41 return; 42 } 43 if (resultSet != undefined) { 44 do { 45 let result: LooseObject = {}; 46 this.dealBaseColumnsData(result, resultSet); 47 result.operatorServiceNumber = resultSet.getString(resultSet.getColumnIndex("operator_service_number")); 48 result.msgCode = resultSet.getString(resultSet.getColumnIndex("msg_code")); 49 result.isLock = resultSet.getString(resultSet.getColumnIndex("is_lock")); 50 result.isRead = resultSet.getString(resultSet.getColumnIndex("is_read")); 51 result.isCollect = resultSet.getString(resultSet.getColumnIndex("is_collect")); 52 result.sessionType = resultSet.getString(resultSet.getColumnIndex("session_type")); 53 result.retryNumber = resultSet.getString(resultSet.getColumnIndex("retry_number")); 54 result.isSubsection = resultSet.getString(resultSet.getColumnIndex("is_subsection")); 55 result.sessionId = resultSet.getString(resultSet.getColumnIndex("session_id")); 56 result.groupId = resultSet.getString(resultSet.getColumnIndex("group_id")); 57 result.isSender = resultSet.getString(resultSet.getColumnIndex("is_sender")); 58 result.isSendReport = resultSet.getString(resultSet.getColumnIndex("is_send_report")); 59 resultList.push(result); 60 } while (resultSet.goToNextRow()) 61 } 62 callback(this.encapsulateReturnResult(common.int.SUCCESS, resultList)); 63 }).catch(error => { 64 HiLog.e(TAG, "queryMessageDetail, error: " + JSON.stringify(error.message)); 65 callback(this.encapsulateReturnCode(common.int.FAILURE)); 66 }); 67 } 68 69 buildQueryCondition(actionData) { 70 let condition = new dataAbility.DataAbilityPredicates(); 71 if (actionData.isDraft != null && actionData.isDraft) { 72 condition.equalTo(mmsTable.messageInfo.groupId, actionData.groupId); 73 condition.equalTo(mmsTable.messageInfo.msgState, actionData.sendStatus); 74 } 75 if (actionData.threadId != null) { 76 let sessionId = actionData.threadId + common.string.EMPTY_STR; 77 condition.equalTo(mmsTable.messageInfo.sessionId, sessionId); 78 } 79 if (actionData.threadIds != null && actionData.threadIds.length > 0) { 80 let sessionIds = this.groupIdToString(actionData.threadIds); 81 condition.in(mmsTable.messageInfo.sessionId, sessionIds); 82 } 83 if (actionData.msgIds != null && actionData.msgIds.length != 0) { 84 condition.in(mmsTable.messageInfo.msgId, actionData.msgIds); 85 } 86 if (actionData.hasLock != null) { 87 condition.equalTo(mmsTable.messageInfo.isLock, actionData.hasLock); 88 } 89 if (actionData.hasRead != null) { 90 condition.equalTo(mmsTable.messageInfo.isRead, actionData.hasRead); 91 } 92 return condition; 93 } 94 95 buildBaseColumns() { 96 var resultColumns = [ 97 mmsTable.messageInfo.msgId, 98 mmsTable.messageInfo.slotId, 99 // Recipient Mobile Number 100 mmsTable.messageInfo.receiverNumber, 101 mmsTable.messageInfo.senderNumber, 102 mmsTable.messageInfo.startTime, 103 mmsTable.messageInfo.endTime, 104 mmsTable.messageInfo.msgType, 105 // sms = 0,mms, 106 mmsTable.messageInfo.smsType, 107 // 0: normal; 1: notification 108 mmsTable.messageInfo.msgTitle, 109 mmsTable.messageInfo.msgContent, 110 mmsTable.messageInfo.msgState 111 ]; 112 return resultColumns; 113 } 114 115 buildResultColumns() { 116 let basicColumns = this.buildBaseColumns(); 117 var resultColumns = [ 118 mmsTable.messageInfo.operatorServiceNumber, 119 mmsTable.messageInfo.msgCode, 120 mmsTable.messageInfo.isLock, 121 mmsTable.messageInfo.isRead, 122 mmsTable.messageInfo.isCollect, 123 mmsTable.messageInfo.sessionType, 124 // 0: common; 1: broadcast; 2: group-send 125 mmsTable.messageInfo.retryNumber, 126 // Number of resending times 127 mmsTable.messageInfo.isSubsection, 128 mmsTable.messageInfo.sessionId, 129 mmsTable.messageInfo.groupId, 130 mmsTable.messageInfo.isSender, 131 mmsTable.messageInfo.isSendReport, 132 ]; 133 return basicColumns.concat(resultColumns); 134 } 135 136 async searchSmsMessageByContent(actionData, callback) { 137 let dataAbilityHelper = await featureAbility.acquireDataAbilityHelper(globalThis.mmsContext, common.string.URI_MESSAGE_LOG); 138 var resultColumns = this.buildSearchResultColumns(); 139 let condition = new dataAbility.DataAbilityPredicates(); 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 dataAbilityHelper.query(managerUri, resultColumns, condition).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) { 192 HiLog.i(TAG, "insertMessageDetail, start") 193 //TODO 194 let dataAbilityHelper = await featureAbility.acquireDataAbilityHelper(globalThis.mmsContext, common.string.URI_MESSAGE_LOG); 195 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 196 dataAbilityHelper.insert(managerUri, actionData.stringValue).then(data => { 197 callback(this.encapsulateReturnResult(common.int.SUCCESS, data)); 198 }).catch(error => { 199 HiLog.e(TAG, "insertMessageDetail, fail: " + JSON.stringify(error.message)); 200 callback(this.encapsulateReturnCode(common.int.FAILURE)); 201 }); 202 } 203 204 async updateLock(actionData, callback) { 205 let dataAbilityHelper = await featureAbility.acquireDataAbilityHelper(globalThis.mmsContext, common.string.URI_MESSAGE_LOG); 206 var groupIds = this.groupIdToString(actionData.groupIds); 207 var condition = new dataAbility.DataAbilityPredicates(); 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 dataAbilityHelper.update(managerUri, stringValue, condition).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) { 230 let dataAbilityHelper = await featureAbility.acquireDataAbilityHelper(globalThis.mmsContext, common.string.URI_MESSAGE_LOG); 231 var groupIds = this.groupIdToString(actionData.groupIds); 232 var condition = new dataAbility.DataAbilityPredicates(); 233 condition.in(mmsTable.messageInfo.groupId, groupIds); 234 var stringValue = { 235 "is_collect": actionData.hasCollect, 236 }; 237 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 238 dataAbilityHelper.update(managerUri, stringValue, condition).then((data) => { 239 callback(this.encapsulateReturnCode(common.int.SUCCESS)); 240 }).catch((err) => { 241 HiLog.e(TAG, "updateCollect, err: " + JSON.stringify(err.message)); 242 callback(this.encapsulateReturnCode(common.int.FAILURE)); 243 }); 244 } 245 246 async deleteMessageByIds(actionData) { 247 let dataAbilityHelper = await featureAbility.acquireDataAbilityHelper(globalThis.mmsContext, common.string.URI_MESSAGE_LOG); 248 var msgIds = actionData.msgIds; 249 let condition = new dataAbility.DataAbilityPredicates(); 250 condition.in(mmsTable.messageInfo.msgId, msgIds); 251 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 252 dataAbilityHelper.delete(managerUri, condition); 253 } 254 255 async deleteMessageByGroupIds(actionData) { 256 let dataAbilityHelper = await featureAbility.acquireDataAbilityHelper(globalThis.mmsContext, common.string.URI_MESSAGE_LOG); 257 var groupIds = this.groupIdToString(actionData.groupIds); 258 let condition = new dataAbility.DataAbilityPredicates(); 259 condition.in(mmsTable.messageInfo.groupId, groupIds); 260 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 261 dataAbilityHelper.delete(managerUri, condition).then((data) => { 262// callback(this.encapsulateReturnCode(common.int.SUCCESS)); 263 }).catch((err) => { 264 HiLog.e(TAG, "deleteMessageByGroupIds, err: " + JSON.stringify(err.message)); 265// callback(this.encapsulateReturnCode(common.int.FAILURE)); 266 }); 267 } 268 269 async deleteMessageBySessionIds(actionData) { 270 let dataAbilityHelper = await featureAbility.acquireDataAbilityHelper(globalThis.mmsContext, common.string.URI_MESSAGE_LOG); 271 let threadIds = []; 272 for (let id of actionData.threadIds) { 273 let threadId = id + common.string.EMPTY_STR; 274 threadIds.push(threadId); 275 } 276 let condition = new dataAbility.DataAbilityPredicates(); 277 condition.in(mmsTable.messageInfo.sessionId, threadIds); 278 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 279 dataAbilityHelper.delete(managerUri, condition).then((data) => { 280// callback(this.encapsulateReturnCode(common.int.SUCCESS)); 281 }).catch((err) => { 282 HiLog.e(TAG, "deleteMessageBySessionIds, err: " + JSON.stringify(err.message)); 283// callback(this.encapsulateReturnCode(common.int.FAILURE)); 284 }); 285 } 286 287 async deleteMessageBySessionIdsAndLock(actionData) { 288 let dataAbilityHelper = await featureAbility.acquireDataAbilityHelper(globalThis.mmsContext, common.string.URI_MESSAGE_LOG); 289 let threadIds = this.groupIdToString(actionData.threadIds); 290 let condition = new dataAbility.DataAbilityPredicates(); 291 condition.equalTo(mmsTable.messageInfo.isLock, actionData.hasLock); 292 condition.in(mmsTable.messageInfo.sessionId, threadIds); 293 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 294 dataAbilityHelper.delete(managerUri, condition).then((data) => { 295// callback(this.encapsulateReturnCode(common.int.SUCCESS)); 296 }).catch((err) => { 297 HiLog.e(TAG, "deleteMessageBySessionIdsAndLock, err: " + JSON.stringify(err.message)); 298// callback(this.encapsulateReturnCode(common.int.FAILURE)); 299 }); 300 } 301 302 async updateById(actionData, callback) { 303 let dataAbilityHelper = await featureAbility.acquireDataAbilityHelper(globalThis.mmsContext, common.string.URI_MESSAGE_LOG); 304 var msgId = actionData.msgId; 305 let condition = new dataAbility.DataAbilityPredicates(); 306 condition.equalTo(mmsTable.messageInfo.msgId, msgId); 307 var stringValue = { 308 "msg_state": actionData.sendStatus, 309 }; 310 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 311 dataAbilityHelper.update(managerUri, stringValue, condition).then((data) => { 312 HiLog.i(TAG, "updateById, end"); 313 callback(this.encapsulateReturnCode(common.int.SUCCESS)); 314 }).catch((err) => { 315 HiLog.e(TAG, "updateById, err: " + JSON.stringify(err.message)); 316 callback(this.encapsulateReturnCode(common.int.FAILURE)); 317 }); 318 } 319 320 async markAllAsRead(actionData) { 321 let dataAbilityHelper = await featureAbility.acquireDataAbilityHelper(globalThis.mmsContext, common.string.URI_MESSAGE_LOG); 322 let threadIds = []; 323 for (let id of actionData.threadIds) { 324 let threadId = id + common.string.EMPTY_STR; 325 threadIds.push(threadId); 326 } 327 let condition = new dataAbility.DataAbilityPredicates(); 328 condition.in(mmsTable.messageInfo.sessionId, threadIds); 329 var stringValue = { 330 "is_read": actionData.hasRead 331 }; 332 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 333 dataAbilityHelper.update(managerUri, stringValue, condition).then((data) => { 334// callback(this.encapsulateReturnCode(common.int.SUCCESS)); 335 }).catch((err) => { 336 HiLog.e(TAG, "markAllAsRead, err: " + JSON.stringify(err.message)); 337// callback(this.encapsulateReturnCode(common.int.FAILURE)); 338 }); 339 } 340 341 async markAllToRead(actionData) { 342 let dataAbilityHelper = await featureAbility.acquireDataAbilityHelper(globalThis.mmsContext, common.string.URI_MESSAGE_LOG); 343 let condition = new dataAbility.DataAbilityPredicates(); 344 condition.equalTo(mmsTable.messageInfo.isRead, 0); 345 condition.equalTo(mmsTable.messageInfo.smsType, actionData.smsType); 346 var stringValue = { 347 "is_read": actionData.hasRead 348 }; 349 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 350 dataAbilityHelper.update(managerUri, stringValue, condition).then((data) => { 351// callback(this.encapsulateReturnCode(common.int.SUCCESS)); 352 }).catch((err) => { 353 HiLog.e(TAG, "markAllToRead, err: " + JSON.stringify(err.message)); 354// callback(this.encapsulateReturnCode(common.int.FAILURE)); 355 }); 356 } 357 358 async queryMaxGroupId(actionData, callback) { 359 let dataAbilityHelper = await featureAbility.acquireDataAbilityHelper(globalThis.mmsContext, common.string.URI_MESSAGE_LOG); 360 let resultColumns = [ 361 "maxGroupId" 362 ]; 363 let condition = new dataAbility.DataAbilityPredicates(); 364 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_MAX_GROUP; 365 dataAbilityHelper.query(managerUri, resultColumns, condition, (err, resultSet) => { 366 HiLog.i(TAG, "queryMaxGroupId, query callback"); 367 let result: LooseObject = {}; 368 if (resultSet != undefined) { 369 if (resultSet.goToLastRow()) { 370 result.maxGroupId = resultSet.getString(0); 371 HiLog.d(TAG, "queryMaxGroupId, maxGroupId=" + result.maxGroupId); 372 } 373 } 374 callback(this.encapsulateReturnResult(common.int.SUCCESS, result)); 375 }); 376 } 377 378 saveImage(actionData, callback) { 379 var savedImageInfo = morkDataModel.saveImage(); 380 callback(this.encapsulateReturnResult(common.int.SUCCESS, savedImageInfo)); 381 } 382 383 gotoShare(actionData, callback) { 384 callback(this.encapsulateReturnCode(common.int.SUCCESS)); 385 } 386 387 queryFromGallery(actionData, callback) { 388 var pictureListFromGallery = morkDataModel.queryFromGallery(); 389 callback(this.encapsulateReturnResult(common.int.SUCCESS, pictureListFromGallery)); 390 } 391 392 dealContractsTransmit(actionData, callback) { 393 callback(this.encapsulateReturnCode(common.int.SUCCESS)); 394 } 395 396 async queryMessageThirty(actionData, callback) { 397 let dataAbilityHelper = await featureAbility.acquireDataAbilityHelper(globalThis.mmsContext, common.string.URI_MESSAGE_LOG); 398 let timestamp = new Date().getTime(); 399 let lastTime = timestamp - 2592000000; 400 let resultColumns = [ 401 mmsTable.messageInfo.msgId, 402 mmsTable.messageInfo.sessionId 403 ]; 404 let condition = new dataAbility.DataAbilityPredicates(); 405 condition.lessThan(mmsTable.messageInfo.endTime, lastTime); 406 condition.equalTo(mmsTable.messageInfo.smsType, actionData.numberType); 407 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 408 dataAbilityHelper.query(managerUri, resultColumns, condition).then((resultSet) => { 409 let mmsList = []; 410 if (resultSet != undefined) { 411 while (resultSet.goToNextRow()) { 412 let item: LooseObject = {}; 413 item.msgId = resultSet.getString(0); 414 item.sessionId = resultSet.getString(1); 415 mmsList.push(item); 416 } 417 } 418 callback(this.encapsulateReturnResult(common.int.SUCCESS, mmsList)); 419 }).catch((err) => { 420 HiLog.e(TAG, "queryMessageThirty, err: " + JSON.stringify(err.message)); 421 callback(this.encapsulateReturnCode(common.int.FAILURE)); 422 }); 423 } 424 425 async statisticsUnreadNotify(actionData, callback) { 426 let mmsContext; 427 if (actionData.mmsContext) { 428 mmsContext = actionData.mmsContext; 429 } else { 430 mmsContext = globalThis.mmsContext; 431 } 432 let dataAbilityHelper = await featureAbility.acquireDataAbilityHelper(mmsContext, common.string.URI_MESSAGE_LOG); 433 let condition = new dataAbility.DataAbilityPredicates(); 434 condition.equalTo(mmsTable.messageInfo.isRead, 0); 435 condition.equalTo(mmsTable.messageInfo.smsType, 1); 436 let resultColumns = [ 437 mmsTable.messageInfo.msgId 438 ]; 439 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 440 dataAbilityHelper.query(managerUri, resultColumns, condition).then((resultSet) => { 441 let count = 0; 442 if (resultSet != undefined) { 443 count = resultSet.rowCount; 444 } 445 callback(this.encapsulateReturnResult(common.int.SUCCESS, count)); 446 }).catch((err) => { 447 HiLog.e(TAG, "statisticsUnreadNotify, err: " + JSON.stringify(err.message)); 448 callback(this.encapsulateReturnCode(common.int.FAILURE)); 449 }); 450 } 451 452 async searchMmsPartByContent(actionData, callback) { 453 let dataAbilityHelper = await featureAbility.acquireDataAbilityHelper(globalThis.mmsContext, common.string.URI_MESSAGE_LOG); 454 let resultColumns = this.buildMmsPartResultColumns(); 455 let condition = new dataAbility.DataAbilityPredicates(); 456 condition.like(mmsTable.mmsPart.content, "%" + actionData.content + "%"); 457 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_MMS_PART; 458 dataAbilityHelper.query(managerUri, resultColumns, condition).then(resultSet => { 459 let resultList = this.dealMmsPartResult(resultSet); 460 callback(this.encapsulateReturnResult(common.int.SUCCESS, resultList)); 461 }).catch(error => { 462 HiLog.e(TAG, "searchMmsPartByContent, error: " + JSON.stringify(error.message)); 463 callback(this.encapsulateReturnCode(common.int.FAILURE)); 464 }); 465 } 466 467 async queryMmsPart(actionData, callback) { 468 let dataAbilityHelper = await featureAbility.acquireDataAbilityHelper(globalThis.mmsContext, common.string.URI_MESSAGE_LOG); 469 var resultColumns = this.buildMmsPartResultColumns(); 470 let condition = new dataAbility.DataAbilityPredicates(); 471 condition.in(mmsTable.mmsPart.msgId, actionData.msgIds); 472 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_MMS_PART; 473 dataAbilityHelper.query(managerUri, resultColumns, condition).then(resultSet => { 474 let resultList = this.dealMmsPartResult(resultSet); 475 callback(this.encapsulateReturnResult(common.int.SUCCESS, resultList)); 476 }).catch(error => { 477 HiLog.e(TAG, "queryMmsPart, error: " + JSON.stringify(error.message)); 478 callback(this.encapsulateReturnCode(common.int.FAILURE)); 479 }); 480 } 481 482 buildMmsPartResultColumns() { 483 let resultColumns = [ 484 mmsTable.mmsPart.msgId, 485 mmsTable.mmsPart.groupId, 486 mmsTable.mmsPart.type, 487 mmsTable.mmsPart.locationPath, 488 mmsTable.mmsPart.content, 489 mmsTable.mmsPart.recordingTime, 490 mmsTable.mmsPart.partSize, 491 mmsTable.mmsPart.state 492 ]; 493 return resultColumns; 494 } 495 496 dealMmsPartResult(resultSet) { 497 let resultList = []; 498 if (resultSet != undefined) { 499 while (resultSet.goToNextRow()) { 500 let result: LooseObject = {}; 501 result.msgId = resultSet.getString(0); 502 result.groupId = resultSet.getString(1); 503 result.type = resultSet.getString(2); 504 result.locationPath = resultSet.getString(3); 505 result.content = resultSet.getString(4); 506 result.recordingTime = resultSet.getString(5); 507 result.fileSize = resultSet.getString(6); 508 result.messageType = resultSet.getString(7); 509 resultList.push(result); 510 } 511 } 512 return resultList; 513 } 514 515 async deleteMmsPartByGroupIds(actionData) { 516 let dataAbilityHelper = await featureAbility.acquireDataAbilityHelper(globalThis.mmsContext, common.string.URI_MESSAGE_LOG); 517 let groupIds = this.groupIdToString(actionData.groupIds); 518 let condition = new dataAbility.DataAbilityPredicates(); 519 condition.in(mmsTable.mmsPart.groupId, groupIds); 520 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_MMS_PART; 521 dataAbilityHelper.delete(managerUri, condition).then((data) => { 522// callback(this.encapsulateReturnCode(common.int.SUCCESS)); 523 }).catch((err) => { 524 HiLog.e(TAG, "deleteMmsPartByGroupIds, err: " + JSON.stringify(err.message)); 525// callback(this.encapsulateReturnCode(common.int.FAILURE)); 526 }); 527 } 528 529 async batchInsertMmsPart(actionData, callback) { 530 for (let stringValue of actionData.batchMmsParts) { 531 this.insertMmsPart(actionData, stringValue, res => { 532 }); 533 } 534 callback(this.encapsulateReturnCode(common.int.SUCCESS)); 535 } 536 537 async insertMmsPart(actionData, stringValue, callback) { 538 let dataAbilityHelper = await featureAbility.acquireDataAbilityHelper(globalThis.mmsContext, common.string.URI_MESSAGE_LOG); 539 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_MMS_PART; 540 dataAbilityHelper.insert(managerUri, stringValue).then(data => { 541 callback(this.encapsulateReturnResult(data, common.int.SUCCESS)); 542 }).catch(error => { 543 HiLog.e(TAG, "insertMmsPart, error: " + JSON.stringify(error.message)); 544 callback(this.encapsulateReturnCode(common.int.FAILURE)); 545 }); 546 } 547 548 async queryMessageLockBySessionId(actionData, callback) { 549 let dataAbilityHelper = await featureAbility.acquireDataAbilityHelper(globalThis.mmsContext, common.string.URI_MESSAGE_LOG); 550 var resultColumns = [mmsTable.messageInfo.isLock]; 551 let condition = new dataAbility.DataAbilityPredicates(); 552 let sessionId = actionData.threadId + common.string.EMPTY_STR; 553 condition.equalTo(mmsTable.messageInfo.sessionId, sessionId); 554 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 555 dataAbilityHelper.query(managerUri, resultColumns, condition).then(resultSet => { 556 let lockStatus = []; 557 if (resultSet != undefined) { 558 while (resultSet.goToNextRow()) { 559 let result: LooseObject = {}; 560 result.isLock = resultSet.getString(0); 561 lockStatus.push(result); 562 } 563 } 564 callback(this.encapsulateReturnResult(common.int.SUCCESS, lockStatus)); 565 }).catch(error => { 566 HiLog.e(TAG, "queryMessageLockBySessionId, error: " + JSON.stringify(error.message)); 567 callback(this.encapsulateReturnCode(common.int.FAILURE)); 568 }); 569 } 570 571 async queryGroupIdBySessionId(actionData, callback) { 572 let dataAbilityHelper = await featureAbility.acquireDataAbilityHelper(globalThis.mmsContext, common.string.URI_MESSAGE_LOG); 573 var resultColumns = [mmsTable.messageInfo.groupId]; 574 let condition = new dataAbility.DataAbilityPredicates(); 575 let threadIds = this.groupIdToString(actionData.threadIds); 576 condition.in(mmsTable.messageInfo.sessionId, threadIds); 577 let managerUri = common.string.URI_MESSAGE_LOG + common.string.URI_MESSAGE_INFO_TABLE; 578 dataAbilityHelper.query(managerUri, resultColumns, condition).then(resultSet => { 579 let groupIds = []; 580 if (resultSet != undefined) { 581 resultSet.goToFirstRow(); 582 do { 583 let groupId = resultSet.getString(0); 584 groupIds.push(groupId); 585 } while (resultSet.goToNextRow()); 586 } 587 callback(this.encapsulateReturnResult(common.int.SUCCESS, groupIds)); 588 }).catch(error => { 589 HiLog.e(TAG, "queryGroupIdBySessionId, error: " + JSON.stringify(error.message)); 590 callback(this.encapsulateReturnCode(common.int.FAILURE)); 591 }); 592 } 593}