答案:前端给后端发送活动id,通过活动id获取活动信息,然后校验活动领取规则比如说活动时间,优惠券数量有没有限制之类,优惠券提供数量有两种情况,第一种是一人一张,第二种是限制总共的张数,这里通过策略模式来完成,活动表中有一个字段表示限制的规则,一人一张对应limit_one,限制总数量是limit_all。然后根据信息在进行减库存的时候调用对应的实现类,一人一张的话直接在领取记录表中将用户的一些信息和活动信息记录进去,然后调用方法给用户生成优惠券。限制总张数,因为涉及到共享数据,所以这里使用了redission分布式锁,每次扣减的时候让优惠券数量减1,然后调用生成优惠券的方法给用户生成优惠券