zhentao 1 month ago
parent
commit
3c25cdbfbe

+ 28 - 0
src/main/java/com/zhentao/controller/cart/ShoppingCartController.java

@@ -0,0 +1,28 @@
+package com.zhentao.controller.cart;
+
+import com.zhentao.controller.cart.dto.CartDto;
+import com.zhentao.controller.cart.dto.CartDtoId;
+import com.zhentao.dto.Result;
+import com.zhentao.service.ShoppingCartService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("cart")
+public class ShoppingCartController {
+    @Autowired
+    private ShoppingCartService service;
+//    添加购物车
+    @PostMapping("add")
+    public Result add(@RequestBody CartDto cartDto){
+        return service.add(cartDto);
+    }
+//    查询当前用户的购物车
+    @PostMapping("findAll")
+    public Result findAll(@RequestBody CartDtoId cartDtoId){
+        return service.findAll(cartDtoId);
+    }
+}

+ 9 - 0
src/main/java/com/zhentao/controller/cart/dto/CartDto.java

@@ -0,0 +1,9 @@
+package com.zhentao.controller.cart.dto;
+
+import lombok.Data;
+
+@Data
+public class CartDto {
+    private Long userId;
+    private Long courseId;
+}

+ 8 - 0
src/main/java/com/zhentao/controller/cart/dto/CartDtoId.java

@@ -0,0 +1,8 @@
+package com.zhentao.controller.cart.dto;
+
+import lombok.Data;
+
+@Data
+public class CartDtoId {
+    private Long userId;
+}

+ 48 - 0
src/main/java/com/zhentao/domain/ShoppingCart.java

@@ -0,0 +1,48 @@
+package com.zhentao.domain;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * 购物车表
+ * @TableName shopping_cart
+ */
+@TableName(value ="shopping_cart")
+@Data
+public class ShoppingCart implements Serializable {
+    /**
+     * 购物车ID
+     */
+    private Long cartId;
+
+    /**
+     * 用户ID
+     */
+    private Long userId;
+
+    /**
+     * 课程ID
+     */
+    private Long courseDatailsId;
+
+
+    /**
+     * 添加时间
+     */
+    private Date addTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+    @TableField(exist = false)
+    private Courses courses;
+}

+ 18 - 0
src/main/java/com/zhentao/mapper/ShoppingCartMapper.java

@@ -0,0 +1,18 @@
+package com.zhentao.mapper;
+
+import com.zhentao.domain.ShoppingCart;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+* @author 86183
+* @description 针对表【shopping_cart(购物车表)】的数据库操作Mapper
+* @createDate 2025-05-13 17:11:39
+* @Entity com.zhentao.domain.ShoppingCart
+*/
+public interface ShoppingCartMapper extends BaseMapper<ShoppingCart> {
+
+}
+
+
+
+

+ 4 - 0
src/main/java/com/zhentao/service/CoursesService.java

@@ -1,7 +1,9 @@
 package com.zhentao.service;
 package com.zhentao.service;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.zhentao.controller.Course.dto.CourseDatailsDto;
 import com.zhentao.controller.Course.dto.CourseDatailsDto;
 import com.zhentao.controller.Course.dto.CourseDto;
 import com.zhentao.controller.Course.dto.CourseDto;
+import com.zhentao.domain.CourseDatails;
 import com.zhentao.domain.Courses;
 import com.zhentao.domain.Courses;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zhentao.dto.Result;
 import com.zhentao.dto.Result;
@@ -16,4 +18,6 @@ public interface CoursesService extends IService<Courses> {
     Result findAll(CourseDto courseDto);
     Result findAll(CourseDto courseDto);
 //    查询详细信息
 //    查询详细信息
     Result Cha(CourseDatailsDto courseDatailsDto);
     Result Cha(CourseDatailsDto courseDatailsDto);
+
+    Courses getOne(QueryWrapper<CourseDatails> queryWrapper);
 }
 }

+ 19 - 0
src/main/java/com/zhentao/service/ShoppingCartService.java

@@ -0,0 +1,19 @@
+package com.zhentao.service;
+
+import com.zhentao.controller.cart.dto.CartDto;
+import com.zhentao.controller.cart.dto.CartDtoId;
+import com.zhentao.domain.ShoppingCart;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zhentao.dto.Result;
+
+/**
+* @author 86183
+* @description 针对表【shopping_cart(购物车表)】的数据库操作Service
+* @createDate 2025-05-13 17:11:39
+*/
+public interface ShoppingCartService extends IService<ShoppingCart> {
+//    查询当前用户所有的购物车物品
+    Result findAll(CartDtoId cartDtoId);
+//    添加购物车
+    Result add(CartDto cartDto);
+}

+ 79 - 0
src/main/java/com/zhentao/service/impl/ShoppingCartServiceImpl.java

@@ -0,0 +1,79 @@
+package com.zhentao.service.impl;
+
+import cn.hutool.core.util.IdUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhentao.controller.cart.dto.CartDto;
+import com.zhentao.controller.cart.dto.CartDtoId;
+import com.zhentao.domain.CourseDatails;
+import com.zhentao.domain.Courses;
+import com.zhentao.domain.ShoppingCart;
+import com.zhentao.dto.Result;
+import com.zhentao.service.CoursesService;
+import com.zhentao.service.ShoppingCartService;
+import com.zhentao.mapper.ShoppingCartMapper;
+import org.checkerframework.checker.units.qual.A;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+* @author 86183
+* @description 针对表【shopping_cart(购物车表)】的数据库操作Service实现
+* @createDate 2025-05-13 17:11:39
+*/
+@Service
+public class ShoppingCartServiceImpl extends ServiceImpl<ShoppingCartMapper, ShoppingCart>
+    implements ShoppingCartService{
+    @Autowired
+    private CoursesService service;
+    @Autowired
+    private ShoppingCartMapper shoppingCartMapper;
+//    查询所有的购物车物品
+    @Override
+    public Result findAll(CartDtoId cartDtoId) {
+        QueryWrapper<ShoppingCart> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("user_id",cartDtoId.getUserId());
+        List<ShoppingCart> shoppingCarts = shoppingCartMapper.selectList(queryWrapper);
+        List<Courses> list = service.list();
+        for (ShoppingCart s:shoppingCarts) {
+            for (Courses c:list) {
+                if (s.getCourseDatailsId().equals(c.getCourseId())){
+                    s.setCourses(c);
+                }
+            }
+        }
+        return Result.OK("查询成功",shoppingCarts);
+    }
+//    添加物品
+    @Override
+    public Result add(CartDto cartDto) {
+        QueryWrapper<ShoppingCart> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("course_datails_id",cartDto.getCourseId());
+        queryWrapper.eq("user_id",cartDto.getUserId());
+        ShoppingCart one = this.getOne(queryWrapper);
+        if (one==null){
+            //        先写一个对象
+            ShoppingCart shoppingCart = new ShoppingCart();
+            long l = IdUtil.getSnowflake(1, 1).nextId();
+            shoppingCart.setCartId(l);
+            shoppingCart.setUserId(cartDto.getUserId());
+            shoppingCart.setCourseDatailsId(cartDto.getCourseId());
+            shoppingCart.setAddTime(new Date());
+            shoppingCart.setUpdateTime(new Date());
+            boolean save = this.save(shoppingCart);
+            if (save){
+                return Result.OK("添加成功",save);
+            }
+            return Result.ERR("添加失败",null);
+        }else {
+            return Result.ERR("该商品已添加",null);
+        }
+    }
+}
+
+
+
+

+ 20 - 0
src/main/resources/mapper/ShoppingCartMapper.xml

@@ -0,0 +1,20 @@
+<?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.zhentao.mapper.ShoppingCartMapper">
+
+    <resultMap id="BaseResultMap" type="com.zhentao.domain.ShoppingCart">
+            <result property="cartId" column="cart_id" jdbcType="BIGINT"/>
+            <result property="userId" column="user_id" jdbcType="BIGINT"/>
+            <result property="courseDatailsId" column="course_datails_id" jdbcType="BIGINT"/>
+            <result property="quantity" column="quantity" jdbcType="INTEGER"/>
+            <result property="addTime" column="add_time" jdbcType="TIMESTAMP"/>
+            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        cart_id,user_id,course_datails_id,
+        quantity,add_time,update_time
+    </sql>
+</mapper>