Java Spring技術棧構(gòu)建團購網(wǎng)站

課程概述

  • 做什么?---團購前后臺應用
  • 哪些功能?---商品、購物、支付、管理
  • 技術?---三方框架+經(jīng)驗+方案+工具
團購
  前臺
    網(wǎng)站首頁
    注冊登陸
    商品列表
    商品詳情
    購物車
    下單支付
    個人中心
  后臺
    商品管理
    訂單管理
    安全權限
    地區(qū)管理
    商家管理
技術點介紹
   前臺頁面
      Sitemesh
      Freemarker
      JQuery
   后臺頁面
      EasyUI
      Freemarker
      JQuery
   核心控制
      SpringMVC
      SpringAOP
      MyBatis
    其他輔助
      Logback
      Redis
      GraphicsMagick

學習前提

  • 熟悉Spring、SpringMVC、MyBatis
  • 有至少一個完整項目經(jīng)驗
  • 熱愛技術并喜歡用技術解決問題

講授方式

  • 從網(wǎng)站到管理后臺的順序按功能展開
  • 對于技術點的使用采用先拋出問題,后設計+實現(xiàn)的方式
  • 核心代碼同步編寫,重點代碼詳細講解
  • 建議順序

課程收獲

  • 團購網(wǎng)站前后臺整體設計方案
  • 技術原理及應用,通用型技術方案原理及設計
  • SpringMVC、Spring、Mybatis、Redis(Jedis)等框架應用

網(wǎng)站需求

  • 首頁
  • 分類/列表頁碼
  • 詳情頁
  • 預售
  • 購買及支付
  • 個人信息及訂單
  • 站內(nèi)通知
  • 注冊登陸

管理后臺需求

  • 權限
  • 供應商
  • 商品
  • 地區(qū)
  • 訂單
  • 圖片處理

技術選型原則

  • 平臺依賴性
  • 可擴展、可集成性
  • 技術穩(wěn)定性
  • 文檔及應用

技術陷阱

  • 需求不清
  • 項目管理混亂
  • 追求新技術
  • 文檔不完善
  • 用戶不配合(倒幫忙)、數(shù)據(jù)質(zhì)量差、時間規(guī)劃亂

恰當?shù)募軜?gòu)設計

  • 分層調(diào)用(逐層調(diào)用)
  • 接口明確,依賴抽象
  • 邊界清晰,職責單一
  • 恰當使用技術

我們的實踐

  • java平臺、Spring技術棧、源碼管理
  • 項目代碼分層:頁面控制-業(yè)務服務-持久化
  • 頁面布局、圖片處理、富文本
  • 拓展方案設計與實踐
  • 關于事務
CREATE DATABASE IF NOT EXISTS `groupon`  DEFAULT CHARACTER SET utf8;
USE `groupon`;


--
-- Table structure for table `deal`
--

DROP TABLE IF EXISTS `deal`;
CREATE TABLE `deal` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `area_id` bigint(20) NOT NULL,
  `area_name` varchar(64) NOT NULL,
  `sku_id` bigint(20) NOT NULL COMMENT '商品ID',
  `deal_class` int(2) NOT NULL,
  `merchant_id` bigint(20) NOT NULL COMMENT '廠商ID',
  `merchant_sku` bigint(20) NOT NULL,
  `deal_title` varchar(200) NOT NULL COMMENT '商品標題',
  `deal_price` decimal(10,0) NOT NULL COMMENT '商品價格',
  `merchant_price` decimal(10,0) NOT NULL COMMENT '進貨價',
  `market_price` decimal(10,0) NOT NULL COMMENT '市場價',
  `settlement_price` decimal(10,0) NOT NULL,
  `settlement_price_max` decimal(10,0) DEFAULT NULL COMMENT '最大可接受結(jié)算價格',
  `discount` int(3) DEFAULT NULL COMMENT '折扣',
  `bonus_points` int(5) DEFAULT NULL COMMENT '積分',
  `deal_type` int(3) NOT NULL COMMENT '商品類型',
  `image_id` bigint(20) DEFAULT '0' COMMENT '對應商品圖片',
  `deal_level` int(4) NOT NULL COMMENT '商品優(yōu)先級',
  `max_purchase_count` int(4) DEFAULT NULL,
  `publish_status` int(2) NOT NULL COMMENT '發(fā)布狀態(tài)',
  `inventory_amount` int(4) NOT NULL COMMENT '商品庫存數(shù)量',
  `vendibility_amount` int(4) NOT NULL COMMENT '商品可售數(shù)量',
  `oos_status` int(2) NOT NULL,
  `start_time` datetime NOT NULL COMMENT '銷售開始時間',
  `end_time` datetime DEFAULT NULL COMMENT '銷售結(jié)束時間',
  `publish_time` datetime DEFAULT NULL COMMENT '發(fā)布時間',
  `merchant_code` varchar(15) DEFAULT NULL COMMENT '商家編碼',
  `create_time` datetime NOT NULL COMMENT '創(chuàng)建時間 ',
  `update_time` datetime NOT NULL COMMENT '更新時間 ',
  `category_id` bigint(20) unsigned NOT NULL COMMENT '商品類別ID',
  PRIMARY KEY (`id`),
  UNIQUE KEY `deal_sku_UNIQUE` (`sku_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `deal_detail`
--

DROP TABLE IF EXISTS `deal_detail`;
CREATE TABLE `deal_detail` (
  `id` bigint(20) NOT NULL,
  `deal_id` bigint(20) NOT NULL,
  `deal_detail` varchar(8000) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `detail_deal_id_UNIQUE` (`deal_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `deal_category`
--

DROP TABLE IF EXISTS `deal_category`;
CREATE TABLE `deal_category` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `parent_id` bigint(20) NOT NULL COMMENT '父ID',
  `name` varchar(100) NOT NULL COMMENT '名稱',
  `url_name` varchar(32) NOT NULL COMMENT '分類URL名稱',
  `publish_status` int(2) NOT NULL COMMENT '發(fā)布狀態(tài)',
  `create_time` datetime NOT NULL COMMENT '創(chuàng)建時間',
  `order_num` int(10) unsigned NOT NULL COMMENT '排序號碼',
  `deep` int(10) unsigned NOT NULL COMMENT '層次深度',
  PRIMARY KEY (`id`),
  UNIQUE KEY `deal_category_url_name_UNIQUE` (`url_name`),
  UNIQUE KEY `deal_category_name_UNIQUE` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `area`
--

DROP TABLE IF EXISTS `area`;
CREATE TABLE `area` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(32) NOT NULL COMMENT '名稱',
  `parent_id` bigint(20) NOT NULL,
  `common` int(4) NOT NULL,
  `type` varchar(16) NOT NULL COMMENT '類型:省,市',
  `create_time` datetime NOT NULL COMMENT '創(chuàng)建時間 ',
  `update_time` datetime NOT NULL COMMENT '更新時間 ',
  PRIMARY KEY (`id`),
  UNIQUE KEY `area_name_UNIQUE` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `image_info`
--

DROP TABLE IF EXISTS `image_info`;
CREATE TABLE `image_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'Id',
  `width` int(4) DEFAULT NULL COMMENT '圖片的寬',
  `height` int(4) DEFAULT NULL COMMENT '圖片的高',
  `source_path` varchar(100) DEFAULT NULL COMMENT '圖片的源路徑',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `cart`
--

DROP TABLE IF EXISTS `cart`;
CREATE TABLE `cart` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) NOT NULL,
  `deal_id` bigint(20) NOT NULL,
  `deal_sku_id` bigint(20) NOT NULL,
  `count` int(4) NOT NULL,
  `create_time` datetime NOT NULL COMMENT '創(chuàng)建時間 ',
  `update_time` datetime NOT NULL COMMENT '更新時間 ',
  PRIMARY KEY (`id`),
  KEY `cart_user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `order_basic`
--

DROP TABLE IF EXISTS `order_basic`;
CREATE TABLE `order_basic` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) NOT NULL COMMENT '用戶ID',
  `order_status` int(11) NOT NULL COMMENT '訂單狀態(tài)',
  `create_time` datetime NOT NULL COMMENT '創(chuàng)建時間',
  `update_time` datetime NOT NULL COMMENT '更新時間',
  `total_price` int(11) NOT NULL COMMENT '訂單總價',
  `total_settlement_price` int(11) NOT NULL,
  `address` mediumtext COMMENT '收貨地址',
  `receiver` varchar(128) DEFAULT NULL COMMENT '收件人 ',
  `phone` varchar(20) DEFAULT NULL COMMENT '電話',
  `pay_type` int(2) DEFAULT '0' COMMENT '支付方式,1:微信,2:支付寶,3:貨到付款',
  PRIMARY KEY (`id`),
  KEY `order_user_INDEX` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `order_detail`
--

DROP TABLE IF EXISTS `order_detail`;
CREATE TABLE `order_detail` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `order_id` bigint(20) NOT NULL COMMENT '訂單ID',
  `user_id` bigint(20) NOT NULL COMMENT '用戶ID',
  `merchant_sku` int(20) DEFAULT NULL COMMENT '商家商品SKU',
  `merchant_id` bigint(20) DEFAULT NULL COMMENT '商家編碼',
  `merchant_code` varchar(32) DEFAULT NULL COMMENT '商家編碼',
  `deal_id` bigint(20) NOT NULL COMMENT 'deal ID',
  `deal_sku_id` bigint(20) NOT NULL,
  `deal_img_id` bigint(20) NOT NULL,
  `deal_title` varchar(200) NOT NULL COMMENT 'deal名稱',
  `deal_count` int(11) NOT NULL COMMENT 'Deal數(shù)量',
  `deal_price` int(11) NOT NULL COMMENT 'Deal單價',
  `total_price` int(11) NOT NULL COMMENT 'Deal總價',
  `settlement_price` int(11) NOT NULL,
  `total_settlement_price` int(11) NOT NULL,
  `detail_status` int(11) NOT NULL COMMENT '詳情狀態(tài)',
  `create_time` datetime NOT NULL COMMENT '創(chuàng)建時間',
  `update_time` datetime NOT NULL COMMENT '更新時間',
  PRIMARY KEY (`id`),
  KEY `detail_user_id_INDEX` (`user_id`),
  KEY `detail_order_id_UNIQUE` (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `user`
--

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `password` varchar(45) NOT NULL,
  `name` varchar(45) NOT NULL,
  `login_time` datetime NOT NULL,
  `create_time` datetime NOT NULL,
  `update_time` datetime NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `user_name_UNIQUE` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `user_basic_info`
--

DROP TABLE IF EXISTS `user_basic_info`;
CREATE TABLE `user_basic_info` (
  `id` int(10) NOT NULL,
  `nickname` varchar(32) NOT NULL,
  `real_name` varchar(32) NOT NULL,
  `mail` varchar(32) NOT NULL,
  `phone` varchar(16) NOT NULL,
  `create_time` datetime NOT NULL,
  `update_time` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `address`
--

DROP TABLE IF EXISTS `address`;
CREATE TABLE `address` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) NOT NULL,
  `receiver` varchar(64) NOT NULL,
  `area` varchar(256) NOT NULL,
  `detail` varchar(256) NOT NULL,
  `type` varchar(8) NOT NULL,
  `phone` varchar(16) NOT NULL,
  `create_time` datetime NOT NULL COMMENT '創(chuàng)建時間 ',
  `update_time` datetime NOT NULL COMMENT '更新時間 ',
  PRIMARY KEY (`id`),
  KEY `INDEX_USER_ID` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `favorite`
--

DROP TABLE IF EXISTS `favorite`;
CREATE TABLE `favorite` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) NOT NULL,
  `deal_id` bigint(20) NOT NULL,
  `deal_sku_id` bigint(20) NOT NULL,
  `create_time` datetime NOT NULL COMMENT '創(chuàng)建時間 ',
  `update_time` datetime NOT NULL COMMENT '更新時間 ',
  PRIMARY KEY (`id`),
  KEY `favorite_user_deal_id` (`user_id`,`deal_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `message`
--

DROP TABLE IF EXISTS `message`;
CREATE TABLE `message` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) NOT NULL,
  `title` varchar(64) NOT NULL,
  `content` varchar(256) NOT NULL,
  `readed` varchar(4) NOT NULL,
  `create_time` datetime NOT NULL COMMENT '創(chuàng)建時間 ',
  `update_time` datetime NOT NULL COMMENT '更新時間 ',
  PRIMARY KEY (`id`),
  KEY `message_user_INDEX` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;














--
-- Table structure for table `admin_user`
--

DROP TABLE IF EXISTS `admin_user`;
CREATE TABLE `admin_user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `password` varchar(50) NOT NULL,
  `create_time` datetime NOT NULL COMMENT '創(chuàng)建時間',
  `update_time` datetime DEFAULT NULL COMMENT '修改時間',
  PRIMARY KEY (`id`),
  UNIQUE KEY `admin_user_name_UNIQUE` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `admin_role`
--

DROP TABLE IF EXISTS `admin_role`;
CREATE TABLE `admin_role` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL COMMENT '角色名',
  `create_time` datetime NOT NULL COMMENT '創(chuàng)建時間',
  `update_time` datetime DEFAULT NULL COMMENT '修改時間',
  PRIMARY KEY (`id`),
  UNIQUE KEY `UNIQUE_ROLE_NAME` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `admin_function`
--

DROP TABLE IF EXISTS `admin_function`;
CREATE TABLE `admin_function` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(32) NOT NULL COMMENT '名稱',
  `state` varchar(10) NOT NULL DEFAULT 'open' COMMENT '狀態(tài),open/closed',
  `parent_id` int(10) NOT NULL COMMENT '父節(jié)點ID',
  `url` varchar(64) NOT NULL COMMENT '鏈接',
  `create_time` datetime NOT NULL COMMENT '創(chuàng)建時間',
  `update_time` datetime DEFAULT NULL COMMENT '修改時間',
  PRIMARY KEY (`id`),
  UNIQUE KEY `admin_func_url_UNIQUE` (`url`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='ERP菜單表';

--
-- Table structure for table `admin_role_function`
--

DROP TABLE IF EXISTS `admin_role_function`;
CREATE TABLE `admin_role_function` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `admin_role_id` int(10) NOT NULL COMMENT '角色ID',
  `admin_func_id` int(10) NOT NULL COMMENT '功能ID',
  `create_time` datetime NOT NULL COMMENT '創(chuàng)建時間',
  `update_time` datetime DEFAULT NULL COMMENT '修改時間',
  PRIMARY KEY (`id`),
  UNIQUE KEY `admin_role_func_UNIQUE` (`admin_role_id`,`admin_func_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='admin角色功能樹對應關系表';

--
-- Table structure for table `admin_user_role`
--

DROP TABLE IF EXISTS `admin_user_role`;
CREATE TABLE `admin_user_role` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `admin_user_id` int(10) NOT NULL COMMENT '用戶ID',
  `admin_role_id` int(10) NOT NULL COMMENT '角色ID',
  `create_time` datetime NOT NULL COMMENT '創(chuàng)建時間',
  `update_time` datetime DEFAULT NULL COMMENT '修改時間',
  PRIMARY KEY (`id`),
  KEY `admin_user_role_id` (`admin_user_id`,`admin_role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='admin用戶角色對應關系表';

--
-- Table structure for table `merchant`
--

DROP TABLE IF EXISTS `merchant`;
CREATE TABLE `merchant` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '商家ID',
  `name` varchar(32) NOT NULL DEFAULT '' COMMENT '商家名稱',
  `description` varchar(200) NOT NULL DEFAULT '' COMMENT '商家描述',
  `image_id` bigint(20) NOT NULL COMMENT '關聯(lián)圖片',
  `level` int(4) NOT NULL COMMENT '商家級別',
  `hot_level` int(4) NOT NULL COMMENT '熱度等級',
  `status` int(2) NOT NULL COMMENT '發(fā)布狀態(tài)',
  `create_time` datetime NOT NULL COMMENT '創(chuàng)建時間',
  `update_time` datetime DEFAULT NULL COMMENT '修改時間',
  `url` varchar(100) NOT NULL COMMENT '商家URL',
  PRIMARY KEY (`id`),
  UNIQUE KEY `merchant_name_UNIQUE` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Table structure for table `start_remind`
--

DROP TABLE IF EXISTS `start_remind`;
CREATE TABLE `start_remind` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) NOT NULL,
  `deal_id` varchar(64) NOT NULL,
  `deal_sku_id` varchar(64) NOT NULL,
  `deal_title` varchar(200) NOT NULL,
  `start_time` datetime NOT NULL COMMENT '開團時間 ',
  `create_time` datetime NOT NULL COMMENT '創(chuàng)建時間 ',
  `update_time` datetime NOT NULL COMMENT '更新時間 ',
  PRIMARY KEY (`id`),
  UNIQUE KEY `remind_user_deal_UNIQUE` (`user_id`,`deal_id`),
  KEY `remind_user_INDEX` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容