package tqb.bookstore.order.web.servlet;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.itcast.commons.CommonUtils;
import cn.itcast.servlet.BaseServlet;
import tqb.bookstore.cart.domain.Cart;
import tqb.bookstore.cart.domain.CartItem;
import tqb.bookstore.order.domain.Order;
import tqb.bookstore.order.domain.OrderItem;
import tqb.bookstore.order.service.OrderException;
import tqb.bookstore.order.service.OrderService;
import tqb.bookstore.user.domain.User;
@WebServlet("/OrderServlet")
public class OrderServlet extends BaseServlet {
private static final long serialVersionUID = 1L;
private OrderService orderService = new OrderService();
// 添加订单
public String add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/**
* 从Session中获得购物车
*/
Cart cart = (Cart) request.getSession().getAttribute("cart");
/**
* 创建Order
*/
Order order = new Order();
/**
* 向order中添加数据
*/
order.setOid(CommonUtils.uuid());
order.setOrdertime(new Date());
// 订单状态为未付款
order.setState(1);
// 获得用户对象
User user = (User) request.getSession().getAttribute("session_user");
order.setOwner(user);
order.setTotal(cart.getTotal());
// 创建订单条目集合
List<OrderItem> orderItemList = new ArrayList<OrderItem>();
// 循环遍历购物车条目
for (CartItem cartItem : cart.getCartItems()) {
// 创建订单条目
OrderItem oi = new OrderItem();
oi.setIid(CommonUtils.uuid());
oi.setSubtotal(cartItem.getSubtotal());
oi.setOrder(order);
oi.setCount(cartItem.getCount());
oi.setBook(cartItem.getBook());
// 添加
orderItemList.add(oi);
}
// 将订单条目添加到订单中
order.setOrderItemList(orderItemList);
// 调用Service方法
orderService.add(order);
// 清空购物车
cart.clear();
// 将order保存到request域中
request.setAttribute("order", order);
// 转发到order目录下的desc.jsp
return "f:/jsps/order/desc.jsp";
}
/**
* 我的订单
*
* @param request
* @param response
* @return
* @throws ServletException
* @throws IOException
*/
public String myOrders(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/*
* 从Session中获得User对象 从User中获得uid 通过uid查询所有订单
*
*/
User user = (User) request.getSession().getAttribute("session_user");
String uid = user.getUid();
List<Order> orderList = orderService.findByUid(uid);
// 将返回的订单列表设置到request域中
request.setAttribute("orderList", orderList);
return "f:/jsps/order/list.jsp";
}
/**
* 加载订单
*
* @param request
* @param response
* @return
* @throws ServletException
* @throws IOException
*/
public String load(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String oid = request.getParameter("oid");
// 通过oid查询Order
Order order = orderService.load(oid);
request.setAttribute("order", order);
return "f:/jsps/order/desc.jsp";
}
/**
* 确认收获
*
* @param request
* @param response
* @return
* @throws ServletException
* @throws IOException
*/
public String confirm(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获得订单编号
String oid = request.getParameter("oid");
try {
orderService.confirm(oid);
request.setAttribute("msg", "确认收货成功,感谢您的购买,欢迎下次再来!");
return "f:/jsps/order/msg.jsp";
} catch (OrderException e) {
request.setAttribute("msg", e.getMessage());
return "f:/jsps/order/msg.jsp";
}
}
/**
* 支付功能
*
* @param request
* @param response
* @return
* @throws ServletException
* @throws IOException
*/
public String pay(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Properties props = new Properties();
// 得到配置文件输入流
InputStream inStream = this.getClass().getClassLoader().getResourceAsStream("merchantInfo.properties");
// 加载配置文件
props.load(inStream);
// 配置13个参数
String p0_Cmd = "Buy";// 业务类型
String p1_MerId = props.getProperty("p1_MerId");// 商户编码
String p2_Order = request.getParameter("oid");// 订单编号
String p3_Amt = "0.01";// 交易金额
String p4_Cur = "CNY";// 币种:人民币
String p5_Pid = "";
String p6_Pcat = "";
String p7_Pdesc = "";
String p8_Url = props.getProperty("p8_Url");// 回馈信息需要的url
String p9_SAF = "";
String pa_MP = "";
String pd_FrpId = request.getParameter("pd_FrpId");// 银行类型
String pr_NeedResponse = "1";// 应答机制
// 计算hmac
String keyValue = props.getProperty("keyValue");
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);
// 连接易宝需要的连接和参数
StringBuilder url = new StringBuilder(props.getProperty("url"));
url.append("?p0_Cmd=").append(p0_Cmd);
url.append("&p1_MerId=").append(p1_MerId);
url.append("&p2_Order=").append(p2_Order);
url.append("&p3_Amt=").append(p3_Amt);
url.append("&p4_Cur=").append(p4_Cur);
url.append("&p5_Pid=").append(p5_Pid);
url.append("&p6_Pcat=").append(p6_Pcat);
url.append("&p7_Pdesc=").append(p7_Pdesc);
url.append("&p8_Url=").append(p8_Url);
url.append("&p9_SAF=").append(p9_SAF);
url.append("&pa_MP=").append(pa_MP);
url.append("&pd_FrpId=").append(pd_FrpId);
url.append("&pr_NeedResponse=").append(pr_NeedResponse);
url.append("&hmac=").append(hmac);
// 重定向到易宝
response.sendRedirect(url.toString());
return null;
}
/**
* 回调方法
*
* @param request
* @param response
* @return
* @throws ServletException
* @throws IOException
*/
public String back(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 得到11个参数+hmac
String p1_MerId = request.getParameter("p1_MerId");
String r0_Cmd = request.getParameter("r0_Cmd");
String r1_Code = request.getParameter("r1_Code");
String r2_TrxId = request.getParameter("r2_TrxId");
String r3_Amt = request.getParameter("r3_Amt");
String r4_Cur = request.getParameter("r4_Cur");
String r5_Pid = request.getParameter("r5_Pid");
String r6_Order = request.getParameter("r6_Order");
String r7_Uid = request.getParameter("r7_Uid");
String r8_MP = request.getParameter("r8_MP");
String r9_BType = request.getParameter("r9_BType");
String hmac = request.getParameter("hmac");
// 校验访问者是否是易宝
Properties props = new Properties();
InputStream input = this.getClass().getClassLoader().getResourceAsStream("merchantInfo.properties");
props.load(input);
String keyValue = props.getProperty("keyValue");
boolean callback = PaymentUtil.verifyCallback(hmac, p1_MerId, r0_Cmd, r1_Code, r2_TrxId, r3_Amt, r4_Cur, r5_Pid, r6_Order, r7_Uid,
r8_MP, r9_BType, keyValue);
if (!callback){
request.setAttribute("msg", "请停止您的违法行为!");
return "f:/jsps/order/msg.jsp";
}
// 获取订单状态进行对状态的修改
orderService.zhiFu(r6_Order);
request.setAttribute("msg", "订单支付成功,请等待卖家发货!");
return "f:/jsps/order/msg.jsp";
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
收起资源包目录
bookstore:图书商城及后台管理 (180个子文件)
dy.bmp 6KB
sh.bmp 6KB
hx.bmp 6KB
guangda.bmp 6KB
bj.bmp 6KB
icbc.bmp 6KB
shpd.bmp 6KB
ningbo.bmp 6KB
cmbc.bmp 6KB
abc.bmp 6KB
zx.bmp 6KB
gf.bmp 6KB
sfz.bmp 6KB
beijingnongshang.bmp 6KB
nanjing.bmp 6KB
post.bmp 6KB
bcc.bmp 6KB
ccb.bmp 6KB
cib.bmp 6KB
bc.bmp 6KB
bh.bmp 6KB
zheshang.bmp 6KB
cmb.bmp 6KB
pingan.bmp 6KB
OrderServlet.class 8KB
OrderDao.class 7KB
AdminUploadServlet.class 7KB
UserServlet.class 6KB
PaymentUtil.class 5KB
BookDao.class 4KB
UserDao.class 4KB
AdminCategoryServlet.class 3KB
AdminBookServlet.class 3KB
AdminServlet.class 3KB
CategoryDao.class 3KB
Order.class 3KB
AdminUserServlet.class 3KB
OrderService.class 3KB
UserService.class 3KB
AdminOrderServlet.class 2KB
CartServlet.class 2KB
Cart.class 2KB
AdminFilter.class 2KB
CategoryService.class 2KB
Book.class 2KB
OrderItem.class 2KB
UserFilter.class 2KB
User.class 2KB
BookServlet.class 2KB
CartItem.class 2KB
BookService.class 1KB
CategoryServlet.class 1KB
CategoryException.class 1KB
OrderException.class 1KB
Admin.class 1024B
Category.class 1002B
UserException.class 965B
.classpath 1KB
org.eclipse.wst.common.component 478B
org.eclipse.wst.jsdt.ui.superType.container 49B
mymenu.css 1KB
mysql-connector-java-5.1.13-bin.jar 1.36MB
javax.mail-1.6.2.jar 644KB
commons-collections-3.2.1.jar 562KB
mchange-commons-0.2.jar 538KB
commons-beanutils-1.8.3.jar 510KB
mail.jar 426KB
xom-1.1.jar 421KB
c3p0-0.9.2-pre1.jar 414KB
standard.jar 384KB
commons-lang-2.5.jar 273KB
commons-io-1.4.jar 260KB
json-lib-2.4-jdk15.jar 155KB
commons-fileupload-1.2.2.jar 127KB
commons-logging-1.1.1.jar 126KB
commons-dbutils-1.4.jar 96KB
ezmorph-1.0.6.jar 84KB
activation-1.1.1.jar 68KB
itcast-tools-1.4.2.jar 26KB
jstl.jar 20KB
c3p0-oracle-thin-extras-0.9.2-pre1.jar 3KB
OrderServlet.java 8KB
UserServlet.java 6KB
OrderDao.java 6KB
AdminUploadServlet.java 6KB
PaymentUtil.java 6KB
AdminCategoryServlet.java 4KB
AdminBookServlet.java 3KB
UserDao.java 3KB
BookDao.java 3KB
AdminUserServlet.java 2KB
OrderService.java 2KB
UserService.java 2KB
AdminOrderServlet.java 2KB
CartServlet.java 2KB
AdminServlet.java 2KB
CategoryDao.java 2KB
CategoryService.java 2KB
Order.java 2KB
BookServlet.java 1KB
共 180 条
- 1
- 2
jackie陈
- 粉丝: 12
- 资源: 4597
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0