增加消息模块

master
bynt 3 years ago
parent 57a95d05ee
commit e5a5c047fa

@ -20,6 +20,7 @@ public class FeignConfiguration implements RequestInterceptor {
@Override
public void apply(RequestTemplate requestTemplate) {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if (attributes != null) {
HttpServletRequest request = attributes.getRequest();
// HeaderConstants.TOKEN_HEADER_NAME 替换为自己的请求头名称,下同
String token = request.getHeader(SecurityConstants.AUTHORIZATION);
@ -30,3 +31,4 @@ public class FeignConfiguration implements RequestInterceptor {
requestTemplate.header(SecurityConstants.AUTHORIZATION, token);
}
}
}

@ -0,0 +1,38 @@
package com.baiye.model.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.Column;
import javax.persistence.EntityListeners;
import javax.persistence.MappedSuperclass;
import java.util.Date;
/**
* @author wujingtao
* @date 2022/01/04
*/
@Getter
@Setter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class BaseTimeTask {
@ApiModelProperty(value = "执行时间")
@Column(name = "execute_time")
private Date executeTime;
@ApiModelProperty(value = "是否重复执行 0-否 1-是")
@Column(name = "is_repeat")
private Integer isRepeat;
@ApiModelProperty(value = "执行状态(针对一次性的任务) 0-未执行1-完成")
@Column(name = "status")
private Integer status;
@ApiModelProperty(value = "执行内容")
@Column(name = "message")
private String message;
@ApiModelProperty(value = "执行人")
@Column(name = "user_id")
private Long userId;
}

@ -0,0 +1,35 @@
package com.baiye.model.enums;
import com.baiye.constant.DefaultNumberConstants;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author Enzo
* @date : 2022/1/7
*/
@Getter
@AllArgsConstructor
public enum WebSocketEnums {
TOP(1,"top"),
WITHDRAW(2, "withdraw"),
READ(3, "read"),
FILE(4, "file");
private final Integer value;
private final String type;
public static int find(String val) {
for (WebSocketEnums webSocketEnums : WebSocketEnums.values()) {
if (val.equals(webSocketEnums.getType())) {
return webSocketEnums.getValue();
}
}
return DefaultNumberConstants.ZERO_NUMBER;
}
}

@ -126,10 +126,10 @@ public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
// 放行OPTIONS请求
.antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
// TODO 权限待测试 Enzo
/*.antMatchers("/api/task/saveTask").permitAll()
.antMatchers("/api/task/saveTask").permitAll()
.antMatchers( "/api/users/admin").permitAll()
.antMatchers( "/api/task/query").permitAll()
.antMatchers( "/api/organize/queryAll").permitAll()*/
.antMatchers( "/api/organize/queryAll").permitAll()
// 自定义匿名访问所有url放行允许匿名和带Token访问细腻化到每个 Request 类型
// GET
.antMatchers(HttpMethod.GET, anonymousUrls.get(RequestMethodEnum.GET.getType()).toArray(new String[0])).permitAll()

@ -57,10 +57,10 @@ public class MessageNotificationController {
return new ResponseEntity<>(messageNotificationService.queryAll(criteria,pageable),HttpStatus.OK);
}
@PostMapping
@PostMapping("/createMessage")
@ApiOperation("新增message")
public ResponseEntity<Object> create(@Validated @RequestBody MessageNotificationDto messageNotificationDto){
return new ResponseEntity<>(messageNotificationService.create(messageNotificationDto),HttpStatus.CREATED);
public ResponseEntity<Object> create(@RequestBody String body){
return new ResponseEntity<>(messageNotificationService.create(body),HttpStatus.CREATED);
}
@ -80,8 +80,8 @@ public class MessageNotificationController {
}
@GetMapping("/changeMessage")
@ApiOperation("撤销消息")
public ResponseEntity<Object> withdrawMessage(Boolean flag,Long messageId){
@ApiOperation("修改消息服务")
public ResponseEntity<Object> changeMessage(Boolean flag,Long messageId){
return new ResponseEntity<>(messageNotificationService.withdrawMessage(flag,messageId),HttpStatus.OK);
}
}

@ -1,6 +1,10 @@
package com.baiye.modules.system.rest;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.exception.BadRequestException;
import com.baiye.http.CommonResponse;
import com.baiye.http.ResponseCode;
import com.baiye.modules.system.domain.Role;
import com.baiye.modules.system.domain.UserMessage;
import com.baiye.modules.system.service.UserMessageService;
import com.baiye.modules.system.service.dto.UserMessageQueryCriteria;
@ -8,6 +12,7 @@ import com.baiye.util.SecurityUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
@ -41,6 +46,14 @@ public class UserMessageController {
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@ApiOperation("新增角色")
@PostMapping("/createMessage")
public CommonResponse<Boolean> create(String body) {
if (StringUtils.isEmpty(body)) {
return CommonResponse.createByErrorMessage(ResponseCode.ERROR.getDesc());
}
return userMessageService.createUserMessage(body);
}
}

@ -59,7 +59,7 @@ public interface MessageNotificationService {
* @param resources /
* @return MessageNotificationDto
*/
MessageNotificationDto create(MessageNotificationDto resources);
MessageNotificationDto create(String resources);
/**
*

@ -15,6 +15,7 @@
*/
package com.baiye.modules.system.service;
import com.baiye.http.CommonResponse;
import com.baiye.modules.system.domain.MessageNotification;
import com.baiye.modules.system.domain.UserMessage;
import com.baiye.modules.system.service.dto.UserMessageDto;
@ -100,4 +101,10 @@ public interface UserMessageService {
*/
Boolean deleteAllByMessageId(Integer num, Long messageId);
/**
*
* @param body
* @return
*/
CommonResponse<Boolean> createUserMessage(String body);
}

@ -39,20 +39,20 @@ public class MessageNotificationDto implements Serializable {
/** 消息内容 */
private String messageContext;
/** 0表示置顶 1超级管理员 2管理员 3组长消息 */
/** 1超级管理员 2管理员 3组长消息 4自己消息*/
private Integer level;
/** 1公告 2提醒 */
private Integer type;
/** 是否使用 */
private Boolean isEnable;
/**是否置顶*/
private Boolean isTop;
/** 开始时间 */
private Timestamp startTime;
/** 结束时间 */
private Timestamp endTime;
/** 时间点 */
private Integer pointTime;
/** 创建者 */
private String createBy;

@ -86,20 +86,20 @@ public class MessageNotificationServiceImpl implements MessageNotificationServic
@Override
@Transactional(rollbackFor = Exception.class)
public MessageNotificationDto create(MessageNotificationDto messageNotificationDto) {
public MessageNotificationDto create(String resource) {
List<Long> longList = new ArrayList<>();
MessageNotificationDto messageNotificationDto =
JSONUtil.toBean(resource, MessageNotificationDto.class);
Long userId = SecurityUtils.getCurrentUserId();
UserDto userDto = JSONUtil.toBean(SecurityUtils.getUser(), UserDto.class);
messageNotificationDto.setUserId(userId);
longList.add(userId);
messageNotificationDto.setLevel(DefaultNumberConstants.FOUR_NUMBER);
// 级别进行排序
if (Boolean.TRUE.equals(userDto.getIsGroup())) {
longList.addAll(organizeUserService.queryUserIdByGroupId(userId));
messageNotificationDto.setLevel(DefaultNumberConstants.THREE_NUMBER);
}
if (Boolean.TRUE.equals(userDto.getIsManager())) {
List<Long> longs = organizeUserService.queryUserIdByGroupId(userId);
for (Long aLong : longs) {
@ -107,20 +107,15 @@ public class MessageNotificationServiceImpl implements MessageNotificationServic
}
messageNotificationDto.setLevel(DefaultNumberConstants.TWO_NUMBER);
}
if (SecurityUtils.getCurrentUserId() == DefaultNumberConstants.ONE_NUMBER) {
longList = userService.queryAllUserIds();
messageNotificationDto.setLevel(DefaultNumberConstants.ONE_NUMBER);
}
MessageNotification resources = Convert.convert(MessageNotification.class, messageNotificationDto);
MessageNotification messageNotification = messageNotificationRepository.save(resources);
List<Long> finalLongList = longList;
// 异步插入数据
CompletableFuture.runAsync(
() -> userMessageService.createUserMessage(finalLongList, messageNotification));
CompletableFuture.runAsync(() -> userMessageService.createUserMessage(finalLongList, messageNotification));
return messageNotificationMapper.toDto(messageNotification);
}

@ -19,6 +19,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.feign.SendMessageClient;
import com.baiye.http.CommonResponse;
import com.baiye.model.dto.SendWebSocketDTO;
import com.baiye.modules.system.domain.MessageNotification;
import com.baiye.modules.system.domain.UserMessage;
@ -72,7 +73,7 @@ public class UserMessageServiceImpl implements UserMessageService {
@Override
public List<UserMessageDto> queryAll(UserMessageQueryCriteria criteria){
Sort sort = Sort.by(Sort.Direction.ASC, "level").
and(Sort.by(Sort.Direction.DESC, "type")).
and(Sort.by(Sort.Direction.DESC, "isTop")).
and(Sort.by(Sort.Direction.DESC, "isRead")).
and(Sort.by(Sort.Direction.DESC, "createTime"));
return userMessageMapper.toDto(userMessageRepository.findAll(
@ -112,18 +113,18 @@ public class UserMessageServiceImpl implements UserMessageService {
@Override
public void download(List<UserMessageDto> all, HttpServletResponse response) throws IOException {
List<Map<String, Object>> list = new ArrayList<>();
for (UserMessageDto UserMessage : all) {
for (UserMessageDto userMessageDto : all) {
Map<String,Object> map = new LinkedHashMap<>();
map.put("是否已读", UserMessage.getIsRead());
map.put("开始时间", UserMessage.getStartTime());
map.put("结束时间", UserMessage.getEndTime());
map.put("消息内容", UserMessage.getMessageContext());
map.put("消息等级", UserMessage.getLevel());
map.put("用户id", UserMessage.getUserId());
map.put("创建者", UserMessage.getCreateBy());
map.put("更新者", UserMessage.getUpdateBy());
map.put("创建日期", UserMessage.getCreateTime());
map.put("更新时间", UserMessage.getUpdateTime());
map.put("是否已读", userMessageDto.getIsRead());
map.put("开始时间", userMessageDto.getStartTime());
map.put("结束时间", userMessageDto.getEndTime());
map.put("消息内容", userMessageDto.getMessageContext());
map.put("消息等级", userMessageDto.getLevel());
map.put("用户id", userMessageDto.getUserId());
map.put("创建者", userMessageDto.getCreateBy());
map.put("更新者", userMessageDto.getUpdateBy());
map.put("创建日期", userMessageDto.getCreateTime());
map.put("更新时间", userMessageDto.getUpdateTime());
list.add(map);
}
FileUtil.downloadExcel(list, response);
@ -159,4 +160,9 @@ public class UserMessageServiceImpl implements UserMessageService {
return userMessageRepository.deleteUserMessageByMessageId(num, messageId);
}
@Override
public CommonResponse<Boolean> createUserMessage(String body) {
return null;
}
}

@ -6,6 +6,7 @@ import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@ -18,11 +19,35 @@ import java.util.List;
public interface ConnectManageFeign {
String API_PREFIX = "/api";
/**
*
* @param taskQueryCriteria
* @return
*/
@ApiOperation("查询任务")
@PostMapping(API_PREFIX + "/task/query")
ResponseEntity<Object> query(@RequestBody TaskQueryCriteria taskQueryCriteria);
/**
*
* @param roleId
* @return
*/
@ApiOperation("查询所有身份为管理员")
@PostMapping(API_PREFIX + "/users/admin")
ResponseEntity<Object> getAdminInfo(@RequestBody List<Long> roleId);
/**
*
* @param body
* @return
*/
@ApiOperation("新增消息服务")
@PostMapping(API_PREFIX + "/messageNotification/createMessage")
ResponseEntity<Object> createMessage(@RequestBody String body);
}

@ -21,4 +21,12 @@ public class ConnectManageFeignFallBack implements ConnectManageFeign {
public ResponseEntity<Object> getAdminInfo(List<Long> roleId) {
return null;
}
@Override
public ResponseEntity<Object> createMessage(String body) {
return null;
}
}

@ -3,7 +3,9 @@ package com.baiye.socket;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baiye.constant.DefaultNumberConstants;
import com.baiye.feign.ConnectManageFeign;
import com.baiye.model.dto.SendWebSocketDTO;
import com.baiye.model.enums.WebSocketEnums;
import com.baiye.modules.report.entity.vo.ReportMessageInfoVO;
import com.baiye.modules.report.service.impl.ReportServiceImpl;
import lombok.extern.slf4j.Slf4j;
@ -30,6 +32,9 @@ public class WebSocketServer {
private static String user;
@Resource
private ReportServiceImpl reportServiceImpl;
@Resource
private ConnectManageFeign connectManageFeign;
private static WebSocketServer webSocketServer;
@PostConstruct
@ -89,6 +94,20 @@ public class WebSocketServer {
if (adminStatistics.equals(jsonObject.getStr(type))) {
webSocketServer.reportServiceImpl.reportHour();
}
switch (WebSocketEnums.find(jsonObject.getStr(type))) {
case DefaultNumberConstants.ONE_NUMBER:
connectManageFeign.createMessage(message);
break;
case DefaultNumberConstants.TWO_NUMBER:
break;
case DefaultNumberConstants.THREE_NUMBER:
// connectManageFeign.changeMessage(jsonObject.get(""));
break;
default:
break;
}
}

Loading…
Cancel
Save