微信小程序——校园服务小程序(二)

环境搭建好了,我们开始编写代码。

首先我们来看 “我的“ 界面,先写一下登录功能。

先看一下wxml

通过判断canIUseGetUserProfile来决定是渲染手机号和验证码输入框还是渲染头像和昵称。

<view class="userinfo"><input wx:if="{{canIUseGetUserProfile}}" bindinput="getName" type="number" auto-focus placeholder="请输入手机号:" class="input_css"/><input wx:if="{{canIUseGetUserProfile}}" bindinput="getqwe" auto-focus placeholder="请输入验证码:" class="input_css"/><button  wx:if="{{!hasUserInfo}}" wx:if="{{canIUseGetUserProfile}}" bindtap="getUserProfile" class="huoqutouxiang"> 登录 </button><block wx:else><view><image class="userinfo-avatar" src="{{userInfo.avatarUrl}}" mode="cover"></image><text class="userinfo-nickname">{{userInfo.nickName}}</text>
</view>

登录功能主要是为了获取用户的头像、昵称、电话号、openid

那么 怎么获取呢:

头像和昵称通过getUserProfile获取用户的信息。(微信开发者文档上有)

wx.getUserProfile({desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写success: (res) => {this.setData({userInfo: res.userInfo,hasUserInfo: true})

通过对应的点击事件的event获取相应的值

默认为:

昵称:nickName

头像:avatarUrl

openid我这里使用云函数获取;(云函数的使用方法很简单,网上有很多)

// 云函数入口文件
const cloud = require('wx-server-sdk')cloud.init({env: cloud.DYNAMIC_CURRENT_ENV
})// 云函数入口函数
exports.main = async (event, context) => {const wxContext = cloud.getWXContext()return {event,openid: wxContext.OPENID,appid: wxContext.APPID,unionid: wxContext.UNIONID,}
}

直接返回对应的值就好了。

电话号则通过诱导用户输入获得。

使用input组件的bindinput获取用户输入的内容

getName(event){console.log(event.detail.value);shoujihao=event.detail.value},

手机号的验证使用了正则表达式

/^1[34578]\d{9}$/.test(shoujihao)

有需要的可以购买短信端口发送验证码。

将用户的信息导入库中,因为这是一个需要联网的项目,需要让其他用户也能看到你的信息,所以我们要将当前用户的信息导入库中,方便其他人通过服务器获取到我们的信息,

我们使用的是小程序自带的云开发技术,

peopleviewnum 和viewpeoplenum涉及到关注功能这里不做过多解释。

const db = wx.cloud.database()
const people1Collection = db.collection('people')//people是库的名字
people1Collection.add({//添加用户信息到数据库data:{shouji:shoujihao,wxtitle: this.data.weixinname,wxpages: this.data.weixinpages,viewpeoplenum:0,//关注数量peopleviewnum:0//粉丝数量},success:res=>{console.log("添加成功",res);},fail: res=>{console.log("添加失败");}})

记录登录状态,

因为许多操作只有登录过后才能操作,比如:评论,上传帖子,预约订单等,这里把登录状态存在缓存中,当缓存中存入响应的值,其他界面才能进行对应的操作。

还有用户不可能每次进入小程序都重新登陆,所以已注册的账号要有一个自动登录功能。

这里的思路是:

在onLoad()里面先获取当前用户的openid,通过openid查询数据库,若返回值为空,则当用户是一个新用户,需要注册,这时渲染注册界面,当返回值不为空,说明这是一个已经注册过的用户,直接从库中获取数据,渲染已登录界面。

wx.cloud.callFunction({name:"getopenid"}).then(res=>{console.log(res,"登陆状态");open1=res.result.openid//console.log(zhuangtaiopenid);people1Collection.where({_openid:open1}).get().then(res =>{this.setData({people: res.data})console.log(res);if(res.data!=''){console.log("重复---------------------------------------------------吗");this.setData({canIUseGetUserProfile: false})this.gettitlepages();wx.setStorageSync('stopenid',open1)//将数据导入缓存wx.setStorageSync('loginzhuangtai', "yidenglu")//将数据导入缓存people1Collection.where({_openid:open1}).get().then(res=>{this.setData({people:res.data})console.log(res,"获取用户数据成功");shoujihao=res.data[0].shoujiconsole.log(shoujihao);wx.setStorageSync('oldshouji', shoujihao)//将数据导入缓存})}else{console.log("新用户填写手机号");this.setData({loadingHidden: true});people1Collection.where({_openid:open1}).get().then(res=>{this.setData({people:res.data})console.log(res,"获取用户数据成功");})}
})})//if(open1!=''&&open1!=null){//}if (wx.getUserProfile) {this.setData({canIUseGetUserProfile: true})}},

微信小程序——校园服务小程序(二)校园论坛加预约理发服务相关推荐

  1. ArcGIS——数据库与服务备份(二、arcgis server中站点服务的备份和恢复)

    一.引言 之前给别人部署服务不多都是手动重新发布一遍,直到有一次遇到的服务超级多,自己都记不清了,然后就懵逼了,老子要一个个发布吗==后来学长说了一个简单的备份方法. 服务器管理员通常需保留其站点配置 ...

  2. 服务计算作业二——GO语言TDD实践报告

    服务计算作业二--GO语言TDD实践报告 服务计算作业二--GO语言TDD实践报告 教程学习 为一个重复字符五次的函数编写测试,并先使用最少的代码让失败的测试先跑起来(核心概念) 把代码补充完整,使得 ...

  3. 服务端Skynet(二)——消息调度机制

    服务端Skynet(二)--消息调度机制 文章目录 服务端Skynet(二)--消息调度机制 1.提前了解知识 1.1.互斥锁(mutex lock : **mut**ual **ex**clusio ...

  4. Kratos战神微服务框架(二)

    Kratos战神微服务框架(二) 目录 Kratos战神微服务框架(二) 项目结构 api编写 protobuf编写 使用makefile service层接口实现 biz层 data层 config ...

  5. 校园服务小程序源代码分享园服务微信小程序全开源版源码-包含服务端

    2021年4月17日更新 严正声明: [请一定勿将程序用户商业用途且 包括 用此程序去参加各类学校的竞赛或者其他以获取名利而参与的竞赛等,一旦被原作者发现将会面临严重的侵权责任后果,特别是被获奖后会遭 ...

  6. 基于微信校园跑腿小程序系统设计与实现 开题报告

      毕业论文 基于微信校园跑腿小程序系统 开题报告 学    院: 专    业: 年    级: 学生姓名: 指导教师: 黄菊华   XXXX大学本科生毕业论文(设计)开题报告书 姓   名 Xxx ...

  7. 校园跑腿小程序--表白墙--仿造微信朋友圈

    目录 效果展示 一.发布页面 1.1.整体页面样式 1.1.1.上传图片或者视频事件 1.1.2.选择用户当前位置 二.仿造微信朋友圈页面 2.1.1.获取用户传入的经纬度并展示 2.1.2.评论用户 ...

  8. 软件工程毕业设计课题(81)微信小程序毕业设计PHP校园跑腿小程序系统设计与实现

    项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于微信校园跑腿小程序系统,前台用户使用小程序发布跑腿任何和接跑腿任务,后台管理使用基于PHP+MySql的B/S架构:通过后台管理跑腿的用户. ...

  9. 微信小程序学习笔记 ( 小程序主体学习 二 逻辑层 app.js 扩展 高级食用方法)

    目录结构 上图是我建立的的微信小程序的目录结构 主体学习 逻辑层(App Service) 小程序开发框架的逻辑层由 JavaScript 编写.    逻辑层将数据进行处理后发送给视图层,同时接受视 ...

最新文章

  1. Java学习总结:56(Stack子类)
  2. phpcms V9判断奇数偶数的实例
  3. oracle decode 01427,dbms_hm.run_check遇到ORA-00604、ORA-01427
  4. SpringBoot+Vue+Openlayers实现地图上新增和编辑坐标并保存提交
  5. zcmu-1182(大数相减)
  6. WebGL on iOS8 最终等到了这一天
  7. 【NBIoT无线模块DTU数传电台】串口服务器RS232/RS485端口工业路由信号传输
  8. es统计有多少个分组_ElasticSearch 分组查询的几个例子
  9. 基于SSM框架的电影订票系统
  10. 自己开店用什么收银系统好-纳客收银系统
  11. TCP、UDP、CoAP、LwM2M、MQTT简单对比
  12. 外贸SOHO具备的素质
  13. 计算机鼠标双击怎么,鼠标双击变成属性怎么办 鼠标双击变成属性解决办法【详解】...
  14. VUCA时代的领导力开发
  15. Intellij idear使用心得
  16. 2022年5月网络教育大学英语B统考题库复习题及考试时间
  17. 【转】预装Win8/8.1 中文版系统升级为专业版或专业版含媒体中心版的简单方法...
  18. Microduino王镇山:将物联网带进课堂
  19. 2020-2-10新生赛
  20. 相机画幅等值计算器_全画幅相机和作物传感器相机有什么区别?

热门文章

  1. html如何使mp4成为背景,如何让MP4 video视频背景色变成透明?
  2. vue 背景图 自适应_Vue的自适应视频背景播放器
  3. 解决office2007和vs2008安装冲突
  4. php和html的关系
  5. 测试用例-微信消息撤回
  6. win10远程桌面Android软件,不用第三方软件,远程控制你的 Windows10 系统
  7. 途客圈创业记--读书笔记
  8. 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。到第10天早上时,只剩下一个,求第一天有多少桃子。
  9. pat 1027. Colors in Mars (20)
  10. 谷歌添加JSON格式化工具 jsonhandler