day課程v1 3電商系統開發第19章秒殺解決方案_第1頁
day課程v1 3電商系統開發第19章秒殺解決方案_第2頁
day課程v1 3電商系統開發第19章秒殺解決方案_第3頁
day課程v1 3電商系統開發第19章秒殺解決方案_第4頁
day課程v1 3電商系統開發第19章秒殺解決方案_第5頁
已閱讀5頁,還剩21頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

目標1:能夠說出秒殺實現思路目標2:實現秒殺頻道首頁功能目標4:實現秒殺下單功能價、商品、介紹等信息當庫存為0或不在活動期范圍內時無法秒殺。 當用戶秒殺下單5分鐘內未支付,取消預訂單,調用 Tb_seckill_goodsTb_seckill_order(webpinyougou-seckill-web(war)pom.xmlcart_web工程(需添加單點登錄和權限控制)pinyougou-seckill-interface,Tomcat7插件運行端9109web.xml、spring配置文件參見cart_web工程。運用《程序員代碼》生成代碼,拷入工秒殺頻道首頁,顯示正在秒殺的商品(已經開始,未結束的商品publicList<TbSeckillGoods>publicList<TbSeckillGoods>findList() ampleexample=new Criteriacriteria=example.createCriteria();Criteriacriteria=example.createCriteria();criteria.andStockCountGreaterThan(0);//0return} publicList<TbSeckillGoods>return}pinyougou-seckill-web return} }}<script<scripttype="text/javascript"src="plugins/angularjs/angular.min.js"><script<scripttype="text/javascript"src="js/base.js"><scripttype="text/javascript"src="js/service/seckillGoodsService.js"><scriptsrc="js/controller/seckillGoodsController.js"><li<liclass="seckill-item"ng-repeat="pojoin<div<imgsrc="{{pojo.smallPic}}"width="290px"height="290px"<div<divclass='price'><bclass='sec-price'>¥{{pojo.costPrice}}</b><b<div{{((}}%</<div<divclass='sui-progressprogress-danger'><span{{((pojo.num-pojo.stockCount)/pojo.num*100).toFixed(0)}}%;'<aclass='sui-btnbtn-blockbtn-buyhref='seckill-item.html#?id={{pojo.id}}'privateprivate te publicList<TbSeckillGoods>findList()List<TbSeckillGoods>seckillGoodsList= if(seckillGoodsList==null||seckillGoodsList.size()==0){TbSeckillGood example=newTbSeckillGood ampleCriteriacriteriacriteria.andStockCountGreaterThan(0);//剩余庫存大于0seckillGoodsList=seckillGoodsMapper.selectByExample(example);for(TbSeckillGoods}}return}*根據ID獲取實體(從緩存 publicTbSeckillGoodsfindOneFromRedis(LongpublicTbSeckillGoodsfindOneFromRedis(Longid)return } publicTbSeckillGoodsfindOneFromRedis(Longreturn}privateSeckillGoodsServicepinyougou-seckill-webreturn }pinyougou-seckill-web的 ,引入$location服$scope.entity=}}<script<scripttype="text/javascript"src="plugins/angularjs/angular.min.js"><scripttype="text/javascript"src="js/base.js"><scripttype="text/javascript"src="js/service/seckillGoodsService.js"><scriptsrc="js/controller/seckillGoodsController.js"><body<bodyng-app="pinyougou"ng-controller="seckillGoodsController"ng- width="400px"height="400px"/></span><<divclass="fl <<divclass="intro-取消執行用cancel方法先現在先做一個簡單的例子:10秒倒計時,首先引入$interval $scope.second$scope.second=time=$scope.second=$scope.second-}$scope.entity=allsecondMath.floor(newDate($scope.entity.endTime).getTime()-(newDate().getTime()))/1000);//總秒數time=if(allsecondallsecond=allsecond-}}} 天小時分鐘秒格式XXX天10:22:33vardaysMath.floorallsecond/(60*60*24));//varhoursMath.floor(allsecond-days*60*60*24)/(60*60)varminutes=Math.floor((allsecond-days*60*60*24- varvarseconds=allseconddays*60*60*24hours*60*60minutes*60;vartimeString=days+"}return}<span<spanclass="overtime"0或不在活動期@param@parampublicpublicvoidsubmitOrder(LongseckillId,Stringprivate te privateIdWorkerpublicvoidsubmitOrder(LongseckillId,StringuserId)TbSeckillGoodsseckillGoods=(TbSeckillGoods) thrownewRuntimeException("商品不存在}thrownewRuntimeException("商品已搶購一空} , }longorderId=TbSeckillOrderseckillOrder=newTbSeckillOrder();seckillOrder.setCreateTime(newDate());seckillOrder.setUserId(userId);//ID } publicResultsubmitOrder(LongseckillId){StringuserId=returnnewResult(false,"用戶未登錄");}tryreturnnewResult(true提交成功}catch(RuntimeException{returnnewResult(false,}catch(Exception{;returnnewResult(false提交失敗}return}}}}<a<ang-click="submitOrder()"target="_blank"class="sui-btnbtn-danger @parampublicTbSeckillOrdersearchOrderFromRedisByUserId(StringpublicTbSeckillOrdersearchOrderFromRedisByUserId(StringuserId)return }@author publicclassPayControllerprivateWeixinPayServiceprivateSeckillOrderService publicMap//到redisTbSeckillOrderseckillOrder=TbSeckillOrderseckillOrder=longfen=(long)(seckillOrder.getMoney().doubleValue()*100);//金額(分returnreturnnew}}}將pinyougou-cart-web工程的 qrious.min.js拷貝 @param@parampublicpublicvoidsaveOrderFromRedisToDb(StringuserId,LongorderId,StringpublicvoidsaveOrderFromRedisToDb(StringuserId,LongorderId,StringtransactionId){//根據用戶IDTbSeckillOrderseckillOrder=(TbSeckillOrder) thrownewRuntimeException("訂單不存在}hrownewRuntimeException("訂單不相符");} seckillOrder.setPayTime(newDate());//支付時間 te.boundHashOps("seckillOrder").delete(userId);//從redis}@param publicResultqueryPayStatus(Stringout_trade_no)Mapmap=weixinPayService.queryPayStatusWhile(out_trade_no);returnnewResult(false,returnnewResult(truereturnnewResult(false,}}}@param@parampublicvoiddeleteOrderFromRedis(StringuserId,LongpublicvoiddeleteOrderFromRedis(StringuserId,Long{TbSeckillOrderseckillOrder=(TbSeckillOrder) if(seckillOrder!=null&&seckillOrder.getId().longValue()==orderId.longValue()){redisTem TbSeckillGoods );收seckillGoods=if(seckillGoods.getEndTime().getTime()>new }}}@param publicResultqueryPayStatus(Stringout_trade_no)Mapmap=weixinPayService.queryPayStatusWhile(out_trade_no);re

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論