前端代码
4.3.1 前端服务层
pinyougou-seckill-web 的 seckillGoodsService.js
//提交订单
this.submitOrder=function(seckillId){
return $http.get('seckillOrder/submitOrder.do?seckillId='+seckillId);
}
前端控制层
pinyougou-seckill-web 的 seckillGoodsController.js
//提交订单
$scope.submitOrder=function(){
seckillGoodsService.submitOrder($scope.entity.id).success(
function(response){
if(response.success){
alert("下单成功,请在 1 分钟内完成支付");
location.href="pay.html";
}else{
alert(response.message);
}
}
);
}
页面
修改 seckill-item.html
<a ng-click="submitOrder()" target="_blank" class="sui-btn btn-danger addshopcar">
秒杀抢购</a>
品优购-秒杀支付
5.1 需求分析
用户成功下单后,跳转到支付页面。支付页显示微信支付二维码。用户完成支付后,保 存订单到数据库。
5.2 生成支付二维码
5.2.1 后端代码
(1)pinyougou-seckill-web 工程引入 pinyougou-pay-interface 依赖
(2)修改 pinyougou-seckill-interface 的 SeckillOrderService.java
/**
* 根据用户名查询秒杀订单
* @param userId
*/
public TbSeckillOrder searchOrderFromRedisByUserId(String userId);
(3)修改 pinyougou-seckill-service 的 SeckillOrderServiceImpl.java
@Override
public TbSeckillOrder searchOrderFromRedisByUserId(String userId) {
return (TbSeckillOrder)
redisTemplate.boundHashOps("seckillOrder").get(userId);
}
(1)在 pinyougou-seckill-web 新建 PayController.java
/**
* 支付控制层
* @author Administrator
*
*/
@RestController
@RequestMapping("/pay")
public class PayController {
@Reference
private WeixinPayService weixinPayService;
@Reference
private SeckillOrderService seckillOrderService;
/**
* 生成二维码
* @return
*/
@RequestMapping("/createNative")
public Map createNative(){
//获取当前用户
String
userId=SecurityContextHolder.getContext().getAuthentication().getName();
//到 redis 查询秒杀订单
TbSeckillOrder seckillOrder =
seckillOrderService.searchOrderFromRedisByUserId(userId);
//判断秒杀订单存在
if(seckillOrder!=null){
long fen= (long)(seckillOrder.getMoney().doubleValue()*100);//金额(分)
return weixinPayService.createNative(seckillOrder.getId()+"",+fen+"");
}else{
return new HashMap();
}
}
}
5.2.2 前端代码
将pinyougou-cart-web工程的 payService.js payController.js pay.html qrious.min.js 拷贝到 pinyougou-seckill-web 工程 payController.js 暂时注释对查询的调用。