/**
* 根据shopId获取shop信息
* @param shopId
* @return
*/
public Shop getShopByShopId(long shopId);
/**
* 更新店铺的信息,包括对店铺照片的处理
* @param shop
* @param shopImg
* @return
*/
public ShopExecution modifyShop(Shop shop, CommonsMultipartFile shopImg);
serviceImpl实现
@Override
public Shop getShopByShopId(long shopId) {
return shopDao.queryByShopId( shopId );
}
@Override
public ShopExecution modifyShop(Shop shop, CommonsMultipartFile shopImg) {
if(shop == null || shop.getShopId() == null){
return new ShopExecution(ShopStateEnum.NULL_SHOP);
} else{
try{
//1.判断是否需要修改图片
if(shopImg != null){
Shop tempShop = shopDao.queryByShopId( shop.getShopId() );
//判断之前的店铺信息中是否有shop图片,如果有的话,就先删除,没有的话,就直接加进去
if(tempShop != null){
ImageUtil.deleteFileOrPath( tempShop.getShopImg() );
}
addShopImg( shop, shopImg );
}
//2.更新店铺信息
shop.setLastEditTime( new Date( ) );
int effectNum = shopDao.updateShop( shop );
if(effectNum <= 0){
return new ShopExecution(ShopStateEnum.INNER_ERROR);
} else{
shop = shopDao.queryByShopId( shop.getShopId() );
return new ShopExecution( ShopStateEnum.SUCCESS, shop );
}
} catch (Exception e){
throw new ShopOperationException("modifyshop error " + e.getMessage());
}
}
}
工具类ImageUtil中新增的delete
/**
*storePath是文件路径 或 目录路径
* 如果storePath是文件路径,则删除文件
* 如果storePath是目录路径,则删除该目录下的所有文件
* @param storePath
*/
public static void deleteFileOrPath(String storePath){
File fileOrPath = new File(PathUtil.getImgBasePath() + storePath);
if(fileOrPath.exists()){
if(fileOrPath.isDirectory()){
File files[] = fileOrPath.listFiles();
for(File file : files){
file.delete();
}
}
fileOrPath.delete();
}
}
controller层的实现
其中,修改店铺信息的代码与注册店铺信息的代码相似
/**
* 根据店铺信息获取店铺
* @param request
* @return
*/
@RequestMapping(value="/getshopbyid", method=RequestMethod.GET)
@ResponseBody
private Map<String, Object> getShopById(HttpServletRequest request){
Map<String, Object> modelMap = new HashMap<>();
Long shopId = HttpServletRequestUtil.getLong( request, "shopId" );
if(shopId > -1){
try{
Shop shop = shopService.getShopByShopId( shopId );
List<Area> areaList = areaService.getAreaList();
modelMap.put("shop", shop);
modelMap.put( "areaList", areaList );
modelMap.put( "success", true );
} catch(Exception e){
modelMap.put("success", false);
modelMap.put("errMsg", e.toString());
}
}else{
modelMap.put("success", false);
modelMap.put( "errMsg", "empty shopId" );
}
return modelMap;
}
/**
* 修改店铺信息
* @param request
* @return
*/
@RequestMapping(value="/modifyshop", method= RequestMethod.POST )
@ResponseBody
public Map<String, Object> modifyShop(HttpServletRequest request){
Map<String, Object> modelMap = new HashMap<>();
//判断验证码是否正确
if(!CodeUtil.checkVerifyCode(request)){
modelMap.put( "success", false );
modelMap.put( "errMsg", "验证码错误!!!!!" );
return modelMap;
}
//1.接收并转化相应的参数,包括店铺信息和图片信息
String shopStr = HttpServletRequestUtil.getString( request, "shopStr" );
ObjectMapper mapper = new ObjectMapper(); // create once, reuse
Shop shop = null;
try {
shop = mapper.readValue(shopStr, Shop.class);
} catch (IOException e) {
modelMap.put("success", false);
modelMap.put("errMsg", e.getMessage());
return modelMap;
}
CommonsMultipartFile shopImg = null;
//在本次会话的上下文获取上传的文件
CommonsMultipartResolver commonsMultipartResolver =
new CommonsMultipartResolver(request.getSession().getServletContext());
//如果文件上传的有值
if(commonsMultipartResolver.isMultipart( request )){
MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest)request;
shopImg = (CommonsMultipartFile)multipartHttpServletRequest.getFile("shopImg");
}
//2.注册店铺
if(shop != null && shop.getShopId() != null){
try{
ShopExecution shopExecution = shopService.modifyShop(shop, shopImg);
if(shopExecution.getState() == ShopStateEnum.SUCCESS.getState()){
modelMap.put( "success", true );
}else{
modelMap.put( "success", false );
modelMap.put( "errMsg", shopExecution.getStateInfo());
}
} catch(RuntimeException e){
modelMap.put("success", false);
modelMap.put("errMsg", e.toString());
}
}else{
modelMap.put("success", false);
modelMap.put("errMsg", "请输入店铺Id");
}
//3.返回结果
return modelMap;
}