package com.shop.controller;
import java.io.IOException;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.shop.model.Cart;
import com.shop.model.CartItem;
import com.shop.model.Order;
import com.shop.model.OrderItem;
import com.shop.model.User;
import com.shop.service.OrderService;
import com.shop.utils.PaymentUtil;
@Controller
public class OrderController {
@Resource
private OrderService orderService;
//根据订单id查询订单
@RequestMapping(value="findByOid/{oid}")
public String findByOid(@PathVariable("oid") Integer oid,
Map<String,Object> map){
Order order = orderService.findByOid(oid);
map.put("order",order);
return "order";
}
//查询订单
@RequestMapping(value="findOrderByUid/{page}")
public String findOrderByUid(HttpSession session,Map<String,Object> map
,@PathVariable("page") Integer page){
//从session获取user对象
User user = (User) session.getAttribute("user");
if(user == null){
map.put("notLogin", "notLogin");
return "msg";
}
//查询总共有多少页的数据
Integer count = orderService.findCountByUid(user.getUid());
if(page > count){
page = 1;
}
//根据用户分页查询订单
List<Order> orders = orderService.findByUid(user.getUid(), page);
map.put("orders", orders);
map.put("page", page);
map.put("count",count);
return "orderList";
}
//保存订单
@RequestMapping(value="saveOrder")
public String saveOrder(HttpSession session,Map<String,Object> map){
//判断用户是否登陆,
User user = (User) session.getAttribute("user");
if(user == null){
map.put("notLogin","noLogin");
return "msg";
}
//从session获取购物车对象
Cart cart = (Cart) session .getAttribute("cart");
//如果购物车为空,则返回到我的购物车页面
if(cart == null){
return "redirect:myCart";
}
//订单对象
Order order = new Order();
order.setTotal(cart.getTotal());
// 1:未付款. 2.已经付款,没有发货 3.发货,没有确认发货 4.交易完成
order.setState(1);
// 设置订单时间
order.setOrdertime(new Date());
// 设置订单关联的客户:
order.setUser(user);
// 设置订单项集合:
Set<OrderItem> sets = new HashSet<OrderItem>();
for (CartItem cartItem : cart.getCartItems()) {
// 订单项的信息从购物项获得的.
OrderItem orderItem = new OrderItem();
orderItem.setCount(cartItem.getCount());
orderItem.setSubtotal(cartItem.getSubtotal());
orderItem.setProduct(cartItem.getProduct());
//双向关联时在多的一方设置一的一方的属性
orderItem.setOrder(order);
//把orderItem对象添加到集合中
sets.add(orderItem);
}
//双向关联时在一的一方设置多的一方的属性
order.setOrderItems(sets);
orderService.save(order);
//清除购物车
cart.clearCart();
map.put("order",order);
return "order";
}
/* 确认订单的操作,为订单付款:
* addr:收货人地址 name:收货人 phone:联系电话 oid:订单的oid
* pd_FrpId:接收支付通道编码
*/
@RequestMapping(value="/payOrder")
public String payOrder(Integer oid, String addr,String name, String phone,
String pd_FrpId,HttpServletResponse response){
Order order = orderService.findByOid(oid);
order.setAddr(addr);
order.setName(name);
order.setPhone(phone);
//修改订单
orderService.update(order);
// 2.完成付款:
// 付款需要的参数:
String p0_Cmd = "Buy"; // 业务类型:
String p1_MerId = "10001126856";// 商户编号:
String p2_Order = order.getOid().toString();// 订单编号:
String p3_Amt = "0.01"; // 付款金额:
String p4_Cur = "CNY"; // 交易币种:
String p5_Pid = ""; // 商品名称:
String p6_Pcat = ""; // 商品种类:
String p7_Pdesc = ""; // 商品描述:
String p8_Url = "http://localhost:8080/eShop/callBack"; // 商户接收支付成功数据的地址:
String p9_SAF = ""; // 送货地址:
String pa_MP = ""; // 商户扩展信息:
String pr_NeedResponse = "1"; // 应答机制:
String keyValue = "69cl522AV6q613Ii4W6u8K6XuW8vM1N6bFgyv769220IuYe9u37N4y7rI4Pl"; // 秘钥
String hmac = PaymentUtil.buildHmac(p0_Cmd, p1_MerId, p2_Order, p3_Amt, p4_Cur, p5_Pid, p6_Pcat, p7_Pdesc,
p8_Url, p9_SAF, pa_MP, pd_FrpId, pr_NeedResponse, keyValue); // hmac码
// 向易宝发送请求:
StringBuffer sb = new StringBuffer("https://www.yeepay.com/app-merchant-proxy/node?");
sb.append("p0_Cmd=").append(p0_Cmd).append("&");
sb.append("p1_MerId=").append(p1_MerId).append("&");
sb.append("p2_Order=").append(p2_Order).append("&");
sb.append("p3_Amt=").append(p3_Amt).append("&");
sb.append("p4_Cur=").append(p4_Cur).append("&");
sb.append("p5_Pid=").append(p5_Pid).append("&");
sb.append("p6_Pcat=").append(p6_Pcat).append("&");
sb.append("p7_Pdesc=").append(p7_Pdesc).append("&");
sb.append("p8_Url=").append(p8_Url).append("&");
sb.append("p9_SAF=").append(p9_SAF).append("&");
sb.append("pa_MP=").append(pa_MP).append("&");
sb.append("pd_FrpId=").append(pd_FrpId).append("&");
sb.append("pr_NeedResponse=").append(pr_NeedResponse).append("&");
sb.append("hmac=").append(hmac);
// 重定向:向易宝出发:
try {
response.sendRedirect(sb.toString());
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/*
* 付款成功后跳转回来的路径:
* r6_Order,r3_Amt 接收付款成功后的参数:
*/
@RequestMapping(value="/callBack")
public String callBack(Integer r6_Order,Integer r3_Amt,Map<String,Object> map){
// 修改订单的状态:
Order currOrder = orderService.findByOid(r6_Order);
// 修改订单状态为2:已经付款:
currOrder.setState(2);
orderService.save(currOrder);
map.put("success", "支付成功!订单编号为: "+r6_Order +" 付款金额为: "+r3_Amt);
return "msg";
}
//确认收货
@RequestMapping(value="updateState/{oid}")
public ModelAndView updateState(@PathVariable("oid") Integer oid){
System.out.println(oid);
Order order = orderService.findByOid(oid);
order.setState(4);
orderService.save(order);
ModelAndView model = new ModelAndView("redirect:/findOrderByUid/1");
return model;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
网上商城(Springmvc+Spring+Hibernate) 包括会员管理,商品管理,订单管理等模块,功能较齐全 前台访问地址:http://localhost:8080/eShop/ 后台访问地址:http://localhost:8080/eShop/adminIndex 管理员姓名:admin 管理员密码:admin
资源推荐
资源详情
资源评论













zwbonline1112
- 粉丝: 7
- 资源: 11

上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
已下载
下载帮助

相关资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

- 1
- 2
- 3
前往页