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

新增优惠券

文章目录

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

概要

接口分析

一个基本的新增接口,按照Restful风格设计即可,关键是请求参数。之前表分析时已经详细介绍过这个页面及其中的字段,这里不再赘述。

需要特别注意的是,如果优惠券限定了使用范围,则需要保存限定的课程分类。而这些信息不再coupon表,而是一张中间关系表:coupon_scope

需求分析以及接口设计

技术细节

1.Controller层

package com.tianji.promotion.controller;import com.tianji.promotion.domain.dto.CouponFormDTO;
import com.tianji.promotion.service.ICouponService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;import javax.validation.Valid;
import java.util.List;@RestController
@RequiredArgsConstructor
@RequestMapping("/coupons")
@Api(tags = "优惠券相关接口")
public class CouponController {private final ICouponService couponService;@ApiOperation("新增优惠券接口")@PostMappingpublic void saveCoupon(@RequestBody @Valid CouponFormDTO dto){couponService.saveCoupon(dto);}
}

2.Service层:

package com.tianji.promotion.service.impl;import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.tianji.promotion.mapper.CouponMapper;
import com.tianji.promotion.service.ICouponScopeService;
import com.tianji.promotion.service.ICouponService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;import java.util.*;
import java.util.stream.Collectors;@Service
@RequiredArgsConstructor
public class CouponServiceImpl extends ServiceImpl<CouponMapper, Coupon> implements ICouponService {private final ICouponScopeService scopeService;@Override@Transactionalpublic void saveCoupon(CouponFormDTO dto) {// 1.保存优惠券// 1.1.转POCoupon coupon = BeanUtils.copyBean(dto, Coupon.class);// 1.2.保存save(coupon);if (!dto.getSpecific()) {// 没有范围限定return;}Long couponId = coupon.getId();// 2.保存限定范围List<Long> scopes = dto.getScopes();if (CollUtils.isEmpty(scopes)) {throw new BadRequestException("限定范围不能为空");}// 2.1.转换POList<CouponScope> list = scopes.stream().map(bizId -> new CouponScope().setBizId(bizId).setCouponId(couponId)).collect(Collectors.toList());// 2.2.保存scopeService.saveBatch(list);}
}

3.Mapper层

效果展示

相关文章:

  • 哈希表的实现
  • 大模型AI的“双刃剑“:数据安全与可靠性挑战与破局之道
  • 高精度并行2D圆弧拟合(C++)
  • ORACLE RAC环境使用ASM机制零宕机时间更换存储的实践
  • 安宝特案例 | AR技术在院外心脏骤停急救中的革命性应用
  • 4.4 记忆机制与上下文管理:短期与长期记忆的设计与应用
  • 新时代质量管理体系-端到端流程通俗演义,什么是端到端流程?
  • 3D高斯个人笔记
  • 如何实现客户端热部署能力方案
  • 写一个esp开发SPI的链接吗,
  • 机器人新革命:Pi 0.5如何让智能走进千家万户
  • 【踩坑记录】stm32 jlink程序烧录不进去
  • 电力作业安全工器具全解析:分类、配置与检查要点
  • 解决高德地图AMapUtilCoreApi、NetProxy类冲突
  • 最小生成树-prim、kruskal算法
  • 配置 C/C++ 语言智能感知(IntelliSense)的 c_cpp_properties.json 文件内容
  • Redis Cluster 使用 CRC16 算法实现 Slot 槽位分片的核心细节
  • git Http改用户下载
  • 直接偏好优化(Direct Preference Optimization,DPO):论文与源码解析
  • 3. pandas笔记之:创建
  • 对排出黑烟车辆出具合格报告,广州南沙一检测公司被罚十万元
  • 潘功胜:一季度中国经济开局良好,金融市场展现出较强韧性
  • 受折纸艺术启发可移动可变形的新型超材料问世
  • 银行板块整体走强,工行、农行、中行股价再创新高
  • 韩国称DeepSeek未经同意将用户数据传至境外,外交部回应
  • 中国海外宏洋集团:一季度经营溢利同比降48.6%,密切关注行业收并购机会等