首页 > 其他分享 >购物卡Impl实现逻辑

购物卡Impl实现逻辑

时间:2024-06-17 09:35:47浏览次数:27  
标签:逻辑 return shoppingCartDTO 购物 购物车 shoppingCart sc public Impl

/**
     * 添加购物车
     *
     * @param shoppingCartDTO
     */
    public void addShoppingCart(ShoppingCartDTO shoppingCartDTO) {
        ShoppingCart shoppingCart = new ShoppingCart();
        BeanUtils.copyProperties(shoppingCartDTO, shoppingCart);
        //只能查询自己的购物车数据
        shoppingCart.setUserId(BaseContext.getCurrentId());

        //判断当前商品是否在购物车中
        List<ShoppingCart> shoppingCartList = shoppingCartMapper.list(shoppingCart);

        if (shoppingCartList != null && shoppingCartList.size() == 1) {
            //如果已经存在,就更新数量,数量加1
            shoppingCart = shoppingCartList.get(0);
            shoppingCart.setNumber(shoppingCart.getNumber() + 1);
            shoppingCartMapper.updateNumberById(shoppingCart);
        } else {
            //如果不存在,插入数据,数量就是1
            //判断当前添加到购物车的是菜品还是套餐
            Long dishId = shoppingCartDTO.getDishId();
            if (dishId != null) {
                //添加到购物车的是菜品
                Dish dish = dishMapper.getById(dishId);
                shoppingCart.setName(dish.getName());
                shoppingCart.setImage(dish.getImage());
                shoppingCart.setAmount(dish.getPrice());
            } else {
                //添加到购物车的是套餐
                Setmeal setmeal = setmealMapper.getById(shoppingCartDTO.getSetmealId());
                shoppingCart.setName(setmeal.getName());
                shoppingCart.setImage(setmeal.getImage());
                shoppingCart.setAmount(setmeal.getPrice());
            }
            shoppingCart.setNumber(1);
            shoppingCart.setCreateTime(LocalDateTime.now());
            shoppingCartMapper.insert(shoppingCart);
        }
    }
    /**
     * 从购物车减去
     *
     * @param shoppingCartDTO
     */
    public void subShoppingCart(ShoppingCartDTO shoppingCartDTO) {
        ShoppingCart shoppingCart = new ShoppingCart();
        BeanUtils.copyProperties(shoppingCartDTO, shoppingCart);
        //只能查询自己的购物车数据
        shoppingCart.setUserId(BaseContext.getCurrentId());

        //判断当前商品是否在购物车中
        List<ShoppingCart> shoppingCartList = shoppingCartMapper.list(shoppingCart);

        if (shoppingCartList != null && shoppingCartList.size() > 1) {
            //如果已经存在,就更新数量,数量-1
            shoppingCart = shoppingCartList.get(0);
            shoppingCart.setNumber(shoppingCart.getNumber() - 1);
            shoppingCartMapper.updateNumberById(shoppingCart);
        } else {
            //如果不存在
            shoppingCartMapper.delete(shoppingCart);
            }
        }
    /**
     * 查看购物车
     * @return
     */
    public List<ShoppingCart> showShoppingCart() {
        return shoppingCartMapper.list(ShoppingCart.
                builder().
                userId(BaseContext.getCurrentId()).
                build());
    }
    /**
     * 清空购物车商品
     */
    public void cleanShoppingCart() {
        shoppingCartMapper.deleteByUserId(BaseContext.getCurrentId());
    }

service

/**
     * 添加购物车
     * @param shoppingCartDTO
     */
    void addShoppingCart(ShoppingCartDTO shoppingCartDTO);
    /**
     * 从购物车减去
     * @param shoppingCartDTO
     */
    void subShoppingCart(ShoppingCartDTO shoppingCartDTO);
    /**
     * 查看购物车
     * @return
     */
    List<ShoppingCart> showShoppingCart();
    /**
     * 清空购物车商品
     */
    void cleanShoppingCart();

 XML

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.sky.mapper.ShoppingCartMapper">
    <select id="list" parameterType="ShoppingCart" resultType="ShoppingCart">
        select * from shopping_cart
        <where>
            <if test="userId != null">
                and user_id = #{userId}
            </if>
            <if test="dishId != null">
                and dish_id = #{dishId}
            </if>
            <if test="setmealId != null">
                and setmeal_id = #{setmealId}
            </if>
            <if test="dishFlavor != null">
                and dish_flavor = #{dishFlavor}
            </if>
        </where>
        order by create_time desc
    </select>
    <insert id="insertBatch" parameterType="list">
        insert into shopping_cart
        (name, image, user_id, dish_id, setmeal_id, dish_flavor, number, amount, create_time)
        values
        <foreach collection="shoppingCartList" item="sc" separator=",">
            (#{sc.name},#{sc.image},#{sc.userId},#{sc.dishId},#{sc.setmealId},#{sc.dishFlavor},#{sc.number},#{sc.amount},#{sc.createTime})
        </foreach>
    </insert>
</mapper>

controller

/**
 * 购物车
 */
@RestController
@RequestMapping("/user/shoppingCart")
@Slf4j
@Api(tags = "C端-购物车接口")
public class ShoppingCartController {

    @Autowired
    private ShoppingCartService shoppingCartService;

    /**
     * 添加购物车
     * @param shoppingCartDTO
     * @return
     */
    @PostMapping("/add")
    @ApiOperation("添加购物车")
    public Result<String> add(@RequestBody ShoppingCartDTO shoppingCartDTO){
        log.info("添加购物车:{}", shoppingCartDTO);
        shoppingCartService.addShoppingCart(shoppingCartDTO);//后绪步骤实现
        return Result.success();
    }
//    减菜品
    /**
     * 从购物车减去
     * @param shoppingCartDTO
     * @return
     */
    @PostMapping("/sub")
    @ApiOperation("从购物车减去")
    public Result<String> sub(@RequestBody ShoppingCartDTO shoppingCartDTO){
        log.info("从购物车减去:{}", shoppingCartDTO);
        shoppingCartService.subShoppingCart(shoppingCartDTO);//后绪步骤实现
        return Result.success();
    }
    /**
     * 查看购物车
     * @return
     */
    @GetMapping("/list")
    @ApiOperation("查看购物车")
    public Result<List<ShoppingCart>> list(){
        return Result.success(shoppingCartService.showShoppingCart());
    }
    /**
     * 清空购物车商品
     * @return
     */
    @DeleteMapping("/clean")
    @ApiOperation("清空购物车商品")
    public Result<String> clean(){
        shoppingCartService.cleanShoppingCart();
        return Result.success();
    }

 

标签:逻辑,return,shoppingCartDTO,购物,购物车,shoppingCart,sc,public,Impl
From: https://www.cnblogs.com/lllllzj/p/18251729

相关文章

  • 学习C语言两个月后的收获(篇目三) #算术操作符 #强制类型转换 #关系操作符 #条件操作符
    一.算术操作符1.双目操作符:+、-、*、/、%注:双目操作符,顾名思义就是有两个操作数的操作符a./:除号。分为整数的除法和小数的除法整数的除法:'/'两边的操作数是整除故而进行整数的除法。整数的除法取值规则:不管余数是多少,不会四舍五入,直接舍弃余数部分而得到......
  • visible_windows生成逻辑和解析
    visible_windows生成逻辑和解析visible_windows生成逻辑在开发者选项中生成错误报告或命令行使用dumpstate,会生成一个bugreprot的压缩包,如其中包含了一些dump信息,其中海有个压缩包里面包含了一些可见窗口的控件信息,但用notepad打开却多是乱码之前工作遇到过一个显示问题只有截图、......
  • 决策树算法:揭示数据背后的决策逻辑
    目录一决策树算法原理特征选择信息增益信息增益比基尼指数树的构建树的剪枝预剪枝后剪枝二决策树算法实现一使用决策树进行分类数据预处理构建决策树模型二使用决策树进行回归数据预处理构建决策树回归模型三决策树算法的优缺点优点缺点四决策树的改......
  • 网上购物框架
    javaweb项目实战1.功能概述网上购物商城分为管理员和普通用户页面,用户可以自行注册登录,用户可以加入商品到购物车中,可以查看商品的详情,管理员可以对商品进行增删改查,比如发布商品,下架商品,修改商品,搜索商品。本项目采用mysql数据库进行储存数据,所以先搭建项目所需数据库结构,此项......
  • 西门子学习笔记15 - 位逻辑操作的学习
    1、点动操作(按下按钮就启动松开就停止)2、自锁电路(可以自己保持的状态除非常闭停止按下)3、取反操作(顾名思义就是反过来1就变成0,0就变成1)4、置为复位(置位之后如果不复位的话就会一直为1)5、区域置位和复位(从起始的位开始的5个位被全部置为1或者全部复位为0)6、单个条件的......
  • 实现一个简单的mybatis:SimpleMyBatis
    创建一个类似MyBatis的框架,主要涉及到几个关键部分:SQL语句的解析与存储,参数的绑定,以及最终的SQL执行。以下是一个简单的示例,使用Java、JDBC和SQLite数据库来实现:importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importja......
  • Apollo 决策规划代码详细解析 :Stage逻辑详解
    Apollo 决策规划代码详细解析 :Stage逻辑详解附赠自动驾驶最全的学习资料和量产经验:链接在本文你将学到下面这些内容:Stage中如何对task进行注册;Stage中如何调用task执行规划任务;LaneFollowStage 包含哪些task;LaneFollowStage 的详细运行逻辑;PlanOnReferenc......
  • 模糊逻辑 fuzzylogic 动态避障 路径规划 动态路径规划 模糊逻辑路径规划
    模糊逻辑fuzzylogic动态避障路径规划 动态路径规划模糊逻辑路径规划     ......
  • 网上购物
    创建数据库安装NavicatPremium到Navicat官网上下载,链接:https://www.navicat.com.cn/安装好后,通过相关命名创建数据库。第一步:创建数据库CREATEDATABASE数据库名CHARACTERSETutf8;第二步:创建数据库表如果之前有相同的数据库表,可以执行下面的命名删除数据库,如果没有就......
  • JavaScript的运算符(算术、比较、赋值、逻辑、条件)
    天行健,君子以自强不息;地势坤,君子以厚德载物。每个人都有惰性,但不断学习是好好生活的根本,共勉!文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。文章目录运算符1.算术运算符1.1示例代码1.2打印结果2.比较运算符2.1示例代码2.2打印结果3.赋值......