基于javaweb+mysql的ssm在线图书商城系统(java+ssm+freemarker+bootstrap+mysql+redis)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SSM在线图书商城系统(java+ssm+freemarker+bootstrap+mysql+redis)
项目介绍
本项目分为前后台,有管理员与用户两种角色; 管理员角色包含以下功能: 管理员登录,商品分类管理,商品管理,商品属性管理,商品参数管理,订单管理,退款管理,退货管理,会员等级管理,客户信息管理,评论管理,文章分类管理,公告管理,文章管理,滚动图片管理,广告管理,热门查询管理,查询订单销售,查询商品销售,用户管理,角色管理,资源管理,修改密码,区域管理,配送方式管理,查看系统设置,缓存管理,查询到货通知等功能。
用户角色包含以下功能: 用户登录,查看首页,查看商品详情,查看购物车,提交订单,修改个人信息,修改密码,查看我的订单,添加配送地址,查看收藏夹等功能。
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:Eclipse;注:本项目目前仅支持Eclipse,暂不支持IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 5.7版本; 6.是否Maven项目:否;
技术栈
- 后端:Spring+SpringMVC+Mbytes 2. 前端:Freemarker+css+javascript+bootstrap+jQuery
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用Eclipse导入项目,将项目中src目录下的conf.properties配置文件中的数据库配置改为自己的配置; 3. 运行项目,在浏览器中输入localhost:8080/ssm_zxbookshop 用户账号/密码: user/123456 管理员账号/密码:admin/admin
this.amountExchangeScore = amountExchangeScore;
}
}
}
package net.jeeshop.web.action.manage.system;
/**
* 后台用户管理
*
*/
@Controller
@RequestMapping("/manage/user")
public class UserAction extends BaseController<User> {
// toEdit2();
// return null;
// }
/**
* 设置订单为已归档
*
* @return
* @throws IOException
*/
// public String setFile() throws IOException{
// if(StringUtils.isBlank(e.getId())){
// throw new NullPointerException();
// }
//
// Order order = new Order();
// order.setStatus(Order.order_status_file);
// order.setId(e.getId());
// orderService.update(order);
//
// insertOrderlog(e.getId(),"【已归档】");
//
// toEdit2();
// return null;
// }
/**
* 修改订单的各种状态
*
* @return
* @throws Exception
*/
// @Deprecated
// public String changeOrderStatus() throws Exception {
// logger.error(">>>changeOrderStatus...");
String aaa = getRequest().getParameter("aaa");
log.error(">>>changeOrderStatus...aaa="+this.aaa);
// return null;
// }
/**
* 后台修改订单总金额
*
* @return
* @throws Exception
*/
@RequestMapping(value = "updatePayMonery", method = RequestMethod.POST)
public String updatePayMonery(ModelMap model, Order e) throws Exception {
checkStatus1(e);
}
@Override
@RequestMapping(value = "toEdit")
public String toEdit(@ModelAttribute("e")SystemSetting e, ModelMap model) throws Exception {
// super.toEdit(e, model);
e = getService().selectOne(e);
//分解图集,以便页面显示
if(StringUtils.isNotBlank(e.getImages())){
if(e.getImagesList()==null){
e.setImagesList(new LinkedList<String>());
}else{
e.getImagesList().clear();
}
String[] imageArr = e.getImages().split(ManageContainer.product_images_spider);
for(int i=0;i<imageArr.length;i++){
e.getImagesList().add(imageArr[i]);
}
}
// logger.error(">>e.getBelieveLoginConfig() = " + e.getBelieveLoginConfig());
//分解信任登陆配置信息
// if(StringUtils.isNotBlank(e.getBelieveLoginConfig())){
// e.setBelieveLoginInfo(JSON.parseObject(e.getBelieveLoginConfig(), BelieveLoginInfo.class));
// logger.error(">>believeLoginInfo = " + e.getBelieveLoginInfo().toString());
// }
model.addAttribute("e", e);
return page_toEdit;
}
/**
* 例如:http://127.0.0.1:8082/myshop/upload/1.jpg;http://127.0.0.1:8082/myshop/upload/2.jpg;
* 获取产品图片路径,注意,这个应该都是相对路径,因为图片有可能会放到专门的图片服务器上。
* @return
*/
private String getImagesPath(String appendImgs, SystemSetting e){
logger.error("e.images = "+e.getImages());
Set<String> imagesSet = new HashSet<String>();
//添加库里面查询出的图片
if(StringUtils.isNotBlank(appendImgs)){
String[] images2 = appendImgs.split(ManageContainer.product_images_spider);
for(int i=0;i<images2.length;i++){
if(StringUtils.isNotBlank(images2[i])){
imagesSet.add(images2[i].trim());
}
}
}
return -1;
} else {
return 0;
}
}
}
}
public class TypeComparator implements Comparator {
public int compare(Object a, Object b) {
Hashtable hashA = (Hashtable) a;
Hashtable hashB = (Hashtable) b;
if (((Boolean) hashA.get("is_dir")) && !((Boolean) hashB.get("is_dir"))) {
return -1;
} else if (!((Boolean) hashA.get("is_dir")) && ((Boolean) hashB.get("is_dir"))) {
return 1;
} else {
return ((String) hashA.get("filetype")).compareTo((String) hashB.get("filetype"));
}
}
}
}
package net.jeeshop.web.action.manage.catalog;
}
/**
* 退订或取消指定的订单
* @return
* @throws Exception
*/
@RequestMapping("shouhuo")
public String shouhuo(String id,HttpServletRequest request, @ModelAttribute("e") Order e, ModelMap model) throws Exception {
Order order = orderService.selectById(id);
order.setStatus("ok");
orderService.update(order);
int offset = 0;//分页偏移量
if (request.getParameter("pager.offset") != null) {
offset = Integer.parseInt(request.getParameter("pager.offset"));
}
if (offset < 0)
offset = 0;
e.setOffset(offset);
PagerModel pager = getService().selectPageList(e);
if (pager == null) {
pager = new PagerModel();
}
// 计算总页数
pager.setPagerSize((pager.getTotal() + pager.getPageSize() - 1)
/ pager.getPageSize());
pager.setPagerUrl("myCarts");
model.addAttribute("pager", pager);
return "redirect:/account/orders";
}
/**
* 退订或取消指定的订单
* @return
* @throws Exception
*/
@RequestMapping("cancel")
public String cancel() throws Exception {
return "";
}
String jsonError = JSON.toJSONString(new StockErrorProduct(productID,"活动已结束!"));
logger.error("jsonError="+jsonError);
return (jsonError);//活动已结束!
}
//检查是否符合此活动的会员等级范围
Account acc = getLoginAccount();
if(acc==null){
String jsonError = JSON.toJSONString(new StockErrorProduct(productID,"此商品为促销活动的商品,请先登陆才能购买!!"));
logger.error("jsonError="+jsonError);
return (jsonError);
}
logger.error("acc.getRank() = " + acc.getRank());
logger.error("activity.getAccountRange() = " + activity.getAccountRange());
if(activity.getAccountRange().indexOf(acc.getRank()) < 0){
String jsonError = JSON.toJSONString(new StockErrorProduct(productID,"您的会员等级不在此活动的购买范围内!"));
logger.error("jsonError="+jsonError);
return (jsonError);
}
//计算活动商品的最终结算价
product.setNowPrice(product.caclFinalPrice());
//判断如果是积分商品,则计算所需的积分
if(activity.getActivityType().equals(Activity.activity_activityType_j)){
product.setExchangeScore(activity.getExchangeScore());
}
}
product.setBuyCount(buyCount);
/**
* 加载指定商品的规格信息
*/
if(StringUtils.isNotBlank(buySpecID)){
Spec spec = specService.selectById(buySpecID);
if(spec==null){
throw new NullPointerException("根据指定的规格"+buySpecID+"查询不到任何数据!");
}
product.setBuySpecInfo(spec);
//减少以后的逻辑判断,规格的价格等同于商品的价格
product.setNowPrice(spec.getSpecPrice());
}
if(product.getExchangeScore()==0){
product.setTotal0(df.format(product.getBuyCount() * Double.valueOf(product.getNowPrice())));
}else{
* @param content
* 请求的参数 格式为:name=xxx&pwd=xxx
* @param encoding
* 服务器端请求编码。如GBK,UTF-8等
* @return
* @throws UnsupportedEncodingException
*/
public static String getAddresses(String content, String encodingString)
throws UnsupportedEncodingException {
// 这里调用pconline的接口
String urlStr = "http://ip.taobao.com/service/getIpInfo.php";
// 从http://whois.pconline.com.cn取得IP所在的省市区信息
String returnStr = getResult(urlStr, content, encodingString);
if (returnStr != null) {
// 处理返回的省市区信息
System.out.println(returnStr);
String[] temp = returnStr.split(",");
// for(int i=0;i<temp.length;i++){
// System.out.println(">>>"+temp[i]);
// }
if (temp.length < 3) {
return "0";// 无效IP,局域网测试
}
String region = (temp[5].split(":"))[1].replaceAll("\"", "");
String city = (temp[7].split(":"))[1].replaceAll("\"", "");
String isp = (temp[11].split(":"))[1].replaceAll("\"", "");
region = decodeUnicode(region);// 省份
city = decodeUnicode(city);// 省份
isp = decodeUnicode(isp);// 省份
// System.out.println("region="+region);
// System.out.println("city="+city);
// System.out.println("isp="+isp);
/**
* String country = ""; String area = ""; String region = ""; String
* city = ""; String county = ""; String isp = ""; for(int
* i=0;i<temp.length;i++){ switch(i){ case 1:country =
* (temp[i].split(":"))[2].replaceAll("\"", ""); country =
* decodeUnicode(country);//国家 break; case 3:area =
* (temp[i].split(":"))[1].replaceAll("\"", ""); area =
* decodeUnicode(area);//地区 break; case 5:region =
* (temp[i].split(":"))[1].replaceAll("\"", ""); region =
* decodeUnicode(region);//省份 break; case 7:city =
* (temp[i].split(":"))[1].replaceAll("\"", ""); city =
* decodeUnicode(city);//市区 break; case 9:county =
* (temp[i].split(":"))[1].replaceAll("\"", ""); county =
* decodeUnicode(county);//地区 break; case 11:isp =
* (temp[i].split(":"))[1].replaceAll("\"", ""); isp =
* decodeUnicode(isp);//ISP公司 break; } }
*/
// System.out.println(country+"="+area+"="+region+"="+city+"="+county+"="+isp);
return region + city + "[" + isp+"]";
}
return null;
}
}
//加载配送信息
Address add = new Address();
add.setAccount(acc.getAccount());
List<Address> addressList = addressService.selectList(add);
cartInfo.setAddressList(addressList);
if(addressList!=null && addressList.size()>0){
// boolean exist = false;
for(int i=0;i<addressList.size();i++){
Address addItem = addressList.get(i);
if(StringUtils.isNotBlank(addItem.getIsdefault()) && addItem.getIsdefault().equals("y")){
cartInfo.setDefaultAddessID(addItem.getId());
break;
}
}
}
model.addAttribute("myCart", cartInfo);
model.addAttribute("expressList", SystemManager.getInstance().getExpressMap().values());
return "confirmOrder";
}
/**
* 支付成功后,回调请求跳转到的页面
* @return
*/
@RequestMapping("paySuccess")
public String paySuccess(){
logger.info("paySuccess...");
return "paySuccess";
}
}
package net.jeeshop.core.front;
SystemSetting systemSetting = SystemManager.getInstance().getSystemSetting();
//文件保存目录路径
String savePath = SystemManager.getInstance().getProperty("file.upload.path");
//文件保存目录URL
String saveUrl = systemSetting.getImageRootPath();
//定义允许上传的文件扩展名
HashMap<String, String> extMap = new HashMap<String, String>();
extMap.put("image", "gif,jpg,jpeg,png,bmp");
extMap.put("flash", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");
extMap.put("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");
extMap.put("file", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2");
//最大文件大小
long maxSize = 1000000;
session.setAttribute("ajax_upload", 1);
//检查目录
File uploadDir = new File(savePath);
if (!uploadDir.isDirectory()) {
return (getError("上传目录不存在。"));
}
//检查目录写权限
if (!uploadDir.canWrite()) {
return (getError("上传目录没有写权限。"));
}
String dirName = dir == null ? "image" : dir.trim().toLowerCase();
if (!extMap.containsKey(dirName)) {
return (getError("目录名不正确。"));
}
//创建文件夹
savePath += dirName + "/";
saveUrl += dirName + "/";
File saveDirFile = new File(savePath);
if (!saveDirFile.exists()) {
saveDirFile.mkdirs();
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String ymd = sdf.format(new Date());
savePath += ymd + "/";
saveUrl += ymd + "/";
File dirFile = new File(savePath);
if (!dirFile.exists()) {
// }
/**
* 获取新闻列表
* @return
* @throws Exception
*/
@RequestMapping("newsList")
public String newsList(ModelMap model, @ModelAttribute("e")News news) throws Exception{
News newsInfo = new News();
newsInfo.setType(News.news_type_notice);
model.addAttribute("pager", super.selectPageList(newsService, newsInfo));
return "newsList";
}
// /**
// * 获取新闻详情
// * @return
// */
// public String newsInfo() throws Exception{
// String id = getRequest().getParameter("id");
// String code = getRequest().getParameter("code");
// logger.error("ProductAction.newsInfo=== id="+id+",code="+code);
//
// if(StringUtils.isNotBlank(id)){
//
// logger.error("newsInfo id = "+id);
// if(StringUtils.isBlank(id)){
// throw new NullPointerException("id is null");
// }
//
// e.setNews(newsService.selectById(id));
//
// String url = "/jsp/notices/"+e.getId()+".jsp";
// logger.error("url = " + url);
// getRequest().setAttribute("newsInfoUrl",url);
//
// return "newsInfo";
//
if(e.getNews().getType().equals(News.news_type_help)){
return "help";
}else if(e.getNews().getType().equals(News.news_type_notice)){
return "newsInfo";
}
// }else if(StringUtils.isNotBlank(code)){
//
// logger.error("newsInfo code = "+code);
// if(StringUtils.isBlank(code)){
putCacheObject("expressMap", (Serializable)(expressMap));
}
/**
* 广告列表
* @return
*/
public Map<String, Advert> getAdvertMap() {
// return advertMap;
return getCacheObject("advertMap");
}
public void setAdvertMap(Map<String, Advert> advertMap) {
// this.advertMap = advertMap;
putCacheObject("advertMap", (Serializable)advertMap);
}
/**
* 后台发货页面物流公司列表
* @return
*/
public Map<String, String> getManageExpressMap() {
// return manageExpressMap;
Map<String,String> cachedMap = getCacheObject("manageExpressMap");
if(cachedMap != null){
return cachedMap;
}
return SystemManager.manageExpressMap;
}
public void setManageExpressMap(Map<String, String> manageExpressMap) {
putCacheObject("manageExpressMap", Lists.newArrayList(manageExpressMap));
}
/**
* 阿里云存储的配置信息
* @return
*/
public AliyunOSS getAliyunOSS() {
// return aliyunOSS;
return getCacheObject("aliyunOSS");
}
public void setAliyunOSS(AliyunOSS aliyunOSS) {
/**
* 查看购物车
* @return
*/
@RequestMapping("cart")
public String cart(ModelMap model){
logger.error("AccountAction.cart查看购物车...");
// Account acc = (Account) getSession().getAttribute(FrontContainer.USER_INFO);
// if (acc == null || StringUtils.isBlank(acc.getAccount())) {
// return "toLogin";
// }
List<Product> productList = new ArrayList<Product>();
CartInfo cartInfo = getMyCart();
if(cartInfo!=null){
productList = cartInfo.getProductList();
} else {
cartInfo = new CartInfo();
}
model.addAttribute("cartInfo", cartInfo);
model.addAttribute("productList", productList);
return "cart";
// String addCart = getRequest().getParameter("addCart");
// CartInfo cartInfo = (CartInfo) getSession().getAttribute(FrontContainer.myCart);
// if(cartInfo==null){
// cartInfo = new CartInfo();
// }
// getSession().setAttribute(FrontContainer.myCart,cartInfo);
// logger.error("===addCart="+(addCart!=null && addCart.equals("1")));
// if(addCart!=null && addCart.equals("1")){
// String productID = getE().getId();
// if(StringUtils.isEmpty(productID)){
// //查询购物车
// return "cart";
// }
//
// if(cartInfo==null){
// cartInfo = new CartInfo();
// getSession().setAttribute(FrontContainer.myCart, cartInfo);
// }
// int inputBuyNum = Integer.valueOf(getRequest().getParameter("inputBuyNum"));
// if(inputBuyNum<=0){
// throw new NullPointerException();
// }
// //检查指定的产品是否已购买到购物车,购买了则数量++,否则查询后添加到购物车
// boolean exists = false;
// for(int i=0;i<cartInfo.getProductList().size();i++){
// Product p = cartInfo.getProductList().get(i);
// if(p.getId().equals(productID)){
// p.setBuyCount(p.getBuyCount()+inputBuyNum);
// exists = true;
// }
if(StringUtils.isBlank(id)){
throw new NullPointerException("非法请求!");
}
CartInfo cartInfo = getMyCart();
if(cartInfo==null){
//会话超时,转到登陆页面
return page_toLoginRedirect;
}
for(Iterator<Product> it = cartInfo.getProductList().iterator();it.hasNext();){
Product p = it.next();
if(p.getId().equals(id)){
it.remove();
//重新计算总支付金额
// cartInfo.setAmount(cartInfo.totalCacl());
cartInfo.totalCacl();
break;
}
}
return "redirect:/cart/cart.html";
}
DecimalFormat df = new DecimalFormat("0.00");
/**
* 加入购物车,不对金额进行任何的运算。金额的运算在方法CartAction.notifyCart
* @return
* @throws IOException
*/
@RequestMapping("addToCart")
@ResponseBody
public String addToCart(ModelMap model) throws IOException{
// Account acc = (Account) getSession().getAttribute(FrontContainer.USER_INFO);
// if (acc == null || StringUtils.isBlank(acc.getAccount())) {
// super.write("1");//需要登录
// return null;
// }
logger.info("ProductAction.cart...");
HttpServletRequest request = RequestHolder.getRequest();
}
areaService.initAreaDataToDB(map);
frontCache.loadArea();
// frontCache.readJsonArea();
return "/manage/area/areaTree";
}
/**
* 加载省市区数据
*/
// private void loadArea(){
// logger.error("loadArea...");
// Area area = new Area();
// area.setPcode("0");
// List<Area> rootData = areaService.selectList(area);
// if(rootData==null){
// return ;
// }
//
// for(int i=0;i<rootData.size();i++){
// Area item = rootData.get(i);
// getAreaByDigui2(item);
// }
//
// Map<String, Area> map = new TreeMap<String, Area>();
// for(int i=0;i<rootData.size();i++){
// Area item = rootData.get(i);
// map.put(item.getCode(), item);
// }
// SystemManager.areaMap = map;
// logger.error("SystemManager.areaMap=="+SystemManager.areaMap);
// String json = JSON.toJSONString(map);
logger.error("json="+json);
// try {
//
// String path = FrontCache.class.getResource("/").getPath();
// logger.error("path = " + path);
// File file = new File(path + "__area.json");
//
Collections.sort(fileList, new TypeComparator());
} else {
Collections.sort(fileList, new NameComparator());
}
JSONObject result = new JSONObject();
result.put("moveup_dir_path", moveupDirPath);
result.put("current_dir_path", currentDirPath);
result.put("current_url", currentUrl);
result.put("total_count", fileList.size());
result.put("file_list", fileList);
logger.debug("json=" + result.toString());
return (result.toString());
}
public class NameComparator implements Comparator {
public int compare(Object a, Object b) {
Hashtable hashA = (Hashtable) a;
Hashtable hashB = (Hashtable) b;
if (((Boolean) hashA.get("is_dir")) && !((Boolean) hashB.get("is_dir"))) {
return -1;
} else if (!((Boolean) hashA.get("is_dir")) && ((Boolean) hashB.get("is_dir"))) {
return 1;
} else {
return ((String) hashA.get("filename")).compareTo((String) hashB.get("filename"));
}
}
}
public class SizeComparator implements Comparator {
public int compare(Object a, Object b) {
Hashtable hashA = (Hashtable) a;
Hashtable hashB = (Hashtable) b;
if (((Boolean) hashA.get("is_dir")) && !((Boolean) hashB.get("is_dir"))) {
return -1;
} else if (!((Boolean) hashA.get("is_dir")) && ((Boolean) hashB.get("is_dir"))) {
return 1;
} else {
if (((Long) hashA.get("filesize")) > ((Long) hashB.get("filesize"))) {
return 1;
} else if (((Long) hashA.get("filesize")) < ((Long) hashB.get("filesize"))) {
return -1;
} else {
return 0;
}
}
}
}
public class TypeComparator implements Comparator {
public int compare(Object a, Object b) {
*/
@Controller("frontOrderAction")
@RequestMapping("order")
public class OrderAction extends FrontBaseController<Order> {
private static final Logger logger = LoggerFactory.getLogger(OrderAction.class);
private static final long serialVersionUID = 1L;
@Autowired
private OrderService orderService;
@Autowired
private OrderdetailService orderdetailService;
@Autowired
private OrderpayService orderpayService;
@Autowired
private ProductService productService;
@Autowired
private CommentService commentService;
@Autowired
private OrdershipService ordershipService;
@Autowired
private AddressService addressService;
// private List<Order> myOrders;
// private Map<String, Order> orderMap;
private boolean is_test = false;//是否是测试状态
// private Product product;//用户进行评论时加载的商品信息
// private Comment comment;//用户是否进行过评价;如果此对象不为空,则用户进行过评价
//
// private String selectLeftMenu;//选中的个人中心的菜单项
@Override
public OrderService getService() {
return orderService;
}
public void setOrderService(OrderService orderService) {
this.orderService = orderService;
}
/**
* 订单确认页面,点击这个页面的确认支付按钮则会跳转到支付宝等的支付页面
*
* @return
*/
@RequestMapping("orderConfirm")
public String orderConfirm() {
connection.setDoInput(true);// 是否打开输入流true|false
connection.setRequestMethod("POST");// 提交方法POST|GET
connection.setUseCaches(false);// 是否缓存true|false
connection.connect();// 打开连接端口
DataOutputStream out = new DataOutputStream(
connection.getOutputStream());// 打开输出流往对端服务器写数据
out.writeBytes(content);// 写数据,也就是提交你的表单 name=xxx&pwd=xxx
out.flush();// 刷新
out.close();// 关闭输出流
BufferedReader reader = new BufferedReader(new InputStreamReader(
connection.getInputStream(), encoding));// 往对端写完数据对端服务器返回数据
// ,以BufferedReader流来读取
StringBuffer buffer = new StringBuffer();
String line = "";
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
reader.close();
return buffer.toString();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (connection != null) {
connection.disconnect();// 关闭连接
}
}
return null;
}
/**
* unicode 转换成 中文
*
* @param theString
* @return
*/
public static String decodeUnicode(String theString) {
char aChar;
int len = theString.length();
StringBuffer outBuffer = new StringBuffer(len);
for (int x = 0; x < len;) {
private boolean changeCatalog(Product e, boolean toAdd){
String chanageCatalog = RequestHolder.getRequest().getParameter("chanageCatalog");
if(toAdd){
chanageCatalog = "true";
}
if(StringUtils.isNotBlank(chanageCatalog)){
if(Boolean.valueOf(chanageCatalog)){
// getSession().setAttribute("insertOrUpdateMsg", "改变商品目录,已重新加载了商品的属性和参数。");
int catalog = Integer.valueOf(RequestHolder.getRequest().getParameter("catalog"));
logger.error("catalogID====="+catalog);
//删除该商品之前的目录对应的属性和参数
if(StringUtils.isNotBlank(e.getId())){
Attribute_link attrLink = new Attribute_link();
attrLink.setProductID(Integer.valueOf(e.getId()));
attribute_linkService.deleteByCondition(attrLink);
}
e.setCatalogID(String.valueOf(catalog));
//切换商品目录,则自动切换商品属性和参数
loadAttribute(e, catalog);
loadParameter(e, catalog);
return true;
}
}
return false;
}
/**
* 根据商品分类加载商品属性列表
* @catalogID 商品类别ID
*/
private void loadParameter(Product e, int catalogID) {
Attribute attr = new Attribute();
attr.setCatalogID(catalogID);
attr.setPid(-1);
attr = this.attributeService.selectOne(attr);//加载参数主属性,一个参数下包含多个子参数
if(attr!=null){
//加载每个属性下的子属性列表
int id = Integer.valueOf(attr.getId());
attr.clear();
attr.setPid(id);
// attr.setPid(0);
attr.setCatalogID(0);
//@@@
e.setParameterList(this.attributeService.selectList(attr));
}
//如果商品ID不存在,则不加载商品选中的参数列表
if(StringUtils.isBlank(e.getId())){
return;
}