diff --git a/src/main/java/com/zsc/edu/gateway/modules/attachment/entity/Attachment.java b/src/main/java/com/zsc/edu/gateway/modules/attachment/entity/Attachment.java index ffe7981..36f75d9 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/attachment/entity/Attachment.java +++ b/src/main/java/com/zsc/edu/gateway/modules/attachment/entity/Attachment.java @@ -52,6 +52,11 @@ public class Attachment implements Serializable { public LocalDateTime uploadTime; + /** + * 部门ID(权限) + */ + public Long deptId; + /** * 文件下载链接 */ diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/device/entity/Device.java b/src/main/java/com/zsc/edu/gateway/modules/iot/device/entity/Device.java index 439e686..857389a 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/device/entity/Device.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/device/entity/Device.java @@ -76,6 +76,11 @@ public class Device extends BaseEntity { */ public Long productId; + /** + * 部门ID(权限) + */ + public Long deptId; + /** * 所属产品 */ diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/product/controller/ProductController.java b/src/main/java/com/zsc/edu/gateway/modules/iot/product/controller/ProductController.java index c64d51b..dfa083f 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/product/controller/ProductController.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/product/controller/ProductController.java @@ -32,7 +32,7 @@ public class ProductController { * 创建产品 * * @param dto 创建的产品 - * @return + * @return 新的产品 */ @PostMapping public Product create(@RequestBody ProductDto dto) { diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/product/entity/ProductParam.java b/src/main/java/com/zsc/edu/gateway/modules/iot/product/entity/ProductParam.java deleted file mode 100644 index 7ef40d6..0000000 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/product/entity/ProductParam.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.zsc.edu.gateway.modules.iot.product.entity; - -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -/** - * @author zhuang - */ -@Setter -@Getter -@NoArgsConstructor -@AllArgsConstructor -@TableName("iot_product_param") -public class ProductParam { - private Long productId; - private Long paramId; -} diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/product/repo/ProductParamRepository.java b/src/main/java/com/zsc/edu/gateway/modules/iot/product/repo/ProductParamRepository.java deleted file mode 100644 index ea90233..0000000 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/product/repo/ProductParamRepository.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.zsc.edu.gateway.modules.iot.product.repo; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zsc.edu.gateway.modules.iot.product.entity.ProductParam; - -/** - * @author zhuang - */ -public interface ProductParamRepository extends BaseMapper { -} diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/product/service/ProductService.java b/src/main/java/com/zsc/edu/gateway/modules/iot/product/service/ProductService.java index 67fea46..869b702 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/product/service/ProductService.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/product/service/ProductService.java @@ -15,8 +15,6 @@ public interface ProductService extends IService { Product update(ProductDto dto, Long id); -// Page page(Page page, ProductQuery query); - Product detail(Long id); boolean delete(Long id); diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/EventParam.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/EventParam.java deleted file mode 100644 index d311d26..0000000 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/EventParam.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.zsc.edu.gateway.modules.iot.tsl.entity; - -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.*; - -/** - * @author zhuang - */ -@Setter -@Getter -@NoArgsConstructor -@AllArgsConstructor -@TableName("iot_event_param") -public class EventParam { - private Long eventId; - private Long paramId; -} diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/ServeParam.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/ServeParam.java deleted file mode 100644 index 43414d7..0000000 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/entity/ServeParam.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.zsc.edu.gateway.modules.iot.tsl.entity; - -import com.baomidou.mybatisplus.annotation.TableName; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -/** - * @author zhuang - */ -@Setter -@Getter -@NoArgsConstructor -@AllArgsConstructor -@TableName("iot_serve_param") -public class ServeParam { - private Long serveId; - private Long paramId; -} - diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/EventParamRepository.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/EventParamRepository.java deleted file mode 100644 index 655c9fa..0000000 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/EventParamRepository.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.zsc.edu.gateway.modules.iot.tsl.repo; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zsc.edu.gateway.modules.iot.tsl.entity.EventParam; - -/** - * @author zhuang - */ -public interface EventParamRepository extends BaseMapper { -} diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/ServeParamRepository.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/ServeParamRepository.java deleted file mode 100644 index 8ba5990..0000000 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/repo/ServeParamRepository.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.zsc.edu.gateway.modules.iot.tsl.repo; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.zsc.edu.gateway.modules.iot.tsl.entity.ServeParam; - -public interface ServeParamRepository extends BaseMapper { -} diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/EventService.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/EventService.java index 1d41a26..1c00c53 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/EventService.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/EventService.java @@ -15,8 +15,6 @@ public interface EventService extends IService { Event update(EventDto dto, Long id); -// IPage page(Page page, EventQuery query); - Event detail(Long id); boolean delete(Long id); diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/ParamService.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/ParamService.java index 4443d3a..6a4a0a7 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/ParamService.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/ParamService.java @@ -1,14 +1,8 @@ package com.zsc.edu.gateway.modules.iot.tsl.service; import com.baomidou.mybatisplus.extension.service.IService; -import com.zsc.edu.gateway.modules.iot.product.dto.ProductDto; -import com.zsc.edu.gateway.modules.iot.product.entity.ProductParam; -import com.zsc.edu.gateway.modules.iot.tsl.dto.EventDto; import com.zsc.edu.gateway.modules.iot.tsl.dto.ParamDto; -import com.zsc.edu.gateway.modules.iot.tsl.dto.ServeDto; -import com.zsc.edu.gateway.modules.iot.tsl.entity.EventParam; import com.zsc.edu.gateway.modules.iot.tsl.entity.Param; -import com.zsc.edu.gateway.modules.iot.tsl.entity.ServeParam; import java.util.List; @@ -16,7 +10,10 @@ import java.util.List; * @author zhuang */ public interface ParamService extends IService { - List paramCreate(List params); - boolean paramUpdate(List paramDto, List paramIds); + Boolean create(List params, Long id, Param.ForeignType foreignType); + + Boolean update(List paramDto, Long id); + + Boolean delete(Long id); } diff --git a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/ServeService.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/ServeService.java index da3b83c..61fafa4 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/ServeService.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/ServeService.java @@ -15,8 +15,6 @@ public interface ServeService extends IService { Serve update(ServeDto dto, Long id); -// IPage page(Page page, ServeQuery query); - Serve detail(Long id); Boolean delete(Long 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 f457117..da2185b 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 @@ -1,30 +1,17 @@ package com.zsc.edu.gateway.modules.iot.tsl.service.impl; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zsc.edu.gateway.exception.ConstraintException; import com.zsc.edu.gateway.modules.iot.tsl.dto.EventDto; -import com.zsc.edu.gateway.modules.iot.tsl.dto.ParamDto; import com.zsc.edu.gateway.modules.iot.tsl.entity.Event; -import com.zsc.edu.gateway.modules.iot.tsl.entity.EventParam; import com.zsc.edu.gateway.modules.iot.tsl.entity.Param; import com.zsc.edu.gateway.modules.iot.tsl.mapper.EventMapper; -import com.zsc.edu.gateway.modules.iot.tsl.mapper.ParamMapper; -import com.zsc.edu.gateway.modules.iot.tsl.query.EventQuery; -import com.zsc.edu.gateway.modules.iot.tsl.repo.EventParamRepository; import com.zsc.edu.gateway.modules.iot.tsl.repo.EventRepository; -import com.zsc.edu.gateway.modules.iot.tsl.repo.ParamRepository; 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 java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - /** * @author Yao */ @@ -32,9 +19,6 @@ import java.util.stream.Collectors; @AllArgsConstructor public class EventServiceImpl extends ServiceImpl implements EventService { private final EventMapper mapper; - private final ParamMapper paramMapper; - private final ParamRepository paramRepo; - private final EventParamRepository eventParamRepo; private final ParamService paramService; /** @@ -47,10 +31,7 @@ public class EventServiceImpl extends ServiceImpl implem } Event event = mapper.toEntity(dto); save(event); - List eventParams = paramService.paramCreate(dto.getOutputs()).stream() - .map(paramId -> new EventParam(event.getId(), paramId)) - .toList(); - eventParamRepo.insert(eventParams); + paramService.create(dto.getOutputs(), event.getId(), Param.ForeignType.EVENT); return event; } /** @@ -61,24 +42,9 @@ public class EventServiceImpl extends ServiceImpl implem Event event = baseMapper.selectById(id); mapper.convert(dto, event); updateById(event); - paramService.paramUpdate(dto.getOutputs(), - eventParamRepo.selectList(new LambdaQueryWrapper() - .eq(EventParam::getEventId, event.getId())) - .stream() - .map(EventParam::getParamId) - .collect(Collectors.toList())); + paramService.update(dto.getOutputs(), event.getId()); return event; } - /** - * 分页查询物模型事件 - * - * @param query 查询表单 - * @param page 分页参数 - */ -// @Override -// public IPage page(Page page, EventQuery query) { -// return baseMapper.page(page, query); -// } /** * 查询详情 @@ -96,16 +62,6 @@ public class EventServiceImpl extends ServiceImpl implem @Override public boolean delete(Long id) { removeById(id); - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(EventParam::getEventId, id); - List eventParams = eventParamRepo.selectList(wrapper); - if (!eventParams.isEmpty()) { - List paramIds = eventParams.stream() - .map(EventParam::getParamId) - .toList(); - paramRepo.deleteByIds(paramIds); - } - eventParamRepo.delete(wrapper); - return true; + 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 eb56cf0..542acf4 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 @@ -2,24 +2,16 @@ package com.zsc.edu.gateway.modules.iot.tsl.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.zsc.edu.gateway.modules.iot.product.dto.ProductDto; -import com.zsc.edu.gateway.modules.iot.product.entity.ProductParam; -import com.zsc.edu.gateway.modules.iot.product.repo.ProductParamRepository; import com.zsc.edu.gateway.modules.iot.tsl.dto.ParamDto; -import com.zsc.edu.gateway.modules.iot.tsl.dto.ServeDto; -import com.zsc.edu.gateway.modules.iot.tsl.entity.EventParam; import com.zsc.edu.gateway.modules.iot.tsl.entity.Param; -import com.zsc.edu.gateway.modules.iot.tsl.entity.ServeParam; import com.zsc.edu.gateway.modules.iot.tsl.mapper.ParamMapper; -import com.zsc.edu.gateway.modules.iot.tsl.repo.EventParamRepository; import com.zsc.edu.gateway.modules.iot.tsl.repo.ParamRepository; -import com.zsc.edu.gateway.modules.iot.tsl.repo.ServeParamRepository; import com.zsc.edu.gateway.modules.iot.tsl.service.ParamService; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; -import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -31,24 +23,24 @@ import java.util.stream.IntStream; public class ParamServiceImpl extends ServiceImpl implements ParamService { private final ParamMapper mapper; private final ParamMapper paramMapper; - private final EventParamRepository eventParamRepository; - private final ProductParamRepository productParamRepository; - private final ServeParamRepository serveParamRepository; - @Override - public List paramCreate(List params) { - List paramIds = new ArrayList<>(); + public Boolean create(List params, Long id, Param.ForeignType foreignType) { List paramsToInsert = params.stream() - .map(mapper::toEntity) + .map(dto -> { + Param param = mapper.toEntity(dto); + param.setForeignId(id); + param.setForeignType(foreignType); + return param; + }) .collect(Collectors.toList()); baseMapper.insert(paramsToInsert); - paramsToInsert.forEach(param -> paramIds.add(param.getId())); - return paramIds; + return true; } @Override - public boolean paramUpdate(List paramDto, List paramIds) { - List params = baseMapper.selectByIds(paramIds); + public Boolean update(List paramDto, Long id) { + List params = baseMapper.selectList(new LambdaQueryWrapper() + .eq(Objects.nonNull(id), Param::getForeignId, id)); if (!params.isEmpty() && !paramDto.isEmpty()) { List updatedParams = IntStream.range(0, Math.min(params.size(), paramDto.size())) .parallel() @@ -64,5 +56,10 @@ public class ParamServiceImpl extends ServiceImpl implem return true; } - //TODO 整合方法?方法一:保持现状,但是会有多个联表多个entity多个repo?方法二:建新联表其中values(product_id,serve_id,event_id,param_id)一表联三表 + @Override + 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/ServeServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/ServeServiceImpl.java index e1b1191..c221061 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/ServeServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/iot/tsl/service/impl/ServeServiceImpl.java @@ -1,18 +1,11 @@ package com.zsc.edu.gateway.modules.iot.tsl.service.impl; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zsc.edu.gateway.exception.ConstraintException; import com.zsc.edu.gateway.modules.iot.tsl.dto.ParamDto; import com.zsc.edu.gateway.modules.iot.tsl.dto.ServeDto; import com.zsc.edu.gateway.modules.iot.tsl.entity.*; -import com.zsc.edu.gateway.modules.iot.tsl.mapper.ParamMapper; import com.zsc.edu.gateway.modules.iot.tsl.mapper.ServeMapper; -import com.zsc.edu.gateway.modules.iot.tsl.query.ServeQuery; -import com.zsc.edu.gateway.modules.iot.tsl.repo.ParamRepository; -import com.zsc.edu.gateway.modules.iot.tsl.repo.ServeParamRepository; import com.zsc.edu.gateway.modules.iot.tsl.repo.ServeRepository; import com.zsc.edu.gateway.modules.iot.tsl.service.ParamService; import com.zsc.edu.gateway.modules.iot.tsl.service.ServeService; @@ -21,8 +14,6 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.Stream; /** @@ -33,8 +24,6 @@ import java.util.stream.Stream; public class ServeServiceImpl extends ServiceImpl implements ServeService { private final ServeMapper mapper; - private final ParamRepository paramRepository; - private final ServeParamRepository serveParamRepository; private final ParamService paramService; /** * 新建功能 @@ -46,10 +35,9 @@ public class ServeServiceImpl extends ServiceImpl implem } Serve serve = mapper.toEntity(dto); save(serve); - List serveParams = paramService.paramCreate(dto.getParams()).stream() - .map(paramId -> new ServeParam(serve.getId(), paramId)) - .toList(); - serveParamRepository.insert(serveParams); + List params = new ArrayList<>(dto.getInputs()); + params.addAll(dto.getOutputs()); + paramService.create(params, serve.getId(), Param.ForeignType.SERVE); return serve; } /** @@ -60,26 +48,12 @@ public class ServeServiceImpl extends ServiceImpl implem Serve serve = baseMapper.selectById(id); mapper.convert(dto, serve); updateById(serve); - paramService.paramUpdate(dto.getParams(), - serveParamRepository.selectList(new LambdaQueryWrapper() - .eq(ServeParam::getServeId, serve.getId())) - .stream() - .map(ServeParam::getParamId) - .collect(Collectors.toList())); + List params = new ArrayList<>(dto.getInputs()); + params.addAll(dto.getOutputs()); + paramService.update(params, serve.getId()); return serve; } - /** - * 分页查询功能 - * - * @param query 查询表单 - * @param page 分页参数 - */ -// @Override -// public IPage page(Page page, ServeQuery query) { -// return baseMapper.page(page, query); -// } - /** * 查询详情 * @param id 主键 @@ -89,19 +63,16 @@ public class ServeServiceImpl extends ServiceImpl implem public Serve detail(Long id) { return baseMapper.selectById(id); } + + /** + * 删除功能 + * + * @param id serveId + * @return true + */ @Override public Boolean delete(Long id) { removeById(id); - LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.eq(ServeParam::getServeId, id); - List serveParam = serveParamRepository.selectList(wrapper); - if (!serveParam.isEmpty()) { - List paramIds = serveParam.stream() - .map(ServeParam::getParamId) - .toList(); - paramRepository.deleteByIds(paramIds); - } - serveParamRepository.delete(wrapper); - return true; + return paramService.delete(id); } } diff --git a/src/main/java/com/zsc/edu/gateway/modules/notice/entity/Bulletin.java b/src/main/java/com/zsc/edu/gateway/modules/notice/entity/Bulletin.java index 71497b0..08cfd1e 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/notice/entity/Bulletin.java +++ b/src/main/java/com/zsc/edu/gateway/modules/notice/entity/Bulletin.java @@ -33,6 +33,11 @@ public class Bulletin extends BaseEntity { */ public State state = State.edit; + /** + * 部门ID(权限) + */ + public Long deptId; + /** * 是否置顶 */ diff --git a/src/main/java/com/zsc/edu/gateway/modules/notice/entity/Message.java b/src/main/java/com/zsc/edu/gateway/modules/notice/entity/Message.java index b320dc5..b3dc73e 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/notice/entity/Message.java +++ b/src/main/java/com/zsc/edu/gateway/modules/notice/entity/Message.java @@ -57,4 +57,8 @@ public class Message extends BaseEntity { */ public String content; + /** + * 部门ID(权限) + */ + public Long deptId; } diff --git a/src/main/java/com/zsc/edu/gateway/modules/notice/service/UserMessageService.java b/src/main/java/com/zsc/edu/gateway/modules/notice/service/UserMessageService.java index 1aaef3c..e2491c4 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/notice/service/UserMessageService.java +++ b/src/main/java/com/zsc/edu/gateway/modules/notice/service/UserMessageService.java @@ -31,5 +31,7 @@ public interface UserMessageService extends IService { boolean markAsRead(UserDetailsImpl userDetails, List messageIds); + boolean markAllAsRead(UserDetailsImpl userDetails); + IPage getAdminMessagePage(Page page, AdminMessageQuery query); } diff --git a/src/main/java/com/zsc/edu/gateway/modules/notice/service/impl/UserMessageServiceImpl.java b/src/main/java/com/zsc/edu/gateway/modules/notice/service/impl/UserMessageServiceImpl.java index 19d517f..09b4ce7 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/notice/service/impl/UserMessageServiceImpl.java +++ b/src/main/java/com/zsc/edu/gateway/modules/notice/service/impl/UserMessageServiceImpl.java @@ -1,7 +1,6 @@ package com.zsc.edu.gateway.modules.notice.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -101,10 +100,7 @@ public class UserMessageServiceImpl extends ServiceImpl messageIds) { if (CollectionUtils.isEmpty(messageIds)) { - return this.lambdaUpdate().eq(UserMessage::getUserId, userDetails.getId()) - .set(UserMessage::getIsRead, true) - .set(UserMessage::getReadTime, LocalDateTime.now()) - .update(); + throw new RuntimeException("您输入的集合为空"); } return this.lambdaUpdate().eq(UserMessage::getUserId, userDetails.getId()) .in(UserMessage::getMessageId, messageIds) @@ -113,6 +109,16 @@ public class UserMessageServiceImpl extends ServiceImpl userMessages = receivers.stream().map(user -> new UserMessage(null, user.getId(), message.getId(), true, null)).collect(Collectors.toSet()); diff --git a/src/main/java/com/zsc/edu/gateway/modules/system/entity/Authority.java b/src/main/java/com/zsc/edu/gateway/modules/system/entity/Authority.java index 462d5f1..98df76e 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/system/entity/Authority.java +++ b/src/main/java/com/zsc/edu/gateway/modules/system/entity/Authority.java @@ -25,5 +25,11 @@ public class Authority extends BaseEntity { * 启用状态 */ private Boolean enabled = true; + /** + * 部门ID(权限) + */ + public Long deptId; + + } diff --git a/src/main/java/com/zsc/edu/gateway/modules/system/entity/Role.java b/src/main/java/com/zsc/edu/gateway/modules/system/entity/Role.java index e796697..40fc44c 100644 --- a/src/main/java/com/zsc/edu/gateway/modules/system/entity/Role.java +++ b/src/main/java/com/zsc/edu/gateway/modules/system/entity/Role.java @@ -29,6 +29,11 @@ public class Role extends BaseEntity { */ private Boolean enabled = true; + /** + * 部门ID(权限) + */ + public Long deptId; + /** * 权限集合 */ diff --git a/src/main/resources/db/gateway.sql b/src/main/resources/db/gateway.sql index a4b8b8b..3bc5d88 100644 --- a/src/main/resources/db/gateway.sql +++ b/src/main/resources/db/gateway.sql @@ -495,7 +495,7 @@ VALUES (1, 'Device1', TRUE, 1, 'HW1.0', 'FW1.0', 'FactoryA', 'Client1', 1, '{"pa (10, 'Device10', FALSE, 10, 'HW1.9', 'FW1.9', 'FactoryJ', 'Client10', 10, '{"param10": "value10"}', '{"prop10": "value10"}', 'Admin', CURRENT_TIMESTAMP, 'Admin', CURRENT_TIMESTAMP, 'Remark10'); -INSERT INTO iot_product (id, name, type_string, model, link, create_by, create_time, update_by, update_time, remark, +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), @@ -556,4 +556,53 @@ VALUES (1, 'serve1', 'Service 1', 'This is service 1'), (9, 'serve9', 'Service 9', 'This is service 9'), (10, 'serve10', 'Service 10', 'This is service 10'); +alter table iot_device + add dept_id bigint; + +comment on column iot_device.dept_id is '部门权限id'; + +alter table iot_param + add dept_id bigint; + +comment on column iot_param.dept_id is '部门权限id'; + +alter table iot_serve + add dept_id bigint; + +comment on column iot_serve.dept_id is '部门权限id'; + +alter table iot_event + add dept_id bigint; + +comment on column iot_event.dept_id is '部门权限id'; + +alter table iot_event + add dept_id bigint; + +comment on column iot_event.dept_id is '部门权限id'; + +alter table sys_bulletin + add dept_id bigint; + +comment on column sys_bulletin.dept_id is '部门权限id'; + +alter table sys_bulletin + add dept_id bigint; + +comment on column sys_bulletin.dept_id is '部门权限id'; + +alter table sys_message + add dept_id bigint; + +comment on column sys_message.dept_id is '部门权限id'; + +alter table sys_authority + add dept_id bigint; + +comment on column sys_authority.dept_id is '部门权限id'; + +alter table sys_role + add dept_id bigint; + +comment on column sys_role.dept_id is '部门权限id'; diff --git a/src/test/java/com/zsc/edu/gateway/domain/BaseParamBuilder.java b/src/test/java/com/zsc/edu/gateway/domain/BaseParamBuilder.java new file mode 100644 index 0000000..2d87312 --- /dev/null +++ b/src/test/java/com/zsc/edu/gateway/domain/BaseParamBuilder.java @@ -0,0 +1,16 @@ +package com.zsc.edu.gateway.domain; + +import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; + +public class BaseParamBuilder { + public Long id = 1L; + public String identifier; + public String name; + public String remark; + + public BaseParamBuilder() { + remark = randomAlphabetic(5); + identifier = randomAlphabetic(5); + name = randomAlphabetic(5); + } +} diff --git a/src/test/java/com/zsc/edu/gateway/domain/DeptBuilder.java b/src/test/java/com/zsc/edu/gateway/domain/DeptBuilder.java index eb49182..4dd8242 100644 --- a/src/test/java/com/zsc/edu/gateway/domain/DeptBuilder.java +++ b/src/test/java/com/zsc/edu/gateway/domain/DeptBuilder.java @@ -11,7 +11,7 @@ public class DeptBuilder extends BaseEntityBuilder { public Dept parent; public Long pid; - public HashSet children; + public List children; public static DeptBuilder aDept(){ @@ -34,7 +34,7 @@ public class DeptBuilder extends BaseEntityBuilder { return this; } - public DeptBuilder children(HashSet children) { + public DeptBuilder children(List children) { this.children = children; return this; } @@ -44,7 +44,7 @@ public class DeptBuilder extends BaseEntityBuilder { Dept dept = new Dept(); dept.setName(name); dept.setPid(pid); - dept.setChildren((List) children); + dept.setChildren(children); return dept; } diff --git a/src/test/java/com/zsc/edu/gateway/domain/ParamBuilder.java b/src/test/java/com/zsc/edu/gateway/domain/ParamBuilder.java new file mode 100644 index 0000000..b87846f --- /dev/null +++ b/src/test/java/com/zsc/edu/gateway/domain/ParamBuilder.java @@ -0,0 +1,44 @@ +package com.zsc.edu.gateway.domain; + +import com.zsc.edu.gateway.modules.iot.tsl.entity.DataType; +import com.zsc.edu.gateway.modules.iot.tsl.entity.Param; + +public class ParamBuilder extends BaseParamBuilder { + public DataType dataType; + public String uint; + public Param.Type type; + public Param.ForeignType foreignType; + + public static ParamBuilder aParam() { + return new ParamBuilder(); + } + + public ParamBuilder dataType(DataType dataType) { + this.dataType = dataType; + return this; + } + + public ParamBuilder uint(String uint) { + this.uint = uint; + return this; + } + + public ParamBuilder type(Param.Type type) { + this.type = type; + return this; + } + + public ParamBuilder foreignType(Param.ForeignType foreignType) { + this.foreignType = foreignType; + return this; + } + + public Param build() { + Param param = new Param(); + param.setUint(uint); + param.setType(type); + param.setForeignType(foreignType); + param.setDataType(dataType); + return param; + } +} diff --git a/src/test/java/com/zsc/edu/gateway/rest/BulletinControllerTest.java b/src/test/java/com/zsc/edu/gateway/rest/BulletinControllerTest.java new file mode 100644 index 0000000..35f013f --- /dev/null +++ b/src/test/java/com/zsc/edu/gateway/rest/BulletinControllerTest.java @@ -0,0 +1,91 @@ +package com.zsc.edu.gateway.rest; + +import com.zsc.edu.gateway.MockMvcConfigBase; +import com.zsc.edu.gateway.domain.BulletinBuilder; +import com.zsc.edu.gateway.framework.security.UserDetailsImpl; +import com.zsc.edu.gateway.modules.notice.dto.BulletinDto; +import com.zsc.edu.gateway.modules.notice.entity.Bulletin; +import com.zsc.edu.gateway.modules.notice.service.BulletinService; +import com.zsc.edu.gateway.modules.system.controller.AuthorityController; +import org.assertj.core.util.Lists; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.mockito.Spy; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.http.MediaType; + +import java.util.List; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf; +import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.user; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@WebMvcTest(AuthorityController.class) +public class BulletinControllerTest extends MockMvcConfigBase { + @Spy + private static Bulletin bulletin1; + private static Bulletin bulletin2; + @MockBean + private BulletinService service; + + @BeforeAll + static void beforeAll() { + bulletin1 = BulletinBuilder.bBulletin().title("title1").content("content1").top(true).build(); + bulletin1.setId(1L); + bulletin2 = BulletinBuilder.bBulletin().title("title2").content("content2").top(false).build(); + } + + @Test + void create() throws Exception { + BulletinDto dto = new BulletinDto(); + dto.setTitle(bulletin1.getTitle()); + dto.setContent(bulletin1.getContent()); + dto.setTop(bulletin1.getTop()); + when(service.create(any(UserDetailsImpl.class), any(BulletinDto.class))).thenReturn(bulletin1); + mockMvc.perform(post("/api/rest/bulletin") + .with(csrf().asHeader()) + .with(user(userDetails)) + .contentType(MediaType.APPLICATION_JSON) + .content(objectMapper.writeValueAsString(dto)) + ) + .andExpect(status().isOk()) + .andDo(print()); + verify(service).create(any(UserDetailsImpl.class), any(BulletinDto.class)); + } + + @Test + void list() throws Exception { + List bulletins = Lists.newArrayList(bulletin1, bulletin2); + when(service.list()).thenReturn(bulletins); + mockMvc.perform(get("/api/rest/bulletin").with(user(userDetails)) + ).andExpect(status().isOk()).andDo(print()); + verify(service).list(); + } + + @Test + void update() throws Exception { + BulletinDto dto = new BulletinDto(); + dto.setTitle(bulletin1.getTitle()); + dto.setContent(bulletin1.getContent()); + dto.setTop(bulletin1.getTop()); + when(service.update(any(UserDetailsImpl.class), any(BulletinDto.class), anyLong())).thenReturn(true); + mockMvc.perform(patch("/api/rest/bulletin/{id}", bulletin1.getId()) + .with(csrf().asHeader()) + .with(user(userDetails)) + .contentType(MediaType.APPLICATION_JSON) + .content(objectMapper.writeValueAsString(dto)) + ) + .andExpect(status().isOk()) + .andDo(print()); + verify(service).update(any(UserDetailsImpl.class), any(BulletinDto.class), anyLong()); + } + + +} diff --git a/src/test/java/com/zsc/edu/gateway/service/BulletinServiceTest.java b/src/test/java/com/zsc/edu/gateway/service/BulletinServiceTest.java index f006cad..98640c6 100644 --- a/src/test/java/com/zsc/edu/gateway/service/BulletinServiceTest.java +++ b/src/test/java/com/zsc/edu/gateway/service/BulletinServiceTest.java @@ -14,25 +14,41 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import java.util.Arrays; import java.util.List; import static org.junit.jupiter.api.Assertions.*; public class BulletinServiceTest { + @Resource private BulletinService service; @Resource private BulletinRepository repo; - Bulletin bulletin1; - Bulletin bulletin2; + private Bulletin bulletin1; + private Bulletin bulletin2; + private UserDetailsImpl userDetails; @BeforeEach void setUp() { - bulletin1 = BulletinBuilder.bBulletin().title("测试1").build(); - repo.insert(bulletin1); - bulletin2 = BulletinBuilder.bBulletin().title("测试2").build(); - repo.insert(bulletin2); + userDetails = new UserDetailsImpl(); + userDetails.setUsername("admin"); + bulletin1 = createAndInsertBulletin("测试1"); + bulletin2 = createAndInsertBulletin("测试2"); + } + + @AfterEach + void tearDown() { + // 清理所有测试公告 + List titlesToDelete = Arrays.asList("测试1", "测试2", "测试3", "测试"); + repo.delete(new QueryWrapper().in("title", titlesToDelete)); + } + + private Bulletin createAndInsertBulletin(String title) { + Bulletin bulletin = BulletinBuilder.bBulletin().title(title).build(); + repo.insert(bulletin); + return bulletin; } @Test @@ -45,45 +61,38 @@ public class BulletinServiceTest { @Test void createBulletin() { - BulletinDto dto = new BulletinDto(); - dto.setTitle("测试"); - dto.setTop(true); - dto.setContent("测试测试"); - dto.setRemark("测试公告增加"); - BulletinDto dto2 = new BulletinDto(); - dto2.setTitle(bulletin2.getTitle()); -// dto2.setTop(bulletin2.isTop()); - dto2.setRemark(bulletin2.getRemark()); - UserDetailsImpl userDetails = new UserDetailsImpl(); - userDetails.setUsername("admin"); + BulletinDto dto = createBulletinDto("测试", true, "测试测试", "测试公告增加"); Bulletin bulletin = service.create(userDetails, dto); assertNotNull(bulletin.getId()); + List list = service.list(); assertEquals(3, list.size()); + // 不能创建其他已存在标题公告 - assertThrows(ConstraintException.class, () -> service.create(userDetails, dto2)); + assertThrows(ConstraintException.class, () -> service.create(userDetails, createBulletinDto(bulletin2.getTitle(), false, "", ""))); } @Test void updateBulletin() { - BulletinDto dto = new BulletinDto(); - dto.setTitle("测试3"); - dto.setContent("测试测"); - dto.setTop(true); - dto.setRemark("测试公告更新"); - UserDetailsImpl userDetails = new UserDetailsImpl(); - userDetails.setUsername("admin"); - assertTrue(service.update(userDetails, dto, bulletin2.id)); - Bulletin bulletin = service.getOne(new LambdaQueryWrapper().eq(Bulletin::getTitle, dto.getTitle())); - assertEquals(bulletin.getTitle(), dto.getTitle()); - assertEquals(bulletin.getId(), bulletin2.id); - // 不能改为其他已存在的同名同代码部门 -// assertThrows(ConstraintException.class, -// () -> service.update(userDetails, new BulletinDto(bulletin1.getTitle(), true, null, null), bulletin2.id)); + BulletinDto dto = createBulletinDto("测试3", true, "测试测", "测试公告更新"); + assertTrue(service.update(userDetails, dto, bulletin2.getId())); + + Bulletin updatedBulletin = service.getOne(new LambdaQueryWrapper().eq(Bulletin::getTitle, dto.getTitle())); + assertNotNull(updatedBulletin); + assertEquals(dto.getTitle(), updatedBulletin.getTitle()); + assertEquals(bulletin2.getId(), updatedBulletin.getId()); + + // 不能改为其他已存在的同名公告 + assertThrows(ConstraintException.class, + () -> service.update(userDetails, createBulletinDto(bulletin1.getTitle(), true, "测试测试", "测试公告更新"), bulletin2.getId())); } - @AfterEach - void tearDown() { - repo.delete(new QueryWrapper<>()); + private BulletinDto createBulletinDto(String title, boolean top, String content, String remark) { + BulletinDto dto = new BulletinDto(); + dto.setTitle(title); + dto.setTop(top); + dto.setContent(content); + dto.setRemark(remark); + return dto; } } diff --git a/src/test/java/com/zsc/edu/gateway/service/ParamServiceTest.java b/src/test/java/com/zsc/edu/gateway/service/ParamServiceTest.java new file mode 100644 index 0000000..ad57157 --- /dev/null +++ b/src/test/java/com/zsc/edu/gateway/service/ParamServiceTest.java @@ -0,0 +1,97 @@ +package com.zsc.edu.gateway.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zsc.edu.gateway.domain.ParamBuilder; +import com.zsc.edu.gateway.exception.ConstraintException; +import com.zsc.edu.gateway.modules.iot.tsl.dto.ParamDto; +import com.zsc.edu.gateway.modules.iot.tsl.entity.DataType; +import com.zsc.edu.gateway.modules.iot.tsl.entity.Param; +import com.zsc.edu.gateway.modules.iot.tsl.repo.ParamRepository; +import com.zsc.edu.gateway.modules.iot.tsl.service.ParamService; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +@SpringBootTest +public class ParamServiceTest { + @Autowired + private ParamService service; + @Autowired + private ParamRepository repo; + + private Param param1; + private Param param2; + + @BeforeEach + void setUp() { + param1 = ParamBuilder.aParam().uint("测试1").build(); + repo.insert(param1); + param2 = ParamBuilder.aParam().uint("测试2").build(); + repo.insert(param2); + } + + @Test + void list() { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + assertEquals(2, service.list(queryWrapper.like(Param::getUint, "测试")).size()); + assertEquals(1, service.list(queryWrapper.eq(Param::getUint, param1.getUint())).size()); +// assertEquals(2, service.list().size()); + } + + @Test + void createParams() { + List params = createParamDtoList(); + Long foreignId = 1L; + Boolean result = service.create(params, foreignId, null); + assertTrue(result); + List insertedParams = service.list(new LambdaQueryWrapper().like(Param::getName, "PARAM_NAME")); + assertEquals(2, insertedParams.size()); // 因为setUp方法已经插入了两个参数 + } + + @Test + void updateParams() { + ParamDto dto = new ParamDto(); + dto.setName("PARAM_NAME_UPDATE"); + dto.setIdentifier("测试更新"); + List params = new ArrayList<>(); + params.add(dto); + assertTrue(service.update(params, param2.getId())); + + // 确保获取到的 param 对象是最新的 + Param param = repo.selectById(param2.getId()); + assertNotNull(param); // 确保 param 不为空 + + // 更新后的 identifier 应该是 "测试更新" + assertEquals("测试更新", param.getIdentifier()); + assertEquals(param2.getId(), param.getId()); + } + + + @AfterEach + void tearDown() { + repo.delete(new LambdaQueryWrapper() + .in(Param::getId, param1.getId(), param2.getId()) + .or() + .in(Param::getName, "PARAM_NAME_1", "PARAM_NAME_2", "PARAM_NAME_UPDATE")); + } + + private List createParamDtoList() { + ParamDto paramDto1 = new ParamDto(); + paramDto1.setName("PARAM_NAME_1"); + paramDto1.setIdentifier("PARAM_VALUE_1"); + paramDto1.setDataType(DataType.DATE); + ParamDto paramDto2 = new ParamDto(); + paramDto2.setName("PARAM_NAME_2"); + paramDto2.setIdentifier("PARAM_VALUE_2"); + paramDto2.setDataType(DataType.DATE); + return Arrays.asList(paramDto1, paramDto2); + } +}