当前位置: 首页 > news >正文

小程序项目业务逻辑回忆4

用户查询积分

积分获取规则如下:

邀请其他用户购票参会,将获取该用户花费金额的10%获取积分。

邀请用户注册参观展览,需注册并现场签到,将获取10分的奖励积分。

邀请企业用户参展,将获取企业参展金额的5%获取到积分。

上述3条积分获取规则分条进行计算

用户在邀请其他用户注册或者购票时会将自己的邀请码拼接到分享的注册或购票的请求地址处,其他用户通过链接进行操作时,字符串截取可获得到邀请码

情况1:邀请的是展商,根据邀请码去exhibitor_applications展商报名表中遍历查询是否存在被邀请的展商,如果存在则将events中point_time注册展览获应取积分计入该用户的总积分当中

情况2:邀请的是个人用户,这时需根据被邀请人的用户ID,去signin_record签到信息表中去查询被邀请人所拥有的门票,然后通过signin_records表中的ticket_type去判断是会议门票还是展览门票

情况2.1:如果是展览门票,即不花钱的那种,先判断登记时间sign_in_time登记时间即门票生成时间是否在被邀请人注册的14日以内,如果是则在用户获取积分列表中展示该项记录,此时将events表中的point_time注册展览获取积分(此项是商家通过后台系统输入的)作为积分数量进行显示,将signin_records签到信息表中的sign_in_status签到状态作为状态显示在列表上,其实就相当于列出用户积分获取的明细列表,但是否计入为有效积分还需进行逻辑判断,判断sign_in_status的签到状态,如果签到了即签到状态为是,才将events表中的point_time作为积分计入到邀请人用户user表中的points中

情况2.2:如果为会议门票,即花钱的那种,同样首先判断登记时间sigin_in_time门票激活时间是否在邀请人注册14日内,(情况2.1与情况2.2中注册时间与门票生效时间超过14天,积分分数都不作数,有鼓励是否参展摇摆不定的人买票的意思),如果在14天以内,查询门票的折后价格discount乘上events表中的point_proportion付款返还率(10%,商家可以后台修改)作为积分数量显示在拟获取积分列表中,默认签到状态为是(毕竟花钱了,来不来都应算作积分),最后将积分计入到邀请人用户user表中的points里

上述业务其实积分查询最合理的方式,应该是将积分获取过程分散写在各个业务中,用户激活票劵参展签到积分应及时生效,将积分明细中的积分获取过程的数据记录在一张专门记录积分明细的表中.但是为简化业务,参展二维码签到为人工验票,没有使用物联设备,情况1与情况2.1没法实时更新数据,展商入住状态status与用户展览签到状态sign_in_status是展会过去后期通过人工在后台将状态进行修改的,这与展会举办时长有关,举办时长不长人工验票更为合算,举办时长够长机器验票数据更新更为安全可靠.

积分在展会过后还存在提现过程,根据UI设计积分是能够分段提取的,因此存在withdrawal_requests积分提现请求表,此时累计积分应减去提现积分,并且提现积分理应显示在积分明细列表中

数据库设计过程中,应将一些通过UI界面看不见的字段合理设计到数据库各个表中,比如user用户信息表中除了看的见的字段姓名、电话号等,还应将注册时间registration_time,邀请码invitation_user邀请人的邀请码,points积分余额等字段记录在内,方便逻辑判断与查询,展商入驻状态与用户签到状态都应设计在对应的数据表中

相关文章:

  • huggingface连不上的解决方案
  • oracle发送http请求
  • C++ 反转一个二进制串
  • cd 命令特殊路径符 mkdir命令
  • Android | 性能优化 之 TraceView工具的使用
  • 基于SSM+Jsp的体育竞赛成绩管理系统
  • 45、基于深度学习的螃蟹性别分类(matlab)
  • 网络编程(TCP协议,UDP协议)
  • tron-passwd写入提权
  • 音视频开发—FFmpeg 打开摄像头进行RTMP推流
  • SSLyze:一款快速高效的SSLTLS扫描工具
  • 2024年全球架构师峰会(ArchSummit深圳站)
  • 大型语言模型在AMD GPU上的推理优化
  • 使用阿里开源的Spring Cloud Alibaba AI开发第一个大模型应用
  • 探索Python元类的奥秘及其应用场景
  • Angular 4.x 动态创建组件
  • codis proxy处理流程
  • css选择器
  • github指令
  • JavaScript-Array类型
  • jquery cookie
  • MySQL数据库运维之数据恢复
  • Object.assign方法不能实现深复制
  • php ci框架整合银盛支付
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • SpringBoot 实战 (三) | 配置文件详解
  • windows-nginx-https-本地配置
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 电商搜索引擎的架构设计和性能优化
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 面试遇到的一些题
  • 普通函数和构造函数的区别
  • 微信开源mars源码分析1—上层samples分析
  • 想写好前端,先练好内功
  • 学习使用ExpressJS 4.0中的新Router
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 一些关于Rust在2019年的思考
  • 由插件封装引出的一丢丢思考
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​香农与信息论三大定律
  • # Redis 入门到精通(一)数据类型(4)
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (4) PIVOT 和 UPIVOT 的使用
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (不用互三)AI绘画:科技赋能艺术的崭新时代
  • (二)WCF的Binding模型
  • (二)原生js案例之数码时钟计时
  • (附源码)springboot电竞专题网站 毕业设计 641314
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (转)nsfocus-绿盟科技笔试题目
  • (转)用.Net的File控件上传文件的解决方案
  • (状压dp)uva 10817 Headmaster's Headache
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复