目次
ホームページ js 表示「新しい」電子メールのアイデアの実装
ホームページ js が「新しい」電子メールのアイデアの実装を終了
書く前の短い説明
今朝の早朝、今まで一人でコーディングしていたのですが、真夜中になると思考が冴えてきます…。
まず、この機能は、既存のサードパーティ UI コンポーネント ライブラリを使用して実装する場合、実際には非常に簡単に実装できます。しかし!!!私は反抗的な人間なので、他の人が書けるものは自分にも書けると思っています。
他人の物を勝手に使うわけにはいかない、前に文学作品を読んだとき、他人の書いた素敵な言葉に酔いしれて忘れていたのと同じように、自分が文章を書くのが得意だということも忘れていて、書くこともできる。
始めましょう...
機能要件の背景
まず、私の質問の背景は次のとおりです。図に示すように、ホームページには 4 つのファンクション キーがあります。
ここで、管理者 A はお知らせを公開する必要があり、また、さまざまなユーザーからのメッセージに返信する必要があります。管理者 A がお知らせを公開すると、各ユーザーのホームページが更新されます。各ユーザー (別のユーザー) のお知らせが、管理者 A によって送信された新しいお知らせを初めて表示せずに受信した場合、表示されるグラフは次のとおりです。
同様に、ユーザー(別のユーザー)が「手紙を書きたい」を通じて管理者Aにメッセージを送信し、管理者Aがこのユーザーが送信した内容を「読む」に設定した場合、ユーザーの「マイメール」の状態はこの時点で表示されます。時間は:
「新規ステータス」の後に「公告」ボタンまたは「マイメール」ボタンをクリックするとページが更新され、元の状態の「公告」ボタンと「マイメール」ボタンが表示されます。
この問題は、明らかに、マルチユーザー管理下でリアルタイム メッセージをプッシュするときの「マイクロラベル プロンプト」の問題に対する解決策です。
私の実装アイデア:
5 つのデータ テーブル操作が含まれます
ホームページ js の論理的な考え方の最初の部分
まず、ユーザーがこれら 2 つの機能を使用したい場合は、ログインする必要があります。この問題に対応するログイン機能のロジックは次のとおりです。
1. 各ユーザーがログインすると、ユーザーは自分の情報 (openid などを含む) をユーザー データ テーブルに書き込みます。
2. クラウド関数を使用して、このアプレットにログインしたユーザーの openid を取得します。まず、xinxiaoxi_users データ テーブルの openid フィールドからデータを取得します。ユーザーの openid が xinxiaoxi_users データ テーブルに既に存在する場合 (番号データ項目の数 > 1)、ログインしているユーザーの openid は存在しません。そうでない場合 (データ項目の数 <1)、次のように 3 つの重要なフィールドを追加して実行します。
wx.cloud.callFunction({
name:'getusers',
data:{}
}).then(res=>{
wx.cloud.database().collection('xinxiaoxi_users').where({
_openid:res.result.openid
}).get({
success(res){
console.log(res.data.length,'useruser');
if(res.data.length < 1){
wx.cloud.database().collection('xinxiaoxi_users').add({
data: {
user:1,
gonggao: [],
youjian: [],
}
})
}else{
console.log('user已经添加过了');
}
}
})
})
この時点で、xinxiaoxi_users データ テーブル内のユーザー データ構造は次のとおりです (この時点では、各ユーザーの gonggao と youjian は空の状態で、管理者が「アナウンスの公開」または「読み取り」を通じてデータを追加するのを待っています) ):
リリースのお知らせ js ロジック
管理者がアナウンスを公開することは、ユーザーの情報を読み取るように設定することとは異なることを理解しておく必要があります。アナウンスの公開には元のユーザーの openid が関係しません。これは、管理者がパブリック プロセスを公開することを意味します (管理者はアナウンス - アナウンス データ テーブルを書き込みます)。 - ユーザー側のフロントエンド レンダリング ディスプレイ)、このプロセスの発行者は管理者であるため、完全なリリースはここにあります (誰でも受け取ることができます)。したがって、そのロジックは単純です。
const db = wx.cloud.database();
const dbCmd = db.command
wx.cloud.database().collection('xinxiaoxi_users').where({
user:1
}).update({
data:{
gonggao:dbCmd.push({
title:that.data.title
})
}
})
ここの that.data.title は、gongao データ テーブルに書き込まれたデータから取得されます。管理者に各ユーザーのデータ ストリップにシンボリック データを挿入するように依頼します。ここにすべてのアナウンス コンテンツを挿入する必要はありません。サービス環境の不必要な無駄を避けるため。
ホームページのjs表示「新しい」アナウンスアイデアの実装
各ミニ プログラム ユーザーの openid を取得するために、依然としてクラウド関数を使用しています (これは自分で作成できます)。取得後、xixiaoxi_users データ テーブルに移動して、対応するデータを見つけます。この時点で管理者が発表を行っている場合は、 get キーワード gonggao を含むデータ項目の数が >0 である場合、ホームページに表示されるお知らせボタンのスタイルを変更します。
wx.cloud.callFunction({
name:'getusers',
data:{}
}).then(res=>{
wx.cloud.database().collection('xinxiaoxi_users').where({
_openid:res.result.openid
}).get({
success(res){
console.log(res.data[0].gonggao.length,'qqqqqqqqqqqqqqqqqqqqqqqqqqqq');
if(res.data[0].gonggao.length > 0){
that.setData({
Public_announcement: false,
Public_announcement_1: true,
})
}
}
})
ホームページ js が「新しい」発表アイデアの実装を終了
ユーザーが「新規」アナウンスボタンをクリックすると、クラウド機能を通じてユーザーのログイン情報が検索され、そのユーザーのログイン情報が xinxiaoxi_users データテーブルで検索され、そのユーザーに対応する gonggao フィールドのデータが検索されます。初期状態に更新されます。
let that = this
that.Formula_announcement()
that.setData({
Public_announcement: true,
Public_announcement_1: false,
})
wx.cloud.callFunction({
name:'getusers',
data:{}
}).then(res=>{
console.log(res.result.openid,'ooooooooooooooooooooooooppppppppppppp');
wx.cloud.database().collection('xinxiaoxi_users').where({
_openid:res.result.openid
}).update({
data:{
gonggao:[]
}
})
})
ここでの hat.Formula_payment() メソッドは、クリックした後に他の関数によって使用されます。これはこの関数を妨げません。
管理者が js ロジックを「読み取る」
管理者が発行したアナウンスとの唯一の違いは、元の「書き込みユーザー」のユーザー情報 (openid) を使用する必要があることです。データ テーブルの構造は次のとおりです。
ユーザーの openid を取得した後、xiaoxi_users データ テーブルに移動してユーザーの youjian フィールドを見つけ、フィールド データを更新します。
wx.cloud.database().collection('xinxiaoxi_users').where({
user:1,
_openid:that.data.user_mail_openid
}).update({
data:{
youjian:dbCmd.push({
title:that.data.mail_title
})
}
})
ホームページ js 表示「新しい」電子メールのアイデアの実装
ここで、ユーザーの観点から「マイ メール」を見ているので、ユーザーがページを更新したときに、ホームページ上のミニ プログラム ユーザーの openid およびその他の情報を再取得する必要があります。この情報を使用して、xinxiaoxi_users で検索します。データ テーブル。管理者はユーザーの送信に基づいてデータ テーブルを送信します。電子メールで取得したユーザーの openid は、openid を通じてフィールド youjian データをユーザーの xinxiaoxi_users データ テーブルに追加するために使用されます。データ項目の数 > 0 の場合、スタイルはメールボタンが変わります:
let that = this
wx.cloud.callFunction({
name:'getusers',
data:{}
}).then(res=>{
wx.cloud.database().collection('xinxiaoxi_users').where({
_openid:res.result.openid
}).get({
success(res){
console.log(res.data[0].youjian.length,'qqqqqqqqqqqqqqqqqqqqqqqqqqqq');
if(res.data[0].youjian.length > 0){
that.setData({
My_mail: false,
My_mail_1: true,
})
}
}
})
})
ホームページ js が「新しい」電子メールのアイデアの実装を終了
「新しい」アナウンスを閉じるのと同じロジックは、ユーザー情報を確認し、xixiaoxi_users データ テーブルからフィールド youjian を取得し、そのデータを変更することです。
let that = this
that.My_mail()
that.setData({
My_mail: true,
My_mail_1: false,
})
wx.cloud.callFunction({
name:'getusers',
data:{}
}).then(res=>{
console.log(res.result.openid,'ooooooooooooooooooooooooppppppppppppp');
wx.cloud.database().collection('xinxiaoxi_users').where({
_openid:res.result.openid
}).update({
data:{
youjian:[]
}
})
})