写在前面
本篇我们来介绍后台商品新增,更新和上下架功能开发。说的比较通俗易懂的话,其实就是后台商品的增删改查一部分功能而已。
商品模块开发
商品模块开发分为前台和后台两部分,其中前台包括产品搜索,动态排序列表和商品详情;后台包括:商品列表、商品搜索、图片上传、富文本上传、商品详情、商品上下架、增加商品以及更新商品等。
在此过程中,你将会学到一下知识:1、FTP 服务器的对接;2、SpringMVC 文件上传;3、流读取 Properties 配置文件;4、抽取 POJO、BO、VO 对象之间的转换关系及解决思路;5、joda-time 快速入门;6、静态块;7、Mybatis-PageHelper 高效准确地分页及动态排序;8、Mybatis 对 List 遍历的实现方法;9、Mybatis 对 where 语句动态拼装的几个版本演变等。
POJO、BO、VO
POJO、VO
数据表设计:
后台产品新增
在controller文件的backend包里面新建一个ProductManageController.java文件,里面写入以下代码:
package top.store.controller.backend;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import top.store.common.Const;
import top.store.common.ResponseCode;
import top.store.common.ServerResponse;
import top.store.pojo.Product;
import top.store.pojo.User;
import top.store.service.IProductService;
import top.store.service.IUserService;
import javax.servlet.http.HttpSession;
@Controller
@RequestMapping("/manage/product")
public class ProductManageController {
@Autowired
private IUserService iUserService;
@Autowired
private IProductService iProductService;
/****
*
* 后台管理员保存商品
* */
@RequestMapping("save.do")
@ResponseBody //自动序列化json功能
public ServerResponse productSave(HttpSession session, Product product){
//判断一下登录情况
User user=(User) session.getAttribute(Const.CURRENT_USER);
if(user ==null){
return ServerResponse.createByErrorCodeMessage(ResponseCode.NEED_LOGIN.getCode(),"用户未登录,请登录");
}
//判断一下是不是管理员身份
if(iUserService.checkAdminRole(user).isSuccess()){
//如果是管理员就增加我们保存商品的逻辑
return iProductService.saveOrUpdateProduct(product);
}else{
return ServerResponse.createByErrorMessage("无权限操作,需要管理员权限");
}
}
}
这个和之前写的关于商品分类的模块其实很类似。接着我们在impl包里面新建一个ProductServiceImpl.java文件,里面写入以下代码:
package top.store.service.impl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import top.store.common.ResponseCode;
import top.store.common.ServerResponse;
import top.store.dao.ProductMapper;
import top.store.pojo.Product;
import top.store.service.IProductService;
@Service("iProductService")
public class ProductServiceImpl implements IProductService {
@Autowired
private ProductMapper productMapper;
/***
* 后台管理员保存商品
* */
public ServerResponse saveOrUpdateProduct(Product product){
if(product != null){
//产品主图的选择
if(StringUtils.isNoneBlank(product.getSubImages())){ //存在子图的情况下
String[] subImageArray = product.getSubImages().split(",");
if(subImageArray.length>0){
product.setMainImage(subImageArray[0]);
}
}
//如果是更新的话,我们产品的id肯定是存在的,不能为空(与前端进行了约定)
if(product.getId() != null){
int rowCount = productMapper.updateByPrimaryKey(product); //前端更新肯定是全部商品
if(rowCount>0){
return ServerResponse.createBySuccessMassage("更新产品成功");
}
return ServerResponse.createByErrorMessage("更新产品失败");
}else{
//如果是新增的话,产品是没有id的,就要执行插入操作
int rowCount = productMapper.insert(product); //前端更新肯定是全部商品
if(rowCount>0){
return ServerResponse.createBySuccessMassage("新增产品成功");
}
return ServerResponse.createByErrorMessage("新增产品失败");
}
}
return ServerResponse.createByErrorMessage("保存或更新产品参数不正确");
}
}
注意几点:
1、我们首先需要判断产品是否存在,存在然后判断产品是否存在子图,如果存在,我们就取第一个子图作为产品的主图进行前台的显示。
2、我们这里把商品的修改和更新的逻辑写在一起了,我们在前端进行了声明:就是如果是进行产品的更新就必须把产品id传进来,然后依据Id来进行判断,否则就是新增产品的操作,这个应该还是比较好理解的.
接着我们在Service包里面新建一个IProductService.java文件(记住前面是I说明是接口),里面写入以下代码:
package top.store.service;
import top.store.common.ServerResponse;
import top.store.pojo.Product;
public interface IProductService {
ServerResponse saveOrUpdateProduct(Product product); //后台管理员保存商品
}
这样我们关于商品的更新和新增操作就完成了,接下来是后台管理员进行商品信息的状态设置。
上下架功能开发
首先打开ProductManageController.java文件,在里面新增以下代码:
/***
*
* 后台管理员进行商品的上下架状态修改
* */
@RequestMapping("set_sale_status.do")
@ResponseBody //自动序列化json功能
public ServerResponse setSaleStatus(HttpSession session, Integer productId,Integer status){
//判断一下登录情况
User user=(User) session.getAttribute(Const.CURRENT_USER);
if(user ==null){
return ServerResponse.createByErrorCodeMessage(ResponseCode.NEED_LOGIN.getCode(),"用户未登录,请登录");
}
//判断一下是不是管理员身份
if(iUserService.checkAdminRole(user).isSuccess()){
//如果是管理员就增加我们进行商品上下架的逻辑
return iProductService.setSaleStatus(productId,status);
}else{
return ServerResponse.createByErrorMessage("无权限操作,需要管理员权限");
}
}
接着打开ProductServiceImpl.java文件,里面写入以下代码:
/***
*
* 后台管理员进行商品的上下架状态修改
* */
public ServerResponse<String> setSaleStatus(Integer productId,Integer status){
if(productId ==null || status ==null){
return ServerResponse.createByErrorCodeMessage(ResponseCode.ILLEGAL_ARGUMENT.getCode(),ResponseCode.ILLEGAL_ARGUMENT.getDesc());
}
Product product =new Product();
product.setId(productId);
product.setStatus(status);
int rowCount = productMapper.updateByPrimaryKeySelective(product); //我们这里是仅对状态进行修改,所以只需更新选中的即可
if(rowCount>0){
return ServerResponse.createBySuccessMassage("修改产品销售状态成功!");
}
return ServerResponse.createByErrorMessage("修改产品销售状态失败!");
}
最后打开IProductService.java文件,里面写入以下代码:
ServerResponse<String> setSaleStatus(Integer productId,Integer status); //后台管理员进行商品的上下架状态修改
这样我们本篇关于后台商品新增,更新和上下架功能开发的介绍就到此为止了,感谢你的赏阅!
网友评论