iVX应用中常见的数据模型
在使用iVX开发应用时,经常遇到一些通用的应用场景,本文对这些应用场景中的数据模型进行了总结,并以案例的形式对其实现方法和流程加以介绍。
一、用户鉴别
用户鉴别广泛应用于各种类型的应用中,几乎所有非纯展示类的应用,都需要对当前访问的用户进行身份鉴别,并根据获取到的用户身份信息进行后续操作,例如用户登录后查询其订单信息或限制其投票次数等。
1、基本原理与流程
在iVX应用中,用户鉴别可通过两种方式实现:一种是使用登录凭证(用户名、密码等)发起登录,凭证鉴别成功后返回用户的信息;另一种是使用登录令牌(上一次登录后存在cookie里)进行匹配,匹配成功后返回用户信息,无需用户再次登录验证。
用户组件提供了多种用户登录方式,包括手机密码登录、手机验证码登录、邮箱登录以及微信登录等,其登录并获取用户信息的基本原理大致相同,如下图所示:
用户登录成功后,服务端在返回用户信息的同时,还会返回一个后台生成的随机字符串,并存储在客户端的cookie中,以用作当前用户的登录令牌。当下一次用户打开应用需要获取用户信息时,可以直接通过该令牌来匹配用户以获取相应信息,其原理和流程如下图所示:
2、实现方法与案例
用户登录与获取用户信息,需要在后台添加“用户”组件。需要发起登录以鉴别并获取用户信息时,只需调用用户组件的登录动作即可。根据用户的注册类型,发起不同类型的登录,下图以手机密码发起登录:
如果用户之前已经登录过,客户端cookie中已存在当前用户的登录令牌,则可直接调用用户组件的“获取当前用户信息”动作,该动作会自动将cookie中的登录令牌发送至服务端进行匹配。因此,只要用户不清除该cookie,就可以实现自动获取登录状态及用户信息,无需再次发起登录。
相关案例链接:
微信公众号/小程序登录:
https://demo.ivx.cn/%E8%8E%B7%E5%8F%96%E5%BE%AE%E4%BF%A1%E5%A4%B4%E5%83%8F%E6%98%B5%E7%A7%B0%E7%9A%84%E9%80%9A%E7%94%A8%E6%96%B9%E6%B3%95
邮箱注册/登录:
https://demo.ivx.cn/%E9%82%AE%E7%AE%B1%E7%99%BB%E5%BD%95%E4%B8%8E%E6%B3%A8%E5%86%8C%E5%AE%8C%E6%95%B4%E9%80%BB%E8%BE%91
手机注册登录:
https://demo.ivx.cn/%E6%89%8B%E6%9C%BA%E6%B3%A8%E5%86%8C%E7%99%BB%E5%BD%95
3、常见问题与处理办法
1)如何确认用户的登录状态?
通常在应用初始化时去判断用户是否已登录,即cookie中是否存在用户的登录令牌,并根据用户登录状态决定发起登录或直接获取用户信息,逻辑图如下:
以微信登录为例,其具体逻辑设置如下:
二、投票模型
由于投票是常用的一种应用类型,iVX提供了专门的投票组件来帮助用户实现投票案例的制作。
1、基本原理与流程
标准的投票应用包含了两张数据表,即候选人信息表和投票流水记录表。候选人信息表用于记录候选人的基本信息及其得票数,投票流水表则用于记录参与投票的用户对候选人的投票信息。
用户登录后,点击前端UI组件进行投票,此时需要向投票流水表中添加该条投票记录,当投票记录添加成功后,则使候选人表中相应候选人的票数加1,并返回投票成功提示;如果投票记录添加失败,例如当前用户投票次数已超过限制,则向前端返回失败提示。
需要注意的是,在实际情况中,可能出现投票流水记录成功,但候选人票数更新失败的问题,但这种情况出现的概率非常小,并且iVX提供的投票组件内部逻辑自带了数据库的事务处理,因此一般可以忽略这种情况。
2、实现方法与案例
在后台添加投票组件,生成候选人信息表和投票流水记录表,并在候选人表中添加候选人信息及票数。
在前台初始化时,调用投票组件的“获取候选人列表”动作,即可获取到候选人信息及票数,并在前端展示。
当用户点击投票按钮时,调用投票组件的“投票”动作并传入候选人姓名,即可自动提交该条流水记录及更新相应候选人的票数,然后返回投票成功与否及失败原因:
相应的投票流水记录和候选人投票结果如下:
相关案例链接:
投票(单人单票):
https://demo.ivx.cn/%E6%8A%95%E7%A5%A8%E4%B8%93%E9%A2%98-%E5%8D%95%E4%BA%BA%E5%8D%95%E7%A5%A8
投票(一票多选):
https://demo.ivx.cn/%E6%8A%95%E7%A5%A8%E4%B8%93%E9%A2%98-%E4%B8%80%E7%A5%A8%E5%A4%9A%E9%80%89
吾邻盟主投票案例:
https://demo.ivx.cn/%E5%AE%8C%E6%95%B4%E6%8A%95%E7%A5%A8%E5%B0%8F%E5%BA%94%E7%94%A8
3、常见问题与处理方法
1)如何限制每个用户只能投票一次?
一种方法是打开投票流水记录表中的限制提交条件,并将每人提交次数设置为1次,但这种方法性能上并不是最优的,因此建议采用下面介绍的第二种方法。
第二种方法,将投票流水记录表中的“提交用户”字段设置为不可插入重复数据即可:
2)如何设置每个用户总共或每天可以投票N次?
打开票流水记录表中的限制提交条件,并设置每人提交次数或每人每日提交次数:
3)需要显示用户当前剩余票数怎么办?
可在用户表中添加一个额外的剩余票数字段,每次投票时,在投票流水记录成功后,更新用户表中当前用户的剩余票数,并在案例初始化获取用户信息时,返回其剩余票数信息。
4)如何限制每个用户只能为同一个候选人投票一次?
建议在投票流水记录表中新增一个联合字段“候选人-投票”,并设置不可插入重复数据。在用户投票时,向流水表插入候选人-用户信息。
三、抽奖模型
1、基本原理与流程
典型的抽奖应用一般需要设置三张表:抽奖流水表、奖品表和中奖记录表。与投票应用类似,抽奖的流水表用于记录用户的抽奖行为以及限制用户的抽奖次数;奖品表用于设置奖品以及奖品是否被抽走;中奖记录表则用于记录中奖的用户及奖品。
当用户登录并点击抽奖后,需要向抽奖流水表中提交一条记录,根据设置的抽奖次数限制,该条记录的提交结果可能为成功或失。如果失败,则表示用户抽奖次数已用完,应向前端返回抽奖失败信息;如果抽奖行为记录提交成功,则需要进一步生成随机数来进行抽奖。
生成随机数抽奖是抽奖应用的核心步骤。首先需要在后台设置一个随机概率值,该值可设置为一个0~1之间的小数,数值越大,中奖概率越高。接着需要生成一个随机数,并判断该随机数的数值是否小于设置的概率值,如果结果为否,则表示未抽中,应向前端返回未中奖信息;如果结果为是,表示抽中,需要进一步从奖品表中抽取奖品。
从奖品表抽取奖品时,采用“随机更新一条并输出”的方法,即从奖品表中随机选择一个未被抽走的奖品输出,并同时将其抽中状态更新为已抽走。如若奖品池已空,即奖品表中所有奖品状态均为已被抽走,则随机更新并输出的数据为空,此时应返回奖品已发放完的消息。若输出有数据,则进一步向中奖记录表中提交用户的中奖记录并返回抽中奖品信息至前端。
2、实现方法与案例
在后台依次添加抽奖流水表、奖品表和中奖记录表,可在流水表中设置数据库的提交限制以限制用户抽奖次数。
设置好数据表后,还需要在后台添加一个数值变量来存储中奖概率,根据概率大小将其值设置为0~1之间的一个值:
抽奖服务的具体逻辑设置如下:
相关案例链接:
抽奖逻辑:
https://demo.ivx.cn/%E6%8A%BD%E5%A5%96%E9%80%BB%E8%BE%91
九宫格抽奖:
https://demo.ivx.cn/%E4%B9%9D%E5%AE%AB%E6%A0%BC%E6%8A%BD%E5%A5%96
3、常见问题与处理方法
1)如何动态设置中奖概率?
可添加一个中奖概率数据库,在其中添加一个概率值,并提供一个接口来更新这个值。这样就可以再新建一个案例,调用该接口来动态设置中奖概率值。相应地,抽奖逻辑中判断
四、券码兑换
1、基本原理与流程
券码兑换应用的逻辑与抽奖应用类似,需要提供一个券码表以及一个兑换流水表。券码表记录了提供的券码及其兑换状态,流水表用于记录用户兑换的券码信息。
当用户登录后,输入券码并点击兑换,会将该券码发送至后台,并与券码表中的数据进行核对。首先采用“更新一条并输出”的方法,找到与该券码匹配且兑换状态为否的记录,并将其兑换状态值更新为已兑换。如果更新并输出的结果为无数据,表示券码无效或已被兑换,则应返回券码无效信息;如果输出结果为有数据,表示兑换成功,接下来应向兑换流水表中提交兑换记录,然后继续执行后续业务逻辑,例如领取红包、选取奖品等。最后将兑换结果返回至客户端。
2、实现方法与案例
在后台添加券码表与兑换流水表,需要注意的是,券码应保证唯一,不应出现多个重复券码,因此券码字段应打开“不可插入重复数据”,并且开启索引后,会提高券码的数据库查询速度:
具体的券码兑换逻辑如下:
相关案例链接:
线下兑换码案例:https://demo.ivx.cn/%E7%BA%BF%E4%B8%8B%E5%88%B8%E7%A0%81%E5%85%91%E6%8D%A2
五、随机不重复答题
随机不重复答题是指用户进入应用后,随机且不重复地从后台题库抽取题目,并判断用户提交答案正确与否,最后返回最终得分。
1、基本原理与流程
随机不重复答题应用一般需要三张表:用户表、题库以及答题记录表。其中,用户表用于用户登录,以及记录用户已答题数组和当前分数;题库用于抽取题目和对比答案;答题记录表主要是用于统计,例如某个题目的错误率、用户答题时间等。
主要流程为,用户登录后去获取题目,由于需要不重复出题,因此需要先从用户表获取当前用户已答题的数组,然后从题库中随机输出一道未作答题目。如果输出无数据,则表示用户已经答完所有题目,因此向前端返回已答完提示以及用户的最终得分;如果输出有数据,则需要将该题的题号更新至用户表中的已答题数组,然后返回该道题信息,这里需要注意的是,不要讲答案返回前端。
当用户提交答案后,与题库中的答案进行对比,然后更新用户表中该用户的得分,同时向答题记录表提交用户答题记录。当用户作答完成所有题目后,返回用户的最终得分。
2、实现方法与案例
在后台添加三张表:用户表、题库和答题记录表,其中用户表的已答题数组字段可直接设置为JSON类型。
获取题目的具体逻辑如下:
用户提交答案后的判断逻辑如下:
相关案例链接:
不重复随机答题案例:https://demo.ivx.cn/%E4%B8%8D%E9%87%8D%E5%A4%8D%E9%9A%8F%E6%9C%BA%E7%AD%94%E9%A2%98
(资源库 www.zyku.net)
原文链接:https://bbs.ivx.cn/1486
上一篇:Print Spooler服务停止,打印机服务无法启动的完美解决方案共享
栏 目:工具资源
本文标题:iVX应用中常见的数据模型
本文地址:https://www.zyku.net/gongju/2090.html
您可能感兴趣的文章
- 03-10帝国CMS灵动标签实现当前栏目高亮支持
- 05-10JS端基于download.js实现图片、视频时
- 12-28企业直聘-企业直聘应用软件功能介绍
- 07-15帝国cms模板使用php5.3.*版本无法连接
- 09-26支付宝查看疫苗接种记录方法介绍
- 07-10帝国cms关联外表连接sql语句
- 01-11桌面壁纸秀-桌面壁纸秀应用软件功能介
- 02-28miui12通话界面背景更改方法
- 10-19苹果13Pro录制视频取消高动态光渲染方
- 07-05Linux ftpwho命令
- 01-12美图多多-美图多多应用软件功能介绍
- 01-12Anna Card安娜请柬-Anna Card安娜请柬
- 09-19网易云音乐怎么关闭云村入口
- 01-12PP成长-PP成长应用软件功能介绍
- 07-05Linux kbdconfig命令
- 01-12光彩司机端-光彩司机端应用软件功能介
- 03-10vivos10隐藏应用操作方法
- 10-14iqooz5怎么设置返回键
- 06-25滴滴云
- 01-14红米手机怎么用便签画画
最近更新
阅读排行
猜你喜欢
- 01-12外卖猿配送-外卖猿配送应用软件功能介
- 03-04wordpress自定义系统默认发信人的方法
- 11-21抖音短视频如何注销账号
- 12-08小米11pro怎么启用miui优化
- 10-13realmegtneo2怎么唤醒语音助手
- 11-22Ubuntu16.04 调整屏幕分辨率的方法
- 09-11腾讯视频选集解锁功能介绍
- 12-12荣耀magic3至臻版应用锁功能在哪里
- 02-10华为手机设置双击亮屏教程
- 01-11东航云盘-东航云盘应用软件功能介绍