功能:网上商城系统,前台+后台管理,用户注册,登录, 上哦展示,分组展示,搜索,收货地址管理,购物车管 理,添加,购买,个人信息修改。订单查询等等,后台商 品管理,分类管理,库存管理,订单管理,用户管理,信 息、修改等等。
环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)
项目技术: JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等。
/**
* 基控制器
*/
public class BaseController {
//log4j2
protected Logger logger = LogManager.getLogger(BaseController.class);
//获取管理员信息
protected Object checkAdmin(HttpSession session){
Object o = session.getAttribute("adminId");
if(o==null){
logger.info("无管理权限,返回管理员登陆页");
return null;
}
logger.info("当前登录管理员ID:{}",o);
return o;
}
//检查用户是否登录
protected Object checkUser(HttpSession session){
Object o = session.getAttribute("userId");
if(o==null){
logger.info("用户未登录");
return null;
}
logger.info("用户已登录,用户ID:{}", o);
return o;
}
}
/**
* 产品详情页
*/
@Controller
public class ForeProductDetailsController extends BaseController {
@Resource(name = "productService")
private ProductService productService;
@Resource(name = "userService")
private UserService userService;
@Resource(name = "productImageService")
private ProductImageService productImageService;
@Resource(name = "categoryService")
private CategoryService categoryService;
@Resource(name = "propertyValueService")
private PropertyValueService propertyValueService;
@Resource(name = "propertyService")
private PropertyService propertyService;
@Resource(name = "reviewService")
private ReviewService reviewService;
@Resource(name = "productOrderItemService")
private ProductOrderItemService productOrderItemService;
//转到前台天猫-产品详情页
@RequestMapping(value = "product/{pid}", method = RequestMethod.GET)
public String goToPage(HttpSession session, Map map,
@PathVariable("pid") String pid /*产品ID*/) {
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("获取产品ID");
Integer product_id = Integer.parseInt(pid);
logger.info("获取产品信息");
Product product = productService.get(product_id);
if (product == null || product.getProduct_isEnabled() == 1) {
return "redirect:/404";
}
logger.info("获取产品子信息-分类信息");
product.setProduct_category(categoryService.get(product.getProduct_category().getCategory_id()));
logger.info("获取产品子信息-预览图片信息");
List singleProductImageList = productImageService.getList(product_id, (byte) 0, null);
product.setSingleProductImageList(singleProductImageList);
logger.info("获取产品子信息-详情图片信息");
List detailsProductImageList = productImageService.getList(product_id, (byte) 1, null);
product.setDetailProductImageList(detailsProductImageList);
logger.info("获取产品子信息-产品属性值信息");
List propertyValueList = propertyValueService.getList(new PropertyValue().setPropertyValue_product(product), null);
logger.info("获取产品子信息-分类信息对应的属性列表");
List 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 property_value_item = new ArrayList<>(1);
property_value_item.add(propertyValue);
property.setPropertyValueList(property_value_item);
break;
}
}
}
logger.info("获取产品子信息-产品评论信息");
product.setReviewList(reviewService.getListByProductId(product_id, null));
if (product.getReviewList() != null) {
for (Review review : product.getReviewList()) {
review.setReview_user(userService.get(review.getReview_user().getUser_id()));
}
}
logger.info("获取猜你喜欢列表");
Integer category_id = product.getProduct_category().getCategory_id();
Integer total = productService.getTotal(new Product().setProduct_category(new Category().setCategory_id(category_id)), new Byte[]{0, 2});
logger.info("分类ID为{}的产品总数为{}条", category_id, total);
//生成随机数
int i = new Random().nextInt(total);
if (i + 2 >= total) {
i = total - 3;
}
if (i < 0) {
i = 0;
}
List loveProductList = productService.getList(new Product().setProduct_category(
new Category().setCategory_id(category_id)),
new Byte[]{0, 2},
null,
new PageUtil().setCount(3).setPageStart(i)
);
if (loveProductList != null) {
logger.info("获取产品列表的相应的一张预览图片");
for (Product loveProduct : loveProductList) {
loveProduct.setSingleProductImageList(productImageService.getList(loveProduct.getProduct_id(), (byte) 0, new PageUtil(0, 1)));
}
}
logger.info("获取分类列表");
List categoryList = categoryService.getList(null, new PageUtil(0, 3));
map.put("loveProductList", loveProductList);
map.put("categoryList", categoryList);
map.put("propertyList", propertyList);
map.put("product", product);
map.put("guessNumber", i);
map.put("pageUtil", new PageUtil(0, 10).setTotal(product.getProduct_review_count()));
logger.info("转到前台-产品详情页");
return "fore/productDetailsPage";
}
//按产品ID加载产品评论列表-ajax
@Deprecated
@ResponseBody
@RequestMapping(value = "review/{pid}", method = RequestMethod.GET, produces = "application/json;charset=utf-8")
public String loadProductReviewList(@PathVariable("pid") String pid/*产品ID*/,
@RequestParam Integer index/* 页数 */,
@RequestParam Integer count/* 行数 */) {
logger.info("获取产品ID");
Integer product_id = Integer.parseInt(pid);
logger.info("获取产品评论列表");
List 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 propertyValueList = propertyValueService.getList(new PropertyValue().setPropertyValue_product(product), null);
logger.info("获取产品详情-分类信息对应的属性列表");
List 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 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) {
i = new Random().nextInt(total);
if (i + 2 >= total) {
i = total - 3;
}
if (i < 0) {
i = 0;
break;
}
}
logger.info("guessNumber值为{},新guessNumber值为{}", guessNumber, i);
List loveProductList = productService.getList(new Product().setProduct_category(
new Category().setCategory_id(cid)),
new Byte[]{0, 2},
null,
new PageUtil().setCount(3).setPageStart(i)
);
if (loveProductList != null) {
logger.info("获取产品列表的相应的一张预览图片");
for (Product loveProduct : loveProductList) {
loveProduct.setSingleProductImageList(productImageService.getList(loveProduct.getProduct_id(), (byte) 0, new PageUtil(0, 1)));
}
}
JSONObject jsonObject = new JSONObject();
logger.info("获取数据成功!");
jsonObject.put("success", true);
jsonObject.put("loveProductList", JSONArray.parseArray(JSON.toJSONString(loveProductList)));
jsonObject.put("guessNumber", i);
return jsonObject.toJSONString();
}
}
" data-link-title="点击查看更多java精品项目>">点击查看更多java精品项目>