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

发放优惠券

文章目录

    • 概要
    • 整体架构流程
    • 技术细节
    • 小结

概要

发放优惠券

处于暂停状态,或者待发放状态的优惠券,在优惠券列表中才会出现发放按钮,可以被发放:

需求分析以及接口设计

需要我们选择发放方式使用期限

发放方式分为两种:立刻发放定时发放;使用期限也分两种:固定天数固定时间段。如图:

 

因此,在提交这个表单时,参数包括:

  • 发放(领用)开始时间:如果为空说明是立刻发放,开始时间就是当前时间

  • 发放(领用)结束时间

  • 有效期天数:如果为空说明是固定有效期

  • 使用期限开始时间:如果为空说明是固定天数有效期

  • 使用期限结束时间:如果为空说明是固定天数有效期

最后,肯定要带上优惠券id,我们才知道发放的是哪张券,当然这个可以通过路径占位符传参。

技术细节

1.Controller层

@ApiOperation("发放优惠券接口")
@PutMapping("/{id}/issue")
public void beginIssue(@RequestBody @Valid CouponIssueFormDTO dto) {couponService.beginIssue(dto);
}

2.Service层:


@Transactional
@Override
public void beginIssue(CouponIssueFormDTO dto) {// 1.查询优惠券Coupon coupon = getById(dto.getId());if (coupon == null) {throw new BadRequestException("优惠券不存在!");}// 2.判断优惠券状态,是否是暂停或待发放if(coupon.getStatus() != CouponStatus.DRAFT && coupon.getStatus() != PAUSE){throw new BizIllegalException("优惠券状态错误!");}// 3.判断是否是立刻发放LocalDateTime issueBeginTime = dto.getIssueBeginTime();LocalDateTime now = LocalDateTime.now();boolean isBegin = issueBeginTime == null || !issueBeginTime.isAfter(now);// 4.更新优惠券// 4.1.拷贝属性到POCoupon c = BeanUtils.copyBean(dto, Coupon.class);// 4.2.更新状态if (isBegin) {c.setStatus(ISSUING);c.setIssueBeginTime(now);}else{c.setStatus(UN_ISSUE);}// 4.3.写入数据库updateById(c);// TODO 兑换码生成
}

http://www.xdnf.cn/news/1803.html

相关文章:

  • Java常用API详解
  • 通过VIN车辆识别代码查询_精准版API,获取车辆精准参数
  • 并发编程【深度解剖】
  • Android学习总结之Glide篇(缓存和生命周期)
  • 数据结构与算法(十二):图的应用-最小生成树-Prim/Kruskal
  • 人工智能---当机器人遇到大模型会产生火花吗?
  • 【C++】STL之deque
  • CPU 虚拟化机制——受限直接执行 (LDE)
  • 悟空统计在SEO优化中的核心作用:外链质量评估
  • SpringBoot入门实战(第八篇:项目接口-订单管理)完结篇
  • 高功率激光输出稳定性不足?OAS 光学软件来攻克
  • ap无法上线问题定位(交换机发包没有剥掉pvid tag)
  • 配置模块开发
  • 删除elementplus的li标签中的一个class属性?
  • Vivado与Modelsim联合仿真卡在Executing analysis and compilation step...
  • 利用 Claw Cloud Run 免费应用部署前端网页
  • 天梯——L1-110 这不是字符串题
  • navicat数据表筛选删除空白行
  • 革新AI生产力,比象AI源码 - 下一代智能创作引擎
  • 【android bluetooth 协议分析 06】【l2cap详解 9】【L2cap通道生命周期】
  • RK3588芯片NPU的使用:官方rknn_yolov5_android_apk_demo运行与解读
  • 智慧景区国标GB28181视频平台EasyGBS视频融合应用全场景解决方案
  • hackmyvm-atom
  • 第17章:MCP框架构建知识工作助手
  • MySQL的下载、安装、配置
  • LeetCode算法题(Go语言实现)_60
  • Activepieces - 开源自动化工具
  • 基于crontabs对nginx日志进行定时切割
  • 新时代质量管理体系-端到端流程通俗演义,什么是端到端流程?
  • Ubuntu22学习记录