1、修改接口
public interface ShopService {
/**
* 通过店铺ID获取店铺信息
* @param shopId
* @return
*/
Shop getByShopId(long shopId);
/**
* 更新店铺信息,包括图片处理
* @param shop
* @param shopImgInputStream
* @param fileName
* @return
* @throws ShopOperationException
*/
ShopExecution modifyShop(Shop shop,InputStream shopImgInputStream,String fileName) throws ShopOperationException
}
2、接口实现类
@Override
public Shop getByShopId(long shopId) {
return shopDao.queryByShopId(shopId);
}
@Override
public ShopExecution modifyShop(Shop shop, InputStream shopImgInputStream, String fileName)
throws ShopOperationException {
if (shop == null || shop.getShopId() == null) {
return new ShopExecution(ShopStateEnum.NULL_SHOP);
} else {
try {
// 1、判断是否需要处理图片,图片不为空则删除原来的图片
if (shopImgInputStream != null && fileName != null && !"".equals(fileName)) {
Shop tempShop = shopDao.queryByShopId(shop.getShopId());
if (tempShop.getShopImg() != null) {
ImageUtil.deleteFileOrPath(tempShop.getShopImg());
}
addShopImg(shop, shopImgInputStream, fileName);
}
// 2、更新店铺信息
shop.setLastEditTime(new Date());
int effectedNum = shopDao.updateShop(shop);
if (effectedNum <= 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());
}
}
}
注意:判断String是不是空的写法
3、删除图片的工具类方法
/**
* 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(int i = 0; i < files.length; i++) {
files[i].delete();
}
}
fileOrPath.delete();
}
}
4、测试类
@Test
public void testModifyShop() throws ShopOperationException,FileNotFoundException{
Shop shop = new Shop();
shop.setShopId(29L);
shop.setShopName("修改后的店铺名称211");
shop.setShopAddr("修改后的地址211");
File shopImg = new File("/Users/shawn/Document/实战练习/image/dabai.jpg");
InputStream is = new FileInputStream(shopImg);
ShopExecution shopExecution = shopService.modifyShop(shop, is, "dabai.jpg");
System.out.println("新的图片地址为:" + shopExecution.getShop().getShopImg());
}