代码拉取完成,页面将自动刷新
同步操作将从 xyz9836/mp-push-leancloud 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
const AV = require('leanengine')
const { push } = require('./utils')
const ChannelObject = AV.Object.extend('Channel')
const UserToChannelObject = AV.Object.extend('UserToChannel')
class User {
constructor (openId) {
this.openId = openId
}
async login () {
// openId 就是用来识别用户的唯一标识
try {
this.Object = await AV.User.signUpOrlogInWithAuthData({
uid: this.openId
}, 'mp')
} catch (e) {
console.error(e)
}
return this
}
async findChannels () {
let userToChannelQuery = new AV.Query('UserToChannel')
let results = await userToChannelQuery.equalTo('user', this.Object).find()
return results.map(userToChannel => {
return userToChannel.get('channelName')
})
}
async linkChannel (channel) {
if (!channel.exist) {
channel.owner = this
await channel.create()
}
let userToChannelQuery = new AV.Query('UserToChannel')
let result = await userToChannelQuery.equalTo('user', this.Object).equalTo('channel', channel.Object).first()
if (result) return
let userToChannelObject = new UserToChannelObject()
userToChannelObject.set({
user: this.Object,
openId: this.openId,
channel: channel.Object,
channelName: channel.name
})
await userToChannelObject.save()
}
}
class Channel {
constructor (channelName) {
this.name = channelName
this.exist = false
}
async init () {
if (this.Object) return
let channelQuery = new AV.Query('Channel')
let result = await channelQuery.equalTo('name', this.name).first()
if (result) {
this.Object = result
this.exist = true
} else {
let channelObject = new ChannelObject()
this.Object = channelObject
}
}
async create () {
if (this.exist) return
let channelObject = this.Object
channelObject.set({name: this.name, owner: this.owner.Object})
this.Object = await channelObject.save()
this.exist = true
}
async push (text) {
let userToChannelQuery = new AV.Query('UserToChannel')
let results = await userToChannelQuery.equalTo('channel', this.Object).find()
return Promise.all(results.map(userToChannel => {
let openId = userToChannel.get('openId')
return push(openId, text)
}))
}
}
module.exports = {
User,
Channel
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。