shop--6.店铺注册--店铺注册之Service层的实现
Service的流程
1.插入店铺信息->2.返回店铺Id->3.根据店铺Id创建存储图片的文件夹->4.把文件夹的地址更新回店铺信息中
只要有一步出错 就要事务回滚
创建ShopService 接口
接着写实现类ShopServiceImpl
在实现service接口中添加@Transational事务标签
只有当程序抛出RuntimeException的异常或继承RuntimeException类 时,事务才会回滚,如果只是抛出Exception,事物不会回滚
1 @Service 2 public class ShopServiceImpl implements ShopService { 3 4 @Autowired 5 private ShopDao shopDao; 6 7 @Override 8 @Transactional 9 //1.插入店铺信息->2.返回店铺Id->3.根据店铺Id创建存储图片的文件夹->4.把文件夹的地址更新回店铺信息中 10 public ShopExecution addShop(Shop shop, CommonsMultipartFile shopImg) { 11 //空值判定 12 if(shop == null){ 13 return new ShopExecution( ShopStateEnum.NULL_SHOP); 14 } 15 try{ 16 //给店铺信息赋初始值 17 //初识店铺都是 0 审核中 18 shop.setStatus(0); 19 shop.setCreateTime( new Date() ); 20 shop.setLastEditTime( new Date() ); 21 22 int effectedNum = shopDao.insertShop( shop ); 23 //判断插入店铺是否成功,若不成功,则回滚事务 24 if(effectedNum <= 0){ 25 throw new ShopOperationException("插入店铺信息失败"); 26 } else{ 27 //存储图片 28 if(shopImg != null){ 29 try{ 30 addShopImg(shop, shopImg); 31 }catch(Exception e){ 32 //需要终止事务的进行 就用RuntimeExeception 33 throw new ShopOperationException( "addShopImg error" + e.getMessage()); 34 } 35 //更新店铺的图片地址 因为上面只创建了createtime lasttime shopid 36 effectedNum = shopDao.updateShop( shop ); 37 if(effectedNum <= 0){ 38 throw new ShopOperationException("更新图片地址失败"); 39 } 40 } 41 } 42 }catch (Exception e){ 43 throw new ShopOperationException("addShop error: " + e.getMessage()); 44 } 45 return new ShopExecution(ShopStateEnum.CHECK, shop); 46 } 47 /** 48 * 将店铺图片添加到用户相对的文件夹下,并且将店铺信息中店铺图片的地址更新 49 * @param shop 50 * @param shopImg 51 */ 52 private void addShopImg(Shop shop, CommonsMultipartFile shopImg) { 53 //获取shop图片目录的相对值路径 54 String relativeImgPath = PathUtil.getShopImgPath(shop.getShopId()); 55 String realRelativeImgPath = ImageUtil.generateThumbnail( shopImg, relativeImgPath ); 56 shop.setShopImg(realRelativeImgPath); 57 } 58 }
抛出的RuntimeException可以自己定义一个异常类ShopOperationException,继承RuntimeException,这样看上去更加直观的知道是什么异常
1 public class ShopOperationException extends RuntimeException { 2 public ShopOperationException(String msg){ 3 super(msg); 4 } 5 }
转载于:https://www.cnblogs.com/windbag7/p/9346257.html
shop--6.店铺注册--店铺注册之Service层的实现相关推荐
- 【校园商铺 4章】:店铺注册--Service层的实现(后期还要改造,先前没实现)
文章目录 1.Thumbnailator图片处理 2. 编写工具类:ImageUtil和PathUtil 3.dto:ShopException和enums:ShopStateEnum 4. Serv ...
- 校园O2O商铺平台-店铺注册Service层和Controller层
店铺注册之Service层的实现 正在更新 店铺注册功能之Controller层的实现 正在更新 店铺注册功能之Controller层的改造 正在更新
- 虾皮如何注册店铺_虾皮跨境电商怎样注册店铺?做(shopee)虾皮电商靠谱吗
(shopee)虾皮刚诞生的时候我就做了,在电商这个行业也有自己的一些经验.经验也许没有其他大卖家丰富,但会将我知道的都进行分享.如果有不懂(shopee)虾皮问题可以+我(V:772024802). ...
- 虾皮如何注册店铺_虾皮跨境电商怎么注册店铺?
做跨境电商可以选择主流的平台入驻或者自己搭建跨境商城,虾皮shopee针对中国跨境卖家,无平台使用费.年费.无保证金的,所以成了很多商家的选择,那么虾皮跨境电商怎么注册店铺呢? 一.如何注册虾皮?有哪 ...
- 现欲设计一个电子商务网站系统,该系统需要记录如下信息,其中下划线为标识信息: •客户有客户名、联系电话、配送地址; •商品有商品名、类别; •店铺有店铺名、信誉度、注册地址; •同一商品会在不
题目要求 现欲设计一个电子商务网站系统,该系统需要记录如下信息,其中下划线为标识信息: 客户有客户名.联系电话.配送地址: 商品有商品名.类别: 店铺有店铺名.信誉度.注册地址: 同一商品会在不同的店 ...
- 实战SSM_O2O商铺_10【商铺注册】Service层的实现
文章目录 概述 ShopService开发步骤 Service层接口类ShopService Service层接口实现类ShopServiceImpl ShopOperationException 单 ...
- 注册Tomcat到Window Service服务
注册Tomcat到Window Service服务 1.软件和环境 环境:JDK1.8 应用服务:Tomcat9.0(非安装版) 操作系统:Windows 2012 2.设置Tomcat为系统服务 w ...
- Consul注册中心注册的服务总是红叉 (All service checks failing)
Consul注册中心注册的服务总是红叉 (All service checks failing) Consul注册中心注册的服务总是红叉 (All service checks failing) 因为 ...
- springboot 注册dao层 service 层的三种方式,高级内容详解
可以使用三种注解来引入DAO层的接口到spring容器中. 1.@Mapper,写在每一个DAO层接口上,如下: 2.@MapperScan和@ComponentScan两者之一.前者的意义是将指定包 ...
- 注册中心—注册中心原理
在微服务架构中,注册中心是最核心的基础服务之一,本文将详细介绍下注册中心的组成部分和它们之前的关系. 目录 一.注册中心原理 二.注册中心功能 三.常见的注册中心 一.注册中心原理 注册中心主要涉及到 ...
最新文章
- Team Foundation Server Beta3 安装指南
- 秒表项目_【速看】2021年陕西中考体育怎么考?中考体育项目及考试评分标准最全整理来了!...
- 开始一个django项目
- 三行代码让你的博客访问量上百万
- 安装veket到移动硬盘NTFS分区
- Android NDK学习(2)
- Switch case 超经典练习题
- BZOJ4373 : 算术天才⑨与等差数列
- 基于TCP协议的摄像头视频网络传输
- 我的世界观【文津图书奖获奖作品】
- 安装spoonwep
- python 合并word并生成目录_使用Python制作WORD报告
- 神经网络分析教学目标,神经网络分析教学反思
- BZOJ1050 [HAOI2006]旅行comf(Kruskal算法)
- AcWing 273. 分级 (推论,DP)
- hash算法原理详解
- Sharding Sphere ~ Sharding-jdbc分库分表、读写分离
- Apriori算法学习和java实现
- 数学:分数的加减乘除模板
- sql语句中的limit用法
热门文章
- FutureTask源码解析(2)——深入理解FutureTask
- CUDNN学习笔记(2)
- Linux C Serial串口编程
- 1、Python基本对象类型----数字
- ValueError: No JSON object could be decoded?此种异常的解决方案之一
- 换行符在HTML中直接替换为br
- ping -r 和tracert
- ADO.NET 对象模型
- golang mac 环境变量_Golang (Go语言) Mac OS X下环境搭建 环境变量配置 开发工具配置 Sublime Text 2...
- oracle数据库考试答题,Oracle数据库试题