Skip to main content

如何将牛券写到简历?

作者:程序员马丁

在线博客:https://nageoffer.com

note

热门项目实战社群,收获国内众多知名公司面试青睐,近千名同学面试成功!助力你在校招或社招上拿个offer。

如何将牛券oneCoupon写到简历上,元数据信息:

©版权所有 - 拿个offer-开源&项目实战星球专属学习项目,依据《中华人民共和国著作权法实施条例》《知识星球产权保护》,严禁未经本项目原作者明确书面授权擅自分享至 GitHub、Gitee 等任何开放平台。违者将面临法律追究。


项目名称

牛券是 oneCoupon 项目在我们内部的一个代号,所以不建议大家简历项目名称直接叫做牛券。而且,起项目名称一定要标新立异,这样才能让你的简历和其他同学与众不同。

在这里,我推荐大家可以观察互联网上各个平台的平台,比如说饿了么、美团、拼多多、淘宝、京东等耳熟能详的软件。通过熟悉平台优惠券的规则,将业务代入到我们的牛券系统中,结合技术难点和面试官沟通。

项目名称推荐如下:

  • 美团外卖红包
  • 饿么了优惠券系统
  • 拼多多领券中心
  • 淘宝神券系统
  • 京东券管平台

牛券简介

美团外卖红包系统,助力用户便捷领取和平台分发优惠券红包,促进商家销售和平台 GMV 指标提升。平台包括优惠券秒杀、分发、结算以及搜索等业务,支持大量用户同时进行优惠券领取功能,以及完成平台百万级别用户优惠券分发功能,保障不漏发、不多发等特性。使用缓存、分库分表、RocketMQ5.x 以及 Sentinel 等技术支撑平台稳定运行。

技术架构

我们选择了基于 Spring Boot 3 和 JDK17 进行底层建设,同时组件库的版本大多也是最新的。这样做既能享受新技术带来的性能提升,也能体验到新特性带来的惊喜。

如果用一张图来概括牛券的技术架构,其展现形态如下图所示。

技术架构涵盖了 SpringBoot3、SpringCloudAlibaba、Nacos、Sentinel、Skywalking、RocketMQ 5.x、ElasticSearch、Redis、MySQL、EasyExcel、XXL-Job、Redisson 等技术。

项目技能描述

这次牛券的亮点可以说是非常多,即使多个同学同时写牛券,技术点都重复不了

当前仅列了系统中不算核心亮点的部分:后管服务的优惠券模板和分发任务创建,两个不算核心的业务就可以写这么多,如果全部的亮点加一起,预估在 26 条以上

1. 后管服务

1.1 新增优惠券模板

代码入口:

  • com.nageoffer.onecoupon.merchant.admin.controller.CouponTemplateController#createCouponTemplate

业务亮点:

  • 通过自定义注解 @NoDuplicateSubmit 防止用户重复点击创建按钮,进而导致多个重复请求同时创建相同优惠券模板。
  • 通过责任链模式验证商家创建优惠券提交参数是否正确,保障验证代码高内聚、低耦合,保障了开闭原则。
  • 通过 BizLog 操作日志框架记录商家对优惠券的操作行为,比如创建、增加发行量、结束等逻辑,确保系统行为留痕。
  • 为了支持大量商家创建优惠券记录,采用 ShardingSphere 分库分表方案,以提升优惠券模板的存储和查询效率。

1.2 优惠券推送任务

代码入口:

  • com.nageoffer.onecoupon.merchant.admin.controller.CouponTaskController#createCouponTask

业务亮点:

  • 通过自定义注解 @NoRepeatSubmit 防止用户重复点击创建按钮,进而导致多个重复请求同时创建相同优惠券推送任务。
  • 使用 EasyExcel 解析百万量级用户优惠券推送 Excel 文件,避免因文件过大导致的内存溢出问题。
  • 通过线程池 ThreadPoolExecutor 和 Redisson 延时队列异步执行解析 Excel 文件行数,提高创建优惠券推送接口响应时间。
  • 为避免系统耦合,通过消息队列 RocketMQ 解耦用户优惠券推送和通知逻辑,后管模块发送推送消息并由分发模块进行消费。
  • 支持定时优惠券推送任务执行,通过 XXL-Job 定时任务扫描数据库记录,如达到发送时间调用消息队列触发执行流程。
  • 解决数据库查询IN语句导致的跨库连接表不存在问题,通过数据库粒度拆分成多个单独查询,然后在应用层进行合并方式解决。

解锁付费内容,👉 戳