基于javaweb+mysql的springboot仿天猫商城系统(java+jsp+springboot+ssm+mysql+maven)
运行环境
Java≥8、MySQL≥5.7
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SpringBoot仿天猫商城系统(java+jsp+springboot+ssm+mysql+maven)
一、项目介绍:
迷你天猫商城是一个基于SSM框架的综合性B2C电商平台,需求设计主要参考天猫商城的购物流程:用户从注册开始,到完成登录,浏览商品,加入购物车,进行下单,确认收货,评价等一系列操作。 作为模拟天猫商城系统的核心组成部分之一,采用SSM框架的天猫数据管理后台包含商品管理,订单管理,类别管理,用户管理和交易额统计等模块,实现了对整个商城的一站式管理和维护。
二、项目运行
环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)
项目技术: JSP + Springboot + SpringMVC + Spring +MyBatis + css + JavaScript + JQuery + Ajax + layui+ maven等等。
logger.info("共有{}条需要删除的产品属性数据", propertyDeleteList.length);
yn = propertyValueService.deleteList(propertyDeleteList);
if (yn) {
logger.info("产品属性删除成功!");
} else {
logger.warn("产品属性删除失败!事务回滚");
jsonObject.put("success", false);
throw new RuntimeException();
}
}
if (productSingleImageList != null && productSingleImageList.length > 0) {
logger.info("整合产品子信息-产品预览图片");
List<ProductImage> productImageList = new ArrayList<>(5);
for (String imageName : productSingleImageList) {
productImageList.add(new ProductImage()
.setProductImage_type((byte) 0)
.setProductImage_src(imageName.substring(imageName.lastIndexOf("/") + 1))
.setProductImage_product(product)
);
}
logger.info("共有{}条产品预览图片数据", productImageList.size());
yn = productImageService.addList(productImageList);
if (yn) {
logger.info("产品预览图片添加成功!");
} else {
logger.warn("产品预览图片添加失败!事务回滚");
jsonObject.put("success", false);
throw new RuntimeException();
}
}
if (productDetailsImageList != null && productDetailsImageList.length > 0) {
logger.info("整合产品子信息-产品详情图片");
List<ProductImage> productImageList = new ArrayList<>(5);
for (String imageName : productDetailsImageList) {
productImageList.add(new ProductImage()
.setProductImage_type((byte) 1)
.setProductImage_src(imageName.substring(imageName.lastIndexOf("/") + 1))
.setProductImage_product(product)
);
}
logger.info("共有{}条产品详情图片数据", productImageList.size());
yn = productImageService.addList(productImageList);
if (yn) {
logger.info("产品详情图片添加成功!");
} else {
logger.warn("产品详情图片添加失败!事务回滚");
jsonObject.put("success", false);
} else {
for (ProductOrderItem productOrderItem : order.getProductOrderItemList()) {
orderTotalPrice += productOrderItem.getProductOrderItem_price();
}
}
logger.info("总共支付金额为:{}元", orderTotalPrice);
logger.info("更新订单信息");
ProductOrder productOrder = new ProductOrder()
.setProductOrder_id(order.getProductOrder_id())
.setProductOrder_pay_date(new Date())
.setProductOrder_status((byte) 1);
boolean yn = productOrderService.update(productOrder);
if (yn) {
object.put("success", true);
object.put("url", "/order/pay/success/" + order_code);
} else {
object.put("success", false);
object.put("url", "/order/0/10");
}
return object.toJSONString();
}
//更新订单信息为已发货,待确认-ajax
@RequestMapping(value = "order/delivery/{order_code}", method = RequestMethod.GET)
public String orderDelivery(HttpSession session, @PathVariable("order_code") String order_code) {
logger.info("检查用户是否登录");
Object userId = checkUser(session);
if (userId == null) {
return "redirect:/order/0/10";
}
logger.info("------验证订单信息------");
logger.info("查询订单是否存在");
ProductOrder order = productOrderService.getByCode(order_code);
if (order == null) {
logger.warn("订单不存在,返回订单列表页");
return "redirect:/order/0/10";
}
logger.info("验证订单状态");
if (order.getProductOrder_status() != 1) {
logger.warn("订单状态不正确,返回订单列表页");
return "redirect:/order/0/10";
/**
* 前台天猫-主页
*/
@Controller
public class ForeHomeController extends BaseController {
@Autowired
private UserService userService;
@Autowired
private CategoryService categoryService;
@Autowired
private ProductService productService;
@Autowired
private ProductImageService productImageService;
//转到前台天猫-主页
@RequestMapping(value = "/", method = RequestMethod.GET)
public String goToPage(HttpSession session, Map<String, Object> map) {
logger.info("检查用户是否登录");
Object userId = checkUser(session);
if (userId != null) {
logger.info("获取用户信息");
User user = userService.get(Integer.parseInt(userId.toString()));
map.put("user", user);
}
logger.info("获取产品分类列表");
List<Category> categoryList = categoryService.getList(null, null);
logger.info("获取每个分类下的产品列表");
for (Category category : categoryList) {
logger.info("获取分类id为{}的产品集合,按产品ID倒序排序", category.getCategory_id());
List<Product> productList = productService.getList(new Product().setProduct_category(category), new Byte[]{0, 2}, new OrderUtil("product_id", true), new PageUtil(0, 8));
if (productList != null) {
for (Product product : productList) {
Integer product_id = product.getProduct_id();
logger.info("获取产品id为{}的产品预览图片信息", product_id);
product.setSingleProductImageList(productImageService.getList(product_id, (byte) 0, new PageUtil(0, 1)));
}
}
category.setProductList(productList);
return "redirect:/login";
}
logger.info("创建用户对象");
if (user_profile_picture_src != null && "".equals(user_profile_picture_src)) {
user_profile_picture_src = null;
}
User userUpdate = new User()
.setUser_id(Integer.parseInt(userId.toString()))
.setUser_nickname(new String(user_nickname.getBytes("ISO8859-1"),"UTF-8"))
.setUser_realname(new String(user_realname.getBytes("ISO8859-1"),"UTF-8"))
.setUser_gender(Byte.valueOf(user_gender))
.setUser_birthday(new SimpleDateFormat("yyyy-MM-dd").parse(user_birthday))
.setUser_address(new Address().setAddress_areaId(user_address))
.setUser_profile_picture_src(user_profile_picture_src)
.setUser_password(user_password);
logger.info("执行修改");
if (userService.update(userUpdate)){
logger.info("修改成功!跳转到用户详情页面");
return "redirect:/userDetails";
}
throw new RuntimeException();
}
}
/**
* 后台管理-账户页
*/
@Controller
public class AccountController extends BaseController{
@Autowired
private AdminService adminService;
String searchValue = null;
Integer searchType = null;
if (category_id != null) {
product.setProduct_category(new Category().setCategory_id(category_id));
searchType = category_id;
}
if (product_name != null) {
product.setProduct_name(product_name);
}
if (orderBy != null) {
logger.info("根据{}排序,是否倒序:{}", orderBy, isDesc);
orderUtil = new OrderUtil(orderBy, isDesc);
}
//关键词数组
String[] product_name_split = null;
//产品列表
List<Product> productList;
//产品总数量
Integer productCount;
//分页工具
PageUtil pageUtil = new PageUtil(0, 20);
if (product_name != null) {
product_name = new String(product_name.getBytes("ISO8859-1"), "UTF-8");
product_name_split = product_name.split(" ");
logger.warn("提取的关键词有{}", Arrays.toString(product_name_split));
product.setProduct_name(product_name);
searchValue = product_name;
}
if (product_name_split != null && product_name_split.length > 1) {
logger.info("获取组合商品列表");
productList = productService.getMoreList(product, new Byte[]{0, 2}, orderUtil, pageUtil, product_name_split);
logger.info("按组合条件获取产品总数量");
productCount = productService.getMoreListTotal(product, new Byte[]{0, 2}, product_name_split);
} else {
logger.info("获取商品列表");
productList = productService.getList(product, new Byte[]{0, 2}, orderUtil, pageUtil);
logger.info("按条件获取产品总数量");
productCount = productService.getTotal(product, new Byte[]{0, 2});
}
logger.info("获取商品列表的对应信息");
for (Product p : productList) {
p.setSingleProductImageList(productImageService.getList(p.getProduct_id(), (byte) 0, null));
p.setProduct_sale_count(productOrderItemService.getSaleCountByProductId(p.getProduct_id()));
p.setProduct_review_count(reviewService.getTotalByProductId(p.getProduct_id()));
p.setProduct_category(categoryService.get(p.getProduct_category().getCategory_id()));
}
logger.info("获取分类列表");
List<Category> categoryList = categoryService.getList(null, new PageUtil(0, 5));
logger.info("获取分页信息");
pageUtil.setTotal(productCount);
map.put("productCount", productCount);
map.put("productOrderCount", productOrderCount);
logger.info("获取分页信息");
pageUtil.setTotal(productOrderCount);
map.put("pageUtil", pageUtil);
logger.info("转到后台管理-订单页-ajax方式");
return "admin/orderManagePage";
}
//转到后台管理-订单详情页-ajax
@RequestMapping(value = "admin/order/{oid}", method = RequestMethod.GET)
public String goToDetailsPage(HttpSession session, Map<String, Object> map, @PathVariable Integer oid/* 订单ID */) {
logger.info("检查管理员权限");
Object adminId = checkAdmin(session);
if(adminId == null){
return "admin/include/loginMessage";
}
logger.info("获取order_id为{}的订单信息",oid);
ProductOrder order = productOrderService.get(oid);
logger.info("获取订单详情-地址信息");
Address address = addressService.get(order.getProductOrder_address().getAddress_areaId());
Stack<String> addressStack = new Stack<>();
//详细地址
addressStack.push(order.getProductOrder_detail_address());
//最后一级地址
addressStack.push(address.getAddress_name() + " ");
//如果不是第一级地址
while (!address.getAddress_areaId().equals(address.getAddress_regionId().getAddress_areaId())) {
address = addressService.get(address.getAddress_regionId().getAddress_areaId());
addressStack.push(address.getAddress_name() + " ");
}
StringBuilder builder = new StringBuilder();
while (!addressStack.empty()) {
builder.append(addressStack.pop());
}
logger.warn("订单地址字符串:{}", builder);
order.setProductOrder_detail_address(builder.toString());
logger.info("获取订单详情-用户信息");
order.setProductOrder_user(userService.get(order.getProductOrder_user().getUser_id()));
logger.info("获取订单详情-订单项信息");
List<ProductOrderItem> productOrderItemList = productOrderItemService.getListByOrderId(oid, null);
if (productOrderItemList != null) {
logger.info("获取订单详情-订单项对应的产品信息");
for (ProductOrderItem productOrderItem : productOrderItemList) {
Integer productId = productOrderItem.getProductOrderItem_product().getProduct_id();
logger.warn("获取产品ID为{}的产品信息", productId);
Product product = productService.get(productId);
//转到前台天猫-订单确认页
@RequestMapping(value = "order/confirm/{order_code}", method = RequestMethod.GET)
public String goToOrderConfirmPage(Map<String, Object> map, HttpSession session,
@PathVariable("order_code") String order_code) {
logger.info("检查用户是否登录");
Object userId = checkUser(session);
User user;
if (userId != null) {
logger.info("获取用户信息");
user = userService.get(Integer.parseInt(userId.toString()));
map.put("user", user);
} else {
return "redirect:/login";
}
logger.info("------验证订单信息------");
logger.info("查询订单是否存在");
ProductOrder order = productOrderService.getByCode(order_code);
if (order == null) {
logger.warn("订单不存在,返回订单列表页");
return "redirect:/order/0/10";
}
logger.info("验证订单状态");
if (order.getProductOrder_status() != 2) {
logger.warn("订单状态不正确,返回订单列表页");
return "redirect:/order/0/10";
}
logger.info("验证用户与订单是否一致");
if (order.getProductOrder_user().getUser_id() != Integer.parseInt(userId.toString())) {
logger.warn("用户与订单信息不一致,返回订单列表页");
return "redirect:/order/0/10";
}
order.setProductOrderItemList(productOrderItemService.getListByOrderId(order.getProductOrder_id(), null));
double orderTotalPrice = 0.00;
if (order.getProductOrderItemList().size() == 1) {
logger.info("获取单订单项的产品信息");
ProductOrderItem productOrderItem = order.getProductOrderItemList().get(0);
Integer product_id = productOrderItem.getProductOrderItem_product().getProduct_id();
Product product = productService.get(product_id);
product.setSingleProductImageList(productImageService.getList(product_id, (byte) 0, new PageUtil(0, 1)));
productOrderItem.setProductOrderItem_product(product);
}
}
if (propertyDeleteList != null && propertyDeleteList.length > 0) {
logger.info("整合产品子信息-需要删除的产品属性");
logger.info("共有{}条需要删除的产品属性数据", propertyDeleteList.length);
yn = propertyValueService.deleteList(propertyDeleteList);
if (yn) {
logger.info("产品属性删除成功!");
} else {
logger.warn("产品属性删除失败!事务回滚");
jsonObject.put("success", false);
throw new RuntimeException();
}
}
if (productSingleImageList != null && productSingleImageList.length > 0) {
logger.info("整合产品子信息-产品预览图片");
List<ProductImage> productImageList = new ArrayList<>(5);
for (String imageName : productSingleImageList) {
productImageList.add(new ProductImage()
.setProductImage_type((byte) 0)
.setProductImage_src(imageName.substring(imageName.lastIndexOf("/") + 1))
.setProductImage_product(product)
);
}
logger.info("共有{}条产品预览图片数据", productImageList.size());
yn = productImageService.addList(productImageList);
if (yn) {
logger.info("产品预览图片添加成功!");
} else {
logger.warn("产品预览图片添加失败!事务回滚");
jsonObject.put("success", false);
throw new RuntimeException();
}
}
if (productDetailsImageList != null && productDetailsImageList.length > 0) {
logger.info("整合产品子信息-产品详情图片");
List<ProductImage> productImageList = new ArrayList<>(5);
for (String imageName : productDetailsImageList) {
productImageList.add(new ProductImage()
.setProductImage_type((byte) 1)
.setProductImage_src(imageName.substring(imageName.lastIndexOf("/") + 1))
.setProductImage_product(product)
);
}
logger.info("共有{}条产品详情图片数据", productImageList.size());
yn = productImageService.addList(productImageList);
if (yn) {
logger.info("产品详情图片添加成功!");
} else {
logger.warn("产品详情图片添加失败!事务回滚");
.setProduct_name(product_name)
.setProduct_title(product_title)
.setProduct_category(new Category().setCategory_id(product_category_id))
.setProduct_sale_price(product_sale_price)
.setProduct_price(product_price)
.setProduct_isEnabled(product_isEnabled)
.setProduct_create_date(new Date());
logger.info("添加产品信息");
boolean yn = productService.add(product);
if (!yn) {
logger.warn("产品添加失败!事务回滚");
jsonObject.put("success", false);
throw new RuntimeException();
}
int product_id = lastIDService.selectLastID();
logger.info("添加成功!,新增产品的ID值为:{}", product_id);
JSONObject object = JSON.parseObject(propertyJson);
Set<String> propertyIdSet = object.keySet();
if (propertyIdSet.size() > 0) {
logger.info("整合产品子信息-产品属性");
List<PropertyValue> propertyValueList = new ArrayList<>(5);
for (String key : propertyIdSet) {
String value = object.getString(key);
PropertyValue propertyValue = new PropertyValue()
.setPropertyValue_value(value)
.setPropertyValue_property(new Property().setProperty_id(Integer.valueOf(key)))
.setPropertyValue_product(new Product().setProduct_id(product_id));
propertyValueList.add(propertyValue);
}
logger.info("共有{}条产品属性数据", propertyValueList.size());
yn = propertyValueService.addList(propertyValueList);
if (yn) {
logger.info("产品属性添加成功!");
} else {
logger.warn("产品属性添加失败!事务回滚");
jsonObject.put("success", false);
throw new RuntimeException();
}
}
if (productSingleImageList != null && productSingleImageList.length > 0) {
@Controller
public class ForeOrderController extends BaseController {
@Autowired
private ProductService productService;
@Autowired
private UserService userService;
@Autowired
private ProductOrderItemService productOrderItemService;
@Autowired
private AddressService addressService;
@Autowired
private CategoryService categoryService;
@Autowired
private ProductImageService productImageService;
@Autowired
private ProductOrderService productOrderService;
@Autowired
private ReviewService reviewService;
@Autowired
private LastIDService lastIDService;
//转到前台天猫-订单列表页
@RequestMapping(value = "order", method = RequestMethod.GET)
public String goToPageSimple() {
return "redirect:/order/0/10";
}
@RequestMapping(value = "order/{index}/{count}", method = RequestMethod.GET)
public String goToPage(HttpSession session, Map<String, Object> map,
@RequestParam(required = false) Byte status,
@PathVariable("index") Integer index/* 页数 */,
@PathVariable("count") Integer count/* 行数*/) {
logger.info("检查用户是否登录");
logger.info("获取产品详情-属性值信息");
List<PropertyValue> propertyValueList = propertyValueService.getList(new PropertyValue().setPropertyValue_product(product),null);
logger.info("获取产品详情-分类信息对应的属性列表");
List<Property> propertyList = propertyService.getList(new Property().setProperty_category(product.getProduct_category()),null);
logger.info("属性列表和属性值列表合并");
for(Property property : propertyList){
for(PropertyValue propertyValue : propertyValueList){
if(property.getProperty_id().equals(propertyValue.getPropertyValue_property().getProperty_id())){
List<PropertyValue> property_value_item = new ArrayList<>(1);
property_value_item.add(propertyValue);
property.setPropertyValueList(property_value_item);
break;
}
}
}
map.put("propertyList",propertyList);
logger.info("获取分类列表");
List<Category> categoryList = categoryService.getList(null,null);
map.put("categoryList",categoryList);
logger.info("转到后台管理-产品详情页-ajax方式");
return "admin/include/productDetails";
}
//转到后台管理-产品添加页-ajax
@RequestMapping(value = "admin/product/new",method = RequestMethod.GET)
public String goToAddPage(HttpSession session,Map<String, Object> map){
logger.info("检查管理员权限");
Object adminId = checkAdmin(session);
if(adminId == null){
return "admin/include/loginMessage";
}
logger.info("获取分类列表");
List<Category> categoryList = categoryService.getList(null,null);
map.put("categoryList",categoryList);
logger.info("获取第一个分类信息对应的属性列表");
List<Property> propertyList = propertyService.getList(new Property().setProperty_category(categoryList.get(0)),null);
map.put("propertyList",propertyList);
logger.info("转到后台管理-产品添加页-ajax方式");
return "admin/include/productDetails";
}
//添加产品信息-ajax.
@ResponseBody
@RequestMapping(value = "admin/product", method = RequestMethod.POST,produces = "application/json;charset=utf-8")
if (yn) {
int category_id = lastIDService.selectLastID();
logger.info("添加成功!,新增分类的ID值为:{}", category_id);
jsonObject.put("success", true);
jsonObject.put("category_id", category_id);
} else {
jsonObject.put("success", false);
logger.warn("添加失败!事务回滚");
throw new RuntimeException();
}
return jsonObject.toJSONString();
}
//更新分类信息-ajax
@ResponseBody
@RequestMapping(value = "admin/category/{category_id}", method = RequestMethod.PUT, produces = "application/json;charset=utf-8")
public String updateCategory(@RequestParam String category_name/* 分类名称 */,
@RequestParam String category_image_src/* 分类图片路径 */,
@PathVariable("category_id") Integer category_id/* 分类ID */) {
JSONObject jsonObject = new JSONObject();
logger.info("整合分类信息");
Category category = new Category()
.setCategory_id(category_id)
.setCategory_name(category_name)
.setCategory_image_src(category_image_src.substring(category_image_src.lastIndexOf("/") + 1));
logger.info("更新分类信息,分类ID值为:{}", category_id);
boolean yn = categoryService.update(category);
if (yn) {
logger.info("更新成功!");
jsonObject.put("success", true);
jsonObject.put("category_id", category_id);
} else {
jsonObject.put("success", false);
logger.info("更新失败!事务回滚");
throw new RuntimeException();
}
return jsonObject.toJSONString();
}
//按条件查询分类-ajax
@ResponseBody
@RequestMapping(value = "admin/category/{index}/{count}", method = RequestMethod.GET, produces = "application/json;charset=utf-8")
public String getCategoryBySearch(@RequestParam(required = false) String category_name/* 分类名称 */,
@PathVariable Integer index/* 页数 */,
@PathVariable Integer count/* 行数 */) throws UnsupportedEncodingException {
//移除不必要条件
Object adminId = checkAdmin(session);
if(adminId == null){
return "admin/include/loginMessage";
}
logger.info("获取前10条订单列表");
PageUtil pageUtil = new PageUtil(0, 10);
List<ProductOrder> productOrderList = productOrderService.getList(null, null, new OrderUtil("productOrder_id", true), pageUtil);
map.put("productOrderList",productOrderList);
logger.info("获取订单总数量");
Integer productOrderCount = productOrderService.getTotal(null, null);
map.put("productOrderCount", productOrderCount);
logger.info("获取分页信息");
pageUtil.setTotal(productOrderCount);
map.put("pageUtil", pageUtil);
logger.info("转到后台管理-订单页-ajax方式");
return "admin/orderManagePage";
}
//转到后台管理-订单详情页-ajax
@RequestMapping(value = "admin/order/{oid}", method = RequestMethod.GET)
public String goToDetailsPage(HttpSession session, Map<String, Object> map, @PathVariable Integer oid/* 订单ID */) {
logger.info("检查管理员权限");
Object adminId = checkAdmin(session);
if(adminId == null){
return "admin/include/loginMessage";
}
logger.info("获取order_id为{}的订单信息",oid);
ProductOrder order = productOrderService.get(oid);
logger.info("获取订单详情-地址信息");
Address address = addressService.get(order.getProductOrder_address().getAddress_areaId());
Stack<String> addressStack = new Stack<>();
//详细地址
addressStack.push(order.getProductOrder_detail_address());
//最后一级地址
addressStack.push(address.getAddress_name() + " ");
//如果不是第一级地址
while (!address.getAddress_areaId().equals(address.getAddress_regionId().getAddress_areaId())) {
address = addressService.get(address.getAddress_regionId().getAddress_areaId());
addressStack.push(address.getAddress_name() + " ");
}
StringBuilder builder = new StringBuilder();
while (!addressStack.empty()) {
builder.append(addressStack.pop());
}
productOrderItem.setProductOrderItem_user(new User().setUser_id(Integer.valueOf(userId.toString())));
String addressId = "110000";
String cityAddressId = "110100";
String districtAddressId = "110101";
String detailsAddress = null;
String order_post = null;
String order_receiver = null;
String order_phone = null;
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
String cookieName = cookie.getName();
String cookieValue = cookie.getValue();
switch (cookieName) {
case "addressId":
addressId = cookieValue;
break;
case "cityAddressId":
cityAddressId = cookieValue;
break;
case "districtAddressId":
districtAddressId = cookieValue;
break;
case "order_post":
order_post = URLDecoder.decode(cookieValue, "UTF-8");
break;
case "order_receiver":
order_receiver = URLDecoder.decode(cookieValue, "UTF-8");
break;
case "order_phone":
order_phone = URLDecoder.decode(cookieValue, "UTF-8");
break;
case "detailsAddress":
detailsAddress = URLDecoder.decode(cookieValue, "UTF-8");
break;
}
}
}
logger.info("获取省份信息");
List<Address> addressList = addressService.getRoot();
logger.info("获取addressId为{}的市级地址信息", addressId);
List<Address> cityAddress = addressService.getList(null, addressId);
logger.info("获取cityAddressId为{}的区级地址信息", cityAddressId);
List<Address> districtAddress = addressService.getList(null, cityAddressId);
if (orderItem.getProductOrderItem_order() == null) {
logger.warn("订单项状态有误,返回订单页");
return "redirect:/order/0/10";
}
ProductOrder order = productOrderService.get(orderItem.getProductOrderItem_order().getProductOrder_id());
if (order == null || order.getProductOrder_status() != 3) {
logger.warn("订单项状态有误,返回订单页");
return "redirect:/order/0/10";
}
if (reviewService.getTotalByOrderItemId(orderItem_id) > 0) {
logger.warn("订单项所属商品已被评价,返回订单页");
return "redirect:/order/0/10";
}
logger.info("获取订单项所属产品信息和产品评论信息");
Product product = productService.get(orderItem.getProductOrderItem_product().getProduct_id());
product.setProduct_review_count(reviewService.getTotalByProductId(product.getProduct_id()));
product.setSingleProductImageList(productImageService.getList(product.getProduct_id(), (byte) 0, new PageUtil(0, 1)));
orderItem.setProductOrderItem_product(product);
map.put("orderItem", orderItem);
logger.info("转到前台天猫-评论添加页");
return "fore/addReview";
}
//添加一条评论
@RequestMapping(value = "review", method = RequestMethod.POST)
public String addReview(HttpSession session, Map<String, Object> map,
@RequestParam Integer orderItem_id,
@RequestParam String review_content) throws UnsupportedEncodingException {
logger.info("检查用户是否登录");
Object userId = checkUser(session);
User user;
if (userId != null) {
logger.info("获取用户信息");
user = userService.get(Integer.parseInt(userId.toString()));
map.put("user", user);
} else {
return "redirect:/login";
}
logger.info("获取订单项信息");
ProductOrderItem orderItem = productOrderItemService.get(orderItem_id);
if (orderItem == null) {
logger.warn("订单项不存在,返回订单页");
return "redirect:/order/0/10";
}
if (!orderItem.getProductOrderItem_user().getUser_id().equals(userId)) {
logger.warn("订单项与用户不匹配,返回订单页");
@RequestParam Integer count/* 行数 */) {
logger.info("获取产品ID");
Integer product_id = Integer.parseInt(pid);
logger.info("获取产品评论列表");
List<Review> reviewList = reviewService.getListByProductId(product_id, new PageUtil(index, count));
JSONObject jsonObject = new JSONObject();
jsonObject.put("reviewList", JSONArray.parseArray(JSON.toJSONString(reviewList)));
return jsonObject.toJSONString();
}
//按产品ID加载产品属性列表-ajax
@Deprecated
@ResponseBody
@RequestMapping(value = "property/{pid}", method = RequestMethod.GET, produces = "application/json;charset=utf-8")
public String loadProductPropertyList(@PathVariable("pid") String pid/*产品ID*/) {
logger.info("获取产品ID");
Integer product_id = Integer.parseInt(pid);
logger.info("获取产品详情-属性值信息");
Product product = new Product();
product.setProduct_id(product_id);
List<PropertyValue> propertyValueList = propertyValueService.getList(new PropertyValue().setPropertyValue_product(product), null);
logger.info("获取产品详情-分类信息对应的属性列表");
List<Property> propertyList = propertyService.getList(new Property().setProperty_category(product.getProduct_category()), null);
logger.info("属性列表和属性值列表合并");
for (Property property : propertyList) {
for (PropertyValue propertyValue : propertyValueList) {
if (property.getProperty_id().equals(propertyValue.getPropertyValue_property().getProperty_id())) {
List<PropertyValue> property_value_item = new ArrayList<>(1);
property_value_item.add(propertyValue);
property.setPropertyValueList(property_value_item);
break;
}
}
}
JSONObject jsonObject = new JSONObject();
jsonObject.put("propertyList", JSONArray.parseArray(JSON.toJSONString(propertyList)));
return jsonObject.toJSONString();
public String loadProductPropertyList(@PathVariable("pid") String pid/*产品ID*/) {
logger.info("获取产品ID");
Integer product_id = Integer.parseInt(pid);
logger.info("获取产品详情-属性值信息");
Product product = new Product();
product.setProduct_id(product_id);
List<PropertyValue> propertyValueList = propertyValueService.getList(new PropertyValue().setPropertyValue_product(product), null);
logger.info("获取产品详情-分类信息对应的属性列表");
List<Property> propertyList = propertyService.getList(new Property().setProperty_category(product.getProduct_category()), null);
logger.info("属性列表和属性值列表合并");
for (Property property : propertyList) {
for (PropertyValue propertyValue : propertyValueList) {
if (property.getProperty_id().equals(propertyValue.getPropertyValue_property().getProperty_id())) {
List<PropertyValue> property_value_item = new ArrayList<>(1);
property_value_item.add(propertyValue);
property.setPropertyValueList(property_value_item);
break;
}
}
}
JSONObject jsonObject = new JSONObject();
jsonObject.put("propertyList", JSONArray.parseArray(JSON.toJSONString(propertyList)));
return jsonObject.toJSONString();
}
//加载猜你喜欢列表-ajax
@ResponseBody
@RequestMapping(value = "guess/{cid}", method = RequestMethod.GET, produces = "application/json;charset=utf-8")
public String guessYouLike(@PathVariable("cid") Integer cid, @RequestParam Integer guessNumber) {
logger.info("获取猜你喜欢列表");
Integer total = productService.getTotal(new Product().setProduct_category(new Category().setCategory_id(cid)), new Byte[]{0, 2});
logger.info("分类ID为{}的产品总数为{}条", cid, total);
//生成随机数
int i = new Random().nextInt(total);
if (i + 2 >= total) {
i = total - 3;
}
if (i < 0) {
i = 0;
}
while (i == guessNumber) {
@Controller
public class ForeReviewController extends BaseController {
@Autowired
private ReviewService reviewService;
@Autowired
private UserService userService;
@Autowired
private ProductOrderItemService productOrderItemService;
@Autowired
private ProductOrderService productOrderService;
@Autowired
private ProductService productService;
@Autowired
private ProductImageService productImageService;
//转到前台天猫-评论添加页
@RequestMapping(value = "review/{orderItem_id}", method = RequestMethod.GET)
public String goToPage(HttpSession session, Map<String, Object> map,
@PathVariable("orderItem_id") Integer orderItem_id) {
logger.info("检查用户是否登录");
Object userId = checkUser(session);
User user;
if (userId != null) {
logger.info("获取用户信息");
user = userService.get(Integer.parseInt(userId.toString()));
map.put("user", user);
} else {
return "redirect:/login";
}
logger.info("获取订单项信息");
ProductOrderItem orderItem = productOrderItemService.get(orderItem_id);
if (orderItem == null) {
logger.warn("订单项不存在,返回订单页");
return "redirect:/order/0/10";
}
if (!orderItem.getProductOrderItem_user().getUser_id().equals(userId)) {
logger.warn("订单项与用户不匹配,返回订单页");
return "redirect:/order/0/10";
}
if (orderItem.getProductOrderItem_order() == null) {
logger.warn("订单项状态有误,返回订单页");
return "redirect:/order/0/10";