3-4 訂單詳情頁
首先MiaoshaController類,因為生成訂單之前要進行秒殺。其中,@RequestParam是獲取表單提交的name屬性中value
①判斷秒殺商品的庫存。
MiaoshaController:
GoodsVo goodsVo = goodsService.getOneGoodsVoById(goodsId);
int stockCount = goodsVo.getStockCount();
if(stockCount <= 0){
model.addAttribute("errmsg", CodeMsg.MIAO_SHA_OVER.getMsg());
return "miaosha_fail";
}
GoodsService:
public GoodsVo getOneGoodsVoById(long goodsId) {
return goodsDao.getOneGoodsVoById(goodsId);
}
GoodsDao:
@Select("select g.*, mg.stock_count, mg.miaosha_price, mg.start_date, mg.end_date from miaosha_goods mg left join goods g on mg.goods_id = g.id where mg.goods_id = #{id}")
public GoodsVo getOneGoodsVoById(@Param("id")long goodsId);
②防止重複秒殺
MiaoshaController:
//防止一個人秒殺多個商品,判斷是否已經秒殺到了 ==> 到OrderService中去查詢(查詢生成的秒殺型別的訂單,這種訂單必須是一個使用者和一個特價商品關聯產生的,且每個使用者只能產生一個)
MiaoshaOrder miaoshaOrder = orderService.getMiaoshaOrderByUserIdGoodsId(user.getId(),goodsId);if(miaoshaOrder != null){
model.addAttribute("errmsg", CodeMsg.REPEAT_MIAOSHA.getMsg());
return "miaosha_fail";
}
OrderService:
public MiaoshaOrder getMiaoshaOrderByUserIdGoodsId(Long userId, long goodsId) {
return orderDao.getMiaoshaOrderByUserIdGoodsId(userId, goodsId);
}
OrderDao:
@Select("select * from miaosha_order where user_id= #{id} and goods_id=#{goodsId}")
public MiaoshaOrder getMiaoshaOrderByUserIdGoodsId(@Param("id")Long id, @Param("goodsId")long goodsId);
③//減庫存,(需要在一個事務當中去做,搞一個service,做一個MiaoshaService,然後進行一個Transaction操作)
OrderInfo orderInfo = miaoshaService.miaosha(user, goodsVo);//為什麼成功了以後要返回訂單呢?因為我們想秒殺成功之後直接進入到訂單詳情頁
@Transactional
public OrderInfo miaosha(MiaoshaUser user, GoodsVo goodsVo) {
//減庫存(減miaosha_goods的庫存), 寫入秒殺訂單
goodsService.reduceStock(goodsVo);
//下訂單, 包含兩步:一、order_info 二、miaosha_order 實際上是兩步操作
return orderService.createOrder(user, goodsVo);
}
GoodsService:
public void reduceStock(GoodsVo goodsVo) {
//MiaoshaGoods mg = new MiaoshaGoods();
//mg.setGoodsId(goodsVo.getId());
goodsDao.reduceStock(goodsVo.getId());
}
GoodsDao:
@Update("update miaosha_goods set stock_count=stock_count-1 where goods_id = #{goods_id}")
public void reduceStock(@Param("goods_id")long goods_id);
④下(寫)訂單,寫入秒殺訂單
OrderService:
@Transactional
public OrderInfo createOrder(MiaoshaUser user, GoodsVo goodsVo) {
OrderInfo orderInfo = new OrderInfo();
orderInfo.setCreateDate(new Date());
orderInfo.setDeliveryAddrId(0L);
orderInfo.setGoodsCount(1);//本訂單購買商品的數量
orderInfo.setGoodsId(goodsVo.getId());
orderInfo.setGoodsName(goodsVo.getGoodsName());
orderInfo.setGoodsPrice(goodsVo.getMiaoshaPrice());
orderInfo.setOrderChannel(1);
orderInfo.setPayDate(new Date());
orderInfo.setStatus(0);
orderInfo.setUserId(user.getId());
long orderId = orderDao.insertOrderInfo(orderInfo);
MiaoshaOrder miaoshaOrder = new MiaoshaOrder();
miaoshaOrder.setGoodsId(goodsVo.getId());
miaoshaOrder.setOrderId(orderId);
miaoshaOrder.setUserId(user.getId());
//miaoshaOrder.setId(id);//這裡對id不需要進行設定
orderDao.insertMiaoshaOrder(miaoshaOrder);
return orderInfo;//最終返回的是orderInfo
}
OrderDao: 從形參傳遞進來的javaBean,在使用的時候直接${...}即可取出。
@Insert("insert into order_info(user_id, goods_id, goods_name, goods_count, goods_price, order_channel, status, create_date) values(#{userId},"
+ " #{goodsId}, #{goodsName}, #{goodsCount}, #{goodsPrice}, #{orderChannel}, #{status}, #{createDate})")
@SelectKey(keyColumn="id", keyProperty="id", resultType=long.class, before=false, statement="select last_insert_id()")
public long insertOrderInfo(OrderInfo orderInfo);
@Insert("insert into miaosha_order(user_id, order_id, goods_id) values(#{userId},#{orderId},#{goodsId})")
public int insertMiaoshaOrder(MiaoshaOrder miaoshaOrder);
相關推薦
3-4 訂單詳情頁
首先MiaoshaController類,因為生成訂單之前要進行秒殺。其中,@RequestParam是獲取表單提交的name屬性中value①判斷秒殺商品的庫存。MiaoshaController:GoodsVo goodsVo = goodsService.getOneG
Magento 後臺訂單詳情頁Items Ordered列表處,新增跳轉到編輯產品的url
說明:我們在檢視訂單詳情時,有時候可能需要檢視產品在網站前臺的效果,或者再次編輯這個產品。這個時候,我們需要做一個超連結,來快速跳轉。 1.開啟 app\design\adminhtml\default\default\template\sales\order\view\
從頭認識Spring-3.4 簡單的AOP日誌實現-擴展添加檢查訂單功能,以便記錄並檢測輸入的參數
pack logging exe app 基礎上 config round statistic was 這一章節我們再上一個章節的基礎上加上一個檢查訂單功能1.dom
【達內課程】音樂播放器4.0(播放詳情頁下)
效果圖 要更新進度條,需要PlayMusicService中傳送廣播,每秒傳送廣播,廣播中攜帶播放進度資訊 因此在PlayMusicService的onCreate方法中開啟一個執行緒,寫在onCreate中保證只起一條執行緒 private boolean isLoop =
織夢dede更換ueditor1.4.3,及單頁欄目編輯器欄目內容、單頁無法儲存(原創最新)
第一步:下載相對應編輯器的版本 首先,去百度搜索“百度ueditor編輯器”,然後點選進入官網,找到下載頁面。找到我們想要的編輯器的版本,這點相信不要我多說了。下載下來,然後修改名稱為“ueditor”,並進行打包上傳到include目錄下。 溫馨提示:在安裝前,最好備份下所要修改的檔案。 開啟in
4.3-4.4記憶體離散分配 分頁、分段
一.基本分頁儲存管理方式 1.頁面的概念 記憶體劃分成多個小單元,每個單元K大小,稱(物理)塊。作業也按K單位大小劃分成片,稱為頁面。 a. 物理劃分塊的大小 = 邏輯劃分的頁的大小 b.頁面大小要適中。 太大,(最後一頁)內碎片增大,類似連續分配的問題。 太小的
Shop專案後臺--4.所有訂單的訂單詳情/admin/order/list.jsp
contrl+H 可以快速查詢全部工程下,你所提高關鍵字的位置 分析: 1、在list.jsp訂單詳情需要彈出層外掛,外掛程式碼有表示,觸發按鈕,彈出的內容,關閉按鈕。 AdminServlet 2、根據彈出層外掛程式碼,找到入口,“訂單詳情”。點選後觸發事件,進行ajax
2017.5.3 4.全排列
col font ace urn color span 順序輸出 所有 一個 題目描述 給定N(N<10),按照字典序輸出所有的N排列。 輸入 第一行輸入N。 樣例輸入 3 輸出 輸出1到N的全排列,一行一個排列,按照字典序順序輸出。
在Sql中將 varchar 值 '1,2,3,4,5,6' 轉換成數據類型 int
給定 序列 顯示 結果 空格 sel -方法 一個表 affect --問題:將aa轉換為Int類型失敗 string aa="3,5,11,56,88,45,23"; select * from ERPBuMen where ID in(aa) ; --方法sel
3.4 針對中文檢索的問題
合成詞 -h smart 人類 引擎 也有 信息 不同 應該 相對於英文檢索,中文檢索有兩個特別要考慮的問題:編碼問題和中文分詞問題。 一、編碼問題 1. 為了解決中文編碼問題,我們在網頁結構化信息預處理的時候統一采用utf-8編碼; 2. 在Lucene創建索引的時候,構
loadrunner-3-4創建目標場景
font img size 結果 目標 場景 cnblogs 技術分享 runner 定義:創建一個運行目標,通過Controller的自動加載功能進行自動化負載,如果測試的結果達到目標,說明系統的性能符合測試目標,否則就提示無法達到目標。 loadrunner-3-4創建
仿京東、天貓app的商品詳情頁的布局架構, 以及功能實現
enter layout 顯示 效果 寫上 idt theme brush 2.2.0 一、介紹 這個類是繼承自ImageView的,所以對於這個控件我們可以使用ImageView的所有屬性 二、使用準備, 在as 的 build.grade文件中寫上 compile ‘
ABP官方文檔翻譯 3.4 領域服務
con 自然 應用服務 ati 不可見 個人 應該 主目錄 依賴註入 領域服務 介紹 IDomainService接口和DomainService類 示例 創建接口 服務實現 使用應用服務 一些探討 為什麽只有應用服務? 如何強制使用領域服務? 介紹 領域
GRPC 1.3.4 發布,Google 高性能 RPC 框架(Java C++ Go)
框架 9.png 高性能 修復 git ogl arch bsp 版本 GRPC 1.3.4 發布了,GRPC 是一個高性能、開源、通用的 RPC 框架,面向移動和 HTTP/2 設計,是由谷歌發布的首款基於 Protocol Buffers 的 RPC 框架。 GRPC
詳細圖解mongodb 3.4.1 win7x64安裝
個數 問題 存在 vertica ext 安裝服務 img value 數據庫管理 詳細圖解,記錄 win7 64 安裝mongo數據庫的過程。安裝的版本是 MongoDB-win32-x86_64-2008plus-ssl-3.4.1-signed。 我下載的源文件:m
aspcms產品詳情頁調取相關產品
class 函數 data otn 文件 http date res 管理 產品詳情頁調用相關產品最常見的應用就是裝飾公司網站,設計師頁面要求調取設計師做過的案例。aspcms本身有這個功能,但不能完全符合要求,看代碼 {aspcms:content sort={aspc
Python爬蟲:新浪新聞詳情頁的數據抓取(函數版)
earch edit arm python爬蟲 print 詳情 contents enter uwa 上一篇文章《Python爬蟲:抓取新浪新聞數據》詳細解說了如何抓取新浪新聞詳情頁的相關數據,但代碼的構建不利於後續擴展,每次抓取新的詳情頁時都需要重新寫一遍,因此,我們需
求 1-2+3-4+5-6+7-8....M 的結果算法
次數 pre blog spa rgs static console line span 1 static void Main(string[] args) 2 { 3 /** 4 * 算法題: 5 * 求 1-2+3-4+5-6+7
centos 7.2 安裝mongodb 3.4.4免編譯
mongodb nbsp linux fas .org code data mage 獲取 /根目錄下: 獲取命令: wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.4.tgz 解壓命令:
在CentOS 7上使用Yum源安裝和卸載 MongoDB 3.4
enabled 1.配置Yum源1vim /etc/yum.repos.d/mongodb-org-3.4.repo[mongodb-org-3.4] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$relea