📄 contentaction.java
字号:
package mrgf.action;
import java.util.*;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import mrgf.hibernate.*;
import mrgf.other.*;
import mrgf.form.ContentForm;
public class ContentAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
ContentForm contentForm = (ContentForm) form;
String p = mapping.getParameter();
String forward = "";
//添加至购物车
if (p.equals("addToCart")) {
int id = Integer.parseInt(request.getParameter("merchandiseId"));
String hql = "from MerchandiseInfo where id=" + id;
Hibernate hn = new Hibernate();
MerchandiseInfo merchandiseInfo = (MerchandiseInfo) hn.queryOne(hql); //初始化代表该商品的对象
HttpSession session = request.getSession();
List shoppingCart = (List) session.getAttribute("shoppingCart"); // 从Session中获取模拟购物车的List型属性
if (shoppingCart == null) { // 如果为空则表示用户还没购买任何商品
shoppingCart = new ArrayList(); //则新声名一个List属性
shoppingCart.add(merchandiseInfo); //并直接将代表购买商品的对象放入该新声名的属性
} else { // 否则表示用户已经购买了商品
id = merchandiseInfo.getId();
// 判断购物车中是否已经包含该商品,如果包含则在原购买数量上加1
boolean add = false;
for (int i = 0; i < shoppingCart.size(); i++) {
MerchandiseInfo info = (MerchandiseInfo) shoppingCart.get(i);
if (info.getId() == id) {
info.setAmount(info.getAmount() + 1);
shoppingCart.add(i, info);
shoppingCart.remove(i);
add = true; //如果包含,则将add该改为true
break;
}
}
// 如果add为false,则表示在购物车中不包含该商品,将该商品添加到购物车中
if (add == false) {
shoppingCart.add(merchandiseInfo);
}
}
request.setAttribute("previousPage",
request.getParameter("previousPage"));
session.setAttribute("shoppingCart", shoppingCart); //再保存在Session中
forward = "shopping_cart";
}
//清空购物车
if (p.equals("clearCart")) {
HttpSession session = request.getSession();
session.removeAttribute("shoppingCart");
forward = "shopping_cart";
}
//清空购物车中的某一商品
if (p.equals("moveFromCart")) {
int id = Integer.parseInt(request.getParameter("merchandiseId"));
// String merchandiseId = request.getParameter("merchandiseId");
// int id = Integer.parseInt(merchandiseId);
HttpSession session = request.getSession();
List shoppingCart = (List) session.getAttribute("shoppingCart");
for (int i = 0; i < shoppingCart.size(); i++) {
MerchandiseInfo info = (MerchandiseInfo) shoppingCart.get(i);
if (info.getId() == id) {
shoppingCart.remove(i);
break;
}
}
forward = "shopping_cart";
}
//修改购物数量
if (p.equals("updateNum")) {
HttpSession session = request.getSession();
if (session.getAttribute("shoppingCart") != null) {
List shoppingCart = (List) session.getAttribute("shoppingCart");
int amount = 1;
for (int i = 0; i < shoppingCart.size(); i++) {
MerchandiseInfo info = (MerchandiseInfo) shoppingCart.get(i);
String id = info.getId() + "";
// String id = "" + info.getId();
amount = Integer.parseInt(request.getParameter(id));
info.setAmount(amount);
shoppingCart.add(i, info);
shoppingCart.remove(i);
}
}
forward = "shopping_cart";
}
//结帐
if (p.equals("checkOut")) {
HttpSession session = request.getSession();
if (session.getAttribute("shoppingCart") != null) {
String username = (String) session.getAttribute("username");
String hql = "from UserInfo where username='" + username + "'";
Hibernate hn = new Hibernate();
UserInfo info = (UserInfo) hn.queryOne(hql);
request.setAttribute("info", info);
forward = "check_out";
} else {
request.setAttribute("clueOn", "您还没有购买任何商品!!!");
forward = "clue_on";
}
}
//提交结帐信息
if (p.equals("checkOutSubmit")) {
HttpSession session = request.getSession();
Hibernate hn = new Hibernate();
SpecialMethod sm = new mrgf.other.SpecialMethod();
java.sql.Date dateWithSpace=java.sql.Date.valueOf(sm.getDateWithYMD());
String dateWithNum = sm.getDateWithNum();
String username = (String) session.getAttribute("username");
// 填写收货人信息
OrderInfo orderInfo = new OrderInfo();
orderInfo.setUsername(username);
orderInfo.setAddress(sm.toChinese(contentForm.getAddress()));
orderInfo.setCheckOutType(contentForm.getCheckOutType());
orderInfo.setPostCard(contentForm.getPostCard());
orderInfo.setPerson(sm.toChinese(contentForm.getPerson()));
orderInfo.setSex(contentForm.getSex());
orderInfo.setIdCard(contentForm.getIdCard());
orderInfo.setPhone(contentForm.getPhone());
orderInfo.setTel(contentForm.getTel());
orderInfo.setQq(contentForm.getQq());
orderInfo.setEmail(contentForm.getEmail());
// 计算该笔订单购物数量和消费金额
int amount = 0;
int money = 0;
List shoppingCart = (List) session.getAttribute("shoppingCart");
session.removeAttribute("shoppingCart");
for (int i = 0; i < shoppingCart.size(); i++) {
MerchandiseInfo info = (MerchandiseInfo) shoppingCart.get(i);
amount = amount + info.getAmount();
money = money + info.getPrice() * info.getAmount();
}
// 填写订单信息
orderInfo.setConsignment("new");
orderInfo.setDates(dateWithSpace);
orderInfo.setTotal(amount);
orderInfo.setMoney(money);
// 获取当前最大的订单编号,订单编号由订单生成日期和订单生成总笔数组合而成
String sql = "select max(id) from tb_order_info";
String maxOrderId = hn.getMax(sql);
// 判断新生成的订单和上一笔订单是否生成在同一年,如果是则标准订单编号由当前日期和上一笔订单的生成笔数组成,否则重新开始
String lastYear = maxOrderId.substring(0, 4);
String thisYear = dateWithNum.substring(0, 4);
if (thisYear.equals(lastYear)) { // 是
maxOrderId = dateWithNum + maxOrderId.substring(8);
} else { // 否
maxOrderId = dateWithNum + "000000";
}
// 填写定单商品信息
for (int i = 0; i < shoppingCart.size(); i++) {
MerchandiseInfo info = (MerchandiseInfo) shoppingCart.get(i);
SellInfo sellInfo = new SellInfo();
sellInfo.setMerchandiseId(info.getId());
sellInfo.setPrice(info.getPrice());
sellInfo.setAmount(info.getAmount());
sellInfo.setRemark(info.getRemark());
orderInfo.getSellInfos().add(sellInfo);
sellInfo.setOrderInfo(orderInfo);
}
//模拟其他客户在获取定单最大编号后保存定单前提交了定单
// OrderInfo simulateOrder = new OrderInfo();
// long tid = Long.parseLong(maxOrderId);
// tid = tid + 1;
// String t = "" + tid;
// simulateOrder.setOrderId(t);
// hn.save(simulateOrder);
// 保存定单信息,此处采用了一个循环,以保证在此刻有其他订单在我们获得的最大订单编号加一存储的情况下,不影响该笔订单的生成
boolean notSave = true;
while (notSave) {
long id = Long.parseLong(maxOrderId);
id = id + 1;
maxOrderId = id + "";
// 填写订单编号
orderInfo.setId(maxOrderId);
try {
notSave = !(hn.save(orderInfo)); // 如果保存订单成功则将notSave改为false
} catch (Exception e) {
System.out.println("在保存订单信息时抛出异常,内容如下:");
e.printStackTrace();
}
}
//加载定单信息
String hql = "from OrderInfo where username='" + username + "' order by id desc";
List orders = (List) hn.query(hql);
request.setAttribute("orders", orders);
forward = "see_order_for_goods";
}
//查看商品详细信息
if (p.equals("merchandise_info")) {
String merchandiseId = request.getParameter("merchandiseId");
String requestPage = request.getParameter("requestPage");
int id = Integer.parseInt(merchandiseId);
List merchandises = new Hibernate().query(
"from MerchandiseInfo where id=" + id);
MerchandiseInfo merchandise = (MerchandiseInfo) merchandises.get(0);
request.setAttribute("merchandise", merchandise);
request.setAttribute("requestPage", requestPage);
forward = "merchandise_info";
}
//返回查看商品的前一页
if (p.equals("merchandise_info_back")) {
String previousPage = request.getParameter("previousPage");
if (previousPage.equals("/special_offer.jsp")) {
forward = "special_offer";
} else if (previousPage.equals("/taxis.jsp")) {
forward = "taxis";
} else if (previousPage.equals("/merchandise_search.jsp")) {
forward = "merchandise_search";
} else {
forward = "new_merchandise";
}
String requestPage = "currentPage";
request.setAttribute("requestPage", requestPage);
}
return mapping.findForward(forward);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -