基于springboot的外星人电脑商城项目(七)(订单系统)

阅读: 评论:0

基于springboot的外星人电脑商城项目(七)(订单系统)

基于springboot的外星人电脑商城项目(七)(订单系统)

外星人电脑商城项目(模板)

  • 外星人商城项目介绍
    • 项目背景
    • 项目功能
    • 项目技术
    • 项目模块
    • 项目要求
  • 外星人商城项目开发流程
    • 第一节 基础构建
    • 第二节 用户注册
    • 第三节 用户登录
    • 第四节 用户管理
    • 第五节 热销商品
    • 第六节 购物车
    • 第七节 订单
      • 第一部分 订单-持久层
        • 1. 规划sql语句
        • 2. 实体类
        • 3. mapper类
        • 4. 配置l
      • 第二部分 业务层
        • 1. 接口规范
        • 2. 实现 Order 接口
      • 第三部分 控制层
      • 第四部分 前端页面
    • 第八节 商品秒杀
  • 外星人商城项目总结

外星人商城项目介绍

项目背景

外星人公司(狗头)委托我开发一个一个专门的外星人商城(模仿京东、天猫),出售外星人电子产品以及周边,实现了以下功能。
本项目已经搭载了服务器,网址给定:
链接: 外星人官方网站.

项目功能

  • 登录
  • 注册
  • 用户管理
  • 热销商品
  • 购物车
  • 订单
  • 商品秒杀

项目技术

  • 项目框架:springboot
  • 数据库框架:mybaits
  • 前端技术:JS、JQuery、Ajax

项目模块

持久层:依据业务要求规划相关的SQL语句,以及进行配置
业务层:核心功能控制、业务操作以及异常处理
控制层:接受请求,处理响应
前端开发:JS、JQuery、Ajax
单元测试:junit

项目要求

  • JDK8
  • maven3.6.1
  • 数据库mysql5.1
  • idea

外星人商城项目开发流程

第一节 基础构建

第二节 用户注册

第三节 用户登录

第四节 用户管理

第五节 热销商品

第六节 购物车

第七节 订单



第一部分 订单-持久层

1. 规划sql语句
CREATE TABLE t_order
(oid           INT AUTO_INCREMENT COMMENT '订单id',uid           INT         NOT NULL COMMENT '用户id',recv_name     VARCHAR(20) NOT NULL COMMENT '收件人姓名',recv_phone    VARCHAR(20) COMMENT '�ջ��˵绰',recv_province VARCHAR(15) COMMENT '�ջ�������ʡ',recv_city     VARCHAR(15) COMMENT '�ջ���������',recv_area     VARCHAR(15) COMMENT '�ջ���������',recv_address  VARCHAR(50) COMMENT '�ջ���ϸ��ַ',total_price   BIGINT COMMENT '总价',STATUS        INT COMMENT '״̬��0-δ֧����1-��֧����2-��ȡ����3-�ѹرգ�4-�����',order_time    DATETIME COMMENT '�µ�ʱ��',pay_time      DATETIME COMMENT '֧��ʱ��',created_user  VARCHAR(20) COMMENT '������',created_time  DATETIME COMMENT '����ʱ��',modified_user VARCHAR(20) COMMENT '�޸���',modified_time DATETIME COMMENT '�޸�ʱ��',PRIMARY KEY (oid)
) ENGINE = INNODBDEFAULT CHARSET = utf8;CREATE TABLE t_order_item
(id            INT AUTO_INCREMENT COMMENT '订单中的商品记录id',oid           INT          NOT NULL COMMENT '�������Ķ�����id',pid           INT          NOT NULL COMMENT '��Ʒ��id',title         VARCHAR(100) NOT NULL COMMENT '��Ʒ����',image         VARCHAR(500) COMMENT '商品图片',price         BIGINT COMMENT '商品价格',num           INT COMMENT '��������',created_user  VARCHAR(20) COMMENT '������',created_time  DATETIME COMMENT '����ʱ��',modified_user VARCHAR(20) COMMENT '�޸���',modified_time DATETIME COMMENT '�޸�ʱ��',PRIMARY KEY (id)
) ENGINE = INNODBDEFAULT CHARSET = utf8;
2. 实体类
/** 购物车数据的实体类 */
public class Cart extends BaseEntity implements Serializable {private Integer cid;private Integer uid;private Integer pid;private Long price;private Integer num;
3. mapper类
/** 处理购物车数据的持久层接口 */
public interface CartMapper {/*** 插入购物车数据* @param cart 购物车数据* @return 受影响的行数*/Integer insert(Cart cart);/*** 修改购物车数据中商品的数量* @param cid 购物车数据的id* @param num 新的数量* @param modifiedUser 修改执行人* @param modifiedTime 修改时间* @return 受影响的行数*/Integer updateNumByCid(@Param("cid") Integer cid,@Param("num") Integer num,@Param("modifiedUser") String modifiedUser,@Param("modifiedTime") Date modifiedTime);/*** 根据用户id和商品id查询购物车中的数据* @param uid 用户id* @param pid 商品id* @return 匹配的购物车数据,如果该用户的购物车中并没有该商品,则返回null*/Cart findByUidAndPid(@Param("uid") Integer uid,@Param("pid") Integer pid);/*** 查询某用户的购物车数据* @param uid 用户id* @return 该用户的购物车数据的列表*/List<CartVO> findVOByUid(Integer uid);/*** 根据购物车数据id查询购物车数据详情* @param cid 购物车数据id* @return 匹配的购物车数据详情,如果没有匹配的数据则返回null*/Cart findByCid(Integer cid);/*** 根据若干个购物车数据id查询详情的列表* @param cids 若干个购物车数据id* @return 匹配的购物车数据详情的列表*/List<CartVO> findVOByCids(Integer[] cids);Integer remove(Integer cid);
}
4. 配置l
    <!-- 插入购物车数据:Integer insert(Cart cart) --><insert id="insert" useGeneratedKeys="true" keyProperty="cid">INSERT INTO compution.t_cart (uid, pid, price, num, created_user, created_time, modified_user, modified_time)VALUES (#{uid}, #{pid}, #{price}, #{num}, #{createdUser}, #{createdTime}, #{modifiedUser}, #{modifiedTime})</insert><!-- 修改购物车数据中商品的数量:Integer updateNumByCid(@Param("cid") Integer cid,@Param("num") Integer num,@Param("modifiedUser") String modifiedUser,@Param("modifiedTime") Date modifiedTime) --><update id="updateNumByCid">UPDATEcompution.t_cartSETnum=#{num},modified_user=#{modifiedUser},modified_time=#{modifiedTime}WHEREcid=#{cid}</update><!-- 根据用户id和商品id查询购物车中的数据:Cart findByUidAndPid(@Param("uid") Integer uid,@Param("pid") Integer pid) --><select id="findByUidAndPid" resultMap="CartEntityMap">SELECT*FROMcompution.t_cartWHEREuid=#{uid} AND pid=#{pid}</select><!-- 查询某用户的购物车数据:List<CartVO> findVOByUid(Integer uid) --><select id="findVOByUid" resultType=&#store.vo.CartVO">SELECTcid,uid,pid,t_cart.price,t_cart.num,t_product.title,t_product.price AS realPrice,t_product.imageFROMcompution.t_cartLEFT JOIN compution.t_product ON t_cart.pid = t_product.idWHEREuid = #{uid}ORDER ated_time DESC</select><!-- 根据购物车数据id查询购物车数据详情:Cart findByCid(Integer cid) --><select id="findByCid" resultMap="CartEntityMap">SELECT*FROMcompution.t_cartWHEREcid = #{cid}</select><!-- 根据若干个购物车数据id查询详情的列表:List<CartVO> findVOByCids(Integer[] cids) --><select id="findVOByCids" resultType=&#store.vo.CartVO">SELECTcid,uid,pid,t_cart.price,t_cart.num,t_product.title,t_product.price AS realPrice,t_product.imageFROMcompution.t_cartLEFT JOIN compution.t_product ON t_cart.pid = t_product.idWHEREcid IN (<foreach collection="array" item="cid" separator=",">#{cid}</foreach>)ORDER ated_time DESC</select><!--删--><delete id="remove" parameterType="Integer">deleteFROMcompution.t_cartWHEREcid = #{cid}</delete>

第二部分 业务层

1. 接口规范
/** 处理订单和订单数据的业务层接口 */
public interface IOrderService {/*** 创建订单* @param aid 收货地址的id* @param cids 即将购买的商品数据在购物车表中的id* @param uid 当前登录的用户的id* @param username 当前登录的用户名* @return 成功创建的订单数据*/Order create(Integer aid, Integer[] cids, Integer uid, String username);
}
2. 实现 Order 接口
/** 处理订单和订单数据的业务层实现类 */
@Service
public class OrderServiceImpl implements IOrderService {@Autowiredprivate OrderMapper orderMapper;@Autowiredprivate IAddressService addressService;@Autowiredprivate ICartService cartService;@Transactional@Overridepublic Order create(Integer aid, Integer[] cids, Integer uid, String username) {// 创建当前时间对象Date now = new Date();// 根据cids查询所勾选的购物车列表中的数据List<CartVO> carts = VOByCids(uid, cids);// 计算这些商品的总价long totalPrice = 0;for (CartVO cart : carts) {totalPrice += RealPrice() * Num();}// 创建订单数据对象Order order = new Order();// 补全数据:uidorder.setUid(uid);// 查询收货地址数据Address address = ByAid(aid, uid);// 补全数据:收货地址相关的6项order.Name());order.Phone());order.ProvinceName());order.CityName());order.AreaName());order.Address());// 补全数据:totalPriceorder.setTotalPrice(totalPrice);// 补全数据:statusorder.setStatus(0);// 补全数据:下单时间order.setOrderTime(now);// 补全数据:日志order.setCreatedUser(username);order.setCreatedTime(now);order.setModifiedUser(username);order.setModifiedTime(now);// 插入订单数据Integer rows1 = orderMapper.insertOrder(order);if (rows1 != 1) {throw new InsertException("插入订单数据时出现未知错误,请联系系统管理员");}// 遍历carts,循环插入订单商品数据for (CartVO cart : carts) {// 创建订单商品数据OrderItem item = new OrderItem();// 补全数据:Oid())item.Oid());// 补全数据:pid, title, image, price, numitem.Pid());item.Title());item.Image());item.RealPrice());item.Num());// 补全数据:4项日志item.setCreatedUser(username);item.setCreatedTime(now);item.setModifiedUser(username);item.setModifiedTime(now);// 插入订单商品数据Integer rows2 = orderMapper.insertOrderItem(item);if (rows2 != 1) {throw new InsertException("插入订单商品数据时出现未知错误,请联系系统管理员");}}// 返回return order;}
}

第三部分 控制层

@RestController
@RequestMapping("orders")
public class OrderController extends BaseController {@Autowiredprivate IOrderService orderService;@RequestMapping("create")public JsonResult<Order> create(Integer aid, Integer[] cids, HttpSession session) {// 从Session中取出uid和usernameInteger uid = getUidFromSession(session);String username = getUsernameFromSession(session);// 调用业务对象执行业务Order data = ate(aid, cids, uid, username);// 返回成功与数据return new JsonResult<Order>(OK, data);}
}

第四部分 前端页面

添加一个点击时间事件;
对于需要支付的商品列表进行输出;

<script>$("#btn-create-order").click(function() {$.ajax({url: "/orders/create",data: $("#form-create-order").serialize(),type: "POST",dataType: "JSON",success: function(json) {if (json.state == 200) {alert("创建订单成功!");console.log(json.data);} else {alert("创建订单失败!" + ssage);}},error: function(xhr) {alert("您的登录信息已经过期,请重新登录!HTTP响应码:" + xhr.status);location.href = "login.html";}});});
</script>

第八节 商品秒杀

外星人商城项目总结

本文发布于:2024-02-04 12:43:08,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170707509455674.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:外星人   订单   商城   项目   系统
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23