diff --git a/storeroom/src/main/java/com/storeroom/modules/device/controller/DeviceController.java b/storeroom/src/main/java/com/storeroom/modules/device/controller/DeviceController.java index ac3736c..36bd789 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/controller/DeviceController.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/controller/DeviceController.java @@ -37,6 +37,12 @@ public class DeviceController { private final OperatingStateService operatingStateService; private final ArchivesCasesService archivesCaseService; + @ApiOperation("获取所有设备") + @AnonymousGetMapping("all") + public ApiResponse queryAll() { + return ApiResponse.success(deviceService.queryAll()); + } + @ApiOperation("通过id获取设备列表") @AnonymousGetMapping("list") diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/DeviceService.java b/storeroom/src/main/java/com/storeroom/modules/device/service/DeviceService.java index 22056cd..4241b58 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/service/DeviceService.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/DeviceService.java @@ -13,6 +13,13 @@ import java.util.Set; public interface DeviceService { + /** + * 查询所有设备 + * @return / + */ + List queryAll(); + + /* * 通过库房id 查询设备 */ diff --git a/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceImpl.java b/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceImpl.java index 0c18633..9af00f0 100644 --- a/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceImpl.java +++ b/storeroom/src/main/java/com/storeroom/modules/device/service/impl/DeviceImpl.java @@ -34,6 +34,11 @@ public class DeviceImpl implements DeviceService { private final DeviceTypeMapper deviceTypeMapper; private final AlarmDeseCaBinetLogRepository alarmDeseCaBinetLogRepository; + @Override + public List queryAll() { + return deviceInfoRepository.findAll(); + } + @Override public Object queryStoreroomAndDevice(String storeroomId, String deviceTypeId, Pageable pageable) { // PageRequest pageRequest = PageSort.pageRequest(pageable.getPageNumber(), pageable.getPageSize(), "sequence", Sort.Direction.ASC); diff --git a/system/src/main/java/com/storeroom/modules/system/controller/NoticeController.java b/system/src/main/java/com/storeroom/modules/system/controller/NoticeController.java new file mode 100644 index 0000000..2c08a69 --- /dev/null +++ b/system/src/main/java/com/storeroom/modules/system/controller/NoticeController.java @@ -0,0 +1,54 @@ +package com.storeroom.modules.system.controller; + + +import com.storeroom.annotaion.rest.AnonymousGetMapping; +import com.storeroom.annotaion.rest.AnonymousPostMapping; +import com.storeroom.exception.BaseException; +import com.storeroom.modules.system.service.NoticeService; +import com.storeroom.modules.system.service.dto.NoticeDto; +import com.storeroom.modules.system.service.dto.NoticeQueryCriteria; +import com.storeroom.utils.ApiResponse; +import com.storeroom.utils.StringUtils; +import com.storeroom.utils.enums.ResponseStatus; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Pageable; +import org.springframework.util.ObjectUtils; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + + +@RestController +@RequiredArgsConstructor +@Api(tags = "系统:通知公告") +@RequestMapping("/api/notice/") +public class NoticeController { + + private final NoticeService noticeService; + + + @ApiOperation("添加通知信息") + @AnonymousPostMapping("create") + public ApiResponse create(@RequestBody NoticeDto noticeDto) { + if (!StringUtils.isEmpty(noticeDto.getId())) { + throw new BaseException("id不为空"); + } + if (!ObjectUtils.isEmpty(noticeDto.getDeviceInfoId())) { + noticeService.createDeviceNotice(noticeDto); + return ApiResponse.success(ResponseStatus.SUCCESS); + } + if (!ObjectUtils.isEmpty(noticeDto.getUserId())) { + noticeService.createNotice(noticeDto); + return ApiResponse.success(ResponseStatus.SUCCESS); + } + return ApiResponse.error(ResponseStatus.FAIL); + } + + @ApiOperation("通知列表") + @AnonymousGetMapping("list") + public ApiResponse list(NoticeQueryCriteria criteria, Pageable pageable) { + return ApiResponse.success(noticeService.queryAll(criteria, pageable)); + } +} diff --git a/system/src/main/java/com/storeroom/modules/system/controller/UserController.java b/system/src/main/java/com/storeroom/modules/system/controller/UserController.java index ab416d0..8c7e97a 100644 --- a/system/src/main/java/com/storeroom/modules/system/controller/UserController.java +++ b/system/src/main/java/com/storeroom/modules/system/controller/UserController.java @@ -2,6 +2,7 @@ package com.storeroom.modules.system.controller; import cn.hutool.core.collection.CollectionUtil; +import com.storeroom.annotaion.rest.AnonymousGetMapping; import com.storeroom.annotation.Log; import com.storeroom.config.RsaProperties; import com.storeroom.exception.BaseException; @@ -54,7 +55,6 @@ public class UserController { private final RoleService roleService; - @ApiOperation("导出用户数据") @GetMapping(value = "/download") @PreAuthorize("@ys.check('user:list')") @@ -65,7 +65,7 @@ public class UserController { @ApiOperation("查询用户") @GetMapping @PreAuthorize("@ys.check('user:list')") - public ApiResponse queryUser(UserQueryCriteria criteria, Pageable pageable){ + public ApiResponse queryUser(UserQueryCriteria criteria, Pageable pageable) { if (!ObjectUtils.isEmpty(criteria.getDeptId())) { criteria.getDeptIds().add(criteria.getDeptId()); // 先查找是否存在子节点 @@ -76,25 +76,25 @@ public class UserController { // 数据权限 List dataScopes = dataService.getDeptIds(userService.findByName(SecurityUtils.getCurrentUsername())); // criteria.getDeptIds() 不为空并且数据权限不为空则取交集 - if (!CollectionUtils.isEmpty(criteria.getDeptIds()) && !CollectionUtils.isEmpty(dataScopes)){ + if (!CollectionUtils.isEmpty(criteria.getDeptIds()) && !CollectionUtils.isEmpty(dataScopes)) { // 取交集 criteria.getDeptIds().retainAll(dataScopes); - if(!CollectionUtil.isEmpty(criteria.getDeptIds())){ - return ApiResponse.success(userService.queryAll(criteria,pageable)); + if (!CollectionUtil.isEmpty(criteria.getDeptIds())) { + return ApiResponse.success(userService.queryAll(criteria, pageable)); } } else { // 否则取并集 criteria.getDeptIds().addAll(dataScopes); - return ApiResponse.success(userService.queryAll(criteria,pageable)); + return ApiResponse.success(userService.queryAll(criteria, pageable)); } - return ApiResponse.success(PageUtil.toPage(null,0)); + return ApiResponse.success(PageUtil.toPage(null, 0)); } @Log("新增用户") @ApiOperation("新增用户") @PostMapping @PreAuthorize("@ys.check('user:add')") - public ApiResponse createUser(@Validated @RequestBody User resources){ + public ApiResponse createUser(@Validated @RequestBody User resources) { checkLevel(resources); // 默认密码 123456 resources.setPassword(passwordEncoder.encode("123456")); @@ -115,8 +115,8 @@ public class UserController { @Log("修改用户:个人中心") @ApiOperation("修改用户:个人中心") @PutMapping(value = "center") - public ApiResponse centerUser(@Validated(User.Update.class) @RequestBody User resources){ - if(!resources.getId().equals(SecurityUtils.getCurrentUserId())){ + public ApiResponse centerUser(@Validated(User.Update.class) @RequestBody User resources) { + if (!resources.getId().equals(SecurityUtils.getCurrentUserId())) { throw new BaseException("不能修改他人资料"); } userService.updateCenter(resources); @@ -127,10 +127,10 @@ public class UserController { @ApiOperation("删除用户") @DeleteMapping @PreAuthorize("@ys.check('user:del')") - public ApiResponse deleteUser(@RequestBody Set ids){ + public ApiResponse deleteUser(@RequestBody Set ids) { for (Long id : ids) { - Integer currentLevel = Collections.min(roleService.findByUsersId(SecurityUtils.getCurrentUserId()).stream().map(RoleSmallDto::getLevel).collect(Collectors.toList())); - Integer optLevel = Collections.min(roleService.findByUsersId(id).stream().map(RoleSmallDto::getLevel).collect(Collectors.toList())); + Integer currentLevel = Collections.min(roleService.findByUsersId(SecurityUtils.getCurrentUserId()).stream().map(RoleSmallDto::getLevel).collect(Collectors.toList())); + Integer optLevel = Collections.min(roleService.findByUsersId(id).stream().map(RoleSmallDto::getLevel).collect(Collectors.toList())); if (currentLevel > optLevel) { throw new BaseException("角色权限不足,不能删除:" + userService.findById(id).getUsername()); } @@ -142,32 +142,39 @@ public class UserController { @ApiOperation("修改密码") @PostMapping(value = "/updatePass") public ApiResponse updateUserPass(@RequestBody UserPassVo passVo) throws Exception { - String oldPass = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey,passVo.getOldPass()); - String newPass = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey,passVo.getNewPass()); + String oldPass = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey, passVo.getOldPass()); + String newPass = RsaUtils.decryptByPrivateKey(RsaProperties.privateKey, passVo.getNewPass()); UserDto user = userService.findByName(SecurityUtils.getCurrentUsername()); - if(!passwordEncoder.matches(oldPass, user.getPassword())){ + if (!passwordEncoder.matches(oldPass, user.getPassword())) { throw new BaseException("修改失败,旧密码错误"); } - if(passwordEncoder.matches(newPass, user.getPassword())){ + if (passwordEncoder.matches(newPass, user.getPassword())) { throw new BaseException("新密码不能与旧密码相同"); } - userService.updatePass(user.getUsername(),passwordEncoder.encode(newPass)); + userService.updatePass(user.getUsername(), passwordEncoder.encode(newPass)); return ApiResponse.success(ResponseStatus.SUCCESS); } @ApiOperation("修改头像") @PostMapping(value = "/updateAvatar") - public ApiResponse updateUserAvatar(@RequestParam MultipartFile avatar){ + public ApiResponse updateUserAvatar(@RequestParam MultipartFile avatar) { return ApiResponse.success(userService.updateAvatar(avatar)); } + @AnonymousGetMapping("all") + @ApiOperation("获取所有用户") + public ApiResponse findAll() { + return ApiResponse.success(userService.queryAll()); + } + /** * 如果当前用户的角色级别低于创建用户的角色级别,则抛出权限不足的错误 + * * @param resources / */ private void checkLevel(User resources) { - Integer currentLevel = Collections.min(roleService.findByUsersId(SecurityUtils.getCurrentUserId()).stream().map(RoleSmallDto::getLevel).collect(Collectors.toList())); + Integer currentLevel = Collections.min(roleService.findByUsersId(SecurityUtils.getCurrentUserId()).stream().map(RoleSmallDto::getLevel).collect(Collectors.toList())); Integer optLevel = roleService.findByRoles(resources.getRoles()); if (currentLevel > optLevel) { throw new BaseException("角色权限不足"); diff --git a/system/src/main/java/com/storeroom/modules/system/domain/Notice.java b/system/src/main/java/com/storeroom/modules/system/domain/Notice.java new file mode 100644 index 0000000..308d51c --- /dev/null +++ b/system/src/main/java/com/storeroom/modules/system/domain/Notice.java @@ -0,0 +1,73 @@ +package com.storeroom.modules.system.domain; + + +import com.storeroom.base.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + + +import javax.persistence.*; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; +import java.util.Objects; +import java.util.Set; + + +@Entity +@Getter +@Setter +@Table(name = "sys_notice") +public class Notice extends BaseEntity implements Serializable { + + + @Id + @Column(name = "id") + @NotNull(groups = BaseEntity.Update.class) + @ApiModelProperty(value = "id", hidden = true) + private String id; + + @Column(name = "notice_title") + @ApiModelProperty(value = "公告标题") + private String noticeTitle; + + @Column(name = "notice_type") + @ApiModelProperty(value = "公告类型(1通知 2公告)") + private Integer noticeType; + + @Column(name = "notice_content") + @ApiModelProperty(value = "公告内容") + private String noticeContent; + + @Column(name = "status") + @ApiModelProperty(value = "公告状态(true正常 false关闭)") + private Boolean status; + + @Column(name = "push_type") + @ApiModelProperty(value = "推送类型") + private Integer pushType; + + @OneToMany(mappedBy = "noticeId",cascade={CascadeType.PERSIST,CascadeType.REMOVE}) + private Set noticeUsers; + + @OneToMany(mappedBy = "noticeId",cascade={CascadeType.PERSIST,CascadeType.REMOVE}) + private Set noticeDevices; + + + + + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Notice notice = (Notice) o; + return Objects.equals(id, notice.id) && Objects.equals(noticeTitle, notice.noticeTitle) && Objects.equals(noticeType, notice.noticeType) && Objects.equals(noticeContent, notice.noticeContent) && Objects.equals(status, notice.status); + } + + @Override + public int hashCode() { + return Objects.hash(id, noticeTitle, noticeType, noticeContent, status); + } +} diff --git a/system/src/main/java/com/storeroom/modules/system/domain/NoticeDevices.java b/system/src/main/java/com/storeroom/modules/system/domain/NoticeDevices.java new file mode 100644 index 0000000..a13c40a --- /dev/null +++ b/system/src/main/java/com/storeroom/modules/system/domain/NoticeDevices.java @@ -0,0 +1,47 @@ +package com.storeroom.modules.system.domain; + + +import com.storeroom.base.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.persistence.*; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.Objects; + +@Entity +@Getter +@Setter +@Table(name = "sys_notice_devices") +public class NoticeDevices implements Serializable { + + @Id + @Column(name = "id") + @NotNull(groups = BaseEntity.Update.class) + @ApiModelProperty(value = "id", hidden = true) + private String id; + + + @Column(name = "notice_id") + @ApiModelProperty(value = "通知id") + private String noticeId; + + @Column(name = "device_info_id") + @ApiModelProperty(value = "设备id") + private String deviceInfoId; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + NoticeDevices that = (NoticeDevices) o; + return Objects.equals(id, that.id) && Objects.equals(noticeId, that.noticeId) && Objects.equals(deviceInfoId, that.deviceInfoId); + } + + @Override + public int hashCode() { + return Objects.hash(id, noticeId, deviceInfoId); + } +} diff --git a/system/src/main/java/com/storeroom/modules/system/domain/NoticeUsers.java b/system/src/main/java/com/storeroom/modules/system/domain/NoticeUsers.java new file mode 100644 index 0000000..60b8d27 --- /dev/null +++ b/system/src/main/java/com/storeroom/modules/system/domain/NoticeUsers.java @@ -0,0 +1,39 @@ +package com.storeroom.modules.system.domain; + + +import com.storeroom.base.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Getter; +import lombok.Setter; + +import javax.persistence.*; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +@Entity +@Getter +@Setter +@Table(name = "sys_notice_users") +public class NoticeUsers implements Serializable { + + @Id + @Column(name = "id") + @NotNull(groups = BaseEntity.Update.class) + @ApiModelProperty(value = "id", hidden = true) + private String id; + + + @Column(name = "notice_id") + @ApiModelProperty(value = "通知id") + private String noticeId; + + @Column(name = "user_id") + @ApiModelProperty(value = "设备id") + private Long userId; + + @Column(name = "is_read") + @ApiModelProperty(value = "阅读状态") + private Boolean isRead; + + +} diff --git a/system/src/main/java/com/storeroom/modules/system/domain/User.java b/system/src/main/java/com/storeroom/modules/system/domain/User.java index 6ef5121..4ff0d15 100644 --- a/system/src/main/java/com/storeroom/modules/system/domain/User.java +++ b/system/src/main/java/com/storeroom/modules/system/domain/User.java @@ -84,8 +84,6 @@ public class User extends BaseEntity implements Serializable { @ApiModelProperty(value = "是否为admin账号", hidden = true) private Boolean isAdmin = false; - - @Column(name = "pwd_reset_time") @ApiModelProperty(value = "最后修改密码的时间", hidden = true) private Date pwdResetTime; diff --git a/system/src/main/java/com/storeroom/modules/system/repository/NoticeDeviceRepository.java b/system/src/main/java/com/storeroom/modules/system/repository/NoticeDeviceRepository.java new file mode 100644 index 0000000..b700f9e --- /dev/null +++ b/system/src/main/java/com/storeroom/modules/system/repository/NoticeDeviceRepository.java @@ -0,0 +1,8 @@ +package com.storeroom.modules.system.repository; + +import com.storeroom.modules.system.domain.NoticeDevices; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +public interface NoticeDeviceRepository extends JpaRepository, JpaSpecificationExecutor { +} diff --git a/system/src/main/java/com/storeroom/modules/system/repository/NoticeRepository.java b/system/src/main/java/com/storeroom/modules/system/repository/NoticeRepository.java new file mode 100644 index 0000000..b420275 --- /dev/null +++ b/system/src/main/java/com/storeroom/modules/system/repository/NoticeRepository.java @@ -0,0 +1,15 @@ +package com.storeroom.modules.system.repository; + +import com.storeroom.modules.system.domain.Notice; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Query; + +public interface NoticeRepository extends JpaRepository, JpaSpecificationExecutor { + + + +} diff --git a/system/src/main/java/com/storeroom/modules/system/repository/NoticeUsersRepository.java b/system/src/main/java/com/storeroom/modules/system/repository/NoticeUsersRepository.java new file mode 100644 index 0000000..6c60a28 --- /dev/null +++ b/system/src/main/java/com/storeroom/modules/system/repository/NoticeUsersRepository.java @@ -0,0 +1,10 @@ +package com.storeroom.modules.system.repository; + +import com.storeroom.modules.system.domain.NoticeUsers; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +public interface NoticeUsersRepository extends JpaRepository, JpaSpecificationExecutor { + + +} diff --git a/system/src/main/java/com/storeroom/modules/system/service/NoticeService.java b/system/src/main/java/com/storeroom/modules/system/service/NoticeService.java new file mode 100644 index 0000000..c7cf5c3 --- /dev/null +++ b/system/src/main/java/com/storeroom/modules/system/service/NoticeService.java @@ -0,0 +1,61 @@ +package com.storeroom.modules.system.service; + +import com.storeroom.modules.system.domain.Notice; +import com.storeroom.modules.system.service.dto.NoticeDto; +import com.storeroom.modules.system.service.dto.NoticeQueryCriteria; +import org.springframework.data.domain.Pageable; + +import java.util.Set; + +public interface NoticeService { + + /** + * 查询公告信息 + * + * @param noticeId 通知id + * @return / + */ + Notice selectNoticeById(String noticeId); + + + /** + * 创建通知消息 + * @param notice + */ + void createNotice(NoticeDto notice); + + /** + * 创建设备通知 + * @param notice + */ + void createDeviceNotice(NoticeDto notice); + + + /** + * 查询全部 + * + * @return / + */ + Object queryAll(NoticeQueryCriteria criteria, Pageable pageable); + + /** + * 修改 + */ + void updateNotice(Notice notice); + + /** + * 删除 + * + * @param notice / + */ + void deleteNotice(Notice notice); + + + /** + * 批量删除 + * + * @param ids id + */ + void deleteByIds(Set ids); + +} diff --git a/system/src/main/java/com/storeroom/modules/system/service/UserService.java b/system/src/main/java/com/storeroom/modules/system/service/UserService.java index c1c5ad1..643996f 100644 --- a/system/src/main/java/com/storeroom/modules/system/service/UserService.java +++ b/system/src/main/java/com/storeroom/modules/system/service/UserService.java @@ -83,6 +83,12 @@ public interface UserService { */ List queryAll(UserQueryCriteria criteria); + /** + * 获取所有用户 + * @return / + */ + List queryAll(); + /** * 导出数据 * @param queryAll 待导出的数据 diff --git a/system/src/main/java/com/storeroom/modules/system/service/dto/NoticeDto.java b/system/src/main/java/com/storeroom/modules/system/service/dto/NoticeDto.java new file mode 100644 index 0000000..eba59cb --- /dev/null +++ b/system/src/main/java/com/storeroom/modules/system/service/dto/NoticeDto.java @@ -0,0 +1,35 @@ +package com.storeroom.modules.system.service.dto; + +import com.storeroom.base.BaseDTO; + +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; +import java.util.Set; + + +@Getter +@Setter +public class NoticeDto extends BaseDTO implements Serializable { + + private String id; + + private String noticeTitle; + + private Integer noticeType; + + private String noticeContent; + + private Boolean status; + + private Integer pushType; + + private Set userId; + + private Boolean isRead; + + private Set deviceInfoId; + + +} diff --git a/system/src/main/java/com/storeroom/modules/system/service/dto/NoticeQueryCriteria.java b/system/src/main/java/com/storeroom/modules/system/service/dto/NoticeQueryCriteria.java new file mode 100644 index 0000000..5f41b12 --- /dev/null +++ b/system/src/main/java/com/storeroom/modules/system/service/dto/NoticeQueryCriteria.java @@ -0,0 +1,28 @@ +package com.storeroom.modules.system.service.dto; + +import com.storeroom.annotaion.Query; +import lombok.Data; + +import java.io.Serializable; +import java.sql.Timestamp; +import java.util.List; + +@Data +public class NoticeQueryCriteria implements Serializable { + + @Query + private Long id; + + @Query(blurry = "noticeTitle,noticeContent") + private String blurry; + + @Query + private Integer status; + + @Query + private Integer noticeType; + + + @Query(type = Query.Type.BETWEEN) + private List createTime; +} diff --git a/system/src/main/java/com/storeroom/modules/system/service/impl/NoticeServiceImpl.java b/system/src/main/java/com/storeroom/modules/system/service/impl/NoticeServiceImpl.java new file mode 100644 index 0000000..e1ced58 --- /dev/null +++ b/system/src/main/java/com/storeroom/modules/system/service/impl/NoticeServiceImpl.java @@ -0,0 +1,129 @@ +package com.storeroom.modules.system.service.impl; + + +import com.storeroom.modules.device.domain.DeviceInfo; +import com.storeroom.modules.device.repository.DeviceInfoRepository; +import com.storeroom.modules.system.domain.Notice; +import com.storeroom.modules.system.domain.NoticeDevices; +import com.storeroom.modules.system.domain.NoticeUsers; +import com.storeroom.modules.system.repository.NoticeDeviceRepository; +import com.storeroom.modules.system.repository.NoticeRepository; +import com.storeroom.modules.system.repository.NoticeUsersRepository; +import com.storeroom.modules.system.service.NoticeService; +import com.storeroom.modules.system.service.dto.NoticeDto; +import com.storeroom.modules.system.service.dto.NoticeQueryCriteria; +import com.storeroom.utils.NanoIdUtils; +import com.storeroom.utils.PageUtil; +import com.storeroom.utils.QueryHelp; +import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; +import org.hibernate.validator.constraints.UniqueElements; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; + +@Service +@RequiredArgsConstructor +public class NoticeServiceImpl implements NoticeService { + + private final NoticeRepository noticeRepository; + private final DeviceInfoRepository deviceInfoRepository; + private final NoticeDeviceRepository noticeDeviceRepository; + private final NoticeUsersRepository noticeUsersRepository; + + + @Override + public Notice selectNoticeById(String noticeId) { + return noticeRepository.findById(noticeId).orElseGet(Notice::new); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void createNotice(NoticeDto noticeDto) { + noticeDto.setId(NanoIdUtils.randomNanoId()); + Notice noticeEntity = new Notice(); + noticeEntity.setId(noticeDto.getId()); + noticeEntity.setNoticeContent(noticeDto.getNoticeContent()); + noticeEntity.setNoticeTitle(noticeDto.getNoticeTitle()); + noticeEntity.setStatus(false); + noticeEntity.setPushType(noticeDto.getPushType()); + + Set deviceInfos = noticeDto.getUserId(); + + + for (Long userid : deviceInfos) { + NoticeUsers noticeUsers = new NoticeUsers(); + Set noticeUsersList = new LinkedHashSet<>(); + Notice notice = noticeRepository.findById(noticeDto.getId()).orElseGet(Notice::new); + noticeUsers.setId(NanoIdUtils.randomNanoId()); + noticeUsers.setIsRead(false); + noticeUsers.setUserId(userid); + noticeUsers.setNoticeId(noticeDto.getId()); + noticeEntity.setNoticeUsers(noticeUsersList); + noticeUsersList.add(noticeUsers); + noticeEntity.setNoticeUsers(noticeUsersList); + noticeUsersRepository.save(noticeUsers); + } + noticeRepository.save(noticeEntity); + } + + @SneakyThrows + @Override + @Transactional(rollbackFor = Exception.class) + public void createDeviceNotice(NoticeDto noticeDto) { + noticeDto.setId(NanoIdUtils.randomNanoId()); + + Notice noticeEntity = new Notice(); + noticeEntity.setId(noticeDto.getId()); + noticeEntity.setNoticeContent(noticeDto.getNoticeContent()); + noticeEntity.setNoticeTitle(noticeDto.getNoticeTitle()); + noticeEntity.setStatus(false); + noticeEntity.setPushType(noticeDto.getPushType()); + + Set deviceInfos = noticeDto.getDeviceInfoId(); + + for (String d : deviceInfos) { + NoticeDevices noticeDevices = new NoticeDevices(); + DeviceInfo deviceInfo = deviceInfoRepository.findById(d).orElseGet(DeviceInfo::new); + String url = "http://" + deviceInfo.getDeviceIp() + ":" + deviceInfo.getDevicePort(); + HashMap body = new HashMap<>(); + HashMap map = new HashMap<>(); + map.put("Content-type", "application/json"); + body.put("notice", noticeDto.getNoticeContent()); +// HttpResponse response = HttpUtils.doPost(url, "/IntelligentCabinetAPIServer/getNotice", "POST", map, null, body); +// if (response.getStatusLine().getStatusCode() != 200) { +// throw new BaseException("接口调用失败"); +// } + noticeDevices.setId(NanoIdUtils.randomNanoId()); + noticeDevices.setNoticeId(noticeDto.getId()); + noticeDevices.setDeviceInfoId(d); + noticeDeviceRepository.save(noticeDevices); + } + noticeRepository.save(noticeEntity); + } + + @Override + public Object queryAll(NoticeQueryCriteria criteria, Pageable pageable) { + Page page = noticeRepository.findAll(((root, query, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder)), pageable); + return PageUtil.toPage(page); + } + + @Override + public void updateNotice(Notice notice) { + + } + + @Override + public void deleteNotice(Notice notice) { + + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteByIds(Set ids) { + noticeRepository.deleteAllById(ids); + } +} diff --git a/system/src/main/java/com/storeroom/modules/system/service/impl/UserServiceImpl.java b/system/src/main/java/com/storeroom/modules/system/service/impl/UserServiceImpl.java index cc73edd..20ec7e9 100644 --- a/system/src/main/java/com/storeroom/modules/system/service/impl/UserServiceImpl.java +++ b/system/src/main/java/com/storeroom/modules/system/service/impl/UserServiceImpl.java @@ -55,6 +55,12 @@ public class UserServiceImpl implements UserService { return userMapper.toDto(users); } + @Override + public List queryAll() { + List users = userRepository.findAll(); + return userMapper.toDto(users); + } + @Override @Cacheable(key = "'id:' + #p0") @Transactional(rollbackFor = Exception.class) @@ -103,7 +109,7 @@ public class UserServiceImpl implements UserService { redisUtils.del(CacheKey.ROLE_AUTH + resources.getId()); } // 如果用户被禁用,则清除用户登录信息 - if(!resources.getEnabled()){ + if (!resources.getEnabled()) { onlineUserService.kickOutForUsername(resources.getUsername()); } user.setUsername(resources.getUsername()); @@ -172,8 +178,8 @@ public class UserServiceImpl implements UserService { // 验证文件上传的格式 String image = "gif jpg png jpeg"; String fileType = FileUtil.getExtensionName(multipartFile.getOriginalFilename()); - if(fileType != null && !image.contains(fileType)){ - throw new BaseException("文件格式错误!, 仅支持 " + image +" 格式"); + if (fileType != null && !image.contains(fileType)) { + throw new BaseException("文件格式错误!, 仅支持 " + image + " 格式"); } User user = userRepository.findByUsername(SecurityUtils.getCurrentUsername()); String oldPath = user.getAvatarPath(); diff --git a/system/src/main/resources/application.yml b/system/src/main/resources/application.yml index ef972a7..6eca246 100644 --- a/system/src/main/resources/application.yml +++ b/system/src/main/resources/application.yml @@ -78,7 +78,7 @@ user-cache: # 手持机参数 hand-held: - ip: 47.98.148.152:8057 + ip: 127.0.0.1:8057 webSocket: netty: