Mini programa WeChat para desarrollo en la nube, indicaciones de microetiquetas hechas a mano, registro de ideas lógicas e implementación de código

Tabla de contenido

Una breve narración antes de escribir.

Antecedentes de requisitos funcionales

La primera parte de la idea lógica de la página de inicio js.

 Lógica js del anuncio de lanzamiento

La página de inicio js muestra la implementación de la idea de anuncio "nueva"

La página de inicio js cierra la implementación de la idea del anuncio "nuevo"

Administrador "leer" la lógica js

La página de inicio js muestra la implementación de una idea de correo electrónico "nueva"

La página de inicio js cierra la implementación de una "nueva" idea de correo electrónico


 

 

Una breve narración antes de escribir.

En las primeras horas de esta mañana, he estado codificando solo hasta ahora. En plena noche, mis pensamientos son claros...

En primer lugar, esta función es realmente muy fácil de implementar si se implementa utilizando una biblioteca de componentes de UI de terceros existente. ¡pero! ! ! Soy una persona rebelde, creo que puedo escribir lo que otros pueden escribir.

No puedes simplemente usar cosas de otras personas, como cuando leí algunas obras literarias antes, estaba tan intoxicado con las hermosas palabras escritas por otros que lo olvidé, pero olvidé que también era bueno escribiendo, y También podría escribir.

Empecemos...

Antecedentes de requisitos funcionales

En primer lugar, el trasfondo de mi pregunta es: hay cuatro teclas de función en la página de inicio, como se muestra en la imagen:

089f4cd15c5349c4b666d4d86687f9a3.png

Ahora hay un administrador A que necesita publicar anuncios y también responder mensajes de diferentes usuarios. Cuando el administrador A publica un anuncio, se actualizará la página de inicio de cada usuario, si los anuncios de cada usuario (diferentes usuarios) reciben el nuevo anuncio enviado por el administrador A, y sin verlo por primera vez, el gráfico que se muestra es:

2c485ad2f42840868da6997126b530df.png

De manera similar, si un usuario (usuario diferente) envía un mensaje al administrador A a través de "Quiero escribir una carta", y el administrador A configura el contenido enviado por este usuario para "leer", "Mi correo" del usuario El estado en este tiempo es:

3da5948d47fe4d70a0f1bc6d006273f2.png

Cuando el usuario hace clic en el botón "Anuncio público" o "Mi correo electrónico" después del "Nuevo estado", la página se actualiza y se muestran los botones "Anuncio de fórmula" y "Mi correo electrónico" en el estado original.

Este problema es obviamente una solución al problema de los "mensajes de microetiquetas" al enviar mensajes en tiempo real bajo administración multiusuario.

Mi idea de implementación:

Implica cinco operaciones de tabla de datos.

La primera parte de la idea lógica de la página de inicio js.

En primer lugar, si el usuario desea utilizar estas dos funciones, debe iniciar sesión para utilizarlas. La lógica de la función de inicio de sesión correspondiente a este problema:

1. Cuando cada usuario inicia sesión, escribe su información (incluido openid, etc.) en la tabla de datos de los usuarios.

2. Utilice la función de nube para obtener el openid del usuario que inició sesión en este subprograma. Primero, obtenga los datos a través del campo openid en la tabla de datos xinxiaoxi_users. Si el openid del usuario ya existe en la tabla de datos xinxiaoxi_users (número de elementos de datos> 1), el openid del usuario que inició sesión ya no existirá. Ejecute, si no (número de elementos de datos <1), agregue tres campos importantes de la siguiente manera:

 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已经添加过了');
                      }
                    }
                  })
                })

En este momento, la estructura de datos del usuario en la tabla de datos xinxiaoxi_users es la siguiente (en este momento, el gonggao y youjian de cada usuario están en un estado vacío, esperando que el administrador le agregue datos mediante "publicar anuncio" o "leer" ):

9830933fdf004ee4bf1e92d2b15bed14.png

 Lógica js del anuncio de lanzamiento

Debe saber que el administrador publica un anuncio es diferente de configurar la información del usuario para que se lea, porque publicar el anuncio no implica el openid del usuario original, lo que significa que el administrador publica el proceso público (el administrador escribe el anuncio - tabla de datos del anuncio - visualización de renderizado frontal del lado del usuario), el editor de este proceso es el administrador, por lo que aquí está la versión completa (cualquiera puede recibirla). Entonces su lógica es simple:

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
              })
            }
          })

El título de datos aquí se obtiene de los datos que se han escrito en la tabla de datos de gonggao. Le pedimos al administrador que inserte datos simbólicos en la tira de datos de cada usuario. No es necesario insertar todo el contenido del anuncio aquí. para evitar el desperdicio innecesario del entorno de servicio.

La página de inicio js muestra la implementación de la idea de anuncio "nueva"

Todavía usamos funciones en la nube (puede escribir esto usted mismo) para obtener el openid de cada usuario del mini programa. Después de obtenerlo, vaya a la tabla de datos xinxiaoxi_users para encontrar los datos correspondientes. Si el administrador ha emitido un anuncio en este momento, entonces get La cantidad de elementos de datos con la palabra clave gonggao es> 0, y luego cambiamos el estilo del botón de anuncio que se muestra en nuestra página de inicio:

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,
            })
          }
        }
      })

3cd683153bf04ad6a6701a1c5a76df43.png

 

La página de inicio js cierra la implementación de la idea del anuncio "nuevo"

Cuando el usuario hace clic en el botón de anuncio "Nuevo", la información de inicio de sesión del usuario se encuentra a través de la función de nube, y luego la información de inicio de sesión del usuario se encuentra en la tabla de datos xinxiaoxi_users para encontrar los datos en el campo gonggao correspondiente al usuario, y luego se actualiza al estado inicial:

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:[]
        }
      })
    })

El método hat.Formula_announcement() aquí es utilizado por otras funciones después de hacer clic. Esto no obstaculiza esta función.

Administrador "leer" la lógica js

La única diferencia aquí con el anuncio emitido por el administrador es que se debe utilizar la información de usuario (openid) del "usuario de escritura" original. La estructura de la tabla de datos es:

4998cb319a7d41cb8321c963d007c657.png

Después de obtener el openid del usuario, vaya a la tabla de datos xinxiaoxi_users para encontrar el campo youjian del usuario y actualice los datos del campo. Idea de código:

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
                 })
               }
             })

La página de inicio js muestra la implementación de una idea de correo electrónico "nueva"

Ahora estamos mirando "Mi correo" desde la perspectiva del usuario, por lo que necesitamos volver a obtener el openid y otra información del usuario del mini programa en la página de inicio cuando el usuario actualiza la página. Utilice esta información para encontrarla en xinxiaoxi_users tabla de datos. El administrador la envía según el envío del usuario. El openid del usuario obtenido por correo electrónico se utiliza para agregar el campo de datos youjian a la tabla de datos xinxiaoxi_users del usuario a través del openid. Si el número de elementos de datos > 0, el estilo de mi botón de correo electrónico cambia:

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,
            })
          }
        }
      })
    })

7da18eeb5a184b1880086a38cd64e908.png

 

La página de inicio js cierra la implementación de una "nueva" idea de correo electrónico

La misma lógica que cerrar el anuncio "nuevo" es confirmar la información del usuario, luego obtener el campo youjian de la tabla de datos xinxiaoxi_users y cambiar los datos que contiene:

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:[]
        }
      })
    })

 

 

Supongo que te gusta

Origin blog.csdn.net/lbcyllqj/article/details/133006343
Recomendado
Clasificación