package com.yc.sdk.shopping.action;
|
|
import com.google.gson.Gson;
|
import com.google.gson.JsonArray;
|
import com.google.gson.JsonObject;
|
import com.google.gson.reflect.TypeToken;
|
import com.yc.action.BaseAction;
|
import com.yc.entity.DataSourceEntity;
|
import com.yc.multiData.MultiDataSource;
|
import com.yc.multiData.SpObserver;
|
import com.yc.sdk.shopping.action.api.ShopCcCode;
|
import com.yc.sdk.shopping.entity.*;
|
import com.yc.sdk.shopping.service.*;
|
import com.yc.sdk.shopping.service.imagedata.ShoppingImageDataIfc;
|
import com.yc.sdk.shopping.service.order.OrderIfc;
|
import com.yc.sdk.shopping.util.SettingKey;
|
import com.yc.utils.SessionKey;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.context.annotation.Scope;
|
import org.springframework.dao.DataAccessException;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpSession;
|
import java.text.DecimalFormat;
|
import java.text.NumberFormat;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Map.Entry;
|
import java.util.stream.Collectors;
|
|
@Controller
|
@Scope("prototype")
|
@RequestMapping("/shopping/cart.do")
|
public class Cart extends BaseAction {
|
static Gson gson = new Gson();
|
@Autowired
|
CartIfc cartIfc;
|
@Autowired
|
MatCodeIfc matCodeIfc;
|
@Autowired
|
CurrencyIfc currencyIfc;
|
@Autowired
|
MatOptionIfc matOptionIfc;
|
@Autowired
|
OrderIfc orderIfc;
|
@Autowired
|
SettingIfc settingIfc;
|
static double maxQuantity = 9999999;
|
@Autowired
|
ShoppingImageDataIfc imgData;
|
|
/**
|
* 选中购物车中的某个商品准备提交订单
|
*
|
* @param request
|
* @param response
|
*/
|
@RequestMapping(params = "m=checkbox")
|
public void checkbox(HttpServletRequest request, HttpServletResponse response) {
|
HttpSession session = request.getSession();
|
//String dbId = (String) session.getAttribute(SessionKey.SHOPPING_DBID);
|
String hostUrl = SettingKey.getHostUrl(request);
|
//String dbId = (String) session.getAttribute(SessionKey.SHOPPING_DBID);
|
// 将微信corpid组装成url
|
String wxQueryString = SettingKey.getQueryStringByWx(request);
|
boolean isMoblieBrowser = SettingKey.isMoblieBrowser(request);
|
String selectedCartIds = request.getParameter(SettingKey.CHECKBOX);
|
if (selectedCartIds != null && !"".equals(selectedCartIds)) {
|
selectedCartIds = selectedCartIds.replace(SettingKey.CHECKBOX + "_", "");
|
session.setAttribute(SettingKey.CHECKBOX, selectedCartIds);
|
} else {
|
session.removeAttribute(SettingKey.CHECKBOX);
|
}
|
|
String userCode = (session.getAttribute(SessionKey.USERCODE) == null ? ""
|
: (String) session.getAttribute(SessionKey.USERCODE));
|
String openId = (session.getAttribute(SessionKey.WEIXIN_OPENID) == null ? ""
|
: (String) session.getAttribute(SessionKey.WEIXIN_OPENID));
|
String sessionId = session.getId();
|
String cltCode = (session.getAttribute(SettingKey.CLTCODE) == null ? "" : (String) session.getAttribute(SettingKey.CLTCODE));
|
|
|
DecimalFormat df = (DecimalFormat) NumberFormat.getInstance();
|
df.setMaximumFractionDigits(2);
|
JsonObject json = new JsonObject();
|
JsonObject errJson = new JsonObject();
|
SettingEntity settingEntity = null;
|
try {
|
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());// 切换数据源
|
settingEntity = settingIfc.getSettingEntity();
|
//取网店 shopcccode
|
ShopCcCodeEntity shopCcCodeEntity = ShopCcCode.getShopCcCode(settingEntity, request);
|
|
//选择购物车中商品
|
cartIfc.saveSelectedCartIds(userCode, sessionId, openId, cltCode, shopCcCodeEntity.getShopCcCode(), selectedCartIds);
|
|
//List<CartEntity> cartList = cartIfc.getCarts(selectedCartIds);
|
List<CartEntity> cartList = cartIfc.getCartList(userCode, sessionId, openId, cltCode, shopCcCodeEntity.getShopCcCode()); // 重新取一次数,确保购物车显示正确
|
CurrencyEntity currencyEntity = currencyIfc.getUserCurrency(userCode);
|
/******** 购物车 开始清单输出 *************/
|
//DecimalFormat df = new DecimalFormat("0.00");
|
double selectTotalAmount = 0; //给 footer.jsp 页面使用,用于赋初值
|
int selectItems = 0; //给 footer.jsp 页面使用,用于赋初值
|
int cartItems = 0; //给 footer.jsp 页面使用,用于赋初值
|
if (cartList != null) {
|
cartItems = cartList.size();
|
}
|
|
//取已经选择的金额数
|
List<CartEntity> selectedCartList = cartList.stream().filter((CartEntity c) -> c.isSelected()).collect(Collectors.toList());
|
for (int i = 0; selectedCartList != null && i < selectedCartList.size(); i++) {
|
selectTotalAmount += selectedCartList.get(i).getAmount();
|
selectItems++;
|
}
|
|
//组装 json array 输出
|
JsonArray cartListJsonArray = this.getCartJsonArray(request, settingEntity, cartList, currencyEntity, dataSourceEntity);
|
json.add("list", cartListJsonArray);
|
|
json.addProperty("SelectTotalAmount", df.format(selectTotalAmount));
|
json.addProperty("SelectItems", selectItems);
|
json.addProperty("CartItems", cartItems);
|
/******** 购物车 结束清单输出 *************/
|
|
|
//预估配送费用
|
double freeCost = SettingKey.getFreeCost(request);
|
//优惠券
|
double couponCost = SettingKey.getCouponCost(request);
|
//礼品劵
|
double voucherCost = SettingKey.getVoucherCost(request);
|
|
//余额
|
double balance = SettingKey.getBalance(request);
|
|
//double totalQuantity = (list!=null&&list.size()>0?list.get(0).getTotalQuantity():0);
|
double selectcdTotalWeight = (cartList != null && cartList.size() > 0 ? cartList.get(0).getSelectedTotalWeight() : 0);
|
|
double paymentAmount = selectTotalAmount + freeCost - couponCost - voucherCost - balance;
|
String mytitle = "购物车内的商品";
|
if (settingEntity.getCartWeight()) {
|
mytitle += " (" + selectcdTotalWeight + settingEntity.getWeightClassId() + ")";
|
}
|
//json.addProperty("selecttotalamount",(totalAmount <= 0?"0.0 (无需支付)":df.format(totalAmount)+""));
|
//json.addProperty("selectitems",(cartList!=null?cartList.size():0)+"");
|
|
json.addProperty("PaymentAmount", (paymentAmount <= 0 ? "0.0 (无需支付)" : df.format(paymentAmount) + ""));
|
json.addProperty("mytitle", mytitle);
|
json.addProperty("cart-num", (cartList != null ? cartList.size() : 0));
|
|
json.addProperty("redirect", hostUrl + "/shopping/" + (isMoblieBrowser ? "mobile/" : "") + "checkoutnew/index.jsp"
|
+ (wxQueryString == null || "".equals(wxQueryString) ? "" : "?" + wxQueryString));
|
this.printJson(response, json.toString());
|
} catch (Exception e) {
|
e.printStackTrace();
|
errJson.addProperty("warning", (e.getCause() != null ? e.getCause().getMessage() : e.getMessage()));
|
json.add("error", errJson);
|
this.printJson(response, json.toString());
|
return;
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
}
|
|
@RequestMapping(params = "m=checkboxByPicture")
|
public void checkboxByPicture(HttpServletRequest request, HttpServletResponse response) {
|
HttpSession session = request.getSession();
|
//String dbId = (String) session.getAttribute(SessionKey.SHOPPING_DBID);
|
String hostUrl = SettingKey.getHostUrl(request);
|
//String dbId = (String) session.getAttribute(SessionKey.SHOPPING_DBID);
|
// 将微信corpid组装成url
|
String wxQueryString = SettingKey.getQueryStringByWx(request);
|
boolean isMoblieBrowser = SettingKey.isMoblieBrowser(request);
|
String cltCode = (session.getAttribute(SettingKey.CLTCODE) == null ? ""
|
: (String) session.getAttribute(SettingKey.CLTCODE));
|
String checkbox = request.getParameter(SettingKey.CHECKBOX);
|
if (checkbox != null && !"".equals(checkbox)) {
|
checkbox = checkbox.replace(SettingKey.CHECKBOX + "_", "");
|
session.setAttribute(SettingKey.CHECKBOXBYPICTURE, checkbox);
|
} else {
|
session.removeAttribute(SettingKey.CHECKBOXBYPICTURE);
|
}
|
|
DecimalFormat df = (DecimalFormat) NumberFormat.getInstance();
|
df.setMaximumFractionDigits(2);
|
JsonObject json = new JsonObject();
|
JsonObject errJson = new JsonObject();
|
SettingEntity settingEntity = null;
|
try {
|
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());// 切换数据源
|
settingEntity = settingIfc.getSettingEntity();
|
List<CartEntity> list = cartIfc.getCartsByPicture(checkbox, cltCode);
|
|
|
//余额
|
double balance = SettingKey.getBalance(request);
|
|
//double totalQuantity = (list!=null&&list.size()>0?list.get(0).getTotalQuantity():0);
|
double totalWeight = (list != null && list.size() > 0 ? list.get(0).getTotalWeight() : 0);
|
|
double totalAmount = (list != null && list.size() > 0 ? list.get(0).getTotalAmount() : 0) - balance;
|
String mytitle = "购物车内的商品";
|
if (settingEntity.getCartWeight()) {
|
mytitle += " (" + totalWeight + settingEntity.getWeightClassId() + ")";
|
}
|
json.addProperty("selecttotalamount", (totalAmount <= 0 ? "0.0 (无需支付)" : df.format(totalAmount) + ""));
|
json.addProperty("selectitems", (list != null ? list.size() : 0) + "");
|
json.addProperty("mytitle", mytitle);
|
json.addProperty("cart-num", (list != null ? list.size() : 0));
|
|
json.addProperty("redirect", hostUrl + "/shopping/" + (isMoblieBrowser ? "mobile/" : "") + "purchase/checkout.jsp"
|
+ (wxQueryString == null || "".equals(wxQueryString) ? "" : "?" + wxQueryString));
|
this.printJson(response, json.toString());
|
} catch (Exception e) {
|
e.printStackTrace();
|
errJson.addProperty("warning", e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
json.add("error", errJson);
|
this.printJson(response, json.toString());
|
return;
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
}
|
|
/**
|
* 删除购物车中的商品
|
*
|
* @param request
|
* @param response
|
*/
|
@RequestMapping(params = "m=del")
|
public void del(HttpServletRequest request, HttpServletResponse response) {
|
HttpSession session = request.getSession();
|
//String dbId = (String) session.getAttribute(SessionKey.SHOPPING_DBID);
|
|
String sessionId = session.getId();
|
String userCode = (session.getAttribute(SessionKey.USERCODE) == null ? ""
|
: (String) session.getAttribute(SessionKey.USERCODE));
|
String openId = (session.getAttribute(SessionKey.WEIXIN_OPENID) == null ? ""
|
: (String) session.getAttribute(SessionKey.WEIXIN_OPENID));
|
String cltCode = (session.getAttribute(SettingKey.CLTCODE) == null ? ""
|
: (String) session.getAttribute(SettingKey.CLTCODE));
|
// String cltName = (session.getAttribute(SettingKey.CLTNAME) ==
|
// null?"": (String)session.getAttribute(SettingKey.CLTNAME)) ;
|
SettingEntity settingEntity = null;
|
CurrencyEntity currencyEntity = null;
|
JsonObject json = new JsonObject();
|
JsonObject errJson = new JsonObject();
|
try {
|
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());// 切换数据源
|
currencyEntity = currencyIfc.getUserCurrency(userCode);
|
settingEntity = settingIfc.getSettingEntity();
|
|
//取网店 shopcccode
|
ShopCcCodeEntity shopCcCodeEntity = ShopCcCode.getShopCcCode(settingEntity, request);
|
|
|
String cartIds = request.getParameter("key");
|
|
//Integer cartId = (request.getParameter("key") == null ? 0 : Integer.parseInt(request.getParameter("key")));
|
cartIfc.delCart(cartIds);
|
List<CartEntity> cartList = cartIfc.getCartList(userCode, sessionId, openId, cltCode, shopCcCodeEntity.getShopCcCode()); // 重新取一次数,确保购物车显示正确
|
/******** 购物车 开始清单输出 *************/
|
DecimalFormat df = new DecimalFormat("0.00");
|
double selectTotalAmount = 0; //给 footer.jsp 页面使用,用于赋初值
|
int selectItems = 0; //给 footer.jsp 页面使用,用于赋初值
|
int cartItems = 0; //给 footer.jsp 页面使用,用于赋初值
|
if (cartList != null) {
|
cartItems = cartList.size();
|
}
|
|
//取已经选择的金额数
|
List<CartEntity> selectedCartList = cartList.stream().filter((CartEntity c) -> c.isSelected()).collect(Collectors.toList());
|
for (int i = 0; selectedCartList != null && i < selectedCartList.size(); i++) {
|
selectTotalAmount += selectedCartList.get(i).getAmount();
|
selectItems++;
|
}
|
|
//组装 json array 输出
|
JsonArray cartListJsonArray = this.getCartJsonArray(request, settingEntity, cartList, currencyEntity, dataSourceEntity);
|
json.add("list", cartListJsonArray);
|
|
json.addProperty("SelectTotalAmount", df.format(selectTotalAmount));
|
json.addProperty("SelectItems", selectItems);
|
json.addProperty("CartItems", cartItems);
|
/******** 购物车 结束清单输出 *************/
|
|
//double totalQuantity = (list!=null&&list.size()>0?list.get(0).getTotalQuantity():0);
|
//double totalWeight = (list!=null&&list.size()>0?list.get(0).getTotalWeight():0);
|
|
double totalAmount = (cartList != null && cartList.size() > 0 ? cartList.get(0).getTotalAmount() : 0);
|
|
|
json.addProperty("total", cartList.size() + "个商品"
|
+ (settingEntity.isShowPrice() ? " - " + currencyEntity.getCurrencySign() + totalAmount : ""));
|
SettingKey.setCartHintMsg(session, "您已成功更新了购物车!");
|
|
//预估配送费用
|
double freeCost = SettingKey.getFreeCost(request);
|
//优惠券
|
double couponCost = SettingKey.getCouponCost(request);
|
//礼品劵
|
double voucherCost = SettingKey.getVoucherCost(request);
|
|
double sumTotalAmount = totalAmount + freeCost - couponCost - voucherCost;
|
json.addProperty("matcodetotal", totalAmount + ""); //购物车页面使用 /shopping/mobile/cart/index.jsp
|
json.addProperty("totalamount", sumTotalAmount + ""); //购物车页面使用 /shopping/mobile/cart/index.jsp
|
json.addProperty("cart-num", (cartList != null ? cartList.size() : 0));
|
|
this.printJson(response, json.toString());
|
} catch (Exception e) {
|
e.printStackTrace();
|
errJson.addProperty("warning", e.getMessage());
|
json.add("error", errJson);
|
this.printJson(response, json.toString());
|
return;
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
}
|
|
@RequestMapping(params = "m=delByPicture")
|
public void delByPicture(HttpServletRequest request, HttpServletResponse response) {
|
HttpSession session = request.getSession();
|
//String dbId = (String) session.getAttribute(SessionKey.SHOPPING_DBID);
|
|
// String sessionId = session.getId();
|
String userCode = (session.getAttribute(SessionKey.USERCODE) == null ? ""
|
: (String) session.getAttribute(SessionKey.USERCODE));
|
// String openId = (session.getAttribute(SessionKey.WEIXIN_OPENID) == null ? ""
|
// : (String) session.getAttribute(SessionKey.WEIXIN_OPENID));
|
String cltCode = (session.getAttribute(SettingKey.CLTCODE) == null ? ""
|
: (String) session.getAttribute(SettingKey.CLTCODE));
|
// String cltName = (session.getAttribute(SettingKey.CLTNAME) ==
|
// null?"": (String)session.getAttribute(SettingKey.CLTNAME)) ;
|
SettingEntity settingEntity = null;
|
CurrencyEntity currencyEntity = null;
|
|
JsonObject json = new JsonObject();
|
JsonObject errJson = new JsonObject();
|
try {
|
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());// 切换数据源
|
currencyEntity = currencyIfc.getUserCurrency(userCode);
|
settingEntity = settingIfc.getSettingEntity();
|
|
Integer cartId = (request.getParameter("key") == null ? 0 : Integer.parseInt(request.getParameter("key")));
|
cartIfc.delCartByPicture(cartId);
|
List<CartEntity> list = cartIfc.getCartsByPicture(cltCode); // 重新取一次数,确保购物车显示正确
|
|
//double totalQuantity = (list!=null&&list.size()>0?list.get(0).getTotalQuantity():0);
|
//double totalWeight = (list!=null&&list.size()>0?list.get(0).getTotalWeight():0);
|
|
double totalAmount = (list != null && list.size() > 0 ? list.get(0).getTotalAmount() : 0);
|
|
|
json.addProperty("total", list.size() + "个商品"
|
+ (settingEntity.isShowPrice() ? " - " + currencyEntity.getCurrencySign() + totalAmount : ""));
|
SettingKey.setCartHintMsg(session, "您已成功更新了购物车!");
|
|
|
double sumTotalAmount = totalAmount;
|
json.addProperty("matcodetotal", totalAmount + ""); //购物车页面使用 /shopping/mobile/cart/index.jsp
|
json.addProperty("totalamount", sumTotalAmount + ""); //购物车页面使用 /shopping/mobile/cart/index.jsp
|
json.addProperty("cart-num", (list != null ? list.size() : 0));
|
|
this.printJson(response, json.toString());
|
} catch (Exception e) {
|
e.printStackTrace();
|
errJson.addProperty("warning", e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
json.add("error", errJson);
|
this.printJson(response, json.toString());
|
return;
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
}
|
|
/**
|
* 编辑购物车中的数量
|
*
|
* @param request
|
* @param response
|
*/
|
@RequestMapping(params = "m=edit")
|
public void edit(HttpServletRequest request, HttpServletResponse response) {
|
HttpSession session = request.getSession();
|
String dbId = (String) session.getAttribute(SessionKey.SHOPPING_DBID);
|
String jsonFormat = request.getParameter("json");
|
|
String sessionId = session.getId();
|
String userCode = (session.getAttribute(SessionKey.USERCODE) == null ? ""
|
: (String) session.getAttribute(SessionKey.USERCODE));
|
String openId = (session.getAttribute(SessionKey.WEIXIN_OPENID) == null ? ""
|
: (String) session.getAttribute(SessionKey.WEIXIN_OPENID));
|
String cltCode = (session.getAttribute(SettingKey.CLTCODE) == null ? ""
|
: (String) session.getAttribute(SettingKey.CLTCODE));
|
|
|
String hostUrl = SettingKey.getHostUrl(request);
|
// 将微信corpid组装成url
|
String wxQueryString = SettingKey.getQueryStringByWx(request);
|
boolean isMoblieBrowser = SettingKey.isMoblieBrowser(request);
|
try {
|
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());// 切换数据源
|
SettingEntity settingEntity = settingIfc.getSettingEntity();
|
//取网店 shopcccode
|
ShopCcCodeEntity shopCcCodeEntity = ShopCcCode.getShopCcCode(settingEntity, request);
|
|
Map<String, String[]> params = request.getParameterMap();
|
for (String key : params.keySet()) {
|
if (!key.startsWith("quantity")) {
|
continue;
|
}
|
int pos = key.indexOf("_");
|
Integer cartId = Integer.valueOf(key.substring(pos + 1, key.length()));
|
String[] values = params.get(key);
|
double quantity = 0;
|
for (int i = 0; i < values.length; i++) {
|
if (values[i] == null || "".equals(values[i])) {
|
|
if (jsonFormat != null && !"".equals(jsonFormat)) {
|
JsonObject success = new JsonObject();
|
success.addProperty("error", "必须录入数量!"); //购物车页面使用 /shopping/mobile/cart/index.jsp
|
this.printJson(response, success.toString());
|
return;
|
} else {
|
SettingKey.setCartHintMsg(session, "必须录入数量!");
|
String url = "<script language=\"javascript\" type=\"text/javascript\">window.location.href=\"" + hostUrl
|
+ "/shopping/" + (isMoblieBrowser ? "mobile/" : "") + "cart/" + (wxQueryString == null || "".equals(wxQueryString) ? "" : "?" + wxQueryString)
|
+ "\"</script>";
|
this.print(response, url);
|
return;
|
}
|
}
|
|
quantity = Double.parseDouble(values[i].toString());
|
if (quantity > maxQuantity) {
|
JsonObject success = new JsonObject();
|
success.addProperty("error", "数量不能大于 " + maxQuantity + " !");
|
this.printJson(response, success.toString());
|
return;
|
}
|
|
}
|
|
cartIfc.updateCartQuantity(cartId, quantity, cltCode);
|
}
|
|
if (jsonFormat != null && !"".equals(jsonFormat)) {
|
//预估配送费用
|
double freeCost = SettingKey.getFreeCost(request);
|
//优惠券
|
double couponCost = SettingKey.getCouponCost(request);
|
//礼品劵
|
double voucherCost = SettingKey.getVoucherCost(request);
|
List<CartEntity> cartList = cartIfc.getCartList(userCode, sessionId, openId, cltCode, shopCcCodeEntity.getShopCcCode()); // 重新取一次数,确保购物车显示正确
|
CurrencyEntity currencyEntity = currencyIfc.getUserCurrency(userCode);
|
JsonObject json = new JsonObject();
|
|
/******** 购物车 开始清单输出 *************/
|
DecimalFormat df = new DecimalFormat("0.00");
|
double selectTotalAmount = 0; //给 footer.jsp 页面使用,用于赋初值
|
int selectItems = 0; //给 footer.jsp 页面使用,用于赋初值
|
int cartItems = 0; //给 footer.jsp 页面使用,用于赋初值
|
if (cartList != null) {
|
cartItems = cartList.size();
|
}
|
|
//取已经选择的金额数
|
List<CartEntity> selectedCartList = cartList.stream().filter((CartEntity c) -> c.isSelected()).collect(Collectors.toList());
|
for (int i = 0; selectedCartList != null && i < selectedCartList.size(); i++) {
|
selectTotalAmount += selectedCartList.get(i).getAmount();
|
selectItems++;
|
}
|
|
//组装 json array 输出
|
JsonArray cartListJsonArray = this.getCartJsonArray(request, settingEntity, cartList, currencyEntity, dataSourceEntity);
|
json.add("list", cartListJsonArray);
|
|
json.addProperty("SelectTotalAmount", df.format(selectTotalAmount));
|
json.addProperty("SelectItems", selectItems);
|
json.addProperty("CartItems", cartItems);
|
/******** 购物车 结束清单输出 *************/
|
|
|
//double totalQuantity = (list!=null&&list.size()>0?list.get(0).getTotalQuantity():0);
|
//double totalWeight = (list!=null&&list.size()>0?list.get(0).getTotalWeight():0);
|
|
double totalAmount = (cartList != null && cartList.size() > 0 ? cartList.get(0).getTotalAmount() : 0);
|
|
double sumTotalAmount = (cartList != null && cartList.size() > 0 ? cartList.get(0).getTotalAmount() : 0) + freeCost - couponCost - voucherCost;
|
|
json.addProperty("matcodetotal", totalAmount + ""); //购物车页面使用 /shopping/mobile/cart/index.jsp
|
json.addProperty("totalamount", sumTotalAmount + ""); //购物车页面使用 /shopping/mobile/cart/index.jsp
|
json.addProperty("cart-num", (cartList != null ? cartList.size() : 0));
|
this.printJson(response, json.toString());
|
} else {
|
SettingKey.setCartHintMsg(session, "您已成功更新了购物车!");
|
String url = "<script language=\"javascript\" type=\"text/javascript\">window.location.href=\"" + hostUrl
|
+ "/shopping/" + (isMoblieBrowser ? "mobile/" : "") + "cart/" + (wxQueryString == null || "".equals(wxQueryString) ? "" : "?" + wxQueryString)
|
+ "\"</script>";
|
this.print(response, url);
|
}
|
return;
|
} catch (Exception e) {
|
e.printStackTrace();
|
JsonObject success = new JsonObject();
|
success.addProperty("error", "SpObserver.getCurrentInstance():" + SpObserver.getCurrentInstance()
|
+ " SessionKey.SHOPPING_DBID:" + dbId + " error:" + e.getMessage());
|
this.printJson(response, success.toString());
|
return;
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
}
|
|
|
@RequestMapping(params = "m=editByPicture")
|
public void editByPicture(HttpServletRequest request, HttpServletResponse response) {
|
HttpSession session = request.getSession();
|
String dbId = (String) session.getAttribute(SessionKey.SHOPPING_DBID);
|
String jsonFormat = request.getParameter("json");
|
|
// String sessionId = session.getId();
|
// String userCode = (session.getAttribute(SessionKey.USERCODE) == null ? ""
|
// : (String) session.getAttribute(SessionKey.USERCODE));
|
// String openId = (session.getAttribute(SessionKey.WEIXIN_OPENID) == null ? ""
|
// : (String) session.getAttribute(SessionKey.WEIXIN_OPENID));
|
String cltCode = (session.getAttribute(SettingKey.CLTCODE) == null ? ""
|
: (String) session.getAttribute(SettingKey.CLTCODE));
|
|
|
String hostUrl = SettingKey.getHostUrl(request);
|
// 将微信corpid组装成url
|
String wxQueryString = SettingKey.getQueryStringByWx(request);
|
boolean isMoblieBrowser = SettingKey.isMoblieBrowser(request);
|
try {
|
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());// 切换数据源
|
Map<String, String[]> params = request.getParameterMap();
|
for (String key : params.keySet()) {
|
if (!key.startsWith("quantity")) {
|
continue;
|
}
|
int pos = key.indexOf("_");
|
Integer cartId = Integer.valueOf(key.substring(pos + 1, key.length()));
|
String[] values = params.get(key);
|
double quantity = 0;
|
for (int i = 0; i < values.length; i++) {
|
if (values[i] == null || "".equals(values[i])) {
|
|
if (jsonFormat != null && !"".equals(jsonFormat)) {
|
JsonObject success = new JsonObject();
|
success.addProperty("error", "必须录入数量!"); //购物车页面使用 /shopping/mobile/cart/index.jsp
|
this.printJson(response, success.toString());
|
return;
|
} else {
|
SettingKey.setCartHintMsg(session, "必须录入数量!");
|
String url = "<script language=\"javascript\" type=\"text/javascript\">window.location.href=\"" + hostUrl
|
+ "/shopping/" + (isMoblieBrowser ? "mobile/" : "") + "purchase/cart.jsp" + (wxQueryString == null || "".equals(wxQueryString) ? "" : "?" + wxQueryString)
|
+ "\"</script>";
|
this.print(response, url);
|
return;
|
}
|
}
|
|
quantity = Double.parseDouble(values[i].toString());
|
if (quantity > maxQuantity) {
|
JsonObject success = new JsonObject();
|
success.addProperty("error", "数量不能大于 " + maxQuantity + " !");
|
this.printJson(response, success.toString());
|
return;
|
}
|
|
}
|
|
cartIfc.updateCartQuantityByPicture(cartId, quantity);
|
}
|
|
if (jsonFormat != null && !"".equals(jsonFormat)) {
|
|
List<CartEntity> list = cartIfc.getCartsByPicture(cltCode); // 重新取一次数,确保购物车显示正确
|
|
double totalAmount = (list != null && list.size() > 0 ? list.get(0).getTotalAmount() : 0);
|
|
double sumTotalAmount = (list != null && list.size() > 0 ? list.get(0).getTotalAmount() : 0);
|
JsonObject success = new JsonObject();
|
success.addProperty("matcodetotal", totalAmount + ""); //购物车页面使用 /shopping/mobile/cart/index.jsp
|
success.addProperty("totalamount", sumTotalAmount + ""); //购物车页面使用 /shopping/mobile/cart/index.jsp
|
success.addProperty("cart-num", (list != null ? list.size() : 0));
|
this.printJson(response, success.toString());
|
} else {
|
SettingKey.setCartHintMsg(session, "您已成功更新了购物车!");
|
String url = "<script language=\"javascript\" type=\"text/javascript\">window.location.href=\"" + hostUrl
|
+ "/shopping/" + (isMoblieBrowser ? "mobile/" : "") + "purchase/cart.jsp" + (wxQueryString == null || "".equals(wxQueryString) ? "" : "?" + wxQueryString)
|
+ "\"</script>";
|
this.print(response, url);
|
}
|
return;
|
} catch (Exception e) {
|
e.printStackTrace();
|
JsonObject success = new JsonObject();
|
success.addProperty("error", "SpObserver.getCurrentInstance():" + SpObserver.getCurrentInstance()
|
+ " SessionKey.SHOPPING_DBID:" + dbId + " error:" + e.getMessage());
|
this.printJson(response, success.toString());
|
return;
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
}
|
|
/**
|
* 清空购物车
|
*
|
* @param request
|
* @param response
|
*/
|
@RequestMapping(params = "m=delall")
|
public void delAll(HttpServletRequest request, HttpServletResponse response) {
|
HttpSession session = request.getSession();
|
String dbId = (String) session.getAttribute(SessionKey.SHOPPING_DBID);
|
|
String sessionId = session.getId();
|
String userCode = (session.getAttribute(SessionKey.USERCODE) == null ? ""
|
: (String) session.getAttribute(SessionKey.USERCODE));
|
String openId = (session.getAttribute(SessionKey.WEIXIN_OPENID) == null ? ""
|
: (String) session.getAttribute(SessionKey.WEIXIN_OPENID));
|
String cltCode = (session.getAttribute(SettingKey.CLTCODE) == null ? ""
|
: (String) session.getAttribute(SettingKey.CLTCODE));
|
// String cltName = (session.getAttribute(SettingKey.CLTNAME) ==
|
// null?"": (String)session.getAttribute(SettingKey.CLTNAME)) ;
|
try {
|
SpObserver.setDBtoInstance("_" + dbId);// 切换数据源
|
SettingEntity settingEntity = settingIfc.getSettingEntity();
|
//取网店 shopcccode
|
ShopCcCodeEntity shopCcCodeEntity = ShopCcCode.getShopCcCode(settingEntity, request);
|
|
CurrencyEntity currencyEntity = currencyIfc.getUserCurrency(userCode);
|
//userCode, sessionId, openId, cltCode,shopCcCodeEntity.getShopCcCode()
|
cartIfc.delAllCart(userCode, sessionId, openId);
|
List<CartEntity> list = cartIfc.getCartList(userCode, sessionId, openId, cltCode, shopCcCodeEntity.getShopCcCode()); // 重新取一次数,确保购物车显示正确
|
|
//double totalQuantity = (list!=null&&list.size()>0?list.get(0).getTotalQuantity():0);
|
//double totalWeight = (list!=null&&list.size()>0?list.get(0).getTotalWeight():0);
|
|
double totalAmount = (list != null && list.size() > 0 ? list.get(0).getTotalAmount() : 0);
|
JsonObject success = new JsonObject();
|
success.addProperty("total", list.size() + "个商品"
|
+ (settingEntity.isShowPrice() ? " - " + currencyEntity.getCurrencySign() + totalAmount : ""));
|
SettingKey.setCartHintMsg(session, "您已成功更新了购物车!");
|
success.addProperty("cart-num", (list != null ? list.size() : 0));
|
this.printJson(response, success.toString());
|
} catch (Exception e) {
|
e.printStackTrace();
|
JsonObject success = new JsonObject();
|
success.addProperty("error", "SpObserver.getCurrentInstance():" + SpObserver.getCurrentInstance()
|
+ " SessionKey.SHOPPING_DBID:" + dbId + " error:" + e.getMessage());
|
this.printJson(response, success.toString());
|
return;
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
}
|
|
/**
|
* 快速加入购物车(用于小程序商品列表时快速加入购物车)
|
*
|
* @param request
|
* @param response
|
*/
|
@RequestMapping(params = "m=fastAdd")
|
public void fastAdd(HttpServletRequest request, HttpServletResponse response) {
|
//String hostUrl = SettingKey.getHostUrl(request);
|
// 将微信corpid组装成url
|
//String wxQueryString = SettingKey.getQueryStringByWx(request);
|
//String action = request.getParameter("action");
|
|
HttpSession session = request.getSession();
|
//String dbId = (String) session.getAttribute(SessionKey.SHOPPING_DBID);
|
|
String sessionId = session.getId();
|
String userCode = (session.getAttribute(SessionKey.HRCODE) == null ? ""
|
: (String) session.getAttribute(SessionKey.HRCODE));
|
String userName = (session.getAttribute(SessionKey.HRNAME) == null ? ""
|
: (String) session.getAttribute(SessionKey.HRNAME));
|
String openId = (session.getAttribute(SessionKey.WEIXIN_OPENID) == null ? ""
|
: (String) session.getAttribute(SessionKey.WEIXIN_OPENID));
|
|
String cltCode = (session.getAttribute(SettingKey.CLTCODE) == null ? ""
|
: (String) session.getAttribute(SettingKey.CLTCODE));
|
String cltName = (session.getAttribute(SettingKey.CLTNAME) == null ? ""
|
: (String) session.getAttribute(SettingKey.CLTNAME));
|
|
String matCode = (request.getParameter(SettingKey.MATCODE) == null ? ""
|
: request.getParameter(SettingKey.MATCODE));
|
double quantity = (request.getParameter("quantity") == null ? 0
|
: Double.parseDouble(request.getParameter("quantity")));
|
|
JsonObject json = new JsonObject();
|
JsonObject errJson = new JsonObject();
|
// SettingEntity settingEntity = null;
|
try {
|
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());// 切换数据源
|
// settingEntity = settingIfc.getSettingEntity();
|
|
CartEntity cart = new CartEntity();
|
cart.setMatCode(matCode);
|
cart.setCltCode(cltCode);
|
cart.setCltName(cltName);
|
|
// 如果是客户登录了,则设置当前购物车的“主人” 为客户编号
|
if ((cltCode != null && !"".equals(cltCode)) || (openId != null && !"".equals(openId))) {
|
cart.setUserCode("");
|
cart.setUserName("");
|
cart.setSessionId("");
|
} else {
|
cart.setUserCode(userCode);
|
cart.setUserName(userName);
|
cart.setSessionId(sessionId);
|
}
|
|
cart.setQuantity(quantity);
|
|
cart.setRefreshPrice(true);
|
cart.setOpenId(openId);
|
|
String skuId1 = request.getParameter("skuId1");
|
String skuId2 = request.getParameter("skuId2");
|
String skuId3 = request.getParameter("skuId3");
|
String skuId4 = request.getParameter("skuId4");
|
String skuId5 = request.getParameter("skuId5");
|
String skuId6 = request.getParameter("skuId6");
|
String skuId7 = request.getParameter("skuId7");
|
String skuId8 = request.getParameter("skuId8");
|
String skuId9 = request.getParameter("skuId9");
|
String skuId10 = request.getParameter("skuId10");
|
cart.setSkuId1(skuId1 == null || "".equals(skuId1) ? null : Integer.parseInt(skuId1))
|
.setSkuId2(skuId2 == null || "".equals(skuId2) ? null : Integer.parseInt(skuId2))
|
.setSkuId3(skuId3 == null || "".equals(skuId3) ? null : Integer.parseInt(skuId3))
|
.setSkuId4(skuId4 == null || "".equals(skuId4) ? null : Integer.parseInt(skuId4))
|
.setSkuId5(skuId5 == null || "".equals(skuId5) ? null : Integer.parseInt(skuId5))
|
.setSkuId6(skuId6 == null || "".equals(skuId6) ? null : Integer.parseInt(skuId6))
|
.setSkuId7(skuId7 == null || "".equals(skuId7) ? null : Integer.parseInt(skuId7))
|
.setSkuId8(skuId8 == null || "".equals(skuId8) ? null : Integer.parseInt(skuId8))
|
.setSkuId9(skuId9 == null || "".equals(skuId9) ? null : Integer.parseInt(skuId9))
|
.setSkuId10(skuId10 == null || "".equals(skuId10) ? null : Integer.parseInt(skuId10));
|
|
Integer cartId = cartIfc.addToCart(cart);
|
if (cartId != null) {
|
//立即下单
|
String selectedCattIds = (String) session.getAttribute(SettingKey.CHECKBOX);
|
if (selectedCattIds == null) {
|
selectedCattIds = ";" + cartId + ";";
|
} else if (selectedCattIds.indexOf(cartId + ";") <= 0) {
|
selectedCattIds += cartId + ";";
|
}
|
session.setAttribute(SettingKey.CHECKBOX, selectedCattIds);
|
}
|
if (cart.isRefreshPrice()) {
|
//刷新购物车中的价格、积分和重量
|
cartIfc.refrshCart(cartId, cart.getCltCode());
|
}
|
CartEntity cartEntity = cartIfc.getCart(cartId,openId);
|
|
json.addProperty(SettingKey.MATCODE, cartEntity.getMatCode()); //商品编号
|
json.addProperty("quantity", cartEntity.getQuantity()); //数量
|
json.addProperty("cartId", cartId); //cartid
|
json.addProperty("cartRowCount", cartEntity.getCartRowCount()); //购物车总记录数
|
json.addProperty("cartQuantitySum", cartEntity.getCartQuantitySum()); //购物车总数量
|
this.printJson(response, json.toString());
|
return;
|
} catch (Exception e) {
|
e.printStackTrace();
|
errJson.addProperty("warning", e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
json.add("error", errJson);
|
this.printJson(response, json.toString());
|
return;
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
}
|
|
/**
|
* 加入购物车
|
*
|
* @param request
|
* @param response
|
*/
|
@RequestMapping(params = "m=add")
|
public void add(HttpServletRequest request, HttpServletResponse response) {
|
String hostUrl = SettingKey.getHostUrl(request);
|
// 将微信corpid组装成url
|
String wxQueryString = SettingKey.getQueryStringByWx(request);
|
String action = request.getParameter("action");
|
|
HttpSession session = request.getSession();
|
//String dbId = (String) session.getAttribute(SessionKey.SHOPPING_DBID);
|
|
String sessionId = session.getId();
|
String userCode = (session.getAttribute(SessionKey.HRCODE) == null ? ""
|
: (String) session.getAttribute(SessionKey.HRCODE));
|
String userName = (session.getAttribute(SessionKey.HRNAME) == null ? ""
|
: (String) session.getAttribute(SessionKey.HRNAME));
|
String openId = (session.getAttribute(SessionKey.WEIXIN_OPENID) == null ? ""
|
: (String) session.getAttribute(SessionKey.WEIXIN_OPENID));
|
|
String cltCode = (session.getAttribute(SettingKey.CLTCODE) == null ? ""
|
: (String) session.getAttribute(SettingKey.CLTCODE));
|
String cltName = (session.getAttribute(SettingKey.CLTNAME) == null ? ""
|
: (String) session.getAttribute(SettingKey.CLTNAME));
|
|
String matCode = (request.getParameter(SettingKey.MATCODE) == null ? ""
|
: request.getParameter(SettingKey.MATCODE));
|
double quantity = (request.getParameter("quantity") == null ? 0
|
: Double.parseDouble(request.getParameter("quantity")));
|
Integer recurringId = (request.getParameter("recurringid") == null ? 0
|
: Integer.parseInt(request.getParameter("recurringid")));
|
boolean isMoblieBrowser = SettingKey.isMoblieBrowser(request);
|
|
Map<String, String[]> params = request.getParameterMap();
|
JsonObject json = new JsonObject();
|
JsonObject errJson = null;
|
SettingEntity settingEntity = null;
|
try {
|
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());// 切换数据源
|
settingEntity = settingIfc.getSettingEntity();
|
|
//取网店 shopcccode
|
ShopCcCodeEntity shopCcCodeEntity = ShopCcCode.getShopCcCode(settingEntity, request);
|
|
// 必录检查
|
errJson = this.checkRequired(params, matCode, hostUrl, wxQueryString, isMoblieBrowser);
|
|
if (errJson != null && errJson.has("error")) {
|
this.printJson(response, errJson.toString());
|
return;
|
}
|
|
// save
|
|
if (quantity <= 0) {
|
if (errJson == null) {
|
errJson = new JsonObject();
|
}
|
errJson.addProperty("quantity", "数量必须录入!");
|
json.add("error", errJson);
|
this.printJson(response, json.toString());
|
return;
|
}
|
|
if (quantity > maxQuantity) {
|
if (errJson == null) {
|
errJson = new JsonObject();
|
}
|
errJson.addProperty("quantity", "数量不能大于 " + maxQuantity + " !");
|
json.add("error", errJson);
|
this.printJson(response, json.toString());
|
return;
|
}
|
|
|
boolean found = false;
|
for (String key : params.keySet()) {
|
if (!key.startsWith("option")) {
|
continue;
|
}
|
|
String optionId = key.substring(key.indexOf("[") + 1, key.indexOf("]"));
|
String[] values = params.get(key);
|
String value = "";
|
for (int i = 0; i < values.length; i++) {
|
value = (value != null && !"".equals(value) ? value + "," : "") + values[i];
|
}
|
json.addProperty(optionId, value);
|
found = true;
|
}
|
String optionStrJson = null;
|
if (found) {
|
optionStrJson = json.toString();
|
}
|
|
CartEntity cart = new CartEntity();
|
cart.setMatCode(matCode);
|
cart.setCltCode(cltCode);
|
cart.setCltName(cltName);
|
|
// 如果是客户登录了,则设置当前购物车的“主人” 为客户编号
|
if ((cltCode != null && !"".equals(cltCode)) || (openId != null && !"".equals(openId))) {
|
cart.setUserCode("");
|
cart.setUserName("");
|
cart.setSessionId("");
|
} else {
|
cart.setUserCode(userCode);
|
cart.setUserName(userName);
|
cart.setSessionId(sessionId);
|
}
|
|
cart.setRecurringId(recurringId);
|
cart.setOptionJson(optionStrJson);
|
cart.setQuantity(quantity);
|
|
cart.setRefreshPrice(true);
|
cart.setOpenId(openId);
|
|
//MatCodeEntity matCodeEntity = matCodeIfc.getMatCode(matCode,shopCcCodeEntity.getShopCcCode());
|
String optionText = "";
|
if (optionStrJson != null) {
|
optionText = getOptionText(optionStrJson);
|
}
|
cart.setOptionText(optionText);
|
cart.setGoShop("goshop".equals(action)); //是否立即下单,购物车中已存在此商品,则直接更新购物车中的数量为本次数量,不要累加这个数量
|
|
|
String skuId1 = request.getParameter("skuId1");
|
String skuId2 = request.getParameter("skuId2");
|
String skuId3 = request.getParameter("skuId3");
|
String skuId4 = request.getParameter("skuId4");
|
String skuId5 = request.getParameter("skuId5");
|
String skuId6 = request.getParameter("skuId6");
|
String skuId7 = request.getParameter("skuId7");
|
String skuId8 = request.getParameter("skuId8");
|
String skuId9 = request.getParameter("skuId9");
|
String skuId10 = request.getParameter("skuId10");
|
cart.setSkuId1(skuId1 == null || "".equals(skuId1) ? null : Integer.parseInt(skuId1))
|
.setSkuId2(skuId2 == null || "".equals(skuId2) ? null : Integer.parseInt(skuId2))
|
.setSkuId3(skuId3 == null || "".equals(skuId3) ? null : Integer.parseInt(skuId3))
|
.setSkuId4(skuId4 == null || "".equals(skuId4) ? null : Integer.parseInt(skuId4))
|
.setSkuId5(skuId5 == null || "".equals(skuId5) ? null : Integer.parseInt(skuId5))
|
.setSkuId6(skuId6 == null || "".equals(skuId6) ? null : Integer.parseInt(skuId6))
|
.setSkuId7(skuId7 == null || "".equals(skuId7) ? null : Integer.parseInt(skuId7))
|
.setSkuId8(skuId8 == null || "".equals(skuId8) ? null : Integer.parseInt(skuId8))
|
.setSkuId9(skuId9 == null || "".equals(skuId9) ? null : Integer.parseInt(skuId9))
|
.setSkuId10(skuId10 == null || "".equals(skuId10) ? null : Integer.parseInt(skuId10));
|
|
Integer cartId = cartIfc.addToCart(cart);
|
if (cartId != null) {
|
//立即下单
|
String selectedCattIds = (String) session.getAttribute(SettingKey.CHECKBOX);
|
if (selectedCattIds == null || "goshop".equals(action)) {
|
selectedCattIds = ";" + cartId + ";";
|
} else if (selectedCattIds.indexOf(cartId + ";") <= 0) {
|
selectedCattIds += cartId + ";";
|
}
|
session.setAttribute(SettingKey.CHECKBOX, selectedCattIds);
|
}
|
if (cart.isRefreshPrice()) {
|
//刷新购物车中的价格、积分和重量
|
cartIfc.refrshCart(cartId, cart.getCltCode());
|
}
|
List<CartEntity> cartList = cartIfc.getCartList(userCode, sessionId, cart.getOpenId(), cltCode, shopCcCodeEntity.getShopCcCode()); // 重新取一次数,确保购物车显示正确
|
CurrencyEntity currencyEntity = currencyIfc.getUserCurrency(userCode);
|
|
/******** 购物车 开始清单输出 *************/
|
DecimalFormat df = new DecimalFormat("0.00");
|
double selectTotalAmount = 0; //给 footer.jsp 页面使用,用于赋初值
|
int selectItems = 0; //给 footer.jsp 页面使用,用于赋初值
|
int cartItems = 0; //给 footer.jsp 页面使用,用于赋初值
|
if (cartList != null) {
|
cartItems = cartList.size();
|
}
|
|
//取已经选择的金额数
|
List<CartEntity> selectedCartList = cartList.stream().filter((CartEntity c) -> c.isSelected()).collect(Collectors.toList());
|
for (int i = 0; selectedCartList != null && i < selectedCartList.size(); i++) {
|
selectTotalAmount += selectedCartList.get(i).getAmount();
|
selectItems++;
|
}
|
|
//组装 json array 输出
|
JsonArray cartListJsonArray = this.getCartJsonArray(request, settingEntity, cartList, currencyEntity, dataSourceEntity);
|
json.add("list", cartListJsonArray);
|
|
json.addProperty("SelectTotalAmount", df.format(selectTotalAmount));
|
json.addProperty("SelectItems", selectItems);
|
json.addProperty("CartItems", cartItems);
|
/******** 购物车 结束清单输出 *************/
|
|
|
double totalQuantity = (cartList != null && cartList.size() > 0 ? cartList.get(0).getTotalQuantity() : 0);
|
//double totalWeight = (list!=null&&list.size()>0?list.get(0).getTotalWeight():0);
|
|
double totalAmount = (cartList != null && cartList.size() > 0 ? cartList.get(0).getTotalAmount() : 0);
|
|
//取刚才加入购物车的物料信息
|
List<CartEntity> matCodeEntityList = cartList.stream().filter((CartEntity c) -> c.getCartId().equals(cartId)).collect(Collectors.toList());
|
CartEntity cartEntity = matCodeEntityList != null && matCodeEntityList.size() > 0 ? matCodeEntityList.get(0) : null;
|
|
json.addProperty("success", "成功添加商品 <a href=\"" + hostUrl + SettingKey.getMatCodeUrl(null, matCode, isMoblieBrowser)
|
+ (wxQueryString == null || "".equals(wxQueryString) ? "" : "&" + wxQueryString) + "\">"
|
+ (cartEntity == null ? "" : (settingEntity.isShowMatName() ? cartEntity.getMatName() : "商品")) + "</a>到您的 <a href=\"" + hostUrl
|
+ "/shopping/" + (isMoblieBrowser ? "mobile/" : "") + "cart/" + (wxQueryString == null || "".equals(wxQueryString) ? "" : "?" + wxQueryString)
|
+ "\">购物车</a>!");
|
json.addProperty("toastmessage", "成功添加商品到您的 <a href=\"" + hostUrl + "/shopping/" + (isMoblieBrowser ? "mobile/" : "") + "cart/"
|
+ (wxQueryString == null || "".equals(wxQueryString) ? "" : "?" + wxQueryString) + "\">购物车</a>!");
|
json.addProperty("total", (cartList != null ? cartList.size() : 0) + "种商品(共" + (new Double(totalQuantity)).intValue()
|
+ "件)"
|
+ (settingEntity.isShowPrice() ? " - " + currencyEntity.getCurrencySign() + totalAmount : ""));
|
json.addProperty("cart-num", (cartList != null ? cartList.size() : 0));
|
//如果是立即购买
|
if (action != null && "goshop".equals(action)) {
|
json.addProperty("redirect", hostUrl + "/shopping/" + (isMoblieBrowser ? "mobile/" : "") + "checkoutnew/?selectedCartIds=" + cartId + (wxQueryString == null || "".equals(wxQueryString) ? "" : "&" + wxQueryString));
|
}
|
json.addProperty("CartId", cartId);
|
this.printJson(response, json.toString());
|
return;
|
} catch (Exception e) {
|
e.printStackTrace();
|
errJson.addProperty("warning", e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
json.add("error", errJson);
|
this.printJson(response, json.toString());
|
return;
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
}
|
|
|
@RequestMapping(params = "m=addByPicture")
|
public void addByPicture(HttpServletRequest request, HttpServletResponse response) {
|
String hostUrl = SettingKey.getHostUrl(request);
|
// 将微信corpid组装成url
|
String wxQueryString = SettingKey.getQueryStringByWx(request);
|
String action = request.getParameter("action");
|
|
HttpSession session = request.getSession();
|
//String dbId = (String) session.getAttribute(SessionKey.SHOPPING_DBID);
|
|
String sessionId = session.getId();
|
String userCode = (session.getAttribute(SessionKey.HRCODE) == null ? ""
|
: (String) session.getAttribute(SessionKey.HRCODE));
|
String userName = (session.getAttribute(SessionKey.HRNAME) == null ? ""
|
: (String) session.getAttribute(SessionKey.HRNAME));
|
String openId = (session.getAttribute(SessionKey.WEIXIN_OPENID) == null ? ""
|
: (String) session.getAttribute(SessionKey.WEIXIN_OPENID));
|
|
String cltCode = (session.getAttribute(SettingKey.CLTCODE) == null ? ""
|
: (String) session.getAttribute(SettingKey.CLTCODE));
|
String cltName = (session.getAttribute(SettingKey.CLTNAME) == null ? ""
|
: (String) session.getAttribute(SettingKey.CLTNAME));
|
|
String matCode = (request.getParameter(SettingKey.MATCODE) == null ? ""
|
: request.getParameter(SettingKey.MATCODE));
|
double quantity = (request.getParameter("quantity") == null ? 0
|
: Double.parseDouble(request.getParameter("quantity")));
|
|
boolean isMoblieBrowser = SettingKey.isMoblieBrowser(request);
|
|
|
JsonObject json = new JsonObject();
|
JsonObject errJson = null;
|
SettingEntity settingEntity = null;
|
try {
|
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());// 切换数据源
|
settingEntity = settingIfc.getSettingEntity();
|
|
//取网店 shopcccode
|
//ShopCcCodeEntity shopCcCodeEntity = ShopCcCode.getShopCcCode(settingEntity,request);
|
|
|
// save
|
|
if (quantity <= 0) {
|
if (errJson == null) {
|
errJson = new JsonObject();
|
}
|
errJson.addProperty("quantity", "数量必须录入!");
|
json.add("error", errJson);
|
this.printJson(response, json.toString());
|
return;
|
}
|
|
if (quantity > maxQuantity) {
|
if (errJson == null) {
|
errJson = new JsonObject();
|
}
|
errJson.addProperty("quantity", "数量不能大于 " + maxQuantity + " !");
|
json.add("error", errJson);
|
this.printJson(response, json.toString());
|
return;
|
}
|
|
|
CartEntity cart = new CartEntity();
|
cart.setMatCode(matCode);
|
cart.setCltCode(cltCode);
|
cart.setCltName(cltName);
|
|
// 如果是客户登录了,则设置当前购物车的“主人” 为客户编号
|
if ((cltCode != null && !"".equals(cltCode)) || (openId != null && !"".equals(openId))) {
|
cart.setUserCode("");
|
cart.setUserName("");
|
cart.setSessionId("");
|
} else {
|
cart.setUserCode(userCode);
|
cart.setUserName(userName);
|
cart.setSessionId(sessionId);
|
}
|
|
MatCodeEntity matCodeEntity = matCodeIfc.getMatCodeByPicture(matCode);
|
cart.setPrice(matCodeEntity.getSalesPriceByPicture());
|
cart.setQuantity(quantity);
|
|
cart.setRefreshPrice(true);
|
cart.setOpenId(openId);
|
|
Integer cartId = cartIfc.saveCartByPicture(cart);
|
if (cartId != null) {
|
//立即下单
|
String checkbox = (String) session.getAttribute(SettingKey.CHECKBOXBYPICTURE);
|
if (checkbox == null || "goshop".equals(action)) {
|
checkbox = ";" + cartId + ";";
|
} else if (checkbox.indexOf(cartId + ";") <= 0) {
|
checkbox += cartId + ";";
|
}
|
session.setAttribute(SettingKey.CHECKBOXBYPICTURE, checkbox);
|
}
|
|
List<CartEntity> list = cartIfc.getCartsByPicture(cltCode); // 重新取一次数,确保购物车显示正确
|
CurrencyEntity currencyEntity = currencyIfc.getUserCurrency(userCode);
|
|
double totalQuantity = (list != null && list.size() > 0 ? list.get(0).getTotalQuantity() : 0);
|
//double totalWeight = (list!=null&&list.size()>0?list.get(0).getTotalWeight():0);
|
|
double totalAmount = (list != null && list.size() > 0 ? list.get(0).getTotalAmount() : 0);
|
|
|
JsonObject success = new JsonObject();
|
success.addProperty("success", "成功添加商品 <a href=\"" + hostUrl + SettingKey.getMatCodeUrl(null, matCode, isMoblieBrowser)
|
+ (wxQueryString == null || "".equals(wxQueryString) ? "" : "&" + wxQueryString) + "\">"
|
+ (matCodeEntity == null ? "" : (settingEntity.isShowMatName() ? matCodeEntity.getMatName() : "商品")) + "</a>到您的 <a href=\"" + hostUrl
|
+ "/shopping/" + (isMoblieBrowser ? "mobile/" : "") + "purchase/cart.jsp" + (wxQueryString == null || "".equals(wxQueryString) ? "" : "?" + wxQueryString)
|
+ "\">购物车</a>!");
|
success.addProperty("toastmessage", "成功添加商品到您的 <a href=\"" + hostUrl + "/shopping/" + (isMoblieBrowser ? "mobile/" : "") + "purchase/cart.jsp"
|
+ (wxQueryString == null || "".equals(wxQueryString) ? "" : "?" + wxQueryString) + "\">购物车</a>!");
|
success.addProperty("total", (list != null ? list.size() : 0) + "种商品(共" + (new Double(totalQuantity)).intValue()
|
+ "件)"
|
+ (settingEntity.isShowPrice() ? " - " + currencyEntity.getCurrencySign() + totalAmount : ""));
|
success.addProperty("cart-num", (list != null ? list.size() : 0));
|
//如果是立即购买
|
if (action != null && "goshop".equals(action)) {
|
success.addProperty("redirect", hostUrl + "/shopping/" + (isMoblieBrowser ? "mobile/" : "") + "purchase/checkout.jsp" + (wxQueryString == null || "".equals(wxQueryString) ? "" : "?" + wxQueryString));
|
}
|
this.printJson(response, success.toString());
|
return;
|
} catch (Exception e) {
|
e.printStackTrace();
|
errJson.addProperty("warning", e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
json.add("error", errJson);
|
this.printJson(response, json.toString());
|
return;
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
}
|
|
/**
|
* 获取购物车 json 数据格式(小程序需要用到)
|
*
|
* @param request
|
* @param response
|
*/
|
@RequestMapping(params = "m=getCartList")
|
public void getCartList(HttpServletRequest request, HttpServletResponse response) {
|
HttpSession session = request.getSession();
|
//String dbId = (String) session.getAttribute(SessionKey.SHOPPING_DBID);
|
String userCode = (session.getAttribute(SessionKey.USERCODE) == null ? ""
|
: (String) session.getAttribute(SessionKey.USERCODE));
|
String openId = (session.getAttribute(SessionKey.WEIXIN_OPENID) == null ? ""
|
: (String) session.getAttribute(SessionKey.WEIXIN_OPENID));
|
String sessionId = session.getId();
|
String cltCode = (session.getAttribute(SettingKey.CLTCODE) == null ? "" : (String) session.getAttribute(SettingKey.CLTCODE));
|
|
//String hostUrl = SettingKey.getHostUrl(request) ;
|
//将微信corpid组装成url
|
//String wxQueryString = SettingKey.getQueryStringByWx(request);
|
|
JsonObject json = new JsonObject();
|
JsonObject errJson = new JsonObject();
|
//JsonObject jsonObject = new JsonObject();
|
//Gson gson = new Gson();
|
|
|
SettingEntity settingEntity = null;
|
CurrencyEntity currencyEntity = null;
|
List<CartEntity> cartList = null;
|
//boolean isMoblieBrowser = SettingKey.isMoblieBrowser(request);
|
//String checkboxs = (String)session.getAttribute(SettingKey.CHECKBOX);
|
try {
|
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());// 切换数据源
|
settingEntity = settingIfc.getSettingEntity();
|
//取网店 shopcccode
|
ShopCcCodeEntity shopCcCodeEntity = ShopCcCode.getShopCcCode(settingEntity, request);
|
|
currencyEntity = currencyIfc.getUserCurrency(userCode);
|
cartList = cartIfc.getCartList(userCode, sessionId, openId, cltCode, shopCcCodeEntity.getShopCcCode());
|
|
/******** 购物车 开始清单输出 *************/
|
DecimalFormat df = new DecimalFormat("0.00");
|
double selectTotalAmount = 0; //给 footer.jsp 页面使用,用于赋初值
|
int selectItems = 0; //给 footer.jsp 页面使用,用于赋初值
|
int cartItems = 0; //给 footer.jsp 页面使用,用于赋初值
|
if (cartList != null) {
|
cartItems = cartList.size();
|
}
|
|
//取已经选择的金额数
|
List<CartEntity> selectedCartList = cartList.stream().filter((CartEntity c) -> c.isSelected()).collect(Collectors.toList());
|
for (int i = 0; selectedCartList != null && i < selectedCartList.size(); i++) {
|
selectTotalAmount += selectedCartList.get(i).getAmount();
|
selectItems++;
|
}
|
|
//组装 json array 输出
|
JsonArray cartListJsonArray = this.getCartJsonArray(request, settingEntity, cartList, currencyEntity, dataSourceEntity);
|
json.add("list", cartListJsonArray);
|
|
json.addProperty("SelectTotalAmount", df.format(selectTotalAmount));
|
json.addProperty("SelectItems", selectItems);
|
json.addProperty("CartItems", cartItems);
|
/******** 购物车 结束清单输出 *************/
|
|
|
//json.add("list", jsonObject);
|
this.printJson(response, json.toString());
|
return;
|
|
} catch (DataAccessException e) {
|
e.printStackTrace();
|
errJson.addProperty("warning", (e.getCause() != null ? e.getCause().getMessage() : e.getMessage()));
|
json.add("error", errJson);
|
this.printJson(response, json.toString());
|
return;
|
} catch (Exception e) {
|
e.printStackTrace();
|
errJson.addProperty("warning", (e.getCause() != null ? e.getCause().getMessage() : e.getMessage()));
|
json.add("error", errJson);
|
this.printJson(response, json.toString());
|
return;
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
}
|
|
private JsonArray getCartJsonArray(HttpServletRequest request, SettingEntity settingEntity, List<CartEntity> cartList, CurrencyEntity currencyEntity, DataSourceEntity dataSourceEntity) {
|
JsonArray cartListJsonArray = new JsonArray();
|
String hostUrl = SettingKey.getHostUrl(request);
|
//将微信corpid组装成url
|
String wxQueryString = SettingKey.getQueryStringByWx(request);
|
boolean isMoblieBrowser = SettingKey.isMoblieBrowser(request);
|
for (int i = 0; cartList != null && i < cartList.size(); i++) {
|
CartEntity cartEntity = cartList.get(i);
|
//boolean isChecked = (SettingKey.isExistsCheckbox(checkboxs, cartEntity.getCartId()+"")?true:false) ;
|
boolean isChecked = cartEntity.isSelected();
|
// if (isChecked) {
|
// if (cartEntity.getAmount()!=null) {
|
// selectTotalAmount += cartEntity.getAmount() ;
|
// }
|
// selectItems ++ ;
|
// }
|
JsonObject cartEntityJsonObject = new JsonObject();
|
if (settingEntity.getDefaultShopCcCode() != null && !"".equals(settingEntity.getDefaultShopCcCode())) {
|
cartEntityJsonObject.addProperty("ShopCcCode", cartEntity.getShopCcCode());
|
cartEntityJsonObject.addProperty("ShopCcName", cartEntity.getShopCcName());
|
}
|
cartEntityJsonObject.addProperty("CartId", cartEntity.getCartId());
|
cartEntityJsonObject.addProperty("isChecked", isChecked);
|
//最小起订数量
|
cartEntityJsonObject.addProperty("Mininum", cartEntity.getMininum());
|
|
String url = hostUrl + SettingKey.getMatCodeUrl("", cartEntity.getMatCode(), isMoblieBrowser)
|
+ (wxQueryString == null || "".equals(wxQueryString) ? "" : "&" + wxQueryString);
|
|
cartEntityJsonObject.addProperty("url", url);
|
//主图片
|
cartEntityJsonObject.addProperty("PhotoPath", SettingKey.getUrl(hostUrl, cartEntity.getPhotoPathUrl(), dataSourceEntity.getDbId() + "", null));
|
// cartEntityJsonObject.addProperty("PhotoPath",
|
// imgData.getImageUrl(cartEntity.getPhotoPath(), settingEntity.getImageProductWidth(),
|
// settingEntity.getImageProductHeight(), settingEntity.isShowProductOrgImage(),
|
// settingEntity.isFromCached(), request)
|
// + (wxQueryString == null || "".equals(wxQueryString) ? "" : "?" + wxQueryString));
|
|
if (settingEntity.isShowBrand()) {
|
cartEntityJsonObject.addProperty("Brand", cartEntity.getBrand());
|
}
|
if (settingEntity.isShowMatName()) {
|
cartEntityJsonObject.addProperty("MatName", cartEntity.getMatName());
|
}
|
|
cartEntityJsonObject.addProperty("MatCode", cartEntity.getMatCode());
|
cartEntityJsonObject.addProperty("isShowMatCode", settingEntity.isShowMatCode());
|
cartEntityJsonObject.addProperty("isShowMatName", settingEntity.isShowMatName());
|
cartEntityJsonObject.addProperty("isShowSpecial", settingEntity.isShowSpecial());
|
cartEntityJsonObject.addProperty("isShowPrice", settingEntity.isShowPrice());
|
cartEntityJsonObject.addProperty("ShopMatCode", cartEntity.getShopMatCode());
|
cartEntityJsonObject.addProperty("isShowPoints", settingEntity.isShowPoints());
|
cartEntityJsonObject.addProperty("isShowBrand", settingEntity.isShowBrand());
|
cartEntityJsonObject.addProperty("StockDisplay", settingEntity.getStockDisplay());
|
|
if (settingEntity.isShowSpecial()) {
|
cartEntityJsonObject.addProperty("Special", cartEntity.getSpecial());
|
}
|
if (settingEntity.isStartupMatName2()) {
|
cartEntityJsonObject.addProperty("MatName2Label", settingEntity.getMatName2Label());
|
cartEntityJsonObject.addProperty("MatName2", cartEntity.getMatName2());
|
}
|
|
if (settingEntity.isStartupMatName3()) {
|
cartEntityJsonObject.addProperty("MatName3Label", settingEntity.getMatName3Label());
|
cartEntityJsonObject.addProperty("MatName3", cartEntity.getMatName3());
|
}
|
|
if (settingEntity.isStartupMatName4()) {
|
cartEntityJsonObject.addProperty("MatName4Label", settingEntity.getMatName4Label());
|
cartEntityJsonObject.addProperty("MatName4", cartEntity.getMatName4());
|
}
|
|
if (cartEntity.getOptionJson() != null && !"".equals(cartEntity.getOptionJson())) {
|
//Map<String,Object> lists=gson.fromJson(cartEntity.getOptionJson(),new TypeToken<Map<String,Object>>(){}.getType());
|
cartEntityJsonObject.addProperty("OptionJson", cartEntity.getOptionJson()); //gson.toJson(settingEntity));
|
}
|
|
if (settingEntity.isShowPrice() && cartEntity.getPrice() != null) {
|
cartEntityJsonObject.addProperty("Price", cartEntity.getPrice()); // 实际价格
|
cartEntityJsonObject.addProperty("Currency", currencyEntity.getCurrencySign());
|
cartEntityJsonObject.addProperty("CurrencySign", currencyEntity.getCurrencySign());
|
}
|
|
cartEntityJsonObject.addProperty("Quantity", cartEntity.getQuantity());
|
|
cartEntityJsonObject.addProperty("skuId1", cartEntity.getSkuId1());
|
cartEntityJsonObject.addProperty("skuName1", cartEntity.getSkuName1());
|
cartEntityJsonObject.addProperty("skuId2", cartEntity.getSkuId2());
|
cartEntityJsonObject.addProperty("skuName2", cartEntity.getSkuName2());
|
cartEntityJsonObject.addProperty("skuId3", cartEntity.getSkuId3());
|
cartEntityJsonObject.addProperty("skuName3", cartEntity.getSkuName3());
|
cartEntityJsonObject.addProperty("skuId4", cartEntity.getSkuId4());
|
cartEntityJsonObject.addProperty("skuName4", cartEntity.getSkuName4());
|
cartEntityJsonObject.addProperty("skuId5", cartEntity.getSkuId5());
|
cartEntityJsonObject.addProperty("skuName5", cartEntity.getSkuName5());
|
cartEntityJsonObject.addProperty("skuId6", cartEntity.getSkuId6());
|
cartEntityJsonObject.addProperty("skuName6", cartEntity.getSkuName6());
|
cartEntityJsonObject.addProperty("skuId7", cartEntity.getSkuId7());
|
cartEntityJsonObject.addProperty("skuName7", cartEntity.getSkuName7());
|
cartEntityJsonObject.addProperty("skuId8", cartEntity.getSkuId8());
|
cartEntityJsonObject.addProperty("skuName8", cartEntity.getSkuName8());
|
cartEntityJsonObject.addProperty("skuId9", cartEntity.getSkuId9());
|
cartEntityJsonObject.addProperty("skuName9", cartEntity.getSkuName9());
|
cartEntityJsonObject.addProperty("skuId10", cartEntity.getSkuId10());
|
cartEntityJsonObject.addProperty("skuName10", cartEntity.getSkuName10());
|
|
//是否限量销售
|
cartEntityJsonObject.addProperty("isRestrictQuantity", cartEntity.getIsRestrictQuantity());
|
//销售数量限量 或 可用库存限量
|
cartEntityJsonObject.addProperty("RestrictQuantity", cartEntity.getRestrictQuantity());
|
cartListJsonArray.add(cartEntityJsonObject);
|
}
|
return cartListJsonArray;
|
}
|
|
/**
|
* 再次购买
|
*
|
* @param request
|
* @param response
|
*/
|
@RequestMapping(params = "m=readd") // 从订单明细行再次生成购物车记录(再次购买)
|
public void readd(HttpServletRequest request, HttpServletResponse response) {
|
|
String hostUrl = SettingKey.getHostUrl(request);
|
// 将微信corpid组装成url
|
String wxQueryString = SettingKey.getQueryStringByWx(request);
|
|
HttpSession session = request.getSession();
|
//String dbId = (String) session.getAttribute(SessionKey.SHOPPING_DBID);
|
|
String sessionId = session.getId();
|
String userCode = (session.getAttribute(SessionKey.USERCODE) == null ? ""
|
: (String) session.getAttribute(SessionKey.USERCODE));
|
String userName = (session.getAttribute(SessionKey.USERNAME) == null ? ""
|
: (String) session.getAttribute(SessionKey.USERNAME));
|
String cltCode = (session.getAttribute(SettingKey.CLTCODE) == null ? ""
|
: (String) session.getAttribute(SettingKey.CLTCODE));
|
String cltName = (session.getAttribute(SettingKey.CLTNAME) == null ? ""
|
: (String) session.getAttribute(SettingKey.CLTNAME));
|
String openId = (session.getAttribute(SessionKey.WEIXIN_OPENID) == null ? ""
|
: (String) session.getAttribute(SessionKey.WEIXIN_OPENID));
|
|
String docCode = (request.getParameter(SettingKey.DOCCODE) == null ? ""
|
: request.getParameter(SettingKey.DOCCODE));
|
String rowId = (request.getParameter(SettingKey.ROWID) == null ? "" : request.getParameter(SettingKey.ROWID));
|
boolean isMoblieBrowser = SettingKey.isMoblieBrowser(request);
|
|
if (docCode == null || rowId == null) {
|
SettingKey.setCartHintMsg(session, "错误的引用,订单行不存在,请重新选择!");
|
this.print(response, SettingKey.getRedirectUrl(hostUrl + "/shopping/" + (isMoblieBrowser ? "mobile/" : "") + "account/order.jsp"
|
+ (wxQueryString == null || "".equals(wxQueryString) ? "" : "?" + wxQueryString)));
|
return;
|
}
|
OrderDetailEntity orderDetailEntity = null;
|
SettingEntity settingEntity = null;
|
try {
|
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());// 切换数据源
|
settingEntity = settingIfc.getSettingEntity();
|
orderDetailEntity = orderIfc.getOrderDetailEntity(docCode, rowId);
|
if (orderDetailEntity == null) {
|
SettingKey.setCartHintMsg(session, "订单行不存在,请重新选择!");
|
this.print(response,
|
SettingKey.getRedirectUrl(hostUrl + "/shopping/" + (isMoblieBrowser ? "mobile/" : "") + "account/orderdetail.jsp?" + SettingKey.DOCCODE
|
+ "=" + docCode + (wxQueryString == null || "".equals(wxQueryString) ? "" : "&" + wxQueryString)));
|
return;
|
}
|
|
// save
|
CartEntity cart = new CartEntity();
|
cart.setMatCode(orderDetailEntity.getMatCode());
|
cart.setCltCode(cltCode);
|
cart.setCltName(cltName);
|
|
// 如果是客户登录了,则设置当前购物车的“主人” 为客户编号
|
if ((cltCode != null && !"".equals(cltCode)) || (openId != null && !"".equals(openId))) {
|
cart.setUserCode("");
|
cart.setUserName("");
|
cart.setSessionId("");
|
} else {
|
cart.setUserCode(userCode);
|
cart.setUserName(userName);
|
cart.setSessionId(sessionId);
|
}
|
|
cart.setRecurringId(null);
|
cart.setOptionJson(orderDetailEntity.getOptionJson());
|
cart.setQuantity(orderDetailEntity.getDigit());
|
cart.setOpenId(openId);
|
|
String optionText = "";
|
if (orderDetailEntity.getOptionJson() != null) {
|
optionText = getOptionText(orderDetailEntity.getOptionJson());
|
}
|
|
cart.setOptionText(optionText);
|
String skuId1 = request.getParameter("skuId1");
|
String skuId2 = request.getParameter("skuId2");
|
String skuId3 = request.getParameter("skuId3");
|
String skuId4 = request.getParameter("skuId4");
|
String skuId5 = request.getParameter("skuId5");
|
String skuId6 = request.getParameter("skuId6");
|
String skuId7 = request.getParameter("skuId7");
|
String skuId8 = request.getParameter("skuId8");
|
String skuId9 = request.getParameter("skuId9");
|
String skuId10 = request.getParameter("skuId10");
|
cart.setSkuId1(skuId1 == null || "".equals(skuId1) ? null : Integer.parseInt(skuId1))
|
.setSkuId2(skuId2 == null || "".equals(skuId2) ? null : Integer.parseInt(skuId2))
|
.setSkuId3(skuId3 == null || "".equals(skuId3) ? null : Integer.parseInt(skuId3))
|
.setSkuId4(skuId4 == null || "".equals(skuId4) ? null : Integer.parseInt(skuId4))
|
.setSkuId5(skuId5 == null || "".equals(skuId5) ? null : Integer.parseInt(skuId5))
|
.setSkuId6(skuId6 == null || "".equals(skuId6) ? null : Integer.parseInt(skuId6))
|
.setSkuId7(skuId7 == null || "".equals(skuId7) ? null : Integer.parseInt(skuId7))
|
.setSkuId8(skuId8 == null || "".equals(skuId8) ? null : Integer.parseInt(skuId8))
|
.setSkuId9(skuId9 == null || "".equals(skuId9) ? null : Integer.parseInt(skuId9))
|
.setSkuId10(skuId10 == null || "".equals(skuId10) ? null : Integer.parseInt(skuId10));
|
|
Integer cartId = cartIfc.addToCart(cart);
|
if (cart.isRefreshPrice()) {
|
//刷新购物车中的价格、积分和重量
|
cartIfc.refrshCart(cartId, cart.getCltCode());
|
}
|
session.setAttribute(SettingKey.CHECKBOX, cartId + ""); //将选择的购物车保存到会话中,供页面选择需要
|
String cartHint = "成功添加商品 <a href=\"" + hostUrl
|
+ SettingKey.getMatCodeUrl(null, orderDetailEntity.getMatCode(), isMoblieBrowser)
|
+ (wxQueryString == null || "".equals(wxQueryString) ? "" : "&" + wxQueryString) + "\">"
|
+ (orderDetailEntity.getMatName() == null ? "" : (settingEntity.isShowMatName() ? orderDetailEntity.getMatName() : "商品"))
|
+ "</a>到您的 <a href=\"" + hostUrl + "/shopping/" + (isMoblieBrowser ? "mobile/" : "") + "cart/"
|
+ (wxQueryString == null || "".equals(wxQueryString) ? "" : "?" + wxQueryString) + "\">购物车</a>!";
|
SettingKey.setCartHintMsg(session, cartHint);
|
} catch (DataAccessException e) {
|
e.printStackTrace();
|
String cartHint = "添加商品失败,失败原因:" + e.getCause().getMessage() + ",查看原商品信息请点击 <a href=\"" + hostUrl
|
+ SettingKey.getMatCodeUrl(null, orderDetailEntity.getMatCode(), isMoblieBrowser)
|
+ (wxQueryString == null || "".equals(wxQueryString) ? "" : "&" + wxQueryString) + "\">"
|
+ (orderDetailEntity.getMatName() == null ? "" : (settingEntity.isShowMatName() ? orderDetailEntity.getMatName() : "商品"))
|
+ "</a>到您的 <a href=\"" + hostUrl + "/shopping/" + (isMoblieBrowser ? "mobile/" : "") + "cart/"
|
+ (wxQueryString == null || "".equals(wxQueryString) ? "" : "?" + wxQueryString) + "\">购物车</a>!";
|
SettingKey.setCartHintMsg(session, cartHint);
|
} catch (Exception e) {
|
e.printStackTrace();
|
String cartHint = "添加商品失败,失败原因:" + e.getCause().getMessage() + ",查看原商品信息请点击 <a href=\"" + hostUrl
|
+ SettingKey.getMatCodeUrl(null, orderDetailEntity.getMatCode(), isMoblieBrowser)
|
+ (wxQueryString == null || "".equals(wxQueryString) ? "" : "&" + wxQueryString) + "\">"
|
+ (orderDetailEntity.getMatName() == null ? "" : (settingEntity.isShowMatName() ? orderDetailEntity.getMatName() : "商品"))
|
+ "</a>到您的 <a href=\"" + hostUrl + "/shopping/" + (isMoblieBrowser ? "mobile/" : "") + "cart/"
|
+ (wxQueryString == null || "".equals(wxQueryString) ? "" : "?" + wxQueryString) + "\">购物车</a>!";
|
SettingKey.setCartHintMsg(session, cartHint);
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
this.print(response,
|
SettingKey.getRedirectUrl(hostUrl + "/shopping/" + (isMoblieBrowser ? "mobile/" : "") + "cart/index.jsp"
|
+ (wxQueryString == null || "".equals(wxQueryString) ? "" : "?" + wxQueryString)));
|
return;
|
}
|
|
public String getOptionText(String optionStr) {
|
String ret = "";
|
Map<String, Object> lists = null;
|
if (optionStr != null && !"".equals(optionStr)) {
|
lists = gson.fromJson(optionStr, new TypeToken<Map<String, Object>>() {
|
}.getType());
|
for (Entry<String, Object> entry : lists.entrySet()) {
|
ret += cartIfc.getOptionStr(Integer.parseInt(entry.getKey()), (String) entry.getValue()) + "\n";
|
}
|
}
|
return ret;
|
}
|
|
// 检查必录选项
|
// {"error":{"option":{"228":"aa \u8981\u6c42\uff01","218":"Radio
|
// \u8981\u6c42\uff01","223":"Checkbox \u8981\u6c42\uff01","217":"Select
|
// \u8981\u6c42\uff01","209":"Textarea \u8981\u6c42\uff01","222":"File
|
// \u8981\u6c42\uff01"}},"redirect":"http:\/\/localhost\/index.php?route=product\/product&product_id=42"}
|
public JsonObject checkRequired(Map<String, String[]> params, String matCode, String hostUrl,
|
String wxQueryString, boolean isMoblieBrowser) {
|
List<OptionEntity> list = matOptionIfc.getOptionEntityRequired(matCode);
|
|
JsonObject msgJson = null;
|
boolean found = false;
|
|
for (int k = 0; list != null && k < list.size(); k++) {
|
found = false;
|
OptionEntity optionEntity = list.get(k);
|
for (String key : params.keySet()) {
|
if (!key.startsWith("option")) {
|
continue;
|
}
|
String optionId = key.substring(key.indexOf("[") + 1, key.indexOf("]"));
|
if (optionId != null && !optionId.equals(optionEntity.getOptionId().toString())) {
|
continue;
|
}
|
|
String[] values = params.get(key);
|
for (int i = 0; i < values.length; i++) {
|
if (values[i] != null && !"".equals(values[i])) {
|
found = true;
|
break;
|
}
|
}
|
if (found)
|
break;
|
}
|
|
// 没有找到,则提示必录
|
if (!found) {
|
String hintMsg = optionEntity.getOptionName() + " 要求!";
|
if (msgJson == null) {
|
msgJson = new JsonObject();
|
}
|
msgJson.addProperty(optionEntity.getOptionId().toString(), hintMsg);
|
}
|
}
|
|
if (msgJson != null) {
|
JsonObject json = new JsonObject();
|
JsonObject optionJson = new JsonObject();
|
optionJson.add("option", msgJson);
|
json.add("error", optionJson);
|
json.addProperty("redirect", hostUrl + SettingKey.getMatCodeUrl(null, matCode, isMoblieBrowser)
|
+ (wxQueryString == null || "".equals(wxQueryString) ? "" : "&" + wxQueryString));
|
return json;
|
} else {
|
return null;
|
}
|
}
|
|
@RequestMapping(params = "m=info")
|
public void info(HttpServletRequest request, HttpServletResponse response) {
|
response.setContentType("text/html;charset=utf-8");
|
response.setStatus(HttpServletResponse.SC_OK);
|
HttpSession session = request.getSession();
|
String sessionId = session.getId();
|
//String dbId = (String) session.getAttribute(SessionKey.SHOPPING_DBID);
|
|
String userCode = (session.getAttribute(SessionKey.USERCODE) == null ? ""
|
: (String) session.getAttribute(SessionKey.USERCODE));
|
String openId = (session.getAttribute(SessionKey.WEIXIN_OPENID) == null ? ""
|
: (String) session.getAttribute(SessionKey.WEIXIN_OPENID));
|
String cltCode = (session.getAttribute(SettingKey.CLTCODE) == null ? ""
|
: (String) session.getAttribute(SettingKey.CLTCODE));
|
// String cltName = (session.getAttribute(SettingKey.CLTNAME) ==
|
// null?"": (String)session.getAttribute(SettingKey.CLTNAME)) ;
|
JsonObject json = new JsonObject();
|
JsonObject errJson = new JsonObject();
|
|
String hostUrl = SettingKey.getHostUrl(request);
|
// 将微信corpid组装成url
|
String wxQueryString = SettingKey.getQueryStringByWx(request);
|
|
// 预优配送费用
|
Integer freeId = session.getAttribute(SettingKey.FREEID) == null ? null
|
: (Integer) session.getAttribute(SettingKey.FREEID);
|
String freeName = session.getAttribute(SettingKey.FREENAME) == null ? ""
|
: (String) session.getAttribute(SettingKey.FREENAME);
|
double freeCost = 0;
|
if (freeId != null) {
|
freeCost = (Double) session.getAttribute(SettingKey.FREECOST);
|
}
|
// 优惠劵
|
String couponCode = session.getAttribute(SettingKey.COUPONCODE) == null ? null
|
: (String) session.getAttribute(SettingKey.COUPONCODE);
|
String couponName = session.getAttribute(SettingKey.COUPONNAME) == null ? ""
|
: (String) session.getAttribute(SettingKey.COUPONNAME);
|
double couponCost = 0;
|
if (couponCode != null) {
|
couponCost = (Double) session.getAttribute(SettingKey.COUPONCOST);
|
}
|
// 礼品劵
|
String voucherCode = session.getAttribute(SettingKey.VOUCHERCODE) == null ? null
|
: (String) session.getAttribute(SettingKey.VOUCHERCODE);
|
double voucherCost = 0;
|
if (voucherCode != null) {
|
voucherCost = (Double) session.getAttribute(SettingKey.VOUCHERCOST);
|
}
|
String ret = null;
|
try {
|
DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request);
|
SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());// 切换数据源
|
SettingEntity settingEntity = settingIfc.getSettingEntity();
|
//取网店 shopcccode
|
ShopCcCodeEntity shopCcCodeEntity = ShopCcCode.getShopCcCode(settingEntity, request);
|
|
ret = cartIfc.getCartsHtml(userCode, sessionId, openId, cltCode, hostUrl, freeId, freeCost, freeName,
|
couponCode, couponCost, couponName, voucherCode, voucherCost, wxQueryString, shopCcCodeEntity.getShopCcCode(), request);
|
} catch (Exception e) {
|
e.printStackTrace();
|
errJson.addProperty("warning", e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
|
json.add("error", errJson);
|
this.printJson(response, json.toString());
|
return;
|
} finally {
|
SpObserver.setDBtoInstance();
|
}
|
|
this.print(response, ret);
|
|
return;
|
}
|
|
}
|