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
资源推荐
资源详情
资源评论
收起资源包目录
Springmvc+Hibernate改写传智播客ssh网上商城 (455个子文件)
.tmp_list.jsp.13547~ 6KB
.tmp_left.jsp.18301~ 2KB
.tmp_index.jsp.22337~ 1KB
.tmp_home.jsp.22794~ 756B
.tmp_left.jsp.27235~ 2KB
.tmp_add.jsp.27336~ 3KB
.tmp_list.jsp.35326~ 4KB
.tmp_list.jsp.3546~ 5KB
.tmp_product.jsp.36515~ 6KB
.tmp_productList.jsp.38194~ 6KB
.tmp_edit.jsp.38377~ 4KB
.tmp_orderList.jsp.39583~ 5KB
.tmp_left.jsp.39905~ 2KB
.tmp_index.jsp.40850~ 1KB
.tmp_list.jsp.43134~ 4KB
.tmp_index.jsp.55687~ 4KB
.tmp_list.jsp.57741~ 4KB
.tmp_cart.jsp.65458~ 4KB
.tmp_order.jsp.66012~ 6KB
.tmp_top.jsp.70474~ 3KB
.tmp_add.jsp.70649~ 3KB
.tmp_list.jsp.72862~ 4KB
.tmp_edit.jsp.74812~ 4KB
.tmp_home.jsp.77883~ 799B
.tmp_edit.jsp.85006~ 4KB
.tmp_login.jsp.87967~ 5KB
.tmp_bottom.jsp.90409~ 874B
.tmp_top.jsp.92296~ 3KB
.tmp_list.jsp.94864~ 5KB
.tmp_add.jsp.96242~ 3KB
dy.bmp 6KB
bj.bmp 6KB
abc.bmp 6KB
bcc.bmp 6KB
bh.bmp 6KB
ningbo.bmp 6KB
zx.bmp 6KB
guangda.bmp 6KB
pingan.bmp 6KB
cmb.bmp 6KB
hx.bmp 6KB
cib.bmp 6KB
icbc.bmp 6KB
sh.bmp 6KB
ccb.bmp 6KB
bc.bmp 6KB
gf.bmp 6KB
shpd.bmp 6KB
nanjing.bmp 6KB
beijingnongshang.bmp 6KB
post.bmp 6KB
sfz.bmp 6KB
zheshang.bmp 6KB
cmbc.bmp 6KB
OrderController.class 8KB
AdminProductController.class 7KB
BaseDaoImpl.class 6KB
UserController.class 6KB
ProductDaoImpl.class 5KB
AdminCategorySecondController.class 5KB
AdminController.class 5KB
PaymentUtil.class 4KB
AdminCategoryController.class 4KB
AdminOrderController.class 4KB
Order.class 4KB
CheckImgController.class 3KB
OrderDaoImpl.class 3KB
Product.class 3KB
User.class 3KB
ProductController.class 3KB
UserDaoImpl.class 2KB
MailUitls.class 2KB
OrderItem.class 2KB
CartController.class 2KB
OrderServiceImpl.class 2KB
UserServiceImpl.class 2KB
AdminCategorySecondServiceImpl.class 2KB
CategorySecond.class 2KB
AdminServiceImpl.class 2KB
CategorySecondDaoImpl.class 2KB
AdminCategoryServiceImpl.class 2KB
ProductServiceImpl.class 2KB
CategoryDaoImpl.class 2KB
AdminProductServiceImpl.class 2KB
Category.class 2KB
AdminOrderServiceImpl.class 2KB
Cart.class 2KB
IndexController.class 2KB
BaseDao.class 1KB
AdminDaoImpl.class 1KB
Admin.class 1KB
CartItem.class 1017B
ProductDao.class 960B
CategoryServiceImpl.class 867B
OrderDao.class 746B
OrderService.class 728B
AdminCategorySecondService.class 693B
MailUitls$1.class 665B
ProductService.class 654B
UserDao.class 646B
共 455 条
- 1
- 2
- 3
- 4
- 5
zwbonline1112
- 粉丝: 7
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C#,煎饼排序问题(Pancake Sorting Problem)算法与源代码
- C#,排列组合的堆生成法(Heap’s Algorithm for generating permutations)算法与源代码
- C#,老鼠迷宫问题的回溯法求解(Rat in a Maze)算法与源代码
- 6693eeb8d683458a07938615fba9e68f.apk
- C#,数值计算,解微分方程的龙格-库塔二阶方法与源代码
- C#,数值计算,用割线法(Secant Method)求方程根的算法与源代码
- C#,子集和问题(Subset Sum Problem)的算法与源代码
- mongodb 数据库基本操作
- Linux操作系统基础教程
- Linux操作系统相关习题集
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页