From 616d64022843951a3786500ae03d0b5dedc632ca Mon Sep 17 00:00:00 2001 From: zhuangtianxiang <2913129173@qq.com> Date: Wed, 8 Jan 2025 19:34:05 +0800 Subject: [PATCH] =?UTF-8?q?refactor(transaction):=20=E5=9C=A8=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=B1=82=E6=96=B9=E6=B3=95=E4=B8=AD=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=BA=8B=E5=8A=A1=E6=B3=A8=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在多个服务类的创建、更新和删除方法中添加 @Transactional 注解 - 优化数据库操作,确保数据一致性 - 主要涉及设备、产品、参数、属性、事件和服务等模块 --- .../service/impl/DeviceServiceImpl.java | 4 ++++ .../service/impl/ProductServiceImpl.java | 5 ++++- .../tsl/service/impl/EventServiceImpl.java | 5 ++++- .../tsl/service/impl/ParamServiceImpl.java | 4 ++++ .../tsl/service/impl/PropertyServiceImpl.java | 1 + .../tsl/service/impl/ServeServiceImpl.java | 4 ++++ .../controller/UserNoticeController.java | 6 ++--- .../message/repo/UserNoticeRepository.java | 2 +- .../message/service/UserNoticeService.java | 4 ++-- .../modules/message/vo/UserNoticeVo.java | 2 +- src/main/resources/db/gateway.sql | 22 +++++++++---------- .../resources/db/gateway/public/iot_event.sql | 2 +- .../db/gateway/public/iot_product.sql | 2 +- .../resources/db/gateway/public/iot_serve.sql | 2 +- .../mappers/notice/UserNoticeMapper.xml | 2 +- 15 files changed, 43 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/device/service/impl/DeviceServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/iot/device/service/impl/DeviceServiceImpl.java index 110635f..601359d 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/device/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/device/service/impl/DeviceServiceImpl.java @@ -22,6 +22,7 @@ import com.zsc.edu.gateway.modules.iot.product.repo.ProductRepository; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import java.util.*; @@ -46,6 +47,7 @@ public class DeviceServiceImpl extends ServiceImpl imp * 新建设备 */ @Override + @Transactional public Device create(DeviceDto dto) { if (baseMapper.findByName(dto.getName()) != null) { throw new ConstraintException("该设备已存在!"); @@ -60,6 +62,7 @@ public class DeviceServiceImpl extends ServiceImpl imp * 批量新增 */ @Override + @Transactional public List batchCreate(BatchDeviceDto dto) { if (dto.getNum() == null || dto.getNum() <= 0) { throw new ConstraintException("设备数量必须大于0!"); @@ -118,6 +121,7 @@ public class DeviceServiceImpl extends ServiceImpl imp * 更新设备 */ @Override + @Transactional public Device update(DeviceDto dto, Long id) { Device device = baseMapper.selectById(id); if (Objects.equals(device.getName(), dto.getName())) { diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/product/service/impl/ProductServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/iot/product/service/impl/ProductServiceImpl.java index de6b33a..8b9726b 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/product/service/impl/ProductServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/product/service/impl/ProductServiceImpl.java @@ -11,6 +11,7 @@ import com.zsc.edu.gateway.modules.iot.tsl.entity.Param; import com.zsc.edu.gateway.modules.iot.tsl.service.ParamService; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** @@ -26,6 +27,7 @@ public class ProductServiceImpl extends ServiceImpl * 新建产品 */ @Override + @Transactional public Product create(ProductDto dto) { if (baseMapper.findByName(dto.getName()) != null) { throw new ConstraintException("该设备已存在!"); @@ -34,7 +36,6 @@ public class ProductServiceImpl extends ServiceImpl throw new ConstraintException("设备名称不能为空!"); } Product product = mapper.toEntity(dto); - product.setId(null); save(product); if (dto.getParams() != null) { paramService.create(dto.getParams(), product.getId(), Param.ForeignType.PRODUCT); @@ -45,6 +46,7 @@ public class ProductServiceImpl extends ServiceImpl * 更新产品 */ @Override + @Transactional public Product update(ProductDto dto, Long id) { if (dto.getName() == null) { throw new ConstraintException("设备名称不能为空!"); @@ -69,6 +71,7 @@ public class ProductServiceImpl extends ServiceImpl * 删除 */ @Override + @Transactional public boolean delete(Long id) { removeById(id); paramService.delete(id); diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/EventServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/EventServiceImpl.java index e95b34c..e5c0d91 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/EventServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/EventServiceImpl.java @@ -11,6 +11,7 @@ import com.zsc.edu.gateway.modules.iot.tsl.service.EventService; import com.zsc.edu.gateway.modules.iot.tsl.service.ParamService; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * @author Yao @@ -25,7 +26,7 @@ public class EventServiceImpl extends ServiceImpl implem * 新建物模型事件 */ @Override - + @Transactional public Event create(EventDto dto) { if (baseMapper.findByName(dto.getName()) != null) { throw new ConstraintException("该事件已存在!"); @@ -42,6 +43,7 @@ public class EventServiceImpl extends ServiceImpl implem * 更新物模型事件 */ @Override + @Transactional public Event update(EventDto dto, Long id) { if (dto.getName() == null) { throw new ConstraintException("事件名称不能为空!"); @@ -71,6 +73,7 @@ public class EventServiceImpl extends ServiceImpl implem *删除 */ @Override + @Transactional public boolean delete(Long id) { removeById(id); return paramService.delete(id); diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/ParamServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/ParamServiceImpl.java index 542acf4..6b32aed 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/ParamServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/ParamServiceImpl.java @@ -9,6 +9,7 @@ import com.zsc.edu.gateway.modules.iot.tsl.repo.ParamRepository; import com.zsc.edu.gateway.modules.iot.tsl.service.ParamService; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.Objects; @@ -24,6 +25,7 @@ public class ParamServiceImpl extends ServiceImpl implem private final ParamMapper mapper; private final ParamMapper paramMapper; @Override + @Transactional public Boolean create(List params, Long id, Param.ForeignType foreignType) { List paramsToInsert = params.stream() .map(dto -> { @@ -38,6 +40,7 @@ public class ParamServiceImpl extends ServiceImpl implem } @Override + @Transactional public Boolean update(List paramDto, Long id) { List params = baseMapper.selectList(new LambdaQueryWrapper() .eq(Objects.nonNull(id), Param::getForeignId, id)); @@ -57,6 +60,7 @@ public class ParamServiceImpl extends ServiceImpl implem } @Override + @Transactional public Boolean delete(Long id) { return baseMapper.delete(new LambdaQueryWrapper() .eq(Objects.nonNull(id), Param::getForeignId, id)) > 0; diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/PropertyServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/PropertyServiceImpl.java index f4f7a1e..7fb839a 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/PropertyServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/PropertyServiceImpl.java @@ -24,6 +24,7 @@ public class PropertyServiceImpl extends ServiceImpl implem * 新建功能 */ @Override + @Transactional public Serve create(ServeDto dto) { if (baseMapper.findByName(dto.getName()) != null) { throw new ConstraintException("该服务已存在!"); @@ -47,6 +49,7 @@ public class ServeServiceImpl extends ServiceImpl implem * 更新功能 */ @Override + @Transactional public Serve update(ServeDto dto, Long id) { if (dto.getName() == null) { throw new ConstraintException("服务名称不能为空!"); @@ -81,6 +84,7 @@ public class ServeServiceImpl extends ServiceImpl implem * @return true */ @Override + @Transactional public Boolean delete(Long id) { removeById(id); return paramService.delete(id); diff --git a/src/main/java/com/zsc/edu/gateway/modules/message/controller/UserNoticeController.java b/src/main/java/com/zsc/edu/gateway/modules/message/controller/UserNoticeController.java index 7e419ff..3cbbf4e 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/message/controller/UserNoticeController.java +++ b/src/main/java/com/zsc/edu/gateway/modules/message/controller/UserNoticeController.java @@ -32,12 +32,12 @@ public class UserNoticeController { * 普通用户查看消息详情 * * @param userDetails 操作用户 - * @param messageId 消息ID + * @param noticeId 消息ID * @return 用户消息详情 */ @GetMapping("/self/{noticeId}") - public UserNoticeVo selfDetail(@AuthenticationPrincipal UserDetailsImpl userDetails, @PathVariable("noticeId") Long messageId) { - return service.detail(messageId, userDetails.getId()); + public UserNoticeVo selfDetail(@AuthenticationPrincipal UserDetailsImpl userDetails, @PathVariable("noticeId") Long noticeId) { + return service.detail(noticeId, userDetails.getId()); } /** diff --git a/src/main/java/com/zsc/edu/gateway/modules/message/repo/UserNoticeRepository.java b/src/main/java/com/zsc/edu/gateway/modules/message/repo/UserNoticeRepository.java index 96bf488..bdd7ad8 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/message/repo/UserNoticeRepository.java +++ b/src/main/java/com/zsc/edu/gateway/modules/message/repo/UserNoticeRepository.java @@ -17,7 +17,7 @@ import org.apache.ibatis.annotations.Param; */ public interface UserNoticeRepository extends BaseMapper { - UserNoticeVo selectByNoticeIdAndUserId(@Param("noticeId") Long messageId, @Param("userId") Long userId); + UserNoticeVo selectByNoticeIdAndUserId(@Param("noticeId") Long noticeId, @Param("userId") Long userId); IPage page(Page page, @Param("query") UserNoticeQuery query); diff --git a/src/main/java/com/zsc/edu/gateway/modules/message/service/UserNoticeService.java b/src/main/java/com/zsc/edu/gateway/modules/message/service/UserNoticeService.java index 5990011..8862747 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/message/service/UserNoticeService.java +++ b/src/main/java/com/zsc/edu/gateway/modules/message/service/UserNoticeService.java @@ -22,13 +22,13 @@ public interface UserNoticeService extends IService { Boolean createByAdmin(UserNoticeDto dto); - UserNoticeVo detail(Long messageId, Long userId); + UserNoticeVo detail(Long noticeId, Long userId); IPage page(Page page, UserNoticeQuery query); Integer countUnread(UserDetailsImpl userDetails); - boolean markAsRead(UserDetailsImpl userDetails, List messageIds); + boolean markAsRead(UserDetailsImpl userDetails, List noticeIds); boolean markAllAsRead(UserDetailsImpl userDetails); diff --git a/src/main/java/com/zsc/edu/gateway/modules/message/vo/UserNoticeVo.java b/src/main/java/com/zsc/edu/gateway/modules/message/vo/UserNoticeVo.java index f9d7b10..4f6531c 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/message/vo/UserNoticeVo.java +++ b/src/main/java/com/zsc/edu/gateway/modules/message/vo/UserNoticeVo.java @@ -13,7 +13,7 @@ public class UserNoticeVo { /** * 用户消息id */ - private Long messageId; + private Long noticeId; /** * 是否已读 */ diff --git a/src/main/resources/db/gateway.sql b/src/main/resources/db/gateway.sql index 3eb7e1f..07b6db7 100644 --- a/src/main/resources/db/gateway.sql +++ b/src/main/resources/db/gateway.sql @@ -497,16 +497,16 @@ VALUES (1, 'Device1', TRUE, 1, 'HW1.0', 'FW1.0', 'FactoryA', 'Client1', 1, '{"pa INSERT INTO iot_product (id, name, product_type, model, link, create_by, create_time, update_by, update_time, remark, dept_id) -VALUES (1, 'Product1', 'TypeA', 'ModelX', 1, 'Admin', CURRENT_TIMESTAMP, 'Admin', CURRENT_TIMESTAMP, 'Remark1', 101), - (2, 'Product2', 'TypeB', 'ModelY', 2, 'Admin', CURRENT_TIMESTAMP, 'Admin', CURRENT_TIMESTAMP, 'Remark2', 102), - (3, 'Product3', 'TypeA', 'ModelZ', 1, 'Admin', CURRENT_TIMESTAMP, 'Admin', CURRENT_TIMESTAMP, 'Remark3', 103), - (4, 'Product4', 'TypeC', 'ModelW', 3, 'Admin', CURRENT_TIMESTAMP, 'Admin', CURRENT_TIMESTAMP, 'Remark4', 104), - (5, 'Product5', 'TypeB', 'ModelV', 2, 'Admin', CURRENT_TIMESTAMP, 'Admin', CURRENT_TIMESTAMP, 'Remark5', 105), - (6, 'Product6', 'TypeD', 'ModelU', 4, 'Admin', CURRENT_TIMESTAMP, 'Admin', CURRENT_TIMESTAMP, 'Remark6', 106), - (7, 'Product7', 'TypeA', 'ModelT', 1, 'Admin', CURRENT_TIMESTAMP, 'Admin', CURRENT_TIMESTAMP, 'Remark7', 107), - (8, 'Product8', 'TypeC', 'ModelS', 3, 'Admin', CURRENT_TIMESTAMP, 'Admin', CURRENT_TIMESTAMP, 'Remark8', 108), - (9, 'Product9', 'TypeB', 'ModelR', 2, 'Admin', CURRENT_TIMESTAMP, 'Admin', CURRENT_TIMESTAMP, 'Remark9', 109), - (10, 'Product10', 'TypeD', 'ModelQ', 4, 'Admin', CURRENT_TIMESTAMP, 'Admin', CURRENT_TIMESTAMP, 'Remark10', 110); +VALUES ('Product1', 'TypeA', 'ModelX', 1, 'Admin', CURRENT_TIMESTAMP, 'Admin', CURRENT_TIMESTAMP, 'Remark1', 101), + ('Product2', 'TypeB', 'ModelY', 2, 'Admin', CURRENT_TIMESTAMP, 'Admin', CURRENT_TIMESTAMP, 'Remark2', 102), + ('Product3', 'TypeA', 'ModelZ', 1, 'Admin', CURRENT_TIMESTAMP, 'Admin', CURRENT_TIMESTAMP, 'Remark3', 103), + ('Product4', 'TypeC', 'ModelW', 3, 'Admin', CURRENT_TIMESTAMP, 'Admin', CURRENT_TIMESTAMP, 'Remark4', 104), + ('Product5', 'TypeB', 'ModelV', 2, 'Admin', CURRENT_TIMESTAMP, 'Admin', CURRENT_TIMESTAMP, 'Remark5', 105), + ('Product6', 'TypeD', 'ModelU', 4, 'Admin', CURRENT_TIMESTAMP, 'Admin', CURRENT_TIMESTAMP, 'Remark6', 106), + ('Product7', 'TypeA', 'ModelT', 1, 'Admin', CURRENT_TIMESTAMP, 'Admin', CURRENT_TIMESTAMP, 'Remark7', 107), + ('Product8', 'TypeC', 'ModelS', 3, 'Admin', CURRENT_TIMESTAMP, 'Admin', CURRENT_TIMESTAMP, 'Remark8', 108), + ('Product9', 'TypeB', 'ModelR', 2, 'Admin', CURRENT_TIMESTAMP, 'Admin', CURRENT_TIMESTAMP, 'Remark9', 109), + ('Product10', 'TypeD', 'ModelQ', 4, 'Admin', CURRENT_TIMESTAMP, 'Admin', CURRENT_TIMESTAMP, 'Remark10', 110); INSERT INTO iot_param (id, data_type, uint, type, identifier, name, remark) VALUES (1, 1, 'm', 1, 'identifier1', 'Parameter1', 'Remark1'), @@ -544,7 +544,7 @@ VALUES (1, 1, 1, 'prop1', 'Property 1', 'This is property 1'), (9, 1, 1, 'prop9', 'Property 9', 'This is property 9'), (10, 2, 2, 'prop10', 'Property 10', 'This is property 10'); -INSERT INTO iot_serve (id, product_id, identifier, name, remark) +INSERT INTO iot_serve (product_id, identifier, name, remark) VALUES (1, 'serve1', 'Service 1', 'This is service 1'), (2, 'serve2', 'Service 2', 'This is service 2'), (3, 'serve3', 'Service 3', 'This is service 3'), diff --git a/src/main/resources/db/gateway/public/iot_event.sql b/src/main/resources/db/gateway/public/iot_event.sql index bd6331f..5ea0aa4 100644 --- a/src/main/resources/db/gateway/public/iot_event.sql +++ b/src/main/resources/db/gateway/public/iot_event.sql @@ -1,6 +1,6 @@ create table iot_event ( - id bigserial not null + id bigint not null constraint iot_event_pk primary key, product_id bigint, diff --git a/src/main/resources/db/gateway/public/iot_product.sql b/src/main/resources/db/gateway/public/iot_product.sql index 1882a59..bf3edba 100644 --- a/src/main/resources/db/gateway/public/iot_product.sql +++ b/src/main/resources/db/gateway/public/iot_product.sql @@ -1,6 +1,6 @@ create table iot_product ( - id bigserial not null + id bigint not null constraint iot_product_pk primary key, name varchar, diff --git a/src/main/resources/db/gateway/public/iot_serve.sql b/src/main/resources/db/gateway/public/iot_serve.sql index 39c3a5d..19329c8 100644 --- a/src/main/resources/db/gateway/public/iot_serve.sql +++ b/src/main/resources/db/gateway/public/iot_serve.sql @@ -1,6 +1,6 @@ create table iot_serve ( - id bigserial not null + id bigint not null constraint iot_serve_pk primary key, product_id bigint, diff --git a/src/main/resources/mappers/notice/UserNoticeMapper.xml b/src/main/resources/mappers/notice/UserNoticeMapper.xml index 98128e2..a22a6e7 100644 --- a/src/main/resources/mappers/notice/UserNoticeMapper.xml +++ b/src/main/resources/mappers/notice/UserNoticeMapper.xml @@ -4,7 +4,7 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - +