• 项目总结-商品购买流程


    (1)添加购物车

     

    Controller:

     CartService:

     实现类:

     CartDetail detail=dao.queryByCdid(cid,gds.getId());

    CartDao:

    1. //获取详情对象
    2. @Select("select * from t_cartdetail where cid=#{cid} and gid=#{gid}")
    3. @ResultType(CartDetail.class)
    4. public CartDetail queryByCdid(@Param("cid") int cid, @Param("gid") int gid);

     return dao.insertDetail(cd)>0;

    1. //购物车添加商品
    2. @Insert("insert into t_cartdetail(cid,gid,num,money) values(#{cid},#{gid},#{num},#{money})")
    3. public int insertDetail(CartDetail cd);

    return dao.updateDetail(detail)>0;

    1. //修改购物车中数量
    2. @Update("update t_cartdetail set num=${num},money=${money} where cid=#{cid} and gid=#{gid}")
    3. public int updateDetail(CartDetail cartdetail);

    (2)查看购物车

    CartService:

    实现类:

    CarDao 

    购物车详情表  cid购物车id  gid商品id   num 购买数量

    商品表:num 商品库存量 

     

    SELECT cd.num,cd.money,cd.gid,
    g.name,g.price,g.num as num2,g.picture 
    FROM t_cartdetail cd 
    LEFT JOIN t_goods g 
    ON cd.gid=g.id  
    WHERE cd.cid=#{cid}
    1. //购物车的数据
    2. @Select("SELECT cd.num,cd.money,cd.gid,g.name,g.price,g.num as num2,g.picture FROM t_cartdetail cd LEFT JOIN t_goods g ON cd.gid=g.id WHERE cd.cid=#{cid}")
    3. @ResultType(ViewCart.class)
    4. public List queryCart(int cid);

    (3)删除购物车商品

    CartService:

    实现类:CarDao:

    1. //清空购物车
    2. @Delete("delete from t_cartdetail where cid=#{cid} ")
    3. public int deleteDetailByCid(int cid);

    1. //删除购物车中的商品
    2. @Delete("delete from t_cartdetail where cid=#{cid} and gid=#{gid}")
    3. public int deleteDetail(@Param("cid") int cid, @Param("gid") int gid);

    (4)购物车+ - 按钮

    CartService:

    实现类:

    CartDao:

    1. //获取详情对象
    2. @Select("select * from t_cartdetail where cid=#{cid} and gid=#{gid}")
    3. @ResultType(CartDetail.class)
    4. public CartDetail queryByCdid(@Param("cid") int cid, @Param("gid") int gid);
    1. //修改购物车中数量
    2. @Update("update t_cartdetail set num=${num},money=${money} where cid=#{cid} and gid=#{gid}")
    3. public int updateDetail(CartDetail cartdetail);

    +  :传递num:1

    - :传递num:-1

    前端: 

    这里有两个num 

    num2:商品库存的数量 

    num:购买商品的数量

    1. "table table-bordered table-striped table-hover">
    2. "0" var="sum">
    3. "${carts}" var="c" varStatus="i">
    4. if test="${c.num2 <= 0 || c.num2 < c.num}">
    5. if>
    6. if test="${c.num2 > 0 || c.num2 >= c.num}">
    7. var="sum" value="${sum+c.money}">
    8. if>
    9. 图片商品名称价格数量小计操作
      "width: 30px;height: auto" src="${pageContext.request.contextPath}/fmwimages/${c.picture}">${c.name}${c.price}"100px">
    10. "input-group">
    11. "input-group-btn">
    12. onclick="mNum(${c.gid},${c.price},${i.count})">-
    13. "text" class="form-control" id="num_count${i.count}" value="${c.num}" readonly="readonly" style="width:50px;text-align:center;">
    14. if test="${c.num < c.num2}">
    15. "input-group-btn">
    16. if>
    17. if test="${c.num >= c.num2}">
    18. "input-group-btn">
    19. if>
    20. ${c.money}元

    js

    (5)获取订单

     

    OrderController: 

    type=2为购物车下单

    CarService 

    1. //购物车的数据
    2. @Select("SELECT cd.num,cd.money,cd.gid,g.name,g.price,g.num as num2,g.picture FROM t_cartdetail cd LEFT JOIN t_goods g ON cd.gid=g.id WHERE cd.cid=#{cid}")
    3. @ResultType(ViewCart.class)
    4. public List queryCart(int cid);

    UserAddressService: 

    实现类:

    UserAddressDao:

    1. //查询地址
    2. @Select("select * from t_useraddress where uid=#{uid} order by flag desc")
    3. @ResultType(UserAddress.class)
    4. public List queryByUid(int uid);

    (6)提交订单

    res = service.insertDirect(user.getId(), oid, aid, (CartDetail) session.getAttribute("direct")); 

     
    

    实现类 

     

    dao.insert(order);

    1. //新增 订单
    2. @Insert("insert into t_order(id,uid,uaid,money,createtime,flag) values(#{id},#{uid},#{uaid},#{money},now(),1)")
    3. public int insert(Order order);
    dao.insertDetail(detail);

     

     

    1. //新增 订单详情
    2. @Insert("insert into t_orderdetail(oid,gid,money,num) values(#{oid},#{gid},#{money},#{num})")
    3. public int insertDetail(OrderDetail detail);
    goodsDao.updateGoodsNum(cd.getNum(),cd.getGid());

     

    GoodDao

    1. //修改商品数量
    2. @Update("update t_goods set num = num - #{num} where id = #{id}")
    3. int updateGoodsNum(@Param("num") int num,@Param("id") int id);

     res = service.save(oid, user.getId(), aid);

    实现类: 

    CartDao:

    1. //获取用户的购物车详情
    2. @Select("select cd.* from t_cartdetail cd left join t_cart c on cd.cid=c.id where c.uid=#{uid}")
    3. @ResultType(CartDetail.class)
    4. public List queryByDetail(int uid);

    OrderDao 

    1. //新增 订单详情
    2. @Insert("insert into t_orderdetail(oid,gid,money,num) values(#{oid},#{gid},#{money},#{num})")
    3. public int insertDetail(OrderDetail detail);

     

    GoodDao:

    1. //修改商品数量
    2. @Update("update t_goods set num = num - #{num} where id = #{id}")
    3. int updateGoodsNum(@Param("num") int num,@Param("id") int id);

     

    cartDao.deleteDetailByCid(cds.get(0).getCid());

    1. //清空购物车
    2. @Delete("delete from t_cartdetail where cid=#{cid} ")
    3. public int deleteDetailByCid(int cid);

     cartDao.updateEmpty(cds.get(0).getCid());

    1. //清空购物车
    2. @Update("update t_cart set money=0 where id=#{id}")
    3. public int updateEmpty(int id);

  • 相关阅读:
    InnoDB - 锁(持续更新中...)
    vue3第三节(v-model 执行原理)
    HTML5新特性
    PHP伪协议详解
    ELFK 分布式日志收集系统
    【C++/类和对象/2023年10月3日】
    0501 货仓选址 【中位数 距离和的最小值】
    DALSA工业相机SDK二次开发(图像采集及保存)C#版
    浪潮服务器安装CentOS 7 教程
    算法选修(J.琴和可莉)(为选修画上句号)
  • 原文地址:https://blog.csdn.net/dengfengling999/article/details/133972155