qq_40132724 2021-01-19 17:16 采纳率: 50%
浏览 35
已采纳

小程序编译出错,求大佬指点

  • 写回答

8条回答 默认 最新

  • 代码的灵魂是bug! 2021-01-20 13:48
    关注

    你检查一下app.globalData里面写了openid没

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 代码的灵魂是bug! 2021-01-19 17:36
    关注

    检查logincheck.js中获取openID的地方

    评论
  • qq_40132724 2021-01-19 18:06
    关注

    评论
  • qq_40132724 2021-01-19 18:07
    关注

    这个有什么问题么

    评论
  • 代码的灵魂是bug! 2021-01-19 22:08
    关注

    信息上提示是63行

    评论
  • 仰望星空的代码 博客专家认证 2021-01-20 09:31
    关注

    把完整代码贴一下

    评论
  • qq_40132724 2021-01-20 12:29
    关注

    const app = getApp();

    const regeneratorRuntime = require('../utils/runtime.js')

    const WXBizDataCrypt = require('../utils/RdWXBizDataCrypt.js');

     

    // 获取数据库引用

    const db = wx.cloud.database();

    const userListDB = db.collection('userlist');

    Page({

      data: {

        isRegister: 0,

        isNoRegister: 0,

        isNoUserInfoCheck: 0,

      },

      toQandA() {

        wx.navigateTo({

          url: '../qAndA/qAndA',

        })

      },

      //返回此页面时使用

      onShow() {

        let flag = app.globalData.orgPage.type;

        if (flag == 3) {

          wx.redirectTo({

            url: '../navbar/navbar',

          })

        }

      },

      async onLoad(query) {

     

        //获取机构名称和配置信息

        await wx.cloud.callFunction({

          name: "getAllUnion"

        }).then(res => {

          console.log(res.result.data);

          app.globalData.isNoUserInfoCheck = res.result.isNoUserInfoCheck;

          app.globalData.isBleOnly = res.result.isBleOnly;

          app.globalData.isNoRegister = res.result.isNoRegister;

          app.globalData.keyName = res.result.keyName;

          app.globalData.allUnion = res.result.data;

          app.globalData.registerType = res.result.registerType;

          app.globalData.listRule = res.result.listRule;

          app.globalData.showNotice = res.result.showNotice;

          app.globalData.isShowNotice = res.result.isShowNotice;

          app.globalData.isShowNoticeIndex = res.result.isShowNoticeIndex;

          app.globalData.showNoticeIndex = res.result.showNoticeIndex;

          console.log(app.globalData.allUnion);

          console.log("输出全部配置信息")

          console.log(app.globalData)

        })

     

        let globalData = app.globalData;

        console.log(globalData)

        for (var Key in globalData) {

          console.log(Key + ':' + globalData[Key]);

        }

        this.setData({

          globalData: globalData

        })

        console.warn(typeof this.data.globalData)

     

        let isNoUserInfoCheck = this.data.globalData.isNoUserInfoCheck;

     

        let isNoRegister = this.data.globalData.isNoRegister; //指定无需注册的体验模式

        console.log(isNoRegister)

     

        this.setData({

          isNoUserInfoCheck: isNoUserInfoCheck,

          isNoRegister: isNoRegister,

        })

     

        //指定用户自动登录

        if (this.data.isNoUserInfoCheck) {

          app.globalData.openid = 'og4vT5JjRgKaq_Zr7043RmJrHT4w';

          this.checkRegister();

        }



     

        this.getUser(); //注册第一步获取openid

        //检测参数

        let scene = decodeURIComponent(query.scene)

        console.log('二维码信息为');

        console.log(scene);

        //测试用

        //scene ='26b301645d39b4a2028db6467c4bf187';

        if (scene.length != 32) {

          console.log('没有带参数');

        } else {

          //跳转查看物品

          console.log(scene);

          app.globalData.orgPage = {

            type: 1, //物品页

            _id: scene

          }

        }




     

      },

      autoRister() {

        let groupNames = ['格兰芬多', '赫奇帕奇', '拉文克劳', '斯莱特林'];

        let key = parseInt(4 * Math.random());

        userListDB.add({

          data: {

            config: {

              isNew: 1,

              isOCR: 0,

            },

            qqNumber: '123456',

            date: '可选',

            unionName: '体验组织', //增加的组织名称字段!!!!!!!!!

            groupName: groupNames[key],

            mail: 'test@qq.com',

            major: '其他',

            name: '体验账号',

            phonecall: '123456',

            province: '可选',

            stuYear: '可选',

            stuid: '777777777',

            type: '管理员',

            userInfo: app.globalData.userInfo,

            creatTime: db.serverDate(),

            isCheck: ''

          },

        }).then(res => {

          wx.hideLoading();

          wx.redirectTo({

            url: '../logincheck/logincheck',

          })

        }).catch(err => {

          wx.showModal({

            title: '注册失败',

            content: String(err),

          })

        })

      },

     

      checkRegister() { //检查用户是否已经注册

        let _this = this;

        console.log(app.globalData.openid)

        userListDB.where({

          _openid: app.globalData.openid // 填入当前用户 openid

        }).get({

          async success(res) {

            console.log(res.data)

            //初始注入用户数据!!!!!!!!

            app.globalData.USER = res.data[0];


     

            if (res.data.length == 0) { //查询数据库中是否有用户数据

              if (app.globalData.isNoRegister && !(app.globalData.isWxwork)) {

                wx.showLoading({

                  title: '获取体验权限中',

                })

                _this.autoRister();

              } else {

                //对于企业微信将直接获取信息不需要注册

                if (app.globalData.isWxwork) {

                  //企业微信注册逻辑

                  _this.wxworkRegister()

                } else {

                  wx.redirectTo({

                    url: '../registerOcr/registerOcr',

                  })

                }

              }

            } else {

              //如果是企业微信则需要校验是否有userid字段

              //多身份切换考虑用户拥有多个身份

              if (app.globalData.isWxwork) {

                //console.warn('测试模式')

                // console.log(typeof (res.data[0].userid))

     

                //获取授权token

                console.log('开始获取userid')

                let ID = 'wwd6b6f0333869ca28'; //企业id

                let SECRECT = '69usvQVy2RZ9HBQj-wxKxbbZH3vAKJrCeitCsMWmMCQ' //应用key

                let wxworkUserSerct = await app.getWxworkSerct(ID, SECRECT)

                let userid = wxworkUserSerct.userid;

                let corpid = wxworkUserSerct.corpid; //当前企业的corpid

                //console.log(wxworkUserSerct)

                let allUnion = app.globalData.allUnion;

     

                let currentUnionName;

     

                let userUnionName = app.globalData.USER.unionName;

     

                console.log(userUnionName)

                console.log(allUnion)

                let currentGroupName;

     

                for (let index in allUnion) { //将当前企业id换成名称

                  if (allUnion[index].corpid == corpid) {

                    console.log('当前企业名称为')

                    currentUnionName = allUnion[index].unionName

                    currentGroupName = allUnion[index].groupName[0]

                    console.log(allUnion[index].unionName)

                    break;

                  }

                }

     

                //比较企业名称 不一样则需要 将用户的机构名称更改

                //并更新userid的值,同时需要将小组名称改为未选择

                //权限不变

     

                if (currentUnionName != userUnionName) { //将用户的机构名称改为当前企业的名称

                  wx.showLoading({

                    title: '切换机构中',

                    icon: 'none'

                  })

                  await wx.cloud.callFunction({

                    name: 'editUnionName',

                    data: {

                      unionName: currentUnionName,

                      userid: userid,

                      groupName: currentGroupName

                    }

                  }).then(res => { //转换后重新登录

                    wx.hideLoading();

                    wx.redirectTo({

                      url: '../logincheck/logincheck',

                    })

                  })

                }



     

                if (typeof (res.data[0].userid) == "undefined" || res.data[0].userid == '') { //需要获取userid

                  wx.cloud.callFunction({

                    name: 'editUserID',

                    data: {

                      userid: userid,

                      _openid: res.data[0]._openid

                    }

                  }).then(res => {

                    console.log(res)

                  })

                }

              }

     

              //“物品码 跳转逻辑”

              let flag = app.globalData.orgPage.type;

              if (flag == 0) {

                wx.redirectTo({

                  url: '../navbar/navbar',

                })

              } else if (flag == 1) { //到物品详情页

                let data = app.globalData.orgPage._id;

                //返回自动恢复初始化

                app.globalData.orgPage.type = 3;

                wx.navigateTo({

                  url: '../itemDetail/itemDetail?data=' + data

                })

              }

            }

     

          },

          fail: function (err) {

            wx.showModal({

              title: '错误',

              content: err,

            })

          }

        })


     

      },

      getUserInfo: function () {

        // 查看是否授权

        let _this = this;

        wx.getUserInfo({

          success: function (res) {

            app.globalData.userInfo = res.userInfo

            console.log(app.globalData.userInfo)

            _this.checkRegister()

            _this.setData({

              isRegister: 0

            })

          },

          fail: function (err) {

            _this.setData({

              isRegister: 1

            })

          }

        })

      },

     

      async wxworkRegister() { //企业微信注册逻辑

     

        //获取信息

        //获取机构信息,电话,等。

     

        //获取授权token

        let ID = 'wwd6b6f0333869ca28'; //企业id

        let SECRECT = '69usvQVy2RZ9HBQj-wxKxbbZH3vAKJrCeitCsMWmMCQ' //应用key

        let wxworkUserSerct = await app.getWxworkSerct(ID, SECRECT)

        console.log('多重promise调试')

        console.log(wxworkUserSerct)

     

        app.globalData.corpid = wxworkUserSerct.corpid

     

        console.log('调用企业微信api获取用户信息')


     

        let userInfo = await new Promise((resolve, reject) => {

          wx.qy.getEnterpriseUserInfo({

            success: function (res) {

              var userInfo = res.userInfo

              var name = userInfo.name

              var gender = userInfo.gender //性别 0:未知、1:男、2:女

              //console.log(userInfo)

              resolve(userInfo)

            }

          })

        })


     

        let Phone = await new Promise((resolve, reject) => {

          wx.qy.getMobile({

            success: function (res) {

              console.log(res.encryptedData)

              console.log(res.iv)

              let appId = 'wx6b72c910779512f9'

              var pc = new WXBizDataCrypt(appId, wxworkUserSerct.session_key);

              var data = pc.decryptData(res.encryptedData, res.iv);

              console.log('解密后 电话号码: ', data)

              resolve(data)

            }

          })

        })

     

        let Email = await new Promise((resolve, reject) => {

          wx.qy.getEmail({

            success(res) {

              console.log(res.encryptedData)

              console.log(res.iv)

              let appId = 'wx6b72c910779512f9'

              var pc = new WXBizDataCrypt(appId, wxworkUserSerct.session_key);

              var data = pc.decryptData(res.encryptedData, res.iv);

              console.log('解密后邮箱: ', data)

              resolve(data)

     

            }

          })

        })

     

        console.log('同步获取wxwork个人信息接口')

        console.log(userInfo)

        console.log(Phone)

        console.log(Email)

        let corpid = app.globalData.corpid //公司id

        let allUnion = app.globalData.allUnion //获取所有组织

        let userid = wxworkUserSerct.userid

        let flag = 0

        let union = ''

     

        console.log(corpid)

        for (let i = 0; i < allUnion.length; i++) {

          if (allUnion[i].corpid == corpid) {

            if (allUnion[i].corpid != '') {

              flag = 1;

              union = allUnion[i];

              break;

            }

          }

        }

        if (!flag) { //小程序未绑定企业信息

          wwx.showModal({

            title: '提示',

            content: '管理员未绑定机构信息',

          })

          return

        }

     

        console.log(union)

     

        //选择分组信息

     

        /*

        wx.showActionSheet({

          itemList: ['A', 'B', 'C'],

          success(res) {

            console.log(res.tapIndex)

          },

          fail(res) {

            console.log(res.errMsg)

          }

        })

        */

     

        //企业微信体验模式相关逻辑

        let type = '普通成员'

        let groupName = '未选择'

     

        let groupNames = ['格兰芬多', '赫奇帕奇', '拉文克劳', '斯莱特林'];

        let key = parseInt(4 * Math.random());

     

        if (union.unionName == '体验组织') {

          type = '管理员'

          groupName = groupNames[key]

        }

     

        //信息注入数据库

        userListDB.add({

          data: {

            config: {

              isNew: 0,

              isOCR: 0,

            },

            userid: userid, //企业微信特有字段

     

            qqNumber: '123456',

            date: '可选',

            unionName: union.unionName, //增加的组织名称字段!!!!!!!!!

            groupName: groupName,

            mail: Email.email,

            major: '可选',

            name: userInfo.name,

            phonecall: Phone.mobile,

            province: '可选',

            stuYear: '可选',

            stuid: '可选',

            type: type,

            userInfo: app.globalData.userInfo,

            creatTime: db.serverDate(),

            isCheck: ''

          },

        }).then(res => {

          //发送通知通知管理员

          console.log('注册成功');

          wx.redirectTo({

            url: '../logincheck/logincheck',

          })

        }).catch(err => {

          wx.showModal({

            title: '注册失败',

            content: String(err),

          })

        })



     

      },

     

      getUser() {

        // 调用云函数

        let _this = this;

        wx.cloud.callFunction({

          name: 'login',

          data: {},

          success: res => {

            console.log('[云函数] [login] user openid: ', res.result.openid)

            app.globalData.openid = res.result.openid

            console.log(app.globalData.openid)

            _this.getUserInfo();

          },

          fail: err => {

            console.error('[云函数] [login] 调用失败', err)

          }

        })

      }


     

    })

    评论
  • qq_40132724 2021-01-20 12:30
    关注

    评论
查看更多回答(7条)

报告相同问题?

悬赏问题

  • ¥40 找同学帮敲Python代码
  • ¥15 MYSQL 订单的商品明细重复计算问题
  • ¥15 微信实时共享位置修改
  • ¥100 TG的session协议号转成直登号号后客户端登录几分钟后自动退出设备
  • ¥50 共模反馈回路的小信号增益
  • ¥15 arduino ssd1306函数与tone函数放歌代码不兼容问题
  • ¥70 0.96版本hbase的row_key里含有双引号,无法deleteall
  • ¥40 Ida Pro增加插件出现问题
  • ¥15 诊断性META分析合并效能的检验
  • ¥15 请问abb根据色块判断奇偶数并根据批次号放入仓储