package cn.sunshine.o2o.controller.shopadmin;
import cn.sunshine.o2o.dto.ImageHolder;
import cn.sunshine.o2o.dto.ProductExecution;
import cn.sunshine.o2o.entity.Product;
import cn.sunshine.o2o.entity.ProductCategory;
import cn.sunshine.o2o.entity.Shop;
import cn.sunshine.o2o.enums.ProductStateEnum;
import cn.sunshine.o2o.exceptions.ProductOperationException;
import cn.sunshine.o2o.service.ProductCategoryService;
import cn.sunshine.o2o.service.ProductService;
import cn.sunshine.o2o.utils.CodeUtil;
import cn.sunshine.o2o.utils.HttpServletRequestUtil;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author XiaoPengCheng
* @create 2019-07-14 11:53
*/
@RestController
@RequestMapping("/shopadmin/*")
public class ProductManagementController {
@Autowired
private ProductService productService;
@Autowired
private ProductCategoryService productCategoryService;
//支持上传商品详情图的最大数量
private static final int IMAGEMAXCOUNT = 6;
@GetMapping("getproductlistbyshop")
private Map<String,Object> getProductListByShop(HttpServletRequest request){
Map<String,Object> modelMap = new HashMap<>();
//获取前台传入的页码
int pageIndex = HttpServletRequestUtil.getInt(request, "pageIndex");
//获取前台传入的每页需要显示的商品数
int pageSize = HttpServletRequestUtil.getInt(request, "pageSize");
//从session中获取店铺信息,主要获取shopId
Shop currentShop = (Shop)request.getSession().getAttribute("currentShop");
//空值判断
if ((pageIndex > -1) && (pageSize > -1) && (currentShop != null) && (currentShop.getShopId() != null)){
//获取传入的需要检索的条件,包括是否需要从,商品类别,模糊查找商品名,商品状态,去筛选商品类别列表
//筛选的条件可以排列组合
String productName = HttpServletRequestUtil.getString(request, "productName");
int enableStatus = HttpServletRequestUtil.getInt(request, "enableStatus");
long productCategoryId = HttpServletRequestUtil.getLong(request, "productCategoryId");
Product productCondition = compactProductCondition(currentShop.getShopId(),productName,enableStatus,productCategoryId);
//传入查询条件以及分页信息进行查询
ProductExecution pe = productService.getProductList(productCondition, pageIndex, pageSize);
modelMap.put("success",true);
modelMap.put("productList",pe.getProductList());
modelMap.put("count",pe.getCount());
}else {
modelMap.put("success",false);
modelMap.put("errMsg","传入参数为空");
}
return modelMap;
}
/**
* 封装商品查询条件
* @param shopId
* @param productName
* @param enableStatus
* @param productCategoryId
* @return
*/
private Product compactProductCondition(Long shopId, String productName, int enableStatus, long productCategoryId) {
Product productCondition = new Product();
Shop shop = new Shop();
shop.setShopId(shopId);
productCondition.setShop(shop);
//若有商品名要求,则添加进去
if (productName != null){
productCondition.setProductName(productName);
}
//若有商品状态要求,则添加
if (enableStatus > -1){
productCondition.setEnableStatus(enableStatus);
}
//若有商品类别要求,则添加
if (productCategoryId > -1){
ProductCategory productCategory = new ProductCategory();
productCategory.setProductCategoryId(productCategoryId);
productCondition.setProductCategory(productCategory);
}
return productCondition;
}
@PostMapping("modifyproduct")
private Map<String,Object> modifyProduct(HttpServletRequest request){
Map<String,Object> modelMap = new HashMap<>();
//是商品编辑时候调用还是上下架操作的时候调用
//若为前者则进行验证码判断,后者则跳过验证码判断
boolean statusChange = HttpServletRequestUtil.getBoolean(request, "statusChange");
//验证码判断
if (!statusChange && !CodeUtil.checkVerifyCode(request)){
modelMap.put("success",false);
modelMap.put("errMsg","输入了错误的验证码");
return modelMap;
}
//接收前端参数,包括商品信息,缩略图和商品详情图列表
ObjectMapper mapper = new ObjectMapper();
Product product = null;
ImageHolder thumbnail = null;
List<ImageHolder> productImgList = new ArrayList<>();
CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
try {
//若请求中存在文件流,则取出相关的文件(包括缩略图和详情图)
if (commonsMultipartResolver.isMultipart(request)){
MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;
//取出缩略图并构建ImageHolder对象
CommonsMultipartFile thumbnailFile = (CommonsMultipartFile) multipartHttpServletRequest.getFile("thumbnail");
if (thumbnailFile != null){
thumbnail = new ImageHolder(thumbnailFile.getOriginalFilename(),thumbnailFile.getInputStream());
}
//取出详情图列表并构建list<ImageHolder>列表对象,最多支持六张图片上传
for (int i = 0; i < IMAGEMAXCOUNT; i++) {
CommonsMultipartFile productImgFile = (CommonsMultipartFile) multipartHttpServletRequest.getFile("productImg" + i);
if (productImgFile != null){
//若取出的第i个详情图片文件流不为空,则将其加入详情图列表
productImgList.add(new ImageHolder(productImgFile.getOriginalFilename(),productImgFile.getInputStream()));
}else {
//若取出的第i个详情图片文件流为空,则终止循环
break;
}
}
}
} catch (Exception e) {
modelMap.put("success",false);
modelMap.put("errMsg",e.toString());
return modelMap;
}
try {
//获取前端传来的字符串并转换成Product实体类
String productStr = HttpServletRequestUtil.getString(request, "productStr");
product = mapper.readValue(productStr,Product.class);
} catch (Exception e) {
modelMap.put("success",false);
modelMap.put("errMsg",e.toString());
return modelMap;
}
if (product != null){
try {
//从session中获取当前店铺id并赋值给product
Shop currentShop = (Shop)request.getSession().getAttribute("currentShop");
product.setShop(currentShop);
//更新商品信息
ProductExecution pe = productService.modifyProduct(product, thumbnail, productImgList);
if (ProductStateEnum.SUCCESS.getState() == pe.getState()){
modelMap.put("success",true);
}else {
modelMap.put("s
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
- ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
资源推荐
资源详情
资源评论
收起资源包目录
基于ssm的o2o项目.zip (97个子文件)
code
pom.xml 6KB
src
main
resources
mapper
ProductDao.xml 6KB
ShopCategoryDao.xml 1006B
ProductImgDao.xml 1KB
HeadLineDao.xml 745B
ProductCategoryDao.xml 1KB
ShopDao.xml 7KB
AreaDao.xml 420B
logback.xml 4KB
spring
spring-web.xml 2KB
spring-dao.xml 3KB
spring-service.xml 1KB
watermark.jpg 29KB
jdbc.properties 151B
mybatis-config.xml 662B
java
cn
sunshine
o2o
exceptions
ProductOperationException.java 244B
ShopOperationException.java 238B
ProductCategoryOperationException.java 260B
controller
frontend
MainPageController.java 2KB
ShopDetailController.java 4KB
ShopListController.java 6KB
FrontendController.java 716B
superadmin
AreaController.java 1KB
shopadmin
ShopAdminController.java 1KB
ProductCategoryManagementController.java 5KB
ProductManagementController.java 13KB
ShopManagementController.java 10KB
utils
CodeUtil.java 656B
PageCalculator.java 405B
HttpServletRequestUtil.java 1KB
ImageUtil.java 5KB
PathUtil.java 898B
dao
ProductCategoryDao.java 816B
ShopDao.java 1KB
ProductDao.java 1KB
HeadLineDao.java 440B
ProductImgDao.java 684B
AreaDao.java 277B
ShopCategoryDao.java 476B
service
HeadLineService.java 379B
ShopCategoryService.java 376B
ProductService.java 1KB
ProductCategoryService.java 1KB
impl
ShopCategoryServiceImpl.java 695B
AreaServiceImpl.java 556B
ProductServiceImpl.java 8KB
ShopServiceImpl.java 4KB
HeadLineServiceImpl.java 643B
ProductCategoryServiceImpl.java 3KB
ShopService.java 1KB
AreaService.java 287B
enums
ProductCategoryStateEnum.java 907B
ShopStateEnum.java 953B
ProductStateEnum.java 925B
entity
ShopCategory.java 2KB
LocalAuth.java 1KB
PersonInfo.java 3KB
Product.java 4KB
ProductCategory.java 2KB
WechatAuth.java 1KB
HeadLine.java 2KB
Shop.java 4KB
Area.java 2KB
ProductImg.java 2KB
dto
ProductCategoryExecution.java 1KB
ProductExecution.java 2KB
ImageHolder.java 648B
ShopExecution.java 2KB
webapp
WEB-INF
web.xml 3KB
html
frontend
index.html 4KB
shopdetail.html 6KB
shoplist.html 5KB
shop
shopoperation.html 8KB
productoperation.html 7KB
productcategorymanagement.html 2KB
productmanagement.html 2KB
shoplist.html 2KB
shopmanagement.html 2KB
index.jsp 313B
resources
js
frontend
shopdetail.js 6KB
shoplist.js 6KB
index.js 2KB
common
common.js 2KB
shop
productmanagement.js 5KB
productoperation.js 5KB
shoplist.js 1KB
productcategorymanagement.js 4KB
shopmanagement.js 501B
shopoperation.js 4KB
css
frontend
shopdetail.css 384B
shoplist.css 450B
index.css 1KB
shop
productmanagement.css 263B
productcategorymanagement.css 346B
shopmanagement.css 33B
shoplist.css 228B
.gitignore 79B
共 97 条
- 1
资源评论
奋斗奋斗再奋斗的ajie
- 粉丝: 228
- 资源: 2104
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功