功能分析

1. 成就的业务流程

用户的某些操作触发成就->判断用户是否满足达成成就条件->达成进行奖励的发送
成就系统的业务流程大概分为这三步,每一步都可以细分里面的内部细节功能

1.1 操作触发成就

按照成就类型 抽象出具体哪些事件可能会触发

1.2 用户达成成就

触发的事件是否满足成就的条件,可能某一个事件会触发多个成就同时达成,或者某个成就完成了一部分,或者达成某个成就,成就一旦达成,就不会再被触发

1.3 奖励发放

目前奖励比较单一,积分发放,并且有一个弹窗提示,不同的成就奖励不一样,需要做到可配置化

2. 11种成就分类

按照成就触发的条件事件 进行分类 按照成就功能模块抽象出4种类型的事件,分别为:订单事件 消费事件 积分事件 其它事件
每种事件 都对应几种成就 成就只会被一种事件触发
第11种成就比较复杂,达成成就是完成前面10种成就 ,因此 记录第11种的进行状态存在并发的情况,如何处理留到下一章架构设计再说明

3. 事件发送

抽象出四种类型事件之后,需要考虑在原来业务系统中那几种操作会产生发送这种事件,这里同样也要考虑到成就达成的条件

4. 奖励发送

1.积分赠送
由于底层只用分布式锁做了一个防止并发的处理,导致并发情况下可能会有积分增加失败的情况,因此由上层业务方来处理并发,因此通过队列的方式增加积分,同时增加一个重试的机制
2.弹窗展示
通过websocket的方式推送弹窗

成就系统实现(二)-功能分析相关推荐

  1. 成就系统实现(一)-概述

    需求 在一个完整的业务流程链路中,用户的某种行为可能会触发成就的达成,如果成就达成了,推送一个弹窗让用户感知.一期功能有11种可以达成的成就.第11种成就 达成条件是完成前面10中成就,每个成就都有对 ...

  2. 实例:Google Play游戏服务接入排行榜和成就系统

    一,前期基础知识储备 1)排行榜官方文档:https://developers.google.com/games/services/common/concepts/leaderboards Leade ...

  3. CDN 监控系统(二)

    CDN 监控系统(二) 使用开源软件来搭建监控系统,网上已经有很多关于 zabbix.prometheus.open-falcon等等的比较.使用开源软件注意: 开源软件的诞生背景,很多开源软件只是公 ...

  4. 从入门到放弃,.net构建博客系统(二):依赖注入

    文章目录:<从入门到放弃,.net构建博客系统> 从入门到放弃,.net构建博客系统(一):系统构建 从入门到放弃,.net构建博客系统(二):依赖注入 上一篇中有讲到项目启动时会进行io ...

  5. [系统安全] 二十四.逆向分析之OllyDbg调试INT3断点、反调试、硬件断点与内存断点

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  6. [系统安全] 二十三.逆向分析之OllyDbg动态调试复习及TraceMe案例分析

    您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列.因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全.逆向分 ...

  7. Netty实战 IM即时通讯系统(二)Netty简介

    ## Netty实战 IM即时通讯系统(二)Netty简介 零. 目录 IM系统简介 Netty 简介 Netty 环境配置 服务端启动流程 实战: 客户端和服务端双向通信 数据传输载体ByteBuf ...

  8. 如何制作linux系统硬盘,手把手带你自制Linux系统之二 简易Linux的制作

    手把手带你自制Linux系统之二 简易Linux的制作 本文利用CentOS5.5自带内核制作一个可以正常启动的Mini Linux. 打开上一篇准备工作中创建的CentOS虚拟机,为另一台虚拟机Mi ...

  9. 我的世界服务器成就系统的其他成就是什么,大量的成就奖励亟待领取!《我的世界》【PC版】Hypixel服务器成就系统来啦~...

    原标题:大量的成就奖励亟待领取!<我的世界>[PC版]Hypixel服务器成就系统来啦~ 最近官微一直在关注MINECON 无瑕其他事情,可不今大早起床 总感觉有什么大事要发生(。•ˇ‸ˇ ...

最新文章

  1. linux mysql libc.so_mysql-arm-linux-gcc编译报错:libc.soformatnotrecognized.
  2. javascript常用技巧
  3. 如何保证消息队列的高可用?透彻分析源码
  4. 制作 Windows8   to Go
  5. 用户账号系统(python)
  6. RMAN backup recovery area 命令
  7. 第一个java程序的错误_我是一名java初学者,执行第一个java程序welcome.java出现了以下错误,这是为什么?...
  8. Tomcat的JDBC连接池
  9. python与审计底稿关系_干货!审计底稿,六大禁忌
  10. 微信小程序---点餐小程序左侧滑动菜单实现
  11. Word文档 公式换行 小技巧
  12. build-essential 软件包
  13. 蓝桥杯 算法提高 盾神与条状项链
  14. Windows Mobile 7.0最新消息!!
  15. PS抠图(菜鸟、快捷键)
  16. 内网穿透-花生壳的简单使用
  17. 会所会员消费管理系统解决方案
  18. 六顶思考帽与单一职责
  19. java openxml 操作 word,(三)、JAVA基于OPENXML的word文档插入、合并、替换操作系列之html转word...
  20. 三国演义人物出场统计

热门文章

  1. Lattice ddr3教程全攻略之时序约束篇
  2. Mockito快速使用教程
  3. html5+css3布局尝试
  4. Html5---div布局方式
  5. CPU CACHE中的VIPT与PIPT的工作原理
  6. Mysql登录数据库,远程登录命令
  7. iptables端口复用
  8. 局域网内,如何使用命令行关闭别人的电脑
  9. WebP_支持:超乎你想象
  10. 基于C51的DMX512开发笔记