mall_client/zyhs3_uniapp/common/im/db-h5.js

242 lines
5.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

let sessionList = "conversation" // 会话表名
let chatList = "chatList" // 聊天表
function getUserId(){
let userInfo = uni.getStorageSync("userInfo")
return userInfo.id
}
function getSessionName(){
return sessionList + "_" + getUserId()
}
function getChatName(){
return chatList + "_" + getUserId()
}
// 判断是否有用户表,没有则创建
function tableIshas(){
let sessionDB = uni.getStorageSync(getSessionName());
if (!sessionDB) {
uni.setStorageSync(getSessionName(), [])
}
let chatDB = uni.getStorageSync(getChatName());
if (!chatDB) {
uni.setStorageSync(getChatName(), [])
}
}
// 获取未读消息数量
function getUnReadTotal(){
let list = uni.getStorageSync(getSessionName()) || []
let unReadTotal = 0
list.map(v =>{
unReadTotal += Number(v.localUnreadNumber || 0)
})
return unReadTotal
}
/**
* 聊天表插入数据
* @param {Object} data 插入的数据
* */
/**
* 创建聊天表
* 数据结构:
* {"froms":"100",
* "to":"7a7ff181297f4fbf9be3c25860486c23",
* "conversationId":"7a7ff181297f4fbf9be3c25860486c23", 会话id
* "createTime":"1606212063382",
* "msgType":"0",
* "uid": "xxxxxxxxxxxxxxxxxx", 消息id
* "status": 1, (默认)1-发送成功 2-发送失败
* "content":"内容"}
* */
function addDataToChatTable(data){
if (!data || data.toString() === "{}") return
let list = uni.getStorageSync(getChatName()) || []
list.push(data)
uni.setStorageSync(getChatName(), list)
}
/**
* 会话表插入数据
* @param {Object} data 插入的数据
* */
/**
* 创建会话表
* 数据结构:
* {
* id 会话id
* type 会话类型1-用户 2-配送员 3-店铺
* toType 会话类型1-用户 2-配送员 3-店铺 4-配送员用户 5-店铺客户
* userId 我的id
* toUserId 对方用户id
* imAccount 我的im账号
toImAccount 对方im账号
nickname 对方昵称
headPortrait 对方头像
storeLogoImage 对方店铺Id
storeId 对方店铺头像
storeName 对方店铺名称
isStore 对方是否是商家
isDistributor 对方是否是配送员
unreadNumber 服务器剩余未读消息
localUnreadNumber 本地未读消息(前端用)
* }
* */
function addDataToSessionTable(data){
if (!data || data.toString() === "{}") return
let list = uni.getStorageSync(getSessionName()) || []
console.log(list)
list.push(data)
uni.setStorageSync(getSessionName(), list)
}
/**
* 查询获取数据库里的数据
* @param {String} db 表名,默认会话信息表
* @param {String} aa,bb分别为列名和列的值 cc,dd同前面
* 传的参数按1,3,5来传传一个传三个传五个参数不能只传两个或者四个
* */
function selectInformationType(db, aa, bb, cc, dd){
if (!db) db = sessionList
db = db+"_"+getUserId()
let list = uni.getStorageSync(db) || []
let result = []
if (!aa) {
result = list
} else if (aa && cc) {
result = list.filter(item => item[aa] === bb && item[cc] === dd)
} else if (aa && !cc) {
result = list.filter(item => item[aa] === bb)
}
return result
}
/**
* 删除数据库里的数据
* @param {String} db 表名
* @param {String} sol 列名
* @param {String} qq 列值
* */
function deleteInformationType(db,sol,qq){
if (!sol) return
if (!db) db = chatList
db = db+"_"+getUserId()
let list = uni.getStorageSync(db) || []
for(let i = list.length - 1; i >= 0; i--) {
if (list[i][sol] === qq) {
list.splice(i, 1)
}
}
uni.setStorageSync(db, list)
}
/**
* 删除表所有数据
* @param {String} db 表名
* */
function delAllDataBySQL(db){
if (!db) db = sessionList
db = db+"_"+getUserId()
uni.removeStorageSync(db)
}
/**
* 修改数据表里的数据
* @param {String} db 表名 默认为会话表
* @param {String} cell 为要修改的列名
* @param {String} cont 为要修改为什么值
* @param {String} use 搜索列名
* @param {String} sel 搜索列值
* */
function updateInformation(db, cell, cont, use, sel){
if (!db) db = sessionList
db = db + "_" + getUserId()
let list = uni.getStorageSync(db) || []
list.forEach((v, i) =>{
if (v[use] === sel) {
v[cell] = cont
return
}
})
uni.setStorageSync(db, list)
}
/**
* 修改会话表数据
* @param {String} data 参数
* @param {String} use 列名
* @param {String} sel 列值
* */
function updateSessionInformation(data, use, sel){
let list = uni.getStorageSync(getSessionName()) || []
if (!list.length) return
let oldData = {};
let index = 0
list.forEach((v, i) =>{
if (v[use] === sel) {
oldData = v
index = i
return
}
})
list[index] = Object.assign({}, oldData, data)
uni.setStorageSync(getSessionName(), list)
}
/**
* 一次获取指定数据条数
* @param {String} db 表名
* @param {String} aa 列名
* @param {String} bb 列值
* @param {Number} num 开始索引
* @param {Number} size 条数默认20
* @param {String} sort 排序 desc倒序 asc顺序默认
* */
function pullSQL (db, aa, bb, num=0, size = 20, sort="asc") {
return new Promise((resolve, reject) => {
if (!db) db = chatList
db = db+"_"+getUserId()
let list = uni.getStorageSync(db) || []
if (!list.length) {
resolve(list)
} else {
let sortList = [...list]
if (sort === "desc") {
let data = []
for(let i = list.length - 1; i >= 0; i--) {
data.push(list[i])
}
sortList = [...data]
}
let newList = []
for(let i = num; i < sortList.length; i++) {
let obj = sortList[i];
if (newList.length < size && obj[aa] === bb) {
newList.push(obj)
console.log("ddddd", newList)
} else {
obj = null;
break;
}
}
resolve(newList)
}
})
}
export {
tableIshas,
getUnReadTotal,
addDataToChatTable,
addDataToSessionTable,
selectInformationType,
deleteInformationType,
updateInformation,
updateSessionInformation,
pullSQL
}