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

提交评论