写在前面
本篇我们来介绍后台商品新增,更新和上下架功能开发。说的比较通俗易懂的话,其实就是后台商品的增删改查一部分功能而已。
商品模块开发
商品模块开发分为前台和后台两部分,其中前台包括产品搜索,动态排序列表和商品详情;后台包括:商品列表、商品搜索、图片上传、富文本上传、商品详情、商品上下架、增加商品以及更新商品等。
在此过程中,你将会学到一下知识: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); //后台管理员进行商品的上下架状态修改
这样我们本篇关于后台商品新增,更新和上下架功能开发的介绍就到此为止了,感谢你的赏阅!