Compare commits
5 Commits
f1e1c21dbf
...
bd6f4c2ed6
Author | SHA1 | Date | |
---|---|---|---|
bd6f4c2ed6 | |||
5e49367cf5 | |||
c97e485305 | |||
6161f8abfb | |||
4d58a790ab |
@ -65,6 +65,7 @@ public class ApiExceptionHandler {
|
||||
return new ResponseEntity<>(objectMapper.writeValueAsString(Map.of("msg", ex.getMessage())), HttpStatus.INTERNAL_SERVER_ERROR);
|
||||
}
|
||||
|
||||
//TODO 冲突
|
||||
@ExceptionHandler(value = {Exception.class})
|
||||
public ResponseEntity<Object> handleException(Exception ex) throws JsonProcessingException {
|
||||
log.error("Exception: {}", objectMapper.writeValueAsString(Map.of("msg", ex.getMessage())));
|
||||
|
@ -5,6 +5,9 @@ import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilde
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
/**
|
||||
* @author veryao
|
||||
*/
|
||||
@Configuration
|
||||
public class JsonConfig {
|
||||
|
||||
|
@ -0,0 +1,61 @@
|
||||
package com.zsc.edu.gateway.framework.json;
|
||||
|
||||
import org.apache.ibatis.type.BaseTypeHandler;
|
||||
import org.apache.ibatis.type.JdbcType;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.sql.CallableStatement;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author zhuang
|
||||
*/
|
||||
@Component
|
||||
public class MapJsonTypeHandler extends BaseTypeHandler<Map<String, Object>> {
|
||||
|
||||
private static final ObjectMapper objectMapper = new ObjectMapper();
|
||||
|
||||
@Override
|
||||
public void setNonNullParameter(PreparedStatement ps, int i, Map<String, Object> parameter, JdbcType jdbcType) throws SQLException {
|
||||
try {
|
||||
ps.setString(i, objectMapper.writeValueAsString(parameter));
|
||||
} catch (JsonProcessingException e) {
|
||||
throw new SQLException("Error converting map to JSON", e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getNullableResult(ResultSet rs, String columnName) throws SQLException {
|
||||
String json = rs.getString(columnName);
|
||||
return parseJson(json);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
|
||||
String json = rs.getString(columnIndex);
|
||||
return parseJson(json);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
|
||||
String json = cs.getString(columnIndex);
|
||||
return parseJson(json);
|
||||
}
|
||||
|
||||
private Map<String, Object> parseJson(String json) {
|
||||
if (json == null) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
return objectMapper.readValue(json, HashMap.class);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Error parsing JSON to map", e);
|
||||
}
|
||||
}
|
||||
}
|
@ -23,9 +23,8 @@ public class MybatisPlusConfig {
|
||||
// // 添加自定义的数据权限处理器
|
||||
// dataPermissionInterceptor.setDataPermissionHandler(new MyDataPermissionHandler());
|
||||
// interceptor.addInnerInterceptor(dataPermissionInterceptor);
|
||||
|
||||
|
||||
return interceptor;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -11,6 +11,7 @@ import org.springframework.security.authentication.dao.DaoAuthenticationProvider
|
||||
import org.springframework.security.authorization.AuthorizationDecision;
|
||||
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
|
||||
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
||||
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
|
||||
import org.springframework.security.core.session.SessionRegistry;
|
||||
import org.springframework.security.core.userdetails.UserDetailsService;
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
@ -32,6 +33,7 @@ import javax.sql.DataSource;
|
||||
@AllArgsConstructor
|
||||
@EnableMethodSecurity
|
||||
@Configuration
|
||||
@EnableWebSecurity
|
||||
public class SpringSecurityConfig {
|
||||
|
||||
private final UserDetailsService userDetailsService;
|
||||
|
@ -1,12 +1,11 @@
|
||||
package com.zsc.edu.gateway.modules.iot.device.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.zsc.edu.gateway.modules.iot.device.dto.BatchDeviceDto;
|
||||
import com.zsc.edu.gateway.modules.iot.device.dto.DeviceDto;
|
||||
import com.zsc.edu.gateway.modules.iot.device.dto.DeviceServeDto;
|
||||
import com.zsc.edu.gateway.modules.iot.device.entity.Device;
|
||||
import com.zsc.edu.gateway.modules.iot.device.entity.DeviceSelect;
|
||||
import com.zsc.edu.gateway.modules.iot.device.entity.DeviceDiff;
|
||||
import com.zsc.edu.gateway.modules.iot.device.query.DeviceQuery;
|
||||
import com.zsc.edu.gateway.modules.iot.device.service.DeviceService;
|
||||
import com.zsc.edu.gateway.modules.iot.device.vo.DeviceVo;
|
||||
@ -108,7 +107,7 @@ public class DeviceController {
|
||||
* 根据名称模糊查询
|
||||
*/
|
||||
@GetMapping("/query")
|
||||
public List<DeviceSelect> query(String name) {
|
||||
public List<DeviceDiff> query(String name) {
|
||||
return service.queryByName(name);
|
||||
}
|
||||
}
|
||||
|
@ -8,6 +8,8 @@ import lombok.NoArgsConstructor;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author yao
|
||||
*/
|
||||
@ -31,11 +33,11 @@ public class BatchDeviceDto {
|
||||
/**
|
||||
* 扩展属性
|
||||
*/
|
||||
private String extendParams;
|
||||
private Map<String, Object> extendParams;
|
||||
/**
|
||||
* 设备物模型属性
|
||||
*/
|
||||
private String properties;
|
||||
private Map<String, Object> properties;
|
||||
/**
|
||||
* 固件版本
|
||||
*/
|
||||
@ -47,6 +49,11 @@ public class BatchDeviceDto {
|
||||
/**
|
||||
* 所属产品
|
||||
*/
|
||||
@NotBlank(message = "所属产品不为空")
|
||||
private Long productId;
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
|
@ -7,6 +7,8 @@ import lombok.NoArgsConstructor;
|
||||
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author 15864
|
||||
*/
|
||||
@ -34,17 +36,21 @@ public class DeviceDto {
|
||||
/**
|
||||
* 扩展属性
|
||||
*/
|
||||
|
||||
private String extendParams;
|
||||
private Map<String, Object> extendParams;
|
||||
|
||||
/**
|
||||
* 设备物模型属性
|
||||
*/
|
||||
private String properties;
|
||||
private Map<String, Object> properties;
|
||||
|
||||
/**
|
||||
* 所属产品
|
||||
*/
|
||||
private Long productId;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IEnum;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.zsc.edu.gateway.common.enums.IState;
|
||||
import com.zsc.edu.gateway.framework.json.MapJsonTypeHandler;
|
||||
import com.zsc.edu.gateway.modules.iot.product.entity.Product;
|
||||
import com.zsc.edu.gateway.modules.system.entity.BaseEntity;
|
||||
import lombok.AllArgsConstructor;
|
||||
@ -11,7 +12,7 @@ import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.Objects;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author 15864
|
||||
@ -60,16 +61,17 @@ public class Device extends BaseEntity {
|
||||
*/
|
||||
private String clientId;
|
||||
|
||||
|
||||
/**
|
||||
* 扩展配置
|
||||
*/
|
||||
private String extendParams = "";
|
||||
@TableField(typeHandler = MapJsonTypeHandler.class)
|
||||
private Map<String, Object> extendParams;
|
||||
|
||||
/**
|
||||
* 设备属性
|
||||
*/
|
||||
private String properties = "";
|
||||
@TableField(typeHandler = MapJsonTypeHandler.class)
|
||||
private Map<String, Object> properties;
|
||||
|
||||
/**
|
||||
* 所属产品ID
|
||||
|
@ -12,7 +12,7 @@ import lombok.Setter;
|
||||
@Getter
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class DeviceSelect {
|
||||
public class DeviceDiff {
|
||||
/**
|
||||
* 设备ID
|
||||
*/
|
@ -1,12 +1,8 @@
|
||||
package com.zsc.edu.gateway.modules.iot.device.repo;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.zsc.edu.gateway.modules.iot.device.entity.Device;
|
||||
import com.zsc.edu.gateway.modules.iot.device.query.DeviceQuery;
|
||||
import com.zsc.edu.gateway.modules.iot.device.vo.DeviceVo;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
@ -18,11 +14,9 @@ public interface DeviceRepository extends BaseMapper<Device> {
|
||||
@Select("select * from iot_device where name=#{name}")
|
||||
Device findByName(@Param("name") String name);
|
||||
|
||||
IPage<DeviceVo> query(Page<DeviceVo> page, @Param("query") DeviceQuery query);
|
||||
|
||||
DeviceVo findById(@Param("id") Long id);
|
||||
|
||||
@Select("select * from iot_device where client_id=#{clientId} and status=#{status} and online=#{online}")
|
||||
@Select("select * from iot_device where client_id=#{clientId} and state=#{status} and online=#{online}")
|
||||
Device findByClientIdAndStateAndOnline(@Param("clientId") String clientId,
|
||||
@Param("status") Device.Status status,
|
||||
@Param("online") Boolean online);
|
||||
|
@ -7,7 +7,7 @@ import com.zsc.edu.gateway.modules.iot.device.dto.BatchDeviceDto;
|
||||
import com.zsc.edu.gateway.modules.iot.device.dto.DeviceDto;
|
||||
import com.zsc.edu.gateway.modules.iot.device.dto.DeviceServeDto;
|
||||
import com.zsc.edu.gateway.modules.iot.device.entity.Device;
|
||||
import com.zsc.edu.gateway.modules.iot.device.entity.DeviceSelect;
|
||||
import com.zsc.edu.gateway.modules.iot.device.entity.DeviceDiff;
|
||||
import com.zsc.edu.gateway.modules.iot.device.query.DeviceQuery;
|
||||
import com.zsc.edu.gateway.modules.iot.device.vo.DeviceVo;
|
||||
|
||||
@ -23,11 +23,9 @@ public interface DeviceService extends IService<Device> {
|
||||
|
||||
Device update(DeviceDto dto, Long id);
|
||||
|
||||
IPage<DeviceVo> query(Page<DeviceVo> page, DeviceQuery query);
|
||||
|
||||
DeviceVo detail(Long id);
|
||||
|
||||
Boolean serve(DeviceServeDto dto);
|
||||
|
||||
List<DeviceSelect> queryByName(String name);
|
||||
List<DeviceDiff> queryByName(String name);
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ import com.zsc.edu.gateway.modules.iot.device.dto.BatchDeviceDto;
|
||||
import com.zsc.edu.gateway.modules.iot.device.dto.DeviceDto;
|
||||
import com.zsc.edu.gateway.modules.iot.device.dto.DeviceServeDto;
|
||||
import com.zsc.edu.gateway.modules.iot.device.entity.Device;
|
||||
import com.zsc.edu.gateway.modules.iot.device.entity.DeviceSelect;
|
||||
import com.zsc.edu.gateway.modules.iot.device.entity.DeviceDiff;
|
||||
import com.zsc.edu.gateway.modules.iot.device.mapper.DeviceMapper;
|
||||
import com.zsc.edu.gateway.modules.iot.device.query.DeviceQuery;
|
||||
import com.zsc.edu.gateway.modules.iot.device.repo.DeviceRepository;
|
||||
@ -61,26 +61,27 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceRepository, Device> imp
|
||||
*/
|
||||
@Override
|
||||
public List<Device> batchCreate(BatchDeviceDto dto) {
|
||||
List<Device> devices = new ArrayList<>();
|
||||
if (dto.getNum() == null || dto.getNum() <= 0) {
|
||||
throw new ConstraintException("设备数量必须大于0!");
|
||||
}
|
||||
if (dto.getPrefix() == null) {
|
||||
throw new ConstraintException("前缀不能为空!");
|
||||
}
|
||||
if (dto.getProductId() == null) {
|
||||
throw new ConstraintException("产品ID不能为空!");
|
||||
}
|
||||
// 获取产品信息
|
||||
Product product = productRepo.selectById(dto.getProductId());
|
||||
if (product == null) {
|
||||
throw new ConstraintException("该产品不存在!");
|
||||
}
|
||||
// 生成设备名称列表
|
||||
List<String> names = new ArrayList<>();
|
||||
for (int i = 0; i < dto.getNum(); i++) {
|
||||
String name = String.format("%s%05d", dto.getPrefix(), i + 1);
|
||||
names.add(name);
|
||||
DeviceDto deviceDto = new DeviceDto();
|
||||
deviceDto.setName(name);
|
||||
deviceDto.setProductId(product.getId());
|
||||
deviceDto.setExtendParams(dto.getExtendParams());
|
||||
deviceDto.setProperties(dto.getProperties());
|
||||
deviceDto.setFirmwareVersion(dto.getFirmwareVersion());
|
||||
Device device = mapper.toEntity(deviceDto);
|
||||
Integer typeCode = Integer.valueOf(product.getProductType());
|
||||
device.setClientId(String.format("%s%02d%02d%05d", "001", typeCode, 3, i + 1));
|
||||
devices.add(device);
|
||||
}
|
||||
// 检查设备名称是否已存在
|
||||
LambdaQueryWrapper<Device> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.in(Device::getName, names);
|
||||
List<Device> existingDevices = baseMapper.selectList(queryWrapper);
|
||||
@ -90,35 +91,43 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceRepository, Device> imp
|
||||
.collect(Collectors.toList());
|
||||
throw new ConstraintException("设备已存在!已存在的设备名称: " + String.join(", ", existingNames));
|
||||
}
|
||||
// 创建设备列表
|
||||
List<Device> devices = new ArrayList<>();
|
||||
for (int i = 0; i < dto.getNum(); i++) {
|
||||
String name = String.format("%s%05d", dto.getPrefix(), i + 1);
|
||||
DeviceDto deviceDto = new DeviceDto();
|
||||
deviceDto.setName(name);
|
||||
deviceDto.setProductId(product.getId());
|
||||
deviceDto.setExtendParams(dto.getExtendParams());
|
||||
deviceDto.setProperties(dto.getProperties());
|
||||
deviceDto.setFirmwareVersion(dto.getFirmwareVersion());
|
||||
deviceDto.setHardwareVersion(dto.getHardwareVersion());
|
||||
Device device = mapper.toEntity(deviceDto);
|
||||
String productType = product.getProductType();
|
||||
int typeCode = Math.abs(productType.hashCode()) % 100;
|
||||
device.setClientId(String.format("%s%02d%02d%05d", "001", typeCode, 3, i + 1));
|
||||
devices.add(device);
|
||||
}
|
||||
// 批量插入设备
|
||||
baseMapper.insert(devices);
|
||||
return devices;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 更新设备
|
||||
*/
|
||||
@Override
|
||||
public Device update(DeviceDto dto, Long id) {
|
||||
Device device = baseMapper.selectById(id);
|
||||
if (device.getName().equals(dto.getName())) {
|
||||
throw new ConstraintException("deviceName", dto.getName(), "设备名称已存在");
|
||||
if (Objects.equals(device.getName(), dto.getName())) {
|
||||
throw new ConstraintException("名称为" + dto.getName() + "的设备已存在");
|
||||
}
|
||||
mapper.convert(dto, device);
|
||||
updateById(device);
|
||||
return device;
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询设备
|
||||
*
|
||||
* @param query 查询表单
|
||||
* @param page 分页参数
|
||||
*/
|
||||
@Override
|
||||
public IPage<DeviceVo> query(Page<DeviceVo> page, DeviceQuery query) {
|
||||
return baseMapper.query(page, query);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过Id查找设备详情
|
||||
*
|
||||
@ -149,10 +158,10 @@ public class DeviceServiceImpl extends ServiceImpl<DeviceRepository, Device> imp
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DeviceSelect> queryByName(String name) {
|
||||
public List<DeviceDiff> queryByName(String name) {
|
||||
LambdaQueryWrapper<Device> query = new LambdaQueryWrapper<>();
|
||||
query.like(StringUtils.hasText(name), Device::getName, name);
|
||||
List<Device> devices = baseMapper.selectList(query);
|
||||
return devices.stream().map(device -> new DeviceSelect(device.getId(), device.getName())).collect(Collectors.toList());
|
||||
return devices.stream().map(device -> new DeviceDiff(device.getId(), device.getName())).collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import com.zsc.edu.gateway.modules.iot.tsl.entity.Param;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
@ -60,12 +61,12 @@ public class DeviceVo {
|
||||
/**
|
||||
* 扩展配置
|
||||
*/
|
||||
private String extendParams = "";
|
||||
private Map<String, Object> extendParams;
|
||||
|
||||
/**
|
||||
* 设备属性
|
||||
*/
|
||||
private String properties = "";
|
||||
private Map<String, Object> properties;
|
||||
|
||||
/**
|
||||
* 备注说明
|
||||
|
@ -70,7 +70,7 @@ public class ProductController {
|
||||
* @return 部门列表
|
||||
*/
|
||||
@GetMapping("fuzzy")
|
||||
@PreAuthorize("hasAnyAuthority('DEVICE_CREATE', 'DEVICE_UPDATE')")
|
||||
// @PreAuthorize("hasAnyAuthority('DEVICE_CREATE', 'DEVICE_UPDATE')")
|
||||
public Page<Product> fuzzyQuery(Page<Product> page, ProductQuery query) {
|
||||
return service.page(page, query.wrapper());
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ public class ProductQuery {
|
||||
/**
|
||||
* 接入方式
|
||||
*/
|
||||
public List<String> links;
|
||||
public List<Product.LinkType> links;
|
||||
|
||||
public LambdaQueryWrapper<Product> wrapper() {
|
||||
LambdaQueryWrapper<Product> queryWrapper = new LambdaQueryWrapper<>();
|
||||
|
@ -1,26 +1,17 @@
|
||||
package com.zsc.edu.gateway.modules.iot.product.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
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.product.dto.ProductDto;
|
||||
import com.zsc.edu.gateway.modules.iot.product.entity.Product;
|
||||
import com.zsc.edu.gateway.modules.iot.product.mapper.ProductMapper;
|
||||
import com.zsc.edu.gateway.modules.iot.product.query.ProductQuery;
|
||||
import com.zsc.edu.gateway.modules.iot.product.repo.ProductRepository;
|
||||
import com.zsc.edu.gateway.modules.iot.product.service.ProductService;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.dto.ParamDto;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.entity.Param;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.mapper.ParamMapper;
|
||||
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 java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
/**
|
||||
* @author zhaung
|
||||
@ -43,8 +34,11 @@ public class ProductServiceImpl extends ServiceImpl<ProductRepository, Product>
|
||||
throw new ConstraintException("设备名称不能为空!");
|
||||
}
|
||||
Product product = mapper.toEntity(dto);
|
||||
product.setId(null);
|
||||
save(product);
|
||||
paramService.create(dto.getParams(), product.getId(), Param.ForeignType.PRODUCT);
|
||||
if (dto.getParams() != null) {
|
||||
paramService.create(dto.getParams(), product.getId(), Param.ForeignType.PRODUCT);
|
||||
}
|
||||
return product;
|
||||
}
|
||||
/**
|
||||
@ -64,7 +58,11 @@ public class ProductServiceImpl extends ServiceImpl<ProductRepository, Product>
|
||||
|
||||
@Override
|
||||
public Product detail(Long id) {
|
||||
return baseMapper.selectById(id);
|
||||
Product product = baseMapper.selectById(id);
|
||||
if (product == null) {
|
||||
throw new RuntimeException("产品不存在!请检查产品ID是否正确");
|
||||
}
|
||||
return product;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,9 +1,12 @@
|
||||
package com.zsc.edu.gateway.modules.iot.record.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.zsc.edu.gateway.framework.json.MapJsonTypeHandler;
|
||||
import lombok.*;
|
||||
|
||||
import java.util.Date;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@ -13,6 +16,7 @@ import java.util.Map;
|
||||
@Getter
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@TableName("iot_record_data")
|
||||
public class RecordData {
|
||||
@TableId
|
||||
private String id;
|
||||
@ -21,7 +25,8 @@ public class RecordData {
|
||||
|
||||
private String attachmentId;
|
||||
|
||||
@TableField(typeHandler = MapJsonTypeHandler.class)
|
||||
private Map<String, Object> content;
|
||||
|
||||
private Date recordTime;
|
||||
private LocalDateTime recordTime;
|
||||
}
|
||||
|
@ -2,6 +2,7 @@ package com.zsc.edu.gateway.modules.iot.record.repo;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.zsc.edu.gateway.modules.iot.record.entity.RecordData;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
@ -10,8 +11,7 @@ import java.util.List;
|
||||
* @author zhuang
|
||||
*/
|
||||
public interface RecordDataRepository extends BaseMapper<RecordData> {
|
||||
List<RecordData> findAllByClientIdAndRecordTimeAfter(String clientId, LocalDateTime recordTime);
|
||||
|
||||
@Select("select * from iot_record_data where record_time_str = #{recordTimeStr}")
|
||||
List<RecordData> findByRecordTimeStr(String recordTimeStr);
|
||||
|
||||
|
||||
|
@ -15,4 +15,4 @@ public interface RecordDataService extends IService<RecordData> {
|
||||
List<RecordData> page(IPage<RecordData> page, String clientId);
|
||||
|
||||
List<RecordData> recordPhoto(String clientId);
|
||||
}
|
||||
}
|
@ -20,7 +20,7 @@ import java.util.Optional;
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Service
|
||||
public class RecordDataDataServiceImpl extends ServiceImpl<RecordDataRepository, RecordData> implements RecordDataService {
|
||||
public class RecordDataServiceImpl extends ServiceImpl<RecordDataRepository, RecordData> implements RecordDataService {
|
||||
RedisUtils redisUtils;
|
||||
@Override
|
||||
public RecordData create(RecordData record) {
|
||||
@ -37,10 +37,12 @@ public class RecordDataDataServiceImpl extends ServiceImpl<RecordDataRepository,
|
||||
return baseMapper.selectList(page, queryWrapper);
|
||||
}
|
||||
|
||||
//TODO 使用Redis
|
||||
@Override
|
||||
public List<RecordData> recordPhoto(String clientId) {
|
||||
LocalDateTime recordTime = LocalDateTime.parse(redisUtils.get("serve:sendTime:photograph:" + clientId));
|
||||
List<RecordData> records = baseMapper.findAllByClientIdAndRecordTimeAfter(clientId, recordTime);
|
||||
List<RecordData> records = baseMapper.selectList(new LambdaQueryWrapper<RecordData>()
|
||||
.eq(RecordData::getClientId, clientId).le(RecordData::getRecordTime, recordTime));
|
||||
Optional<RecordData> first = records.stream().max(Comparator.comparing(RecordData::getRecordTime));
|
||||
if (first.isPresent()) {
|
||||
String recordTimeStr = (String) first.get().getContent().get("recordTimeStr");
|
||||
@ -48,6 +50,5 @@ public class RecordDataDataServiceImpl extends ServiceImpl<RecordDataRepository,
|
||||
} else {
|
||||
return records;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -75,6 +75,6 @@ public class PropertyController {
|
||||
*/
|
||||
@GetMapping("{id}")
|
||||
public Property detail(@PathVariable("id") Long id) {
|
||||
return service.getById(id);
|
||||
return service.detail(id);
|
||||
}
|
||||
}
|
||||
|
@ -22,6 +22,8 @@ public class EventDto {
|
||||
|
||||
public String identifier;
|
||||
|
||||
public String remark;
|
||||
|
||||
public Event.Type type;
|
||||
|
||||
private List<ParamDto> outputs;
|
||||
|
@ -18,6 +18,8 @@ public class ParamDto {
|
||||
|
||||
public String identifier;
|
||||
|
||||
public String remark;
|
||||
|
||||
public DataType dataType;
|
||||
|
||||
public Param.Type type;
|
||||
|
@ -20,6 +20,8 @@ public class PropertyDto {
|
||||
|
||||
public String identifier;
|
||||
|
||||
public String remark;
|
||||
|
||||
public DataType dataType;
|
||||
|
||||
public Property.IoType ioType;
|
||||
|
@ -21,6 +21,8 @@ public class ServeDto {
|
||||
|
||||
public String identifier;
|
||||
|
||||
public String remark;
|
||||
|
||||
private List<ParamDto> inputs;
|
||||
private List<ParamDto> outputs;
|
||||
}
|
||||
|
@ -1,5 +1,7 @@
|
||||
package com.zsc.edu.gateway.modules.iot.tsl.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
@ -20,6 +22,7 @@ public class BaseParam implements Serializable {
|
||||
/**
|
||||
* 序列化主键(有数据库提供,非自增)
|
||||
*/
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
|
@ -40,7 +40,7 @@ public class EventQuery {
|
||||
public LambdaQueryWrapper<Event> wrapper() {
|
||||
LambdaQueryWrapper<Event> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.like(StringUtils.hasText(this.name), Event::getName, this.name);
|
||||
queryWrapper.eq(StringUtils.hasText(this.identifier), Event::getIdentifier, this.identifier);
|
||||
queryWrapper.like(StringUtils.hasText(this.identifier), Event::getIdentifier, this.identifier);
|
||||
queryWrapper.eq(StringUtils.hasText(this.level), Event::getType, this.level);
|
||||
queryWrapper.eq(Objects.nonNull(this.productId), Event::getProductId, this.productId);
|
||||
return queryWrapper;
|
||||
|
@ -37,8 +37,8 @@ public class PropertyQuery {
|
||||
public LambdaQueryWrapper<Property> wrapper() {
|
||||
LambdaQueryWrapper<Property> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(this.type != null, Property::getIoType, this.type);
|
||||
queryWrapper.eq(StringUtils.hasText(this.identifier), Property::getIdentifier, this.identifier);
|
||||
queryWrapper.like(Objects.nonNull(this.productId), Property::getProductId, this.productId);
|
||||
queryWrapper.like(StringUtils.hasText(this.identifier), Property::getIdentifier, this.identifier);
|
||||
queryWrapper.eq(Objects.nonNull(this.productId), Property::getProductId, this.productId);
|
||||
queryWrapper.like(StringUtils.hasText(this.name), Property::getName, this.name);
|
||||
return queryWrapper;
|
||||
}
|
||||
|
@ -32,7 +32,7 @@ public class ServeQuery {
|
||||
public LambdaQueryWrapper<Serve> wrapper() {
|
||||
LambdaQueryWrapper<Serve> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.like(StringUtils.hasText(this.name), Serve::getName, this.name);
|
||||
queryWrapper.eq(StringUtils.hasText(this.identifier), Serve::getIdentifier, this.identifier);
|
||||
queryWrapper.like(StringUtils.hasText(this.identifier), Serve::getIdentifier, this.identifier);
|
||||
queryWrapper.eq(Objects.nonNull(this.productId), Serve::getProductId, this.productId);
|
||||
return queryWrapper;
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import com.zsc.edu.gateway.modules.iot.tsl.entity.Event;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.entity.Property;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.query.PropertyQuery;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -16,8 +17,6 @@ import java.util.List;
|
||||
*/
|
||||
public interface PropertyRepository extends BaseMapper<Property> {
|
||||
|
||||
|
||||
// IPage<Property> page(Page<Property> page, @Param("query") PropertyQuery query);
|
||||
|
||||
Property selectById(@Param("id") Long id);
|
||||
@Select("select * from iot_property where name=#{name}")
|
||||
Property findByName(@Param("name") String name);
|
||||
}
|
||||
|
@ -16,4 +16,5 @@ public interface PropertyService extends IService<Property> {
|
||||
Property update(PropertyDto dto, Long id);
|
||||
|
||||
|
||||
Property detail(Long id);
|
||||
}
|
||||
|
@ -59,7 +59,11 @@ public class EventServiceImpl extends ServiceImpl<EventRepository, Event> implem
|
||||
*/
|
||||
@Override
|
||||
public Event detail(Long id) {
|
||||
return baseMapper.selectById(id);
|
||||
Event event = baseMapper.selectById(id);
|
||||
if (event == null) {
|
||||
throw new ConstraintException("该事件不存在!请检查输入ID是否正确!");
|
||||
}
|
||||
return event;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -8,6 +8,7 @@ import com.zsc.edu.gateway.modules.iot.tsl.repo.PropertyRepository;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.service.PropertyService;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* @author 15864
|
||||
@ -23,6 +24,9 @@ public class PropertyServiceImpl extends ServiceImpl<PropertyRepository, Propert
|
||||
*/
|
||||
@Override
|
||||
public Property create(PropertyDto dto) {
|
||||
if (baseMapper.findByName(dto.getName()) != null) {
|
||||
throw new RuntimeException("该属性已存在!");
|
||||
}
|
||||
Property property = mapper.toEntity(dto);
|
||||
save(property);
|
||||
return property;
|
||||
@ -32,13 +36,23 @@ public class PropertyServiceImpl extends ServiceImpl<PropertyRepository, Propert
|
||||
* 更新属性
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public Property update(PropertyDto dto, Long id) {
|
||||
Property property = baseMapper.selectById(id);
|
||||
if (property == null) {
|
||||
throw new RuntimeException("Serve not found with id: " + id);
|
||||
}
|
||||
mapper.convert(dto, property);
|
||||
baseMapper.updateById(property);
|
||||
return property;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Property detail(Long id) {
|
||||
Property property = baseMapper.selectById(id);
|
||||
if (property == null) {
|
||||
throw new RuntimeException("属性不存在!请检查输入ID是否正确!");
|
||||
}
|
||||
return property;
|
||||
}
|
||||
}
|
||||
|
@ -67,7 +67,11 @@ public class ServeServiceImpl extends ServiceImpl<ServeRepository, Serve> implem
|
||||
*/
|
||||
@Override
|
||||
public Serve detail(Long id) {
|
||||
return baseMapper.selectById(id);
|
||||
Serve serve = baseMapper.selectById(id);
|
||||
if (serve == null) {
|
||||
throw new ConstraintException("该服务不存在!请检查输入ID是否正确!");
|
||||
}
|
||||
return serve;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -57,7 +57,7 @@ public class BulletinController {
|
||||
* @return 公告
|
||||
*/
|
||||
@GetMapping("/{id}")
|
||||
@PreAuthorize("hasAuthority('BULLETIN_QUERY')")
|
||||
// @PreAuthorize("hasAuthority('BULLETIN_QUERY')")
|
||||
public BulletinVo detail(@AuthenticationPrincipal UserDetailsImpl userDetails, @PathVariable("id") Long id) {
|
||||
return service.detail(userDetails,id, null);
|
||||
}
|
||||
@ -69,7 +69,7 @@ public class BulletinController {
|
||||
* @return 分页数据
|
||||
*/
|
||||
@GetMapping()
|
||||
@PreAuthorize("hasAuthority('BULLETIN_QUERY')")
|
||||
// @PreAuthorize("hasAuthority('BULLETIN_QUERY')")
|
||||
public Page<Bulletin> query(Page<Bulletin> page, BulletinQuery query) {
|
||||
return service.page(page, query.wrapper());
|
||||
}
|
||||
@ -82,7 +82,7 @@ public class BulletinController {
|
||||
* @return 公告
|
||||
*/
|
||||
@PostMapping
|
||||
@PreAuthorize("hasAuthority('BULLETIN_CREATE')")
|
||||
// @PreAuthorize("hasAuthority('BULLETIN_CREATE')")
|
||||
public Bulletin create(@AuthenticationPrincipal UserDetailsImpl userDetails, @RequestBody BulletinDto dto) {
|
||||
return service.create(userDetails, dto);
|
||||
}
|
||||
@ -96,7 +96,7 @@ public class BulletinController {
|
||||
* @return 公告
|
||||
*/
|
||||
@PatchMapping("/{id}")
|
||||
@PreAuthorize("hasAuthority('BULLETIN_UPDATE')")
|
||||
// @PreAuthorize("hasAuthority('BULLETIN_UPDATE')")
|
||||
public Boolean update(@AuthenticationPrincipal UserDetailsImpl userDetails, @RequestBody BulletinDto dto, @PathVariable("id") Long id) {
|
||||
return service.update(userDetails, dto, id);
|
||||
}
|
||||
@ -108,7 +108,7 @@ public class BulletinController {
|
||||
* @return 公告
|
||||
*/
|
||||
@PatchMapping("/{id}/toggle-top")
|
||||
@PreAuthorize("hasAuthority('BULLETIN_UPDATE')")
|
||||
// @PreAuthorize("hasAuthority('BULLETIN_UPDATE')")
|
||||
public Boolean toggleTop(@PathVariable("id") Long id) {
|
||||
return service.toggleTop(id);
|
||||
}
|
||||
@ -121,7 +121,7 @@ public class BulletinController {
|
||||
* @return 公告
|
||||
*/
|
||||
@PatchMapping("/publish")
|
||||
@PreAuthorize("hasAuthority('BULLETIN_PUBLISH')")
|
||||
// @PreAuthorize("hasAuthority('BULLETIN_PUBLISH')")
|
||||
public Boolean publish(@AuthenticationPrincipal UserDetailsImpl userDetails, @RequestBody List<Long> ids) {
|
||||
return service.publish(userDetails, ids);
|
||||
}
|
||||
@ -134,7 +134,7 @@ public class BulletinController {
|
||||
* @return 公告
|
||||
*/
|
||||
@PatchMapping("/{id}/toggleClose")
|
||||
@PreAuthorize("hasAuthority('BULLETIN_CLOSE')")
|
||||
// @PreAuthorize("hasAuthority('BULLETIN_CLOSE')")
|
||||
public Boolean toggleClose(@AuthenticationPrincipal UserDetailsImpl userDetails, @PathVariable("id") Long id) {
|
||||
return service.close(userDetails, id);
|
||||
}
|
||||
@ -146,7 +146,7 @@ public class BulletinController {
|
||||
* @return 公
|
||||
*/
|
||||
@DeleteMapping("/{id}")
|
||||
@PreAuthorize("hasAuthority('BULLETIN_DELETE')")
|
||||
// @PreAuthorize("hasAuthority('BULLETIN_DELETE')")
|
||||
public Boolean delete(@PathVariable("id") Long id) {
|
||||
return service.delete(id);
|
||||
}
|
||||
|
@ -77,6 +77,17 @@ public class UserMessageController {
|
||||
return service.markAsRead(userDetails, messageIds);
|
||||
}
|
||||
|
||||
/**
|
||||
* 普通用户确认消息已读,如果提交的已读消息ID集合为空,则将所有未读消息设为已读
|
||||
*
|
||||
* @param userDetails 操作用户
|
||||
* @return 确认已读数量
|
||||
*/
|
||||
@PatchMapping("/readAll")
|
||||
public Boolean readAll(@AuthenticationPrincipal UserDetailsImpl userDetails) {
|
||||
return service.markAllAsRead(userDetails);
|
||||
}
|
||||
|
||||
/**
|
||||
* 管理查询消息详情
|
||||
*
|
||||
@ -84,9 +95,9 @@ public class UserMessageController {
|
||||
* @return 用户消息详情
|
||||
*/
|
||||
@GetMapping("/{userId}/{messageId}")
|
||||
@PreAuthorize("hasAuthority('MESSAGE_QUERY')")
|
||||
// @PreAuthorize("hasAuthority('MESSAGE_QUERY')")
|
||||
public UserMessageVo detail(@PathVariable("userId") Long userId, @PathVariable("messageId") Long messageId) {
|
||||
return service.detail(userId, messageId);
|
||||
return service.detail(messageId, userId);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -96,7 +107,7 @@ public class UserMessageController {
|
||||
* @return 分页数据
|
||||
*/
|
||||
@GetMapping
|
||||
@PreAuthorize("hasAuthority('MESSAGE_QUERY')")
|
||||
// @PreAuthorize("hasAuthority('MESSAGE_QUERY')")
|
||||
public IPage<AdminMessageVo> page(Page<UserMessageVo> page, AdminMessageQuery query) {
|
||||
return service.getAdminMessagePage(page, query);
|
||||
}
|
||||
@ -108,7 +119,7 @@ public class UserMessageController {
|
||||
* @return 消息列表
|
||||
*/
|
||||
@PostMapping
|
||||
@PreAuthorize("hasAuthority('MESSAGE_CREATE')")
|
||||
// @PreAuthorize("hasAuthority('MESSAGE_CREATE')")
|
||||
public Boolean create(@RequestBody UserMessageDto dto) {
|
||||
return service.createByAdmin(dto);
|
||||
}
|
||||
|
@ -121,7 +121,7 @@ public class UserMessageServiceImpl extends ServiceImpl<UserMessageRepository, U
|
||||
}
|
||||
|
||||
/**
|
||||
* 管理员查询消息列表
|
||||
* 管理员查询消息分页
|
||||
*
|
||||
* @return 消息设置列表
|
||||
*/
|
||||
|
@ -66,7 +66,7 @@ public class RoleController {
|
||||
public Boolean update(@RequestBody RoleDto dto, @PathVariable("id") Long id) {
|
||||
// Role role = roleMapper.toEntity(dto);
|
||||
// role.setId(id);
|
||||
return service.updateRole(dto, id);
|
||||
return service.edit(dto, id);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -35,13 +35,7 @@ public class RoleDto {
|
||||
/**
|
||||
* 权限列表
|
||||
*/
|
||||
public Set<Authority> authorities;
|
||||
public Set<AuthorityCreateDto> authorities;
|
||||
|
||||
public LambdaUpdateWrapper<Role> updateWrapper(Long id) {
|
||||
LambdaUpdateWrapper<Role> update = new LambdaUpdateWrapper<>();
|
||||
return update.eq(Role::getId, id)
|
||||
.set(Role::getName, name)
|
||||
.set(StringUtils.hasText(remark), Role::getRemark, remark);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -55,7 +55,7 @@ public class UserCreateDto {
|
||||
/**
|
||||
* 用户身份集合
|
||||
*/
|
||||
//@NotEmpty(message = "角色不能为空")
|
||||
@NotEmpty(message = "角色不能为空")
|
||||
public Long roleId;
|
||||
/**
|
||||
* 昵称
|
||||
|
@ -29,7 +29,5 @@ public interface RoleService extends IService<Role> {
|
||||
|
||||
Boolean delete(Long id);
|
||||
|
||||
Boolean updateRole(RoleDto dto, Long id);
|
||||
|
||||
Boolean saveRoleAuths(Long roleId, Set<AuthorityCreateDto> authorities);
|
||||
}
|
||||
|
@ -21,6 +21,7 @@ import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -74,31 +75,23 @@ public class RoleServiceImpl extends ServiceImpl<RoleRepository, Role> implement
|
||||
return removeById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean updateRole(RoleDto dto, Long id) {
|
||||
Role role =mapper.toEntity(dto);
|
||||
role.setId(id);
|
||||
if (dto.getAuthorities() != null && !dto.getAuthorities().isEmpty()) {
|
||||
roleAuthService.remove(new LambdaQueryWrapper<RoleAuthority>().eq(RoleAuthority::getRoleId, id));
|
||||
Set<Authority> authorities = new HashSet<>(dto.getAuthorities());
|
||||
// roleAuthService.saveBatch(authorities.stream().map(authority -> new RoleAuthority(id, authority.getId())).collect(Collectors.toList()));
|
||||
|
||||
}
|
||||
return updateById(role);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean edit(RoleDto dto, Long id) {
|
||||
boolean existsByName = count(new LambdaQueryWrapper<Role>().ne(Role::getId, id).eq(Role::getName, dto.getName())) > 0;
|
||||
if (existsByName) {
|
||||
throw new ConstraintException("name", dto.name, "同名角色已存在");
|
||||
Role existingRole = getById(id);
|
||||
if (existingRole == null) {
|
||||
throw new ConstraintException("id", id.toString(), "角色不存在");
|
||||
}
|
||||
if (!Objects.equals(existingRole.getName(), dto.getName()) &&
|
||||
count(new LambdaQueryWrapper<Role>().eq(Role::getName, dto.getName())) > 0) {
|
||||
throw new ConstraintException("name", dto.getName(), "同名角色已存在");
|
||||
}
|
||||
mapper.convert(dto, existingRole);
|
||||
roleAuthService.remove(new LambdaQueryWrapper<RoleAuthority>().eq(RoleAuthority::getRoleId, id));
|
||||
// saveRoleAuths(id, dto.getAuthorities());
|
||||
return update(dto.updateWrapper(id));
|
||||
saveRoleAuths(id, dto.getAuthorities());
|
||||
return updateById(existingRole);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public RoleVo detail(Long id) {
|
||||
// Role role = getById(id);
|
||||
@ -110,7 +103,10 @@ public class RoleServiceImpl extends ServiceImpl<RoleRepository, Role> implement
|
||||
@Override
|
||||
public Boolean saveRoleAuths(Long roleId, Set<AuthorityCreateDto> authorities) {
|
||||
// 保存角色关联权限
|
||||
List<RoleAuthority> roleAuthorities = authorities.stream().map(authority -> new RoleAuthority(roleId, authorityRepository.getAuthorityIdByName(authority.getName()))).collect(Collectors.toList());
|
||||
List<RoleAuthority> roleAuthorities = authorities.stream()
|
||||
.map(authority ->
|
||||
new RoleAuthority(roleId, authorityRepository.getAuthorityIdByName(authority.getName())))
|
||||
.collect(Collectors.toList());
|
||||
return roleAuthService.saveBatch(roleAuthorities);
|
||||
}
|
||||
}
|
||||
|
@ -62,7 +62,7 @@ public class UserServiceImpl extends ServiceImpl<UserRepository, User> implement
|
||||
public Boolean updatePassword(String password, Long id) {
|
||||
User user = getById(id);
|
||||
user.setPassword(passwordEncoder.encode(password));
|
||||
return save(user);
|
||||
return updateById(user);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -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 (product_id, identifier, name, remark)
|
||||
INSERT INTO iot_serve (id, 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'),
|
||||
@ -640,4 +640,77 @@ VALUES (1, TRUE, TRUE, FALSE, TRUE, '测试消息1', '这是第一条测试消
|
||||
9),
|
||||
(2, FALSE, FALSE, FALSE, TRUE, '测试消息10', '这是第十条测试消息的内容。', '备注10', NOW(), 'user5', NOW(),
|
||||
'user5', 10);
|
||||
-- V2__Alter_sys_user_id_to_bigserial.sql
|
||||
|
||||
-- 备份现有数据
|
||||
CREATE TABLE sys_user_backup AS
|
||||
SELECT *
|
||||
FROM sys_user;
|
||||
-- 删除现有表
|
||||
DROP TABLE IF EXISTS sys_user;
|
||||
|
||||
-- 重新创建表
|
||||
CREATE TABLE sys_user
|
||||
(
|
||||
id bigserial not null
|
||||
constraint _copy_3
|
||||
primary key,
|
||||
dept_id bigint,
|
||||
role_id bigint,
|
||||
username varchar(20) not null,
|
||||
password varchar not null,
|
||||
phone varchar(11),
|
||||
email varchar(40),
|
||||
name varchar(255),
|
||||
avatar varchar(255),
|
||||
address varchar(255),
|
||||
create_by varchar(255),
|
||||
update_by varchar(255),
|
||||
create_time timestamp(6),
|
||||
update_time timestamp(6),
|
||||
remark varchar(255),
|
||||
enable_state varchar(5)
|
||||
);
|
||||
|
||||
comment on column sys_user.dept_id is '部门id';
|
||||
comment on column sys_user.role_id is '角色id';
|
||||
comment on column sys_user.username is '用户名';
|
||||
comment on column sys_user.password is '密码';
|
||||
comment on column sys_user.phone is '手机号码';
|
||||
comment on column sys_user.email is '电子邮箱';
|
||||
comment on column sys_user.name is '昵称';
|
||||
comment on column sys_user.avatar is '头像';
|
||||
comment on column sys_user.address is '地址';
|
||||
comment on column sys_user.create_by is '创建者';
|
||||
comment on column sys_user.update_by is '更新者';
|
||||
comment on column sys_user.enable_state is '状态';
|
||||
|
||||
alter table sys_user
|
||||
owner to gitea;
|
||||
|
||||
-- 插入备份的数据
|
||||
INSERT INTO sys_user (dept_id, role_id, username, password, phone, email, name, avatar, address, create_by, update_by,
|
||||
create_time, update_time, remark, enable_state)
|
||||
SELECT dept_id,
|
||||
role_id,
|
||||
username,
|
||||
password,
|
||||
phone,
|
||||
email,
|
||||
name,
|
||||
avatar,
|
||||
address,
|
||||
create_by,
|
||||
update_by,
|
||||
create_time,
|
||||
update_time,
|
||||
remark,
|
||||
enable_state
|
||||
FROM sys_user_backup;
|
||||
|
||||
-- 删除备份表
|
||||
DROP TABLE sys_user_backup;
|
||||
|
||||
|
||||
ALTER TABLE iot_property
|
||||
ALTER COLUMN id ADD GENERATED ALWAYS AS IDENTITY;
|
@ -1,6 +1,6 @@
|
||||
create table iot_device
|
||||
(
|
||||
id serial not null
|
||||
id bigserial not null
|
||||
constraint 表_name_pk
|
||||
primary key,
|
||||
name varchar,
|
||||
|
@ -7,7 +7,8 @@ create table iot_event
|
||||
type integer,
|
||||
identifier varchar,
|
||||
name varchar,
|
||||
remark varchar
|
||||
remark varchar,
|
||||
dept_id bigint
|
||||
);
|
||||
|
||||
comment on table iot_event is '物模型服务';
|
||||
@ -24,6 +25,8 @@ comment on column iot_event.name is '名称';
|
||||
|
||||
comment on column iot_event.remark is '备注';
|
||||
|
||||
comment on column iot_event.dept_id is '部门权限id';
|
||||
|
||||
alter table iot_event
|
||||
owner to gitea;
|
||||
|
||||
|
@ -1,18 +1,18 @@
|
||||
create table iot_product
|
||||
(
|
||||
id bigserial not null
|
||||
id bigserial not null
|
||||
constraint iot_product_pk
|
||||
primary key,
|
||||
name varchar,
|
||||
type_string varchar,
|
||||
model varchar,
|
||||
link integer,
|
||||
create_by varchar,
|
||||
create_time timestamp,
|
||||
update_by varchar,
|
||||
update_time timestamp,
|
||||
remark varchar,
|
||||
dept_id bigint
|
||||
name varchar,
|
||||
product_type varchar,
|
||||
model varchar,
|
||||
link integer,
|
||||
create_by varchar,
|
||||
create_time timestamp,
|
||||
update_by varchar,
|
||||
update_time timestamp,
|
||||
remark varchar,
|
||||
dept_id bigint
|
||||
);
|
||||
|
||||
comment on table iot_product is '产品表';
|
||||
@ -21,7 +21,7 @@ comment on column iot_product.id is '主键';
|
||||
|
||||
comment on column iot_product.name is '产品名称';
|
||||
|
||||
comment on column iot_product.type_string is '产品类型';
|
||||
comment on column iot_product.product_type is '产品类型';
|
||||
|
||||
comment on column iot_product.model is '产品型号';
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
create table iot_property
|
||||
(
|
||||
id bigserial not null
|
||||
id bigint not null
|
||||
constraint iot_property_pk
|
||||
primary key,
|
||||
product_id bigint,
|
||||
|
26
src/main/resources/db/gateway/public/iot_record_data.sql
Normal file
26
src/main/resources/db/gateway/public/iot_record_data.sql
Normal file
@ -0,0 +1,26 @@
|
||||
create table iot_record_data
|
||||
(
|
||||
id serial not null
|
||||
constraint iot_record_data_pk
|
||||
primary key,
|
||||
client_id varchar,
|
||||
attachment_id varchar,
|
||||
content varchar,
|
||||
record_time timestamp
|
||||
);
|
||||
|
||||
comment on table iot_record_data is '上报数据表';
|
||||
|
||||
comment on column iot_record_data.id is '主键';
|
||||
|
||||
comment on column iot_record_data.client_id is '委托人ID';
|
||||
|
||||
comment on column iot_record_data.attachment_id is '附件ID ';
|
||||
|
||||
comment on column iot_record_data.content is '内容';
|
||||
|
||||
comment on column iot_record_data.record_time is '记录时间';
|
||||
|
||||
alter table iot_record_data
|
||||
owner to gitea;
|
||||
|
@ -6,7 +6,8 @@ create table iot_serve
|
||||
product_id bigint,
|
||||
identifier varchar,
|
||||
name varchar,
|
||||
remark varchar
|
||||
remark varchar,
|
||||
dept_id bigint
|
||||
);
|
||||
|
||||
comment on table iot_serve is '物模型服务';
|
||||
@ -21,6 +22,8 @@ comment on column iot_serve.name is '名称';
|
||||
|
||||
comment on column iot_serve.remark is '备注';
|
||||
|
||||
comment on column iot_serve.dept_id is '部门权限id';
|
||||
|
||||
alter table iot_serve
|
||||
owner to gitea;
|
||||
|
||||
|
@ -1,11 +1,12 @@
|
||||
create table sys_message
|
||||
(
|
||||
id serial primary key,
|
||||
id bigserial not null
|
||||
primary key,
|
||||
type integer not null,
|
||||
system boolean not null,
|
||||
email boolean not null,
|
||||
sms boolean not null,
|
||||
html boolean not null,
|
||||
email boolean,
|
||||
sms boolean,
|
||||
html boolean,
|
||||
title varchar,
|
||||
content varchar,
|
||||
remark varchar,
|
||||
|
68
src/main/resources/db/gateway/public/sys_user.sql
Normal file
68
src/main/resources/db/gateway/public/sys_user.sql
Normal file
@ -0,0 +1,68 @@
|
||||
create table sys_user
|
||||
(
|
||||
dept_id bigint,
|
||||
role_id bigint,
|
||||
username varchar(20) not null,
|
||||
password varchar not null,
|
||||
phone varchar(11),
|
||||
email varchar(40),
|
||||
name varchar(255),
|
||||
avatar varchar(255),
|
||||
address varchar(255),
|
||||
create_by varchar(255),
|
||||
update_by varchar(255),
|
||||
create_time timestamp(6),
|
||||
update_time timestamp(6),
|
||||
remark varchar(255),
|
||||
enable_state varchar(5),
|
||||
id bigint not null
|
||||
primary key
|
||||
);
|
||||
|
||||
comment
|
||||
on column sys_user.dept_id is '部门id';
|
||||
|
||||
comment
|
||||
on column sys_user.role_id is '角色id';
|
||||
|
||||
comment
|
||||
on column sys_user.username is '用户名';
|
||||
|
||||
comment
|
||||
on column sys_user.password is '密码';
|
||||
|
||||
comment
|
||||
on column sys_user.phone is '手机号码';
|
||||
|
||||
comment
|
||||
on column sys_user.email is '电子邮箱';
|
||||
|
||||
comment
|
||||
on column sys_user.name is '昵称';
|
||||
|
||||
comment
|
||||
on column sys_user.avatar is '头像';
|
||||
|
||||
comment
|
||||
on column sys_user.address is '地址';
|
||||
|
||||
comment
|
||||
on column sys_user.create_by is '创建者';
|
||||
|
||||
comment
|
||||
on column sys_user.update_by is '更新者';
|
||||
|
||||
comment
|
||||
on column sys_user.enable_state is '状态';
|
||||
|
||||
alter table sys_user
|
||||
owner to gitea;
|
||||
|
||||
_user
|
||||
.
|
||||
enable_state
|
||||
is '状态';
|
||||
|
||||
alter table sys_user
|
||||
owner to gitea;
|
||||
|
@ -13,8 +13,10 @@
|
||||
<result column="factory_id" property="factoryId"/>
|
||||
<result column="client_id" property="clientId"/>
|
||||
<result column="product_id" property="productId"/>
|
||||
<result column="extend_params" property="extendParams"/>
|
||||
<result column="properties" property="properties"/>
|
||||
<result column="extend_params" property="extendParams"
|
||||
typeHandler="com.zsc.edu.gateway.framework.json.MapJsonTypeHandler"/>
|
||||
<result column="properties" property="properties"
|
||||
typeHandler="com.zsc.edu.gateway.framework.json.MapJsonTypeHandler"/>
|
||||
<result column="create_by" jdbcType="VARCHAR" property="deviceCreateBy"/>
|
||||
<result column="update_by" jdbcType="VARCHAR" property="deviceUpdateBy"/>
|
||||
<result column="create_time" jdbcType="DATE" property="deviceCreateTime"/>
|
||||
@ -53,8 +55,7 @@
|
||||
ip.remark as param_remark
|
||||
from iot_device d
|
||||
left join iot_product p on d.product_id = p.id
|
||||
left join iot_product_param pp on pp.product_id = p.id
|
||||
left join iot_param ip on pp.param_id = ip.id
|
||||
left join iot_param ip on p.id = ip.foreign_id and ip.foreign_type = 3
|
||||
where d.id = #{id}
|
||||
</select>
|
||||
|
||||
|
@ -34,7 +34,7 @@
|
||||
ip.name as param_name,
|
||||
ip.remark as param_remark
|
||||
from iot_event e
|
||||
left join iot_param ip on ep.id = ip.foreign_id
|
||||
left join iot_param ip on e.id = ip.foreign_id
|
||||
and ip.foreign_type = 1
|
||||
where e.id = #{id}
|
||||
</select>
|
||||
|
@ -7,7 +7,7 @@
|
||||
<id column="id" property="id"/>
|
||||
<result column="dept_id" property="deptId"/>
|
||||
<result column="name" property="name"/>
|
||||
<result column="type_string" property="productType"/>
|
||||
<result column="product_type" property="productType"/>
|
||||
<result column="model" property="model"/>
|
||||
<result column="link" property="link"/>
|
||||
<result column="create_by" jdbcType="VARCHAR" property="createBy"/>
|
||||
|
@ -42,8 +42,8 @@
|
||||
left join sys_user su on sum.user_id = su.id
|
||||
left join sys_message sm on sm.id = sum.message_id
|
||||
<where>
|
||||
sm.id=#{messageId}
|
||||
and su.id=#{userId}
|
||||
sum.message_id=#{messageId}
|
||||
and sum.user_id=#{userId}
|
||||
</where>
|
||||
</select>
|
||||
|
||||
|
@ -12,6 +12,7 @@ import com.zsc.edu.gateway.modules.system.entity.Role;
|
||||
import com.zsc.edu.gateway.modules.system.entity.User;
|
||||
import com.zsc.edu.gateway.modules.system.mapper.RoleMapper;
|
||||
import com.zsc.edu.gateway.modules.system.mapper.UserMapper;
|
||||
import com.zsc.edu.gateway.modules.system.service.RoleService;
|
||||
import com.zsc.edu.gateway.modules.system.service.UserService;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
|
@ -0,0 +1,38 @@
|
||||
package com.zsc.edu.gateway.domain.iot;
|
||||
|
||||
import com.zsc.edu.gateway.modules.iot.device.entity.Device;
|
||||
import com.zsc.edu.gateway.modules.system.entity.BaseEntity;
|
||||
|
||||
public class DeviceBuilder extends BaseEntity {
|
||||
|
||||
private String name;
|
||||
private Device.Status state = Device.Status.UNACTIVATED;
|
||||
private Boolean online = false;
|
||||
|
||||
public static DeviceBuilder aDevice() {
|
||||
return new DeviceBuilder();
|
||||
}
|
||||
|
||||
public DeviceBuilder name(String name) {
|
||||
this.name = name;
|
||||
return this;
|
||||
}
|
||||
|
||||
public DeviceBuilder state(Device.Status state) {
|
||||
this.state = state;
|
||||
return this;
|
||||
}
|
||||
|
||||
public DeviceBuilder online(Boolean online) {
|
||||
this.online = online;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Device build() {
|
||||
Device device = new Device();
|
||||
device.setName(name);
|
||||
device.setState(state);
|
||||
device.setOnline(online);
|
||||
return device;
|
||||
}
|
||||
}
|
@ -0,0 +1,48 @@
|
||||
package com.zsc.edu.gateway.domain.iot;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.entity.Event;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.entity.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class EventBuilder extends BaseParamBuilder {
|
||||
private Long productId;
|
||||
private Event.Type type;
|
||||
private String name;
|
||||
private String identifier;
|
||||
|
||||
public static EventBuilder builder() {
|
||||
return new EventBuilder();
|
||||
}
|
||||
|
||||
public EventBuilder setProductId(Long productId) {
|
||||
this.productId = productId;
|
||||
return this;
|
||||
}
|
||||
|
||||
public EventBuilder setType(Event.Type type) {
|
||||
this.type = type;
|
||||
return this;
|
||||
}
|
||||
|
||||
public EventBuilder setName(String name) {
|
||||
this.name = name;
|
||||
return this;
|
||||
}
|
||||
|
||||
public EventBuilder setIdentifier(String identifier) {
|
||||
this.identifier = identifier;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Event build() {
|
||||
Event event = new Event();
|
||||
event.setName(name);
|
||||
event.setIdentifier(identifier);
|
||||
event.setProductId(productId);
|
||||
event.setType(type);
|
||||
return event;
|
||||
}
|
||||
}
|
@ -5,9 +5,10 @@ import com.zsc.edu.gateway.modules.iot.tsl.entity.Param;
|
||||
|
||||
public class ParamBuilder extends BaseParamBuilder {
|
||||
public DataType dataType;
|
||||
public String uint;
|
||||
public String name;
|
||||
public Param.Type type;
|
||||
public Param.ForeignType foreignType;
|
||||
public Long foreignId;
|
||||
|
||||
public static ParamBuilder aParam() {
|
||||
return new ParamBuilder();
|
||||
@ -18,8 +19,13 @@ public class ParamBuilder extends BaseParamBuilder {
|
||||
return this;
|
||||
}
|
||||
|
||||
public ParamBuilder uint(String uint) {
|
||||
this.uint = uint;
|
||||
public ParamBuilder foreignId(Long foreignId) {
|
||||
this.foreignId = foreignId;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ParamBuilder name(String name) {
|
||||
this.name = name;
|
||||
return this;
|
||||
}
|
||||
|
||||
@ -35,7 +41,8 @@ public class ParamBuilder extends BaseParamBuilder {
|
||||
|
||||
public Param build() {
|
||||
Param param = new Param();
|
||||
param.setUint(uint);
|
||||
param.setForeignId(foreignId);
|
||||
param.setName(name);
|
||||
param.setType(type);
|
||||
param.setForeignType(foreignType);
|
||||
param.setDataType(dataType);
|
||||
|
@ -0,0 +1,45 @@
|
||||
package com.zsc.edu.gateway.domain.iot;
|
||||
|
||||
import com.zsc.edu.gateway.modules.iot.product.entity.Product;
|
||||
|
||||
public class ProductBuilder extends BaseParamBuilder {
|
||||
public String name;
|
||||
public String productType;
|
||||
public String model;
|
||||
public Product.LinkType link;
|
||||
|
||||
public static ProductBuilder bProduct() {
|
||||
return new ProductBuilder();
|
||||
}
|
||||
|
||||
public ProductBuilder name(String name) {
|
||||
this.name = name;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ProductBuilder productType(String productType) {
|
||||
this.productType = productType;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ProductBuilder model(String model) {
|
||||
this.model = model;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ProductBuilder link(Product.LinkType link) {
|
||||
this.link = link;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Product build() {
|
||||
Product product = new Product();
|
||||
product.setName(name);
|
||||
product.setProductType(productType);
|
||||
product.setModel(model);
|
||||
product.setLink(link);
|
||||
product.setParams(null);
|
||||
return product;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,44 @@
|
||||
package com.zsc.edu.gateway.domain.iot;
|
||||
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.entity.DataType;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.entity.Property;
|
||||
|
||||
public class PropertyBuilder extends BaseParamBuilder {
|
||||
private Long productId;
|
||||
private DataType dataType;
|
||||
private Property.IoType ioType;
|
||||
private String name;
|
||||
|
||||
public static PropertyBuilder builder() {
|
||||
return new PropertyBuilder();
|
||||
}
|
||||
|
||||
public PropertyBuilder setName(String name) {
|
||||
this.name = name;
|
||||
return this;
|
||||
}
|
||||
|
||||
public PropertyBuilder setProductId(Long productId) {
|
||||
this.productId = productId;
|
||||
return this;
|
||||
}
|
||||
|
||||
public PropertyBuilder setDataType(DataType dataType) {
|
||||
this.dataType = dataType;
|
||||
return this;
|
||||
}
|
||||
|
||||
public PropertyBuilder setIoType(Property.IoType ioType) {
|
||||
this.ioType = ioType;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Property build() {
|
||||
Property property = new Property();
|
||||
property.setName(name);
|
||||
property.setProductId(productId);
|
||||
property.setDataType(dataType);
|
||||
property.setIoType(ioType);
|
||||
return property;
|
||||
}
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
package com.zsc.edu.gateway.domain.iot;
|
||||
|
||||
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.entity.Serve;
|
||||
|
||||
public class ServeBuilder extends BaseParamBuilder {
|
||||
private String identifier;
|
||||
private String name;
|
||||
private Long productId;
|
||||
|
||||
public static ServeBuilder aServe() {
|
||||
return new ServeBuilder();
|
||||
}
|
||||
|
||||
public ServeBuilder identifier(String identifier) {
|
||||
this.identifier = identifier;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ServeBuilder name(String name) {
|
||||
this.name = name;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ServeBuilder productId(Long productId) {
|
||||
this.productId = productId;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Serve build() {
|
||||
Serve serve = new Serve();
|
||||
serve.setIdentifier(identifier);
|
||||
serve.setName(name);
|
||||
serve.setProductId(productId);
|
||||
serve.setInputs(null);
|
||||
serve.setOutputs(null);
|
||||
return serve;
|
||||
}
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
package com.zsc.edu.gateway.domain.notice;
|
||||
|
||||
import com.zsc.edu.gateway.modules.notice.entity.Bulletin;
|
||||
import com.zsc.edu.gateway.modules.notice.entity.Message;
|
||||
import com.zsc.edu.gateway.modules.notice.entity.MessageType;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
public class MessageBuilder {
|
||||
public MessageType type;
|
||||
public String title;
|
||||
public String content;
|
||||
|
||||
public static MessageBuilder bMessage() {
|
||||
return new MessageBuilder();
|
||||
}
|
||||
|
||||
public MessageBuilder type(MessageType type) {
|
||||
this.type = type;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MessageBuilder title(String title) {
|
||||
this.title = title;
|
||||
return this;
|
||||
}
|
||||
|
||||
public MessageBuilder content(String content) {
|
||||
this.content = content;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Message build() {
|
||||
Message message = new Message();
|
||||
message.setTitle(title);
|
||||
message.setContent(content);
|
||||
message.type = MessageType.other;
|
||||
return message;
|
||||
}
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
package com.zsc.edu.gateway.domain.notice;
|
||||
|
||||
|
||||
import com.zsc.edu.gateway.modules.notice.entity.UserMessage;
|
||||
|
||||
public class UserMessageBuilder {
|
||||
public Long userId;
|
||||
public Long messageId;
|
||||
public Boolean isRead;
|
||||
|
||||
public static UserMessageBuilder builder() {
|
||||
return new UserMessageBuilder();
|
||||
}
|
||||
|
||||
public UserMessageBuilder setUserId(Long userId) {
|
||||
this.userId = userId;
|
||||
return this;
|
||||
}
|
||||
|
||||
public UserMessageBuilder setMessageId(Long messageId) {
|
||||
this.messageId = messageId;
|
||||
return this;
|
||||
}
|
||||
|
||||
public UserMessageBuilder setIsRead(Boolean isRead) {
|
||||
this.isRead = isRead;
|
||||
return this;
|
||||
}
|
||||
|
||||
public UserMessage build() {
|
||||
UserMessage userMessage = new UserMessage();
|
||||
userMessage.setUserId(userId);
|
||||
userMessage.setMessageId(messageId);
|
||||
userMessage.setIsRead(isRead);
|
||||
return userMessage;
|
||||
}
|
||||
}
|
@ -0,0 +1,99 @@
|
||||
package com.zsc.edu.gateway.rest.iot;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.zsc.edu.gateway.MockMvcConfigBase;
|
||||
import com.zsc.edu.gateway.domain.iot.DeviceBuilder;
|
||||
import com.zsc.edu.gateway.framework.security.UserDetailsImpl;
|
||||
import com.zsc.edu.gateway.modules.iot.device.controller.DeviceController;
|
||||
import com.zsc.edu.gateway.modules.iot.device.dto.DeviceDto;
|
||||
import com.zsc.edu.gateway.modules.iot.device.entity.Device;
|
||||
import com.zsc.edu.gateway.modules.iot.device.service.DeviceService;
|
||||
import com.zsc.edu.gateway.modules.iot.record.service.RecordDataService;
|
||||
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.beans.factory.annotation.Autowired;
|
||||
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(DeviceController.class)
|
||||
public class DeviceControllerTest extends MockMvcConfigBase {
|
||||
@Spy
|
||||
private static Device device1;
|
||||
private static Device device2;
|
||||
@MockBean
|
||||
private DeviceService service;
|
||||
@MockBean
|
||||
private RecordDataService recordDataService;
|
||||
|
||||
@BeforeAll
|
||||
static void beforeAll() {
|
||||
device1 = DeviceBuilder.aDevice().online(true).name("Device 1").build();
|
||||
device1.setId(1L);
|
||||
device2 = DeviceBuilder.aDevice().online(false).name("Device 2").build();
|
||||
device2.setId(2L);
|
||||
}
|
||||
|
||||
@Test
|
||||
void create() throws Exception {
|
||||
DeviceDto dto = new DeviceDto();
|
||||
dto.setProductId(121L);
|
||||
dto.setName(device1.getName());
|
||||
when(service.create(any(DeviceDto.class))).thenReturn(device1);
|
||||
mockMvc.perform(post("/api/rest/device")
|
||||
.with(csrf().asHeader())
|
||||
.with(user(userDetails))
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.content(objectMapper.writeValueAsString(dto))
|
||||
)
|
||||
.andExpect(status().isOk())
|
||||
.andDo(print());
|
||||
verify(service).create(any(DeviceDto.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void list() throws Exception {
|
||||
List<Device> devices = Lists.newArrayList(device1, device2);
|
||||
when(service.page(any(Page.class), any(LambdaQueryWrapper.class))).thenReturn(new Page<Device>().setRecords(devices).setTotal((long) devices.size()));
|
||||
|
||||
mockMvc.perform(get("/api/rest/device").with(user(userDetails)))
|
||||
.andExpect(status().isOk())
|
||||
.andDo(print());
|
||||
|
||||
verify(service).page(any(Page.class), any(LambdaQueryWrapper.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void update() throws Exception {
|
||||
DeviceDto dto = new DeviceDto();
|
||||
dto.setProductId(121L);
|
||||
dto.setName(device1.getName());
|
||||
when(service.update(any(DeviceDto.class), anyLong())).thenReturn(device1);
|
||||
mockMvc.perform(patch("/api/rest/device/{id}", device1.getId())
|
||||
.with(csrf().asHeader())
|
||||
.with(user(userDetails))
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.content(objectMapper.writeValueAsString(dto))
|
||||
)
|
||||
.andExpect(status().isOk())
|
||||
.andDo(print());
|
||||
verify(service).update(any(DeviceDto.class), anyLong());
|
||||
}
|
||||
}
|
@ -0,0 +1,100 @@
|
||||
package com.zsc.edu.gateway.rest.iot;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.zsc.edu.gateway.MockMvcConfigBase;
|
||||
import com.zsc.edu.gateway.domain.iot.EventBuilder;
|
||||
import com.zsc.edu.gateway.framework.security.UserDetailsImpl;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.controller.EventController;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.dto.EventDto;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.entity.Event;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.service.EventService;
|
||||
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.beans.factory.annotation.Autowired;
|
||||
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(EventController.class)
|
||||
public class EventControllerTest extends MockMvcConfigBase {
|
||||
@Spy
|
||||
private static Event event1;
|
||||
private static Event event2;
|
||||
@MockBean
|
||||
private EventService service;
|
||||
|
||||
@Autowired
|
||||
private ObjectMapper objectMapper;
|
||||
|
||||
@BeforeAll
|
||||
static void beforeAll() {
|
||||
event1 = EventBuilder.builder().setName("Event 1").setIdentifier("Description 1").build();
|
||||
event1.setId(1L);
|
||||
event2 = EventBuilder.builder().setName("Event 2").setIdentifier("Description 2").build();
|
||||
event2.setId(2L);
|
||||
}
|
||||
|
||||
@Test
|
||||
void create() throws Exception {
|
||||
EventDto dto = new EventDto();
|
||||
dto.setProductId(121L);
|
||||
dto.setName(event1.getName());
|
||||
dto.setIdentifier(event1.getIdentifier());
|
||||
dto.setOutputs(null);
|
||||
when(service.create(any(EventDto.class))).thenReturn(event1);
|
||||
mockMvc.perform(post("/api/rest/tsl/event")
|
||||
.with(csrf().asHeader())
|
||||
.with(user(userDetails))
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.content(objectMapper.writeValueAsString(dto))
|
||||
)
|
||||
.andExpect(status().isOk())
|
||||
.andDo(print());
|
||||
verify(service).create(any(EventDto.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void list() throws Exception {
|
||||
List<Event> events = Lists.newArrayList(event1, event2);
|
||||
when(service.page(any(Page.class), any(LambdaQueryWrapper.class))).thenReturn(new Page<Event>().setRecords(events).setTotal((long) events.size()));
|
||||
mockMvc.perform(get("/api/rest/tsl/event").with(user(userDetails)))
|
||||
.andExpect(status().isOk())
|
||||
.andDo(print());
|
||||
verify(service).page(any(Page.class), any(LambdaQueryWrapper.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void update() throws Exception {
|
||||
EventDto dto = new EventDto();
|
||||
dto.setProductId(121L);
|
||||
dto.setName("Event UPDATE");
|
||||
dto.setIdentifier(event1.getIdentifier());
|
||||
dto.setOutputs(null);
|
||||
when(service.update(any(EventDto.class), anyLong())).thenReturn(event1);
|
||||
mockMvc.perform(patch("/api/rest/tsl/event/{id}", event1.getId())
|
||||
.with(csrf().asHeader())
|
||||
.with(user(userDetails))
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.content(objectMapper.writeValueAsString(dto))
|
||||
)
|
||||
.andExpect(status().isOk())
|
||||
.andDo(print());
|
||||
verify(service).update(any(EventDto.class), anyLong());
|
||||
}
|
||||
}
|
@ -0,0 +1,97 @@
|
||||
package com.zsc.edu.gateway.rest.iot;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.zsc.edu.gateway.MockMvcConfigBase;
|
||||
import com.zsc.edu.gateway.domain.iot.ProductBuilder;
|
||||
import com.zsc.edu.gateway.modules.iot.product.controller.ProductController;
|
||||
import com.zsc.edu.gateway.modules.iot.product.dto.ProductDto;
|
||||
import com.zsc.edu.gateway.modules.iot.product.entity.Product;
|
||||
import com.zsc.edu.gateway.modules.iot.product.service.ProductService;
|
||||
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.beans.factory.annotation.Autowired;
|
||||
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(ProductController.class)
|
||||
public class ProductControllerTest extends MockMvcConfigBase {
|
||||
@Spy
|
||||
private static Product product1;
|
||||
private static Product product2;
|
||||
@MockBean
|
||||
private ProductService service;
|
||||
|
||||
@Autowired
|
||||
private ObjectMapper objectMapper;
|
||||
|
||||
@BeforeAll
|
||||
static void beforeAll() {
|
||||
product1 = ProductBuilder.bProduct().name("Product 1").productType("Description 1").build();
|
||||
product1.setId(1L);
|
||||
product2 = ProductBuilder.bProduct().name("Product 2").productType("Description 2").build();
|
||||
product2.setId(2L);
|
||||
}
|
||||
|
||||
@Test
|
||||
void create() throws Exception {
|
||||
ProductDto dto = new ProductDto();
|
||||
dto.setProductType(product1.getProductType());
|
||||
dto.setName(product1.getName());
|
||||
dto.setParams(null);
|
||||
when(service.create(any(ProductDto.class))).thenReturn(product1);
|
||||
mockMvc.perform(post("/api/rest/product")
|
||||
.with(csrf().asHeader())
|
||||
.with(user(userDetails))
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.content(objectMapper.writeValueAsString(dto))
|
||||
)
|
||||
.andExpect(status().isOk())
|
||||
.andDo(print());
|
||||
verify(service).create(any(ProductDto.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void list() throws Exception {
|
||||
List<Product> products = Lists.newArrayList(product1, product2);
|
||||
when(service.page(any(Page.class), any(LambdaQueryWrapper.class))).thenReturn(new Page<Product>().setRecords(products).setTotal((long) products.size()));
|
||||
mockMvc.perform(get("/api/rest/product").with(user(userDetails)))
|
||||
.andExpect(status().isOk())
|
||||
.andDo(print());
|
||||
verify(service).page(any(Page.class), any(LambdaQueryWrapper.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void update() throws Exception {
|
||||
ProductDto dto = new ProductDto();
|
||||
dto.setProductType(product1.getProductType());
|
||||
dto.setName(product1.getName());
|
||||
dto.setParams(null);
|
||||
when(service.update(any(ProductDto.class), anyLong())).thenReturn(product1);
|
||||
mockMvc.perform(patch("/api/rest/product/{id}", product1.getId())
|
||||
.with(csrf().asHeader())
|
||||
.with(user(userDetails))
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.content(objectMapper.writeValueAsString(dto))
|
||||
)
|
||||
.andExpect(status().isOk())
|
||||
.andDo(print());
|
||||
verify(service).update(any(ProductDto.class), anyLong());
|
||||
}
|
||||
}
|
@ -0,0 +1,104 @@
|
||||
package com.zsc.edu.gateway.rest.iot;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.zsc.edu.gateway.MockMvcConfigBase;
|
||||
import com.zsc.edu.gateway.domain.iot.PropertyBuilder;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.controller.PropertyController;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.dto.PropertyDto;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.entity.DataType;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.entity.Property;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.service.PropertyService;
|
||||
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.beans.factory.annotation.Autowired;
|
||||
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(PropertyController.class)
|
||||
public class PropertyControllerTest extends MockMvcConfigBase {
|
||||
@Spy
|
||||
private static Property property1;
|
||||
private static Property property2;
|
||||
@MockBean
|
||||
private PropertyService service;
|
||||
|
||||
@Autowired
|
||||
private ObjectMapper objectMapper;
|
||||
|
||||
@BeforeAll
|
||||
static void beforeAll() {
|
||||
property1 = PropertyBuilder.builder().setName("PROPERTY_NAME_1").setProductId(121L)
|
||||
.setIoType(Property.IoType.READ_WRITE).setDataType(DataType.DATE).build();
|
||||
property1.setId(1L);
|
||||
property2 = PropertyBuilder.builder().setName("PROPERTY_NAME_2").setProductId(121L)
|
||||
.setIoType(Property.IoType.READ_WRITE).setDataType(DataType.DATE).build();
|
||||
property2.setId(2L);
|
||||
}
|
||||
|
||||
@Test
|
||||
void create() throws Exception {
|
||||
PropertyDto dto = new PropertyDto();
|
||||
dto.setProductId(121L);
|
||||
dto.setName(property1.getName());
|
||||
dto.setIdentifier("Identifier 1");
|
||||
dto.setDataType(DataType.DATE);
|
||||
dto.setIoType(Property.IoType.READ_WRITE);
|
||||
when(service.create(any(PropertyDto.class))).thenReturn(property1);
|
||||
mockMvc.perform(post("/api/rest/tsl/property")
|
||||
.with(csrf().asHeader())
|
||||
.with(user(userDetails))
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.content(objectMapper.writeValueAsString(dto))
|
||||
)
|
||||
.andExpect(status().isOk())
|
||||
.andDo(print());
|
||||
verify(service).create(any(PropertyDto.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void list() throws Exception {
|
||||
List<Property> properties = Lists.newArrayList(property1, property2);
|
||||
when(service.page(any(Page.class), any(LambdaQueryWrapper.class))).thenReturn(new Page<Property>().setRecords(properties).setTotal((long) properties.size()));
|
||||
mockMvc.perform(get("/api/rest/tsl/property").with(user(userDetails)))
|
||||
.andExpect(status().isOk())
|
||||
.andDo(print());
|
||||
verify(service).page(any(Page.class), any(LambdaQueryWrapper.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void update() throws Exception {
|
||||
PropertyDto dto = new PropertyDto();
|
||||
dto.setProductId(121L);
|
||||
dto.setName("PROPERTY_UPDATE");
|
||||
dto.setIdentifier("Identifier 1");
|
||||
dto.setDataType(DataType.DATE);
|
||||
dto.setIoType(Property.IoType.READ_WRITE);
|
||||
when(service.update(any(PropertyDto.class), anyLong())).thenReturn(property1);
|
||||
mockMvc.perform(patch("/api/rest/tsl/property/{id}", property1.getId())
|
||||
.with(csrf().asHeader())
|
||||
.with(user(userDetails))
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.content(objectMapper.writeValueAsString(dto))
|
||||
)
|
||||
.andExpect(status().isOk())
|
||||
.andDo(print());
|
||||
verify(service).update(any(PropertyDto.class), anyLong());
|
||||
}
|
||||
}
|
@ -0,0 +1,101 @@
|
||||
package com.zsc.edu.gateway.rest.iot;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.zsc.edu.gateway.MockMvcConfigBase;
|
||||
import com.zsc.edu.gateway.domain.iot.ServeBuilder;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.controller.ServeController;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.dto.ServeDto;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.entity.Serve;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.service.ServeService;
|
||||
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.beans.factory.annotation.Autowired;
|
||||
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(ServeController.class)
|
||||
public class ServeControllerTest extends MockMvcConfigBase {
|
||||
@Spy
|
||||
private static Serve serve1;
|
||||
private static Serve serve2;
|
||||
@MockBean
|
||||
private ServeService service;
|
||||
|
||||
@Autowired
|
||||
private ObjectMapper objectMapper;
|
||||
|
||||
@BeforeAll
|
||||
static void beforeAll() {
|
||||
serve1 = ServeBuilder.aServe().name("Serve 1").identifier("Description 1").build();
|
||||
serve1.setId(1L);
|
||||
serve2 = ServeBuilder.aServe().name("Serve 2").identifier("Description 2").build();
|
||||
serve2.setId(2L);
|
||||
}
|
||||
|
||||
@Test
|
||||
void create() throws Exception {
|
||||
ServeDto dto = new ServeDto();
|
||||
dto.setProductId(121L);
|
||||
dto.setName(serve1.getName());
|
||||
dto.setIdentifier(serve1.getIdentifier());
|
||||
dto.setInputs(null);
|
||||
dto.setOutputs(null);
|
||||
when(service.create(any(ServeDto.class))).thenReturn(serve1);
|
||||
mockMvc.perform(post("/api/rest/tsl/serve")
|
||||
.with(csrf().asHeader())
|
||||
.with(user(userDetails))
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.content(objectMapper.writeValueAsString(dto))
|
||||
)
|
||||
.andExpect(status().isOk())
|
||||
.andDo(print());
|
||||
verify(service).create(any(ServeDto.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void list() throws Exception {
|
||||
List<Serve> serves = Lists.newArrayList(serve1, serve2);
|
||||
when(service.page(any(Page.class), any(LambdaQueryWrapper.class))).thenReturn(new Page<Serve>().setRecords(serves).setTotal((long) serves.size()));
|
||||
mockMvc.perform(get("/api/rest/tsl/serve").with(user(userDetails)))
|
||||
.andExpect(status().isOk())
|
||||
.andDo(print());
|
||||
verify(service).page(any(Page.class), any(LambdaQueryWrapper.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void update() throws Exception {
|
||||
ServeDto dto = new ServeDto();
|
||||
dto.setProductId(121L);
|
||||
dto.setName(serve1.getName());
|
||||
dto.setIdentifier(serve1.getIdentifier());
|
||||
dto.setInputs(null);
|
||||
dto.setOutputs(null);
|
||||
when(service.update(any(ServeDto.class), anyLong())).thenReturn(serve1);
|
||||
mockMvc.perform(patch("/api/rest/tsl/serve/{id}", serve1.getId())
|
||||
.with(csrf().asHeader())
|
||||
.with(user(userDetails))
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.content(objectMapper.writeValueAsString(dto))
|
||||
)
|
||||
.andExpect(status().isOk())
|
||||
.andDo(print());
|
||||
verify(service).update(any(ServeDto.class), anyLong());
|
||||
}
|
||||
}
|
@ -1,12 +1,14 @@
|
||||
package com.zsc.edu.gateway.rest.notice;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.zsc.edu.gateway.MockMvcConfigBase;
|
||||
import com.zsc.edu.gateway.domain.notice.BulletinBuilder;
|
||||
import com.zsc.edu.gateway.framework.security.UserDetailsImpl;
|
||||
import com.zsc.edu.gateway.modules.notice.controller.BulletinController;
|
||||
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;
|
||||
@ -27,7 +29,7 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilder
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
|
||||
@WebMvcTest(AuthorityController.class)
|
||||
@WebMvcTest(BulletinController.class)
|
||||
public class BulletinControllerTest extends MockMvcConfigBase {
|
||||
@Spy
|
||||
private static Bulletin bulletin1;
|
||||
@ -66,7 +68,7 @@ public class BulletinControllerTest extends MockMvcConfigBase {
|
||||
when(service.list()).thenReturn(bulletins);
|
||||
mockMvc.perform(get("/api/rest/bulletin").with(user(userDetails))
|
||||
).andExpect(status().isOk()).andDo(print());
|
||||
verify(service).list();
|
||||
verify(service).page(any(Page.class), any(LambdaQueryWrapper.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -0,0 +1,78 @@
|
||||
package com.zsc.edu.gateway.rest.notice;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.zsc.edu.gateway.MockMvcConfigBase;
|
||||
import com.zsc.edu.gateway.domain.notice.UserMessageBuilder;
|
||||
import com.zsc.edu.gateway.modules.notice.controller.UserMessageController;
|
||||
import com.zsc.edu.gateway.modules.notice.dto.UserMessageDto;
|
||||
import com.zsc.edu.gateway.modules.notice.entity.MessageType;
|
||||
import com.zsc.edu.gateway.modules.notice.entity.UserMessage;
|
||||
import com.zsc.edu.gateway.modules.notice.query.AdminMessageQuery;
|
||||
import com.zsc.edu.gateway.modules.notice.service.UserMessageService;
|
||||
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.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
import static org.springframework.restdocs.mockmvc.RestDocumentationRequestBuilders.post;
|
||||
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.get;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
|
||||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
||||
|
||||
@WebMvcTest(UserMessageController.class)
|
||||
public class UserMessageControllerTest extends MockMvcConfigBase {
|
||||
@Spy
|
||||
private static UserMessage userMessage1;
|
||||
private static UserMessage userMessage2;
|
||||
@MockBean
|
||||
private UserMessageService service;
|
||||
|
||||
@BeforeAll
|
||||
static void beforeAll() {
|
||||
userMessage1 = UserMessageBuilder.builder().setMessageId(1L).setUserId(1L).setIsRead(true).build();
|
||||
userMessage2 = UserMessageBuilder.builder().setMessageId(1L).setUserId(1L).setIsRead(false).build();
|
||||
}
|
||||
|
||||
@Test
|
||||
void list() throws Exception {
|
||||
List<UserMessage> userMessages = Lists.newArrayList(userMessage1, userMessage2);
|
||||
Page<UserMessage> pageResult = new Page<>();
|
||||
pageResult.setRecords(userMessages);
|
||||
pageResult.setTotal((long) userMessages.size());
|
||||
when(service.getAdminMessagePage(any(Page.class), any(AdminMessageQuery.class))).thenReturn(pageResult);
|
||||
mockMvc.perform(get("/api/rest/message")
|
||||
.with(user(userDetails))
|
||||
)
|
||||
.andExpect(status().isOk())
|
||||
.andDo(print());
|
||||
verify(service).getAdminMessagePage(any(Page.class), any(AdminMessageQuery.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void create() throws Exception {
|
||||
UserMessageDto dto = new UserMessageDto();
|
||||
dto.setTitle("测试创建消息");
|
||||
dto.setContent("测试创建消息");
|
||||
dto.setType(MessageType.other);
|
||||
when(service.createByAdmin(any(UserMessageDto.class))).thenReturn(true);
|
||||
mockMvc.perform(post("/api/rest/message")
|
||||
.with(csrf().asHeader())
|
||||
.with(user(userDetails))
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.content(objectMapper.writeValueAsString(dto))
|
||||
)
|
||||
.andExpect(status().isOk())
|
||||
.andDo(print());
|
||||
verify(service).createByAdmin(any(UserMessageDto.class));
|
||||
}
|
||||
}
|
@ -1,6 +1,8 @@
|
||||
package com.zsc.edu.gateway.rest.system;
|
||||
|
||||
//import com.zsc.edu.gateway.MockMvcConfigBase;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.zsc.edu.gateway.MockMvcConfigBase;
|
||||
import com.zsc.edu.gateway.domain.system.DeptBuilder;
|
||||
import com.zsc.edu.gateway.modules.system.controller.DeptController;
|
||||
@ -63,11 +65,16 @@ public class DeptControllerTest extends MockMvcConfigBase {
|
||||
@Test
|
||||
void list() throws Exception {
|
||||
List<Dept> depts = Lists.newArrayList(dept1, dept2);
|
||||
when(service.list()).thenReturn(depts);
|
||||
mockMvc.perform(get("/api/rest/dept").with(user(userDetails)))
|
||||
.andExpect(status().isOk())
|
||||
Page<Dept> pageResult = new Page<>();
|
||||
pageResult.setRecords(depts);
|
||||
pageResult.setTotal(depts.size());
|
||||
|
||||
when(service.page(any(Page.class), any())).thenReturn(pageResult);
|
||||
mockMvc.perform(get("/api/rest/dept")
|
||||
.with(user(userDetails))
|
||||
).andExpect(status().isOk())
|
||||
.andDo(print());
|
||||
verify(service).list();
|
||||
verify(service).page(any(Page.class), any());
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -84,43 +91,4 @@ public class DeptControllerTest extends MockMvcConfigBase {
|
||||
.andExpect(status().isOk()).andDo(print());
|
||||
verify(service).edit(any(), any());
|
||||
}
|
||||
//
|
||||
// @Test
|
||||
// void remove() throws Exception {
|
||||
// when(service.deleteById(anyLong())).thenReturn(lampGroup1);
|
||||
// mockMvc.perform(delete("/api/rest/lamp-group/{id}", lampGroup1.id)
|
||||
// .with(csrf().asHeader())
|
||||
// .with(user(userDetails))
|
||||
// )
|
||||
// .andExpect(status().isOk())
|
||||
// .andDo(document("lamp-group/delete"));
|
||||
// verify(service).deleteById(anyLong());
|
||||
// }
|
||||
//
|
||||
// @Test
|
||||
// void detail() throws Exception {
|
||||
// when(service.detail(anyLong())).thenReturn(lampGroup1);
|
||||
// mockMvc.perform(get("/api/rest/lamp-group/{id}", lampGroup1.id)
|
||||
// .with(user(userDetails))
|
||||
// )
|
||||
// .andExpect(status().isOk())
|
||||
// .andDo(document("lamp-group/detail"));
|
||||
// verify(service).detail(anyLong());
|
||||
// }
|
||||
//
|
||||
// @Test
|
||||
// void batchDelete() throws Exception {
|
||||
// Long[] ids = new Long[]{1l, 2l, 3l, 4l, 5l, 6l, 7l, 8l, 9l, 10l, 11l, 12l};
|
||||
// when(service.batchDelete(any())).thenReturn(ids);
|
||||
// mockMvc.perform(post("/api/rest/lamp-group/batchRemove")
|
||||
// .contentType(MediaType.APPLICATION_JSON)
|
||||
// .content(objectMapper.writeValueAsString(ids))
|
||||
// .with(csrf().asHeader())
|
||||
// .with(user(userDetails))
|
||||
// )
|
||||
// .andExpect(status().isOk())
|
||||
// .andDo(document("lamp-group/batchRemove"));
|
||||
// verify(service).batchDelete(any());
|
||||
// }
|
||||
|
||||
}
|
||||
|
@ -1,14 +1,17 @@
|
||||
package com.zsc.edu.gateway.rest.system;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.zsc.edu.gateway.MockMvcConfigBase;
|
||||
import com.zsc.edu.gateway.domain.system.RoleBuilder;
|
||||
import com.zsc.edu.gateway.modules.system.controller.RoleController;
|
||||
import com.zsc.edu.gateway.modules.system.dto.RoleDto;
|
||||
import com.zsc.edu.gateway.modules.system.entity.Role;
|
||||
import com.zsc.edu.gateway.modules.system.service.RoleAuthService;
|
||||
import com.zsc.edu.gateway.modules.system.service.RoleService;
|
||||
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;
|
||||
@ -20,116 +23,70 @@ 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.get;
|
||||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
|
||||
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch;
|
||||
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(RoleController.class)
|
||||
public class RoleControllerTest extends MockMvcConfigBase {
|
||||
@Spy
|
||||
private static Role role1;
|
||||
|
||||
private static Role role2;
|
||||
|
||||
@MockBean
|
||||
private RoleService service;
|
||||
@MockBean
|
||||
private RoleAuthService authService;
|
||||
|
||||
@BeforeAll
|
||||
static void beforeAll() {
|
||||
role1 = RoleBuilder.aRole().name("管理员").build();
|
||||
role1.setId(1L);
|
||||
role2 = RoleBuilder.aRole().name("普通用户").build();
|
||||
role2.setId(2L);
|
||||
}
|
||||
|
||||
@Test
|
||||
void create() throws Exception{
|
||||
void create() throws Exception {
|
||||
RoleDto dto = new RoleDto();
|
||||
dto.name = role1.getName();
|
||||
dto.setName(role1.getName());
|
||||
when(service.create(any())).thenReturn(role1);
|
||||
mockMvc.perform(post("/api/rest/role")
|
||||
.with(csrf().asHeader())
|
||||
.with(user(userDetails))
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.content(objectMapper.writeValueAsString(dto))
|
||||
).andExpect(status().isOk()).andDo(print());
|
||||
).andExpect(status().isOk()).andDo(print());
|
||||
verify(service).create(any());
|
||||
}
|
||||
|
||||
@Test
|
||||
void list() throws Exception {
|
||||
List<Role> Roles = Lists.newArrayList(role1, role2);
|
||||
when(service.list()).thenReturn(Roles);
|
||||
mockMvc.perform(get("/api/rest/role").with(user(userDetails)))
|
||||
.andExpect(status().isOk())
|
||||
List<Role> roles = Lists.newArrayList(role1, role2);
|
||||
Page<Role> pageResult = new Page<>();
|
||||
pageResult.setRecords(roles);
|
||||
pageResult.setTotal((long) roles.size());
|
||||
|
||||
when(service.page(any(Page.class), any())).thenReturn(pageResult);
|
||||
mockMvc.perform(get("/api/rest/role")
|
||||
.with(user(userDetails))
|
||||
).andExpect(status().isOk())
|
||||
.andDo(print());
|
||||
verify(service).list();
|
||||
verify(service).page(any(Page.class), any());
|
||||
}
|
||||
|
||||
@Test
|
||||
void update() throws Exception {
|
||||
RoleDto dto = new RoleDto();
|
||||
dto.name = role1.getName();
|
||||
when(service.update(any(), any())).thenReturn(true);
|
||||
mockMvc.perform(patch("/api/rest/role/{id}", role1.id)
|
||||
.with(csrf().asHeader())
|
||||
.with(user(userDetails))
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.content(objectMapper.writeValueAsString(dto))
|
||||
)
|
||||
.andExpect(status().isOk()).andDo(print());
|
||||
verify(service).update(any(), any());
|
||||
dto.setName(role1.getName());
|
||||
when(service.edit(any(), any())).thenReturn(true);
|
||||
mockMvc.perform(patch("/api/rest/role/{id}", role1.getId())
|
||||
.with(csrf().asHeader())
|
||||
.with(user(userDetails))
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.content(objectMapper.writeValueAsString(dto))
|
||||
).andExpect(status().isOk()).andDo(print());
|
||||
verify(service).edit(any(), any());
|
||||
}
|
||||
// @Test
|
||||
// void update() throws Exception {
|
||||
// AuthorityDto dto = new AuthorityDto();
|
||||
// dto.name = aut1.getName();
|
||||
// when(service.update((AuthorityDto) any(), any())).thenReturn(true);
|
||||
// mockMvc.perform(patch("/api/rest/auth/{id}", aut1.id)
|
||||
// .with(csrf().asHeader())
|
||||
// .with(user(userDetails))
|
||||
// .contentType(MediaType.APPLICATION_JSON)
|
||||
// .content(objectMapper.writeValueAsString(dto))
|
||||
// )
|
||||
// .andExpect(status().isOk()).andDo(print());
|
||||
// verify(service).update((AuthorityDto) any(), any());
|
||||
// }
|
||||
//
|
||||
// @Test
|
||||
// void remove() throws Exception {
|
||||
// when(service.deleteById(anyLong())).thenReturn(lampGroup1);
|
||||
// mockMvc.perform(delete("/api/rest/lamp-group/{id}", lampGroup1.id)
|
||||
// .with(csrf().asHeader())
|
||||
// .with(user(userDetails))
|
||||
// )
|
||||
// .andExpect(status().isOk())
|
||||
// .andDo(document("lamp-group/delete"));
|
||||
// verify(service).deleteById(anyLong());
|
||||
// }
|
||||
//
|
||||
// @Test
|
||||
// void detail() throws Exception {
|
||||
// when(service.detail(anyLong())).thenReturn(lampGroup1);
|
||||
// mockMvc.perform(get("/api/rest/lamp-group/{id}", lampGroup1.id)
|
||||
// .with(user(userDetails))
|
||||
// )
|
||||
// .andExpect(status().isOk())
|
||||
// .andDo(document("lamp-group/detail"));
|
||||
// verify(service).detail(anyLong());
|
||||
// }
|
||||
//
|
||||
// @Test
|
||||
// void batchDelete() throws Exception {
|
||||
// Long[] ids = new Long[]{1l, 2l, 3l, 4l, 5l, 6l, 7l, 8l, 9l, 10l, 11l, 12l};
|
||||
// when(service.batchDelete(any())).thenReturn(ids);
|
||||
// mockMvc.perform(post("/api/rest/lamp-group/batchRemove")
|
||||
// .contentType(MediaType.APPLICATION_JSON)
|
||||
// .content(objectMapper.writeValueAsString(ids))
|
||||
// .with(csrf().asHeader())
|
||||
// .with(user(userDetails))
|
||||
// )
|
||||
// .andExpect(status().isOk())
|
||||
// .andDo(document("lamp-group/batchRemove"));
|
||||
// verify(service).batchDelete(any());
|
||||
// }
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,75 @@
|
||||
package com.zsc.edu.gateway.service.iot;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.zsc.edu.gateway.domain.iot.DeviceBuilder;
|
||||
import com.zsc.edu.gateway.exception.ConstraintException;
|
||||
import com.zsc.edu.gateway.modules.iot.device.dto.DeviceDto;
|
||||
import com.zsc.edu.gateway.modules.iot.device.entity.Device;
|
||||
import com.zsc.edu.gateway.modules.iot.device.repo.DeviceRepository;
|
||||
import com.zsc.edu.gateway.modules.iot.device.service.DeviceService;
|
||||
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.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
@SpringBootTest
|
||||
public class DeviceServiceTest {
|
||||
@Autowired
|
||||
private DeviceService service;
|
||||
@Autowired
|
||||
private DeviceRepository repo;
|
||||
|
||||
private Device device1;
|
||||
private Device device2;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
device1 = DeviceBuilder.aDevice().name("DEVICE_NAME_1").online(true).state(Device.Status.ACTIVATED).build();
|
||||
repo.insert(device1);
|
||||
device2 = DeviceBuilder.aDevice().name("DEVICE_NAME_2").online(false).state(Device.Status.ACTIVATED).build();
|
||||
repo.insert(device2);
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
void tearDown() {
|
||||
repo.delete(new LambdaQueryWrapper<Device>()
|
||||
.in(Device::getName, "DEVICE_NAME_1", "DEVICE_NAME_2", "DEVICE_3", "DEVICE_UPDATE"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void list() {
|
||||
LambdaQueryWrapper<Device> queryWrapper = new LambdaQueryWrapper<>();
|
||||
assertEquals(2, service.list(queryWrapper.like(Device::getName, "DEVICE")).size());
|
||||
assertEquals(1, service.list(queryWrapper.eq(Device::getName, device1.getName())).size());
|
||||
// assertEquals(2, service.list().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
void createProduct() {
|
||||
DeviceDto dto = new DeviceDto("DEVICE_3", null, null, null, null, 121L, "备注");
|
||||
Device device = service.create(dto);
|
||||
assertNotNull(device);
|
||||
List<Device> devices = service.list(new LambdaQueryWrapper<Device>().like(Device::getName, "DEVICE"));
|
||||
assertEquals(3, devices.size());
|
||||
// 不能创建其他已存在的同名同代码部门
|
||||
DeviceDto dto2 = new DeviceDto(device2.getName(), null, null, null, null, 121L, "备注");
|
||||
assertThrows(ConstraintException.class, () -> service.create(dto2));
|
||||
}
|
||||
|
||||
@Test
|
||||
void updateProduct() {
|
||||
DeviceDto dto = new DeviceDto();
|
||||
dto.setName("DEVICE_UPDATE");
|
||||
service.update(dto, device2.getId());
|
||||
Device updatedProduct = repo.selectOne(new LambdaQueryWrapper<Device>().eq(Device::getName, dto.getName()));
|
||||
assertNotNull(updatedProduct);
|
||||
assertEquals("DEVICE_UPDATE", updatedProduct.getName());
|
||||
assertEquals(device2.getId(), updatedProduct.getId());
|
||||
}
|
||||
}
|
@ -0,0 +1,101 @@
|
||||
package com.zsc.edu.gateway.service.iot;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.zsc.edu.gateway.domain.iot.EventBuilder;
|
||||
import com.zsc.edu.gateway.domain.iot.ServeBuilder;
|
||||
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.EventDto;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.entity.DataType;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.entity.Event;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.entity.Param;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.entity.Event;
|
||||
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 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.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
@SpringBootTest
|
||||
public class EventServiceTest {
|
||||
@Autowired
|
||||
private EventService service;
|
||||
@Autowired
|
||||
private EventRepository repo;
|
||||
@Autowired
|
||||
private ParamRepository paramRepo;
|
||||
|
||||
private Event event1;
|
||||
private Event event2;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
event1 = EventBuilder.builder().setName("EVENT_NAME_1").setIdentifier("测试1").setProductId(121L).setType(Event.Type.ACTIVE).build();
|
||||
repo.insert(event1);
|
||||
event2 = EventBuilder.builder().setName("EVENT_NAME_2").setIdentifier("测试2").setProductId(121L).setType(Event.Type.ACTIVE).build();
|
||||
repo.insert(event2);
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
void tearDown() {
|
||||
repo.delete(new LambdaQueryWrapper<Event>()
|
||||
.in(Event::getName, "EVENT_NAME_1", "EVENT_NAME_2", "EVENT_3", "EVENT_UPDATE"));
|
||||
paramRepo.delete(new LambdaQueryWrapper<Param>()
|
||||
.in(Param::getName, "联合测试1"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void list() {
|
||||
LambdaQueryWrapper<Event> queryWrapper = new LambdaQueryWrapper<>();
|
||||
assertEquals(2, service.list(queryWrapper.like(Event::getName, "EVENT")).size());
|
||||
assertEquals(1, service.list(queryWrapper.eq(Event::getName, event1.getName())).size());
|
||||
// assertEquals(2, service.list().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
void createProduct() {
|
||||
EventDto dto = new EventDto(121L, "EVENT_3", "测试3", "备注", Event.Type.ACTIVE, createParam());
|
||||
Event Event = service.create(dto);
|
||||
assertNotNull(Event);
|
||||
List<Event> events = service.list(new QueryWrapper<Event>().like("name", "EVENT"));
|
||||
assertEquals(3, events.size());
|
||||
// 不能创建其他已存在的同名同代码部门
|
||||
EventDto dto2 = new EventDto(121L, event2.getName(), "测试1", "备注", null, null);
|
||||
assertThrows(ConstraintException.class, () -> service.create(dto2));
|
||||
}
|
||||
|
||||
@Test
|
||||
void updateProduct() {
|
||||
EventDto dto = new EventDto();
|
||||
dto.setName("EVENT_UPDATE");
|
||||
dto.setIdentifier("测试更新");
|
||||
dto.setProductId(121L);
|
||||
dto.setOutputs(createParam());
|
||||
service.update(dto, event2.getId());
|
||||
Event updatedServe = repo.selectOne(new LambdaQueryWrapper<Event>().eq(Event::getName, dto.getName()));
|
||||
assertNotNull(updatedServe);
|
||||
assertEquals("EVENT_UPDATE", updatedServe.getName());
|
||||
assertEquals(event2.getId(), updatedServe.getId());
|
||||
}
|
||||
|
||||
|
||||
public List<ParamDto> createParam() {
|
||||
ParamDto paramDto = new ParamDto();
|
||||
paramDto.setName("联合测试1");
|
||||
paramDto.setType(Param.Type.OUTPUT);
|
||||
paramDto.setDataType(DataType.DATE);
|
||||
List<ParamDto> params = new ArrayList<>();
|
||||
params.add(paramDto);
|
||||
return params;
|
||||
}
|
||||
}
|
@ -1,9 +1,13 @@
|
||||
package com.zsc.edu.gateway.service.iot;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.zsc.edu.gateway.domain.iot.ParamBuilder;
|
||||
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.DataType;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.entity.Event;
|
||||
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;
|
||||
@ -12,6 +16,7 @@ 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 org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
@ -20,9 +25,12 @@ import java.util.List;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
@SpringBootTest
|
||||
@Transactional
|
||||
public class ParamServiceTest {
|
||||
|
||||
@Autowired
|
||||
private ParamService service;
|
||||
|
||||
@Autowired
|
||||
private ParamRepository repo;
|
||||
|
||||
@ -31,66 +39,49 @@ public class ParamServiceTest {
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
param1 = ParamBuilder.aParam().uint("测试1").build();
|
||||
param1 = ParamBuilder.aParam().name("PARAM_NAME_1").foreignId(1L).dataType(DataType.DATE).build();
|
||||
repo.insert(param1);
|
||||
param2 = ParamBuilder.aParam().uint("测试2").build();
|
||||
param2 = ParamBuilder.aParam().name("PARAM_NAME_2").foreignId(2L).dataType(DataType.DATE).build();
|
||||
repo.insert(param2);
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
void tearDown() {
|
||||
repo.delete(new LambdaQueryWrapper<Param>()
|
||||
.in(Param::getName, "PARAM_NAME_1", "PARAM_NAME_2", "PARAM_NAME_3", "PARAM_UPDATE"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void list() {
|
||||
LambdaQueryWrapper<Param> 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());
|
||||
assertEquals(2, service.list(queryWrapper.like(Param::getName, "PARAM")).size());
|
||||
assertEquals(1, service.list(queryWrapper.eq(Param::getName, param1.getName())).size());
|
||||
}
|
||||
|
||||
@Test
|
||||
void createParams() {
|
||||
List<ParamDto> params = createParamDtoList();
|
||||
ParamDto dto = new ParamDto("PARAM_NAME_3", "测试1", "备注", DataType.DATE, Param.Type.OUTPUT);
|
||||
List<ParamDto> params = new ArrayList<>();
|
||||
params.add(dto);
|
||||
Long foreignId = 1L;
|
||||
Boolean result = service.create(params, foreignId, null);
|
||||
assertTrue(result);
|
||||
List<Param> insertedParams = service.list(new LambdaQueryWrapper<Param>().like(Param::getName, "PARAM_NAME"));
|
||||
assertEquals(2, insertedParams.size()); // 因为setUp方法已经插入了两个参数
|
||||
List<Param> insertedParams = service.list(new LambdaQueryWrapper<Param>().like(Param::getName, "PARAM"));
|
||||
assertEquals(3, insertedParams.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
void updateParams() {
|
||||
ParamDto dto = new ParamDto();
|
||||
dto.setName("PARAM_NAME_UPDATE");
|
||||
dto.setName("PARAM_UPDATE");
|
||||
dto.setIdentifier("测试更新");
|
||||
List<ParamDto> 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());
|
||||
assertTrue(service.update(params, param2.getForeignId()));
|
||||
Param updatedParam = repo.selectOne(new LambdaQueryWrapper<Param>().eq(Param::getName, dto.getName()));
|
||||
assertNotNull(updatedParam);
|
||||
assertEquals("PARAM_UPDATE", updatedParam.getName());
|
||||
assertEquals(param2.getId(), updatedParam.getId());
|
||||
}
|
||||
|
||||
|
||||
@AfterEach
|
||||
void tearDown() {
|
||||
repo.delete(new LambdaQueryWrapper<Param>()
|
||||
.in(Param::getId, param1.getId(), param2.getId())
|
||||
.or()
|
||||
.in(Param::getName, "PARAM_NAME_1", "PARAM_NAME_2", "PARAM_NAME_UPDATE"));
|
||||
}
|
||||
|
||||
private List<ParamDto> 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);
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,98 @@
|
||||
package com.zsc.edu.gateway.service.iot;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.zsc.edu.gateway.domain.iot.ProductBuilder;
|
||||
import com.zsc.edu.gateway.exception.ConstraintException;
|
||||
import com.zsc.edu.gateway.modules.iot.product.dto.ProductDto;
|
||||
import com.zsc.edu.gateway.modules.iot.product.entity.Product;
|
||||
import com.zsc.edu.gateway.modules.iot.product.repo.ProductRepository;
|
||||
import com.zsc.edu.gateway.modules.iot.product.service.ProductService;
|
||||
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 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.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
@SpringBootTest
|
||||
public class ProductServiceTest {
|
||||
@Autowired
|
||||
private ProductService service;
|
||||
@Autowired
|
||||
private ProductRepository repo;
|
||||
@Autowired
|
||||
private ParamRepository paramRepository;
|
||||
|
||||
private Product product1;
|
||||
private Product product2;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
product1 = ProductBuilder.bProduct().name("PRODUCT_NAME_1").productType("测试1").link(Product.LinkType.TCP).build();
|
||||
repo.insert(product1);
|
||||
product2 = ProductBuilder.bProduct().name("PRODUCT_NAME_2").productType("测试2").link(Product.LinkType.TCP).build();
|
||||
repo.insert(product2);
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
void tearDown() {
|
||||
repo.delete(new LambdaQueryWrapper<Product>()
|
||||
.in(Product::getName, "PRODUCT_NAME_1", "PRODUCT_NAME_2", "PRODUCT_NAME_3", "PRODUCT_UPDATE"));
|
||||
paramRepository.delete(new LambdaQueryWrapper<Param>()
|
||||
.in(Param::getName, "联合测试"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void list() {
|
||||
LambdaQueryWrapper<Product> queryWrapper = new LambdaQueryWrapper<>();
|
||||
assertEquals(2, service.list(queryWrapper.like(Product::getName, "PRODUCT")).size());
|
||||
assertEquals(1, service.list(queryWrapper.eq(Product::getName, product1.getName())).size());
|
||||
// assertEquals(2, service.list().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
void createProduct() {
|
||||
ProductDto dto = new ProductDto("PRODUCT_NAME_3", "测试3", "测试3", Product.LinkType.TCP, createParam(), "备注1");
|
||||
Product product = service.create(dto);
|
||||
assertNotNull(product);
|
||||
List<Product> Products = service.list(new LambdaQueryWrapper<Product>().like(Product::getName, "PRODUCT"));
|
||||
assertEquals(3, Products.size());
|
||||
// 不能创建其他已存在的同名同代码部门
|
||||
ProductDto dto2 = new ProductDto(product2.getName(), "测试1", "测试1", Product.LinkType.TCP, null, "备注1");
|
||||
assertThrows(ConstraintException.class, () -> service.create(dto2));
|
||||
}
|
||||
|
||||
@Test
|
||||
void updateProduct() {
|
||||
ProductDto dto = new ProductDto();
|
||||
dto.setName("PRODUCT_UPDATE");
|
||||
dto.setProductType("测试更新");
|
||||
dto.setModel("测试更新");
|
||||
dto.setLink(Product.LinkType.TCP);
|
||||
dto.setParams(null);
|
||||
dto.setParams(createParam());
|
||||
service.update(dto, product2.getId());
|
||||
Product updatedProduct = repo.selectOne(new LambdaQueryWrapper<Product>().eq(Product::getName, dto.getName()));
|
||||
assertNotNull(updatedProduct);
|
||||
assertEquals("PRODUCT_UPDATE", updatedProduct.getName());
|
||||
assertEquals(product2.getId(), updatedProduct.getId());
|
||||
}
|
||||
|
||||
public List<ParamDto> createParam() {
|
||||
ParamDto paramDto = new ParamDto();
|
||||
paramDto.setName("联合测试");
|
||||
paramDto.setType(Param.Type.OUTPUT);
|
||||
paramDto.setDataType(DataType.DATE);
|
||||
List<ParamDto> params = new ArrayList<>();
|
||||
params.add(paramDto);
|
||||
return params;
|
||||
}
|
||||
}
|
@ -0,0 +1,75 @@
|
||||
package com.zsc.edu.gateway.service.iot;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.zsc.edu.gateway.domain.iot.PropertyBuilder;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.dto.PropertyDto;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.entity.DataType;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.entity.Property;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.repo.PropertyRepository;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.service.PropertyService;
|
||||
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.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
@SpringBootTest
|
||||
public class PropertyServiceTest {
|
||||
@Autowired
|
||||
private PropertyService service;
|
||||
@Autowired
|
||||
private PropertyRepository repo;
|
||||
|
||||
private Property property1;
|
||||
private Property property2;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
property1 = PropertyBuilder.builder().setName("PROPERTY_NAME_1").setProductId(121L)
|
||||
.setIoType(Property.IoType.READ_WRITE).setDataType(DataType.DATE).build();
|
||||
repo.insert(property1);
|
||||
property2 = PropertyBuilder.builder().setName("PROPERTY_NAME_2").setProductId(121L)
|
||||
.setIoType(Property.IoType.READ_WRITE).setDataType(DataType.DATE).build();
|
||||
repo.insert(property2);
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
void tearDown() {
|
||||
repo.delete(new LambdaQueryWrapper<Property>()
|
||||
.in(Property::getName, "PROPERTY_NAME_1", "PROPERTY_NAME_2", "PROPERTY_3", "PROPERTY_UPDATE"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void list() {
|
||||
LambdaQueryWrapper<Property> queryWrapper = new LambdaQueryWrapper<>();
|
||||
assertEquals(2, service.list(queryWrapper.like(Property::getName, "PROPERTY")).size());
|
||||
assertEquals(1, service.list(queryWrapper.eq(Property::getName, property1.getName())).size());
|
||||
// assertEquals(2, service.list().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
void createProduct() {
|
||||
PropertyDto dto = new PropertyDto(121L, "PROPERTY_3", "测试3", "测试", null, null);
|
||||
Property property = service.create(dto);
|
||||
assertNotNull(property);
|
||||
List<Property> properties = service.list(new LambdaQueryWrapper<Property>().like(Property::getName, "PROPERTY"));
|
||||
assertEquals(3, properties.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
void updateProduct() {
|
||||
PropertyDto dto = new PropertyDto();
|
||||
dto.setName("PROPERTY_UPDATE");
|
||||
dto.setIdentifier("测试更新");
|
||||
dto.setProductId(121L);
|
||||
service.update(dto, property2.getId());
|
||||
Property updatedProperty = repo.selectOne(new LambdaQueryWrapper<Property>().eq(Property::getName, dto.getName()));
|
||||
assertNotNull(updatedProperty);
|
||||
assertEquals("PROPERTY_UPDATE", updatedProperty.getName());
|
||||
assertEquals(updatedProperty.getId(), updatedProperty.getId());
|
||||
}
|
||||
}
|
@ -0,0 +1,100 @@
|
||||
package com.zsc.edu.gateway.service.iot;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.zsc.edu.gateway.domain.iot.ServeBuilder;
|
||||
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.DataType;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.entity.Param;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.entity.Serve;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.repo.ParamRepository;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.repo.ServeRepository;
|
||||
import com.zsc.edu.gateway.modules.iot.tsl.service.ServeService;
|
||||
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.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
@SpringBootTest
|
||||
public class ServeServiceTest {
|
||||
@Autowired
|
||||
private ServeService service;
|
||||
@Autowired
|
||||
private ServeRepository repo;
|
||||
@Autowired
|
||||
private ParamRepository paramRepo;
|
||||
|
||||
private Serve serve1;
|
||||
private Serve serve2;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
serve1 = ServeBuilder.aServe().name("SERVE_NAME_1").identifier("测试1").productId(121L).build();
|
||||
repo.insert(serve1);
|
||||
serve2 = ServeBuilder.aServe().name("SERVE_NAME_2").identifier("测试2").productId(121L).build();
|
||||
repo.insert(serve2);
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
void tearDown() {
|
||||
repo.delete(new LambdaQueryWrapper<Serve>()
|
||||
.in(Serve::getName, "SERVE_NAME_1", "SERVE_NAME_2", "SERVE_3", "SERVE_UPDATE"));
|
||||
paramRepo.delete(new LambdaQueryWrapper<Param>()
|
||||
.in(Param::getName, "联合测试1"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void list() {
|
||||
LambdaQueryWrapper<Serve> queryWrapper = new LambdaQueryWrapper<>();
|
||||
assertEquals(2, service.list(queryWrapper.like(Serve::getName, "SERVE")).size());
|
||||
assertEquals(1, service.list(queryWrapper.eq(Serve::getName, serve1.getName())).size());
|
||||
// assertEquals(2, service.list().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
void createProduct() {
|
||||
ServeDto dto = new ServeDto(121L, "SERVE_3", "测试3", "备注", createParam(), createParam());
|
||||
Serve serve = service.create(dto);
|
||||
assertNotNull(serve);
|
||||
List<Serve> serves = service.list(new LambdaQueryWrapper<Serve>().like(Serve::getName, "SERVE"));
|
||||
assertEquals(3, serves.size());
|
||||
// 不能创建其他已存在的同名同代码部门
|
||||
ServeDto dto2 = new ServeDto(121L, serve2.getName(), "测试1", "备注", null, null);
|
||||
assertThrows(ConstraintException.class, () -> service.create(dto2));
|
||||
}
|
||||
|
||||
@Test
|
||||
void updateProduct() {
|
||||
ServeDto dto = new ServeDto();
|
||||
dto.setName("SERVE_UPDATE");
|
||||
dto.setIdentifier("测试更新");
|
||||
dto.setProductId(121L);
|
||||
dto.setInputs(createParam());
|
||||
dto.setOutputs(createParam());
|
||||
service.update(dto, serve2.getId());
|
||||
Serve updatedServe = repo.selectOne(new LambdaQueryWrapper<Serve>().eq(Serve::getName, dto.getName()));
|
||||
assertNotNull(updatedServe);
|
||||
assertEquals("SERVE_UPDATE", updatedServe.getName());
|
||||
assertEquals(serve2.getId(), updatedServe.getId());
|
||||
}
|
||||
|
||||
|
||||
public List<ParamDto> createParam() {
|
||||
ParamDto paramDto = new ParamDto();
|
||||
paramDto.setName("联合测试1");
|
||||
paramDto.setType(Param.Type.OUTPUT);
|
||||
paramDto.setDataType(DataType.DATE);
|
||||
List<ParamDto> params = new ArrayList<>();
|
||||
params.add(paramDto);
|
||||
return params;
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -13,17 +13,21 @@ import jakarta.annotation.Resource;
|
||||
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 org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
@SpringBootTest
|
||||
public class BulletinServiceTest {
|
||||
|
||||
@Resource
|
||||
private BulletinService service;
|
||||
@Resource
|
||||
@Autowired
|
||||
private BulletinRepository repo;
|
||||
|
||||
private Bulletin bulletin1;
|
||||
@ -46,7 +50,7 @@ public class BulletinServiceTest {
|
||||
}
|
||||
|
||||
private Bulletin createAndInsertBulletin(String title) {
|
||||
Bulletin bulletin = BulletinBuilder.bBulletin().title(title).build();
|
||||
Bulletin bulletin = BulletinBuilder.bBulletin().top(false).title(title).build();
|
||||
repo.insert(bulletin);
|
||||
return bulletin;
|
||||
}
|
||||
@ -56,7 +60,7 @@ public class BulletinServiceTest {
|
||||
LambdaQueryWrapper<Bulletin> queryWrapper = new LambdaQueryWrapper<>();
|
||||
assertEquals(2, service.list(queryWrapper.like(Bulletin::getTitle, "测试")).size());
|
||||
assertEquals(1, service.list(queryWrapper.eq(Bulletin::getTitle, bulletin1.getTitle())).size());
|
||||
assertEquals(2, service.list().size());
|
||||
// assertEquals(2, service.list().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -64,29 +68,21 @@ public class BulletinServiceTest {
|
||||
BulletinDto dto = createBulletinDto("测试", true, "测试测试", "测试公告增加");
|
||||
Bulletin bulletin = service.create(userDetails, dto);
|
||||
assertNotNull(bulletin.getId());
|
||||
|
||||
List<Bulletin> list = service.list();
|
||||
assertEquals(3, list.size());
|
||||
|
||||
// 不能创建其他已存在标题公告
|
||||
assertThrows(ConstraintException.class, () -> service.create(userDetails, createBulletinDto(bulletin2.getTitle(), false, "", "")));
|
||||
}
|
||||
|
||||
@Test
|
||||
void updateBulletin() {
|
||||
BulletinDto dto = createBulletinDto("测试3", true, "测试测", "测试公告更新");
|
||||
BulletinDto dto = createBulletinDto("测试3", true, "测试更新", "测试公告更新");
|
||||
assertTrue(service.update(userDetails, dto, bulletin2.getId()));
|
||||
|
||||
Bulletin updatedBulletin = service.getOne(new LambdaQueryWrapper<Bulletin>().eq(Bulletin::getTitle, dto.getTitle()));
|
||||
Bulletin updatedBulletin = service.getOne(new LambdaQueryWrapper<Bulletin>()
|
||||
.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()));
|
||||
}
|
||||
|
||||
|
||||
private BulletinDto createBulletinDto(String title, boolean top, String content, String remark) {
|
||||
BulletinDto dto = new BulletinDto();
|
||||
dto.setTitle(title);
|
||||
|
@ -0,0 +1,67 @@
|
||||
package com.zsc.edu.gateway.service.notice;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.zsc.edu.gateway.domain.notice.MessageBuilder;
|
||||
import com.zsc.edu.gateway.framework.security.UserDetailsImpl;
|
||||
import com.zsc.edu.gateway.modules.notice.dto.UserMessageDto;
|
||||
import com.zsc.edu.gateway.modules.notice.entity.Message;
|
||||
import com.zsc.edu.gateway.modules.notice.entity.MessageType;
|
||||
import com.zsc.edu.gateway.modules.notice.repo.MessageRepository;
|
||||
import com.zsc.edu.gateway.modules.notice.repo.UserMessageRepository;
|
||||
import com.zsc.edu.gateway.modules.notice.service.UserMessageService;
|
||||
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.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
@SpringBootTest
|
||||
public class MessageServiceTest {
|
||||
@Autowired
|
||||
public MessageRepository messageRepository;
|
||||
@Autowired
|
||||
public UserMessageRepository userMessageRepository;
|
||||
@Autowired
|
||||
public UserMessageService service;
|
||||
|
||||
private Message message1;
|
||||
|
||||
@BeforeEach
|
||||
void setup() {
|
||||
UserDetailsImpl userDetails = new UserDetailsImpl();
|
||||
userDetails.setUsername("admin");
|
||||
message1 = MessageBuilder.bMessage().type(MessageType.other).title("A测试消息1").build();
|
||||
messageRepository.insert(message1);
|
||||
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
void tearDown() {
|
||||
List<String> titlesToDelete = Arrays.asList("A测试消息1", "A测试消息3");
|
||||
messageRepository.delete(new QueryWrapper<Message>().in("title", titlesToDelete));
|
||||
}
|
||||
|
||||
@Test
|
||||
void list() {
|
||||
LambdaQueryWrapper<Message> queryWrapper = new LambdaQueryWrapper<>();
|
||||
assertEquals(1, messageRepository.selectList(queryWrapper.like(Message::getTitle, "A测试")).size());
|
||||
assertEquals(1, messageRepository.selectList(queryWrapper.eq(Message::getTitle, message1.getTitle())).size());
|
||||
// assertEquals(2, messageRepository.selectList(null).size());
|
||||
}
|
||||
|
||||
@Test
|
||||
void createMessage() {
|
||||
UserMessageDto dto = new UserMessageDto(new HashSet<>(Arrays.asList(1L, 2L)), MessageType.other, false, false, false, "A测试消息3", "测试测试");
|
||||
service.createByAdmin(dto);
|
||||
Message message = messageRepository.selectOne(new LambdaQueryWrapper<Message>().eq(Message::getTitle, dto.getTitle()));
|
||||
assertNotNull(message.getId());
|
||||
}
|
||||
}
|
@ -1,12 +1,14 @@
|
||||
package com.zsc.edu.gateway.service.system;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.zsc.edu.gateway.domain.system.AuthorityBuilder;
|
||||
import com.zsc.edu.gateway.exception.ConstraintException;
|
||||
import com.zsc.edu.gateway.modules.system.dto.AuthorityDto;
|
||||
import com.zsc.edu.gateway.modules.system.entity.Authority;
|
||||
import com.zsc.edu.gateway.modules.system.repo.AuthorityRepository;
|
||||
import com.zsc.edu.gateway.modules.system.service.AuthorityService;
|
||||
import jakarta.annotation.Resource;
|
||||
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;
|
||||
@ -26,13 +28,13 @@ public class AuthorityServiceTest {
|
||||
private Authority aut1;
|
||||
private Authority aut2;
|
||||
|
||||
// @BeforeEach
|
||||
// void setUp() {
|
||||
// aut1 = AuthorityBuilder.aAuthority().name("TEST_AUTHORITY_ONE").build();
|
||||
// repo.insert(aut1);
|
||||
// aut2 = AuthorityBuilder.aAuthority().name("TEST_AUTHORITY_TWO").build();
|
||||
// repo.insert(aut2);
|
||||
// }
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
aut1 = AuthorityBuilder.aAuthority().name("TEST_AUTHORITY_ONE").build();
|
||||
repo.insert(aut1);
|
||||
aut2 = AuthorityBuilder.aAuthority().name("TEST_AUTHORITY_TWO").build();
|
||||
repo.insert(aut2);
|
||||
}
|
||||
|
||||
@Test
|
||||
void list() {
|
||||
|
@ -2,6 +2,7 @@ package com.zsc.edu.gateway.service.system;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.zsc.edu.gateway.common.util.TreeUtil;
|
||||
import com.zsc.edu.gateway.domain.system.DeptBuilder;
|
||||
import com.zsc.edu.gateway.exception.ConstraintException;
|
||||
import com.zsc.edu.gateway.modules.system.dto.DeptDto;
|
||||
@ -17,6 +18,9 @@ import org.springframework.dao.DuplicateKeyException;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
/**
|
||||
@ -40,73 +44,51 @@ class DeptServiceTest {
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
dept1 = DeptBuilder.aDept().name("测试部门1").build();
|
||||
dept1 = DeptBuilder.aDept().name("A测试部门1").build();
|
||||
dept1.setId(121L);
|
||||
repo.insert(dept1);
|
||||
dept2 = DeptBuilder.aDept().name("测试部门2").pid(dept1.id).build();
|
||||
dept2 = DeptBuilder.aDept().name("A测试部门2").pid(dept1.id).build();
|
||||
dept2.setId(122L);
|
||||
repo.insert(dept2);
|
||||
dept3 = DeptBuilder.aDept().name("测试部门3").pid(dept1.id).build();
|
||||
dept3 = DeptBuilder.aDept().name("A测试部门3").pid(dept1.id).build();
|
||||
dept3.setId(123L);
|
||||
repo.insert(dept3);
|
||||
dept4 = DeptBuilder.aDept().name("测试部门4").pid(dept3.id).build();
|
||||
dept4 = DeptBuilder.aDept().name("A测试部门4").pid(dept3.id).build();
|
||||
dept4.setId(124L);
|
||||
repo.insert(dept4);
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
void tearDown() {
|
||||
repo.delete(new QueryWrapper<>());
|
||||
repo.delete(new LambdaQueryWrapper<Dept>().in(Dept::getName, "A测试部门1", "A测试部门2", "A测试部门3", "A测试部门4", "A东菱经销商3", "A东菱经销商5"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void list() {
|
||||
LambdaQueryWrapper<Dept> queryWrapper = new LambdaQueryWrapper<>();
|
||||
assertEquals(1, service.list(queryWrapper.like(Dept::getName, "测试部门1")).size());
|
||||
// assertEquals(1, service.list(queryWrapper.eq(Dept::getName, dept1.getName())).size());
|
||||
assertEquals(4, service.list(queryWrapper.like(Dept::getName, "A测试部门")).size());
|
||||
assertEquals(1, service.list(queryWrapper.eq(Dept::getName, dept1.getName())).size());
|
||||
// assertEquals(4, service.list().size());
|
||||
}
|
||||
|
||||
// @Test
|
||||
// void listTree() {
|
||||
// Dept result = service.listTree(dept1.id);
|
||||
// int count = result.children.size();
|
||||
// assertEquals(2, count);
|
||||
// }
|
||||
|
||||
@Test
|
||||
void createAdmin() {
|
||||
Dept dept = new Dept();
|
||||
dept.setName("东菱经销商3");
|
||||
dept.setRemark("remark...");
|
||||
dept.setPid(dept1.id);
|
||||
service.save(dept);
|
||||
assertEquals(5, service.list().size());
|
||||
DeptDto dto = new DeptDto();
|
||||
dto.setName("A东菱经销商3");
|
||||
dto.setRemark("remark...");
|
||||
dto.setPid(dept1.id);
|
||||
service.create(dto);
|
||||
assertEquals(5, service.list(new LambdaQueryWrapper<Dept>().like(Dept::getName, "A")).size());
|
||||
// 不能创建其他已存在的同名同代码部门
|
||||
assertThrows(DuplicateKeyException.class, () -> service.save(dept1));
|
||||
}
|
||||
|
||||
@Test
|
||||
void create() {
|
||||
// Dept dept = new Dept();
|
||||
// dept.setName("东菱经销商5");
|
||||
// dept.setRemark("remark...");
|
||||
// dept.setPid(dept1.id);
|
||||
DeptDto dto = new DeptDto();
|
||||
dto.setName("东菱经销商5");
|
||||
dto.setRemark("remark...");
|
||||
dto.setPid(dept1.id);
|
||||
DeptDto dto2 = new DeptDto();
|
||||
dto2.setName(dept2.getName());
|
||||
dto2.setRemark("remark...");
|
||||
dto2.setPid(dept1.id);
|
||||
Dept dept = service.create(dto);
|
||||
assertNotNull(dept.getId());
|
||||
assertEquals(6, service.list().size());
|
||||
// 不能创建其他已存在的同名同代码部门
|
||||
assertThrows(ConstraintException.class, () -> service.create(dto2));
|
||||
}
|
||||
|
||||
@Test
|
||||
void updateAdmin() {
|
||||
DeptDto dto = new DeptDto();
|
||||
dto.setName("东菱经销商5");
|
||||
dto.setName("A东菱经销商5");
|
||||
dto.setRemark("remark...");
|
||||
assertTrue(service.edit(dto, dept2.id));
|
||||
Dept tmp = service.getOne(new LambdaQueryWrapper<Dept>().eq(Dept::getName, dto.getName()));
|
||||
@ -118,21 +100,19 @@ class DeptServiceTest {
|
||||
}
|
||||
|
||||
|
||||
// @Test
|
||||
// void tree() {
|
||||
// Dept result = service.listTree(dept3.id);
|
||||
// HashSet<Long> deptPath = DeptTreeUtil.getDeptPath(result);
|
||||
// System.out.println(deptPath);
|
||||
// assertEquals(2, deptPath.size());
|
||||
// }
|
||||
|
||||
// @Test
|
||||
// void findTreeChild() {
|
||||
// Dept result = service.listTree(dept1.id);
|
||||
// Dept childNode = DeptTreeUtil.getChildNode(result.children, dept2.id);
|
||||
// System.out.println(childNode.id);
|
||||
// assertEquals(dept2.id, childNode.id);
|
||||
// }
|
||||
@Test
|
||||
void tree() {
|
||||
List<Dept> results = service.listTree(dept3.id);
|
||||
System.out.println(results);
|
||||
assertEquals(1, results.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
void findTreeChild() {
|
||||
List<Dept> childNode = service.listTree(dept3.id);
|
||||
Dept dept = childNode.get(0);
|
||||
System.out.println(dept.id);
|
||||
assertEquals(dept3.id, dept.id);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,11 +1,17 @@
|
||||
package com.zsc.edu.gateway.service.system;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.zsc.edu.gateway.domain.system.RoleBuilder;
|
||||
import com.zsc.edu.gateway.exception.ConstraintException;
|
||||
import com.zsc.edu.gateway.modules.system.dto.RoleDto;
|
||||
import com.zsc.edu.gateway.modules.system.entity.Dept;
|
||||
import com.zsc.edu.gateway.modules.system.entity.Role;
|
||||
import com.zsc.edu.gateway.modules.system.repo.AuthorityRepository;
|
||||
import com.zsc.edu.gateway.modules.system.repo.RoleRepository;
|
||||
import com.zsc.edu.gateway.modules.system.service.RoleService;
|
||||
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;
|
||||
@ -32,59 +38,45 @@ class RoleServiceTest {
|
||||
private Role role1;
|
||||
private Role role2;
|
||||
|
||||
private Role Role3;
|
||||
private Role Role4;
|
||||
// @Resource
|
||||
private AuthorityRepository authorityRepository;
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
role1 = RoleBuilder.aRole().name("A超级管理员").build();
|
||||
repo.insert(role1);
|
||||
role2 = RoleBuilder.aRole().name("A普通用户").build();
|
||||
repo.insert(role2);
|
||||
}
|
||||
|
||||
// @BeforeEach
|
||||
// void setUp() {
|
||||
// role1 = RoleBuilder.aRole().name("超级管理员").build();
|
||||
// repo.insert(role1);
|
||||
// role2 = RoleBuilder.aRole().name("普通用户").build();
|
||||
// repo.insert(role2);
|
||||
// }
|
||||
//
|
||||
// @AfterEach
|
||||
// void tearDown() {
|
||||
// repo.delete(new QueryWrapper<>());
|
||||
// }
|
||||
@AfterEach
|
||||
void tearDown() {
|
||||
repo.delete(new LambdaQueryWrapper<Role>().in(Role::getName, "A超级管理员", "A普通用户", "A公司CEO", "A项目经理", "A超级管理员2"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void list() {
|
||||
assertEquals(1, service.list().size());
|
||||
assertEquals(0, service.list(new LambdaQueryWrapper<Role>().like(Role::getName, "普通用户")).size());
|
||||
// assertEquals(1, service.list(new LambdaQueryWrapper<Role>().eq(Role::getName, role1.getName())).size());
|
||||
assertEquals(2, service.list(new LambdaQueryWrapper<Role>().like(Role::getName, "A")).size());
|
||||
assertEquals(1, service.list(new LambdaQueryWrapper<Role>().eq(Role::getName, role1.getName())).size());
|
||||
// assertEquals(1, service.list().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
void create() {
|
||||
// Role Role = new Role();
|
||||
// Role.setName("东菱经销商5");
|
||||
// Role.setRemark("remark...");
|
||||
// Role.setPid(Role1.id);
|
||||
RoleDto dto = new RoleDto();
|
||||
dto.setName("东菱经销商5");
|
||||
dto.setName("A公司CEO");
|
||||
dto.setRemark("remark...");
|
||||
dto.setAuthorities(new HashSet<>(Arrays.asList(authorityRepository.selectOne(null))));
|
||||
dto.setAuthorities(null);
|
||||
Role Role = service.create(dto);
|
||||
assertNotNull(Role.getId());
|
||||
assertEquals(3, service.list().size());
|
||||
assertEquals(3, service.list(new QueryWrapper<Role>().like("name", "A")).size());
|
||||
// 不能创建其他已存在的同名同代码部门
|
||||
// assertThrows(ConstraintException.class, () -> service.create(dto2));
|
||||
assertThrows(ConstraintException.class, () -> service.create(new RoleDto(role1.getName(), "remark...", null)));
|
||||
}
|
||||
|
||||
@Test
|
||||
void update() {
|
||||
RoleDto dto = new RoleDto();
|
||||
dto.setName("超级管理员2");
|
||||
dto.setName("A超级管理员2");
|
||||
dto.setRemark("remark...");
|
||||
dto.setAuthorities(authorityRepository.selectAuthoritiesByRoleId(1L));
|
||||
dto.setAuthorities(null);
|
||||
assertTrue(service.edit(dto, role2.id));
|
||||
}
|
||||
|
||||
@Test
|
||||
void roleVo(){
|
||||
repo.deleteById(role1.id);
|
||||
}
|
||||
}
|
||||
|
@ -1,17 +1,32 @@
|
||||
package com.zsc.edu.gateway.service.system;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.zsc.edu.gateway.domain.system.RoleBuilder;
|
||||
import com.zsc.edu.gateway.domain.system.UserBuilder;
|
||||
import com.zsc.edu.gateway.exception.ConstraintException;
|
||||
import com.zsc.edu.gateway.modules.system.dto.RoleDto;
|
||||
import com.zsc.edu.gateway.modules.system.dto.UserCreateDto;
|
||||
import com.zsc.edu.gateway.modules.system.dto.UserUpdateDto;
|
||||
import com.zsc.edu.gateway.modules.system.entity.Authority;
|
||||
import com.zsc.edu.gateway.modules.system.entity.Role;
|
||||
import com.zsc.edu.gateway.modules.system.entity.User;
|
||||
import com.zsc.edu.gateway.modules.system.repo.AuthorityRepository;
|
||||
import com.zsc.edu.gateway.modules.system.repo.RoleAuthoritiesRepository;
|
||||
import com.zsc.edu.gateway.modules.system.repo.UserRepository;
|
||||
import com.zsc.edu.gateway.modules.system.service.UserService;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
/**
|
||||
* @author ftz
|
||||
* 创建时间:29/12/2023 上午11:21
|
||||
@ -21,26 +36,77 @@ public class UserServiceTest {
|
||||
@Resource
|
||||
private RoleAuthoritiesRepository roleAuthoritiesRepository;
|
||||
@Resource
|
||||
private UserRepository userRepository;
|
||||
private UserService service;
|
||||
@Resource
|
||||
private UserRepository repo;
|
||||
@Resource
|
||||
private AuthorityRepository authorityRepository;
|
||||
|
||||
@Resource
|
||||
private PasswordEncoder passwordEncoder;
|
||||
@Test
|
||||
void test() {
|
||||
User user=userRepository.selectByUsername("admin");
|
||||
Set<Authority> authorities= authorityRepository.selectAuthoritiesByRoleId(user.getRoleId());
|
||||
user.role.authorities=authorities;
|
||||
System.out.println(user);
|
||||
|
||||
}
|
||||
@Test
|
||||
void test1() {
|
||||
// User user=userRepository.selectByUsername("admin");
|
||||
// System.out.println(user);
|
||||
private User user1;
|
||||
private User user2;
|
||||
private User user3;
|
||||
|
||||
String admin = passwordEncoder.encode("admin");
|
||||
System.out.println(admin);
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
user1 = UserBuilder.anUser().username("A张三").password("123456").enable(true).build();
|
||||
repo.insert(user1);
|
||||
user2 = UserBuilder.anUser().username("A李四").password("123456").enable(true).build();
|
||||
repo.insert(user2);
|
||||
user3 = UserBuilder.anUser().username("A王五").password("123456").enable(true).build();
|
||||
repo.insert(user3);
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
void tearDown() {
|
||||
repo.delete(new LambdaQueryWrapper<User>().in(User::getUsername, "A张三", "A李四", "A王五", "A赵六", "A陈七", "A刘八"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void list() {
|
||||
assertEquals(3, service.list(new LambdaQueryWrapper<User>().like(User::getUsername, "A")).size());
|
||||
assertEquals(1, service.list(new LambdaQueryWrapper<User>().eq(User::getUsername, user1.getUsername())).size());
|
||||
// assertEquals(1, service.list().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
void create() {
|
||||
UserCreateDto dto = new UserCreateDto();
|
||||
dto.setUsername("A赵六");
|
||||
dto.setRemark("remark...");
|
||||
dto.setPassword("654321");
|
||||
dto.setDeptId(1L);
|
||||
dto.setEnable(true);
|
||||
dto.setRoleId(1L);
|
||||
dto.setEmail("@123.com");
|
||||
dto.setPhone("14315367689");
|
||||
assertTrue(service.create(dto));
|
||||
assertEquals(4, service.list(new QueryWrapper<User>().like("username", "A")).size());
|
||||
}
|
||||
|
||||
@Test
|
||||
void update() {
|
||||
UserUpdateDto dto = new UserUpdateDto();
|
||||
dto.setEnable(false);
|
||||
dto.setRemark("remark...");
|
||||
dto.setPhone("16786899221");
|
||||
dto.setEmail("@abc.com");
|
||||
assertTrue(service.update(dto, user2.id));
|
||||
UserUpdateDto dto2 = new UserUpdateDto("16786899221", "@141.com", true, 1L,
|
||||
"admin", "admin", "admin", 1L, "remark...");
|
||||
UserUpdateDto dto3 = new UserUpdateDto("16783399221", "@abc.com", true, 1L,
|
||||
"admin", "admin", "admin", 1L, "remark...");
|
||||
// 不能创建其他已存在的电话和邮箱
|
||||
assertThrows(ConstraintException.class, () -> service.update(dto2, user2.getId()));
|
||||
assertThrows(ConstraintException.class, () -> service.update(dto3, user2.getId()));
|
||||
}
|
||||
|
||||
@Test
|
||||
void updatePassword() {
|
||||
assertTrue(service.updatePassword("777777", user3.id));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user