# mybatis-plus **Repository Path**: alossd/mybatis-plus ## Basic Information - **Project Name**: mybatis-plus - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-10-29 - **Last Updated**: 2020-12-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 优惠券系统 **开发环境 :** windows10 jdk_1.8 tomcat8.5 kafka2.12 **开发工具 :** idea mysql git postman redis maven **项目使用技术 :** redis、spring boot、spring colud、lombok、spirng data、jpa、spring mvc ### 项目描述 运营人员创建优惠券模板后,生成对应数量的优惠券,最后用户领取优惠券。运营人员设定好条件(名字、logo、分类、产品线、数量、规则,后台异步创建优惠券 模板。使用异步的原因是创建优惠券模板过程比较耗时,HTTP接口不返回是一种不好的用户体验。 **生成优惠券码:** 优惠券码不能重复; 优惠券码设定为18位,有三个部分组成: 前四位:产品线和类型。 中间六位:日期。 后八位:0~9随机数。 异步生成对应优惠券码,并保存到redis中。 优惠券模板模块实现定时任务,定时清理过期优惠券模板。 其他模块从模板模块获取优惠券模板时,判断是否过期。 **分发优惠券:** 一:根据用户id和优惠券状态查找用户优惠券记录 优惠券状态定义为三类:可用,已用,已过期(已过优惠券有效使用期,但仍未被使用)。 提升系统响应速度 将用户数据存储于redis。 在用户查看优惠券时,判断是否存在过期但未被标记的优惠券,如果存在,除了展示用户优惠券信息外,再做额外的过期处理(延迟的过期处理)。 二:根据用户id查找当前可以领取的优惠券模板 优惠券模板是一个独立服务,,分发模块需要通过微服务调用去获取模板数据,但是访问任何一个微服务都存在不确定性,需要有熔断兜底策略。 从模板服务中获取的优惠券模板,需要去对比优惠券模板的相关限制。例如,如果限制用户只能领取一张,那么用户再已经领取过且状态仍可用的状态下,这次就不能再领取。 每一张优惠券模板需要它们所对应的优惠券码,且在生成的时候,放入redis中。可以redis中获取优惠券码。 通过验证后,写入MySQL和redis中。 三:结算(核销)优惠券 校验需要结算的优惠券是否合法(属于用户且可用)。 利用settlement模块计算结算数据。 如果是核销,需要写回数据库。 **结算优惠券:** 优惠券是分类的,不同的优惠券有不同的计算方法。 不同类的优惠券可以组合,页需要不同算法。 ### 责任描述 代码编写:生成优惠券模板,分发优惠券,结算优惠券