133 lines
2.8 KiB
JavaScript
133 lines
2.8 KiB
JavaScript
|
const {
|
||
|
deviceCollection
|
||
|
} = require('../../common/constants')
|
||
|
const {
|
||
|
ERROR
|
||
|
} = require('../../common/error')
|
||
|
|
||
|
async function setOpendbDevice ({
|
||
|
pushClientId
|
||
|
} = {}) {
|
||
|
// 仅新增,如果存在进行更新操作
|
||
|
const {
|
||
|
appId,
|
||
|
deviceId,
|
||
|
deviceBrand,
|
||
|
deviceModel,
|
||
|
osName,
|
||
|
osVersion,
|
||
|
osLanguage,
|
||
|
osTheme,
|
||
|
devicePixelRatio,
|
||
|
windowWidth,
|
||
|
windowHeight,
|
||
|
screenWidth,
|
||
|
screenHeight,
|
||
|
romName,
|
||
|
romVersion
|
||
|
} = this.getUniversalClientInfo()
|
||
|
const platform = this.clientPlatform
|
||
|
const now = Date.now()
|
||
|
|
||
|
const db = uniCloud.database()
|
||
|
const opendbDeviceCollection = db.collection('opendb-device')
|
||
|
const getDeviceRes = await opendbDeviceCollection.where({
|
||
|
device_id: deviceId
|
||
|
}).get()
|
||
|
const data = {
|
||
|
appid: appId,
|
||
|
device_id: deviceId,
|
||
|
vendor: deviceBrand,
|
||
|
model: deviceModel,
|
||
|
uni_platform: platform,
|
||
|
os_name: osName,
|
||
|
os_version: osVersion,
|
||
|
os_language: osLanguage,
|
||
|
os_theme: osTheme,
|
||
|
pixel_ratio: devicePixelRatio,
|
||
|
window_width: windowWidth,
|
||
|
window_height: windowHeight,
|
||
|
screen_width: screenWidth,
|
||
|
screen_height: screenHeight,
|
||
|
rom_name: romName,
|
||
|
rom_version: romVersion,
|
||
|
last_update_date: now,
|
||
|
push_clientid: pushClientId
|
||
|
}
|
||
|
if (getDeviceRes.data.length > 0) {
|
||
|
await opendbDeviceCollection.where({
|
||
|
device_id: deviceId
|
||
|
}).update(data)
|
||
|
return
|
||
|
}
|
||
|
data.create_date = now
|
||
|
await opendbDeviceCollection.add(data)
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 更新device表的push_clien_id
|
||
|
* @tutorial https://uniapp.dcloud.net.cn/uniCloud/uni-id-pages.html#set-push-cid
|
||
|
* @param {object} params
|
||
|
* @param {string} params.pushClientId 客户端pushClientId
|
||
|
* @returns
|
||
|
*/
|
||
|
module.exports = async function (params = {}) {
|
||
|
const schema = {
|
||
|
pushClientId: 'string'
|
||
|
}
|
||
|
this.middleware.validate(params, schema)
|
||
|
const {
|
||
|
deviceId,
|
||
|
appId,
|
||
|
osName
|
||
|
} = this.getUniversalClientInfo()
|
||
|
let platform = this.clientPlatform
|
||
|
if (platform === 'app') {
|
||
|
platform += osName
|
||
|
}
|
||
|
|
||
|
const {
|
||
|
uid,
|
||
|
exp
|
||
|
} = this.authInfo
|
||
|
const { pushClientId } = params
|
||
|
const tokenExpired = exp * 1000
|
||
|
const getDeviceRes = await deviceCollection.where({
|
||
|
device_id: deviceId
|
||
|
}).get()
|
||
|
// console.log(getDeviceRes)
|
||
|
if (getDeviceRes.data.length > 1) {
|
||
|
return {
|
||
|
errCode: ERROR.SYSTEM_ERROR
|
||
|
}
|
||
|
}
|
||
|
const deviceRecord = getDeviceRes.data[0]
|
||
|
await setOpendbDevice.call(this, {
|
||
|
pushClientId
|
||
|
})
|
||
|
if (!deviceRecord) {
|
||
|
await deviceCollection.add({
|
||
|
user_id: uid,
|
||
|
device_id: deviceId,
|
||
|
token_expired: tokenExpired,
|
||
|
push_clientid: pushClientId,
|
||
|
appid: appId
|
||
|
})
|
||
|
return {
|
||
|
errCode: 0
|
||
|
}
|
||
|
}
|
||
|
|
||
|
await deviceCollection.where({
|
||
|
device_id: deviceId
|
||
|
}).update({
|
||
|
user_id: uid,
|
||
|
token_expired: tokenExpired,
|
||
|
push_clientid: pushClientId,
|
||
|
appid: appId
|
||
|
})
|
||
|
return {
|
||
|
errCode: 0
|
||
|
}
|
||
|
}
|