【message】系统消息模块开发

pull/3/head
liuhanqing 2021-01-04 23:24:39 +08:00
parent 422d5a6398
commit 6a9c28487f
23 changed files with 308 additions and 17 deletions

View File

@ -6,7 +6,7 @@
<parent>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>kernel-d-message</artifactId>
<artifactId>kernel-s-message</artifactId>
<version>1.0.0</version>
<relativePath>../pom.xml</relativePath>
</parent>

View File

@ -1,6 +1,7 @@
package cn.stylefeng.roses.kernel.message.api;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.message.api.enums.MessageReadFlagEnum;
import cn.stylefeng.roses.kernel.message.api.pojo.MessageResponse;
import cn.stylefeng.roses.kernel.message.api.pojo.MessageSendParam;
import cn.stylefeng.roses.kernel.message.api.pojo.MessageParam;
@ -36,6 +37,14 @@ public interface MessageApi {
*/
void updateReadFlag(MessageParam messageParam);
/**
*
*
* @param messageIds id
* @author liuhanqing
* @date 2021/1/4 21:21
*/
void batchReadFlagByMessageIds(String messageIds, MessageReadFlagEnum flagEnum);
/**
*
*
@ -52,7 +61,7 @@ public interface MessageApi {
* @author liuhanqing
* @date 2021/1/2 21:21
*/
void batchDeleteByMessageId(String messageIds);
void batchDeleteByMessageIds(String messageIds);
/**
*

View File

@ -11,7 +11,7 @@ public interface MessageConstants {
/**
*
*/
String MESSAGE_MODULE_NAME = "kernel-d-message";
String MESSAGE_MODULE_NAME = "kernel-s-message";
/**
*

View File

@ -0,0 +1,33 @@
package cn.stylefeng.roses.kernel.message.api.enums;
import lombok.Getter;
/**
*
*
* @author liuhanqing
* @date 2021/1/4 22:26
*/
@Getter
public enum MessageReadFlagEnum {
/**
*
*/
UNREAD(0, "未读"),
/**
*
*/
READ(1, "已读");
private final Integer code;
private final String name;
MessageReadFlagEnum(Integer code, String name) {
this.code = code;
this.name = name;
}
}

View File

@ -48,6 +48,11 @@ public class MessageParam extends BaseRequest {
*/
private String messageType;
/**
*
*/
private String priorityLevel;
/**
*
*/

View File

@ -39,6 +39,11 @@ public class MessageResponse implements Serializable {
*/
private String messageContent;
/**
*
*/
private String priorityLevel;
/**
*
*/

View File

@ -38,6 +38,11 @@ public class MessageSendParam extends BaseRequest {
*/
private String messageType;
/**
*
*/
private String priorityLevel;
/**
* id
*/

View File

@ -6,7 +6,7 @@
<parent>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>kernel-d-message</artifactId>
<artifactId>kernel-s-message</artifactId>
<version>1.0.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
@ -30,6 +30,12 @@
<artifactId>db-sdk-mp</artifactId>
<version>1.0.0</version>
</dependency>
<!--发送消息需要用到用户相关的接口-->
<dependency>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>system-api</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>

View File

@ -1,15 +1,27 @@
package cn.stylefeng.roses.kernel.message.db;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.convert.Convert;
import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser;
import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.message.api.MessageApi;
import cn.stylefeng.roses.kernel.message.api.constants.MessageConstants;
import cn.stylefeng.roses.kernel.message.api.enums.MessageReadFlagEnum;
import cn.stylefeng.roses.kernel.message.api.exception.enums.MessageExceptionEnum;
import cn.stylefeng.roses.kernel.message.api.pojo.MessageParam;
import cn.stylefeng.roses.kernel.message.api.pojo.MessageResponse;
import cn.stylefeng.roses.kernel.message.api.pojo.MessageSendParam;
import cn.stylefeng.roses.kernel.message.db.entity.SysMessage;
import cn.stylefeng.roses.kernel.message.db.service.SysMessageService;
import cn.stylefeng.roses.kernel.system.UserServiceApi;
import cn.stylefeng.roses.kernel.system.exception.SystemModularException;
import cn.stylefeng.roses.kernel.system.pojo.user.request.SysUserRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
import javax.annotation.Resource;
import java.util.*;
/**
*
@ -21,13 +33,48 @@ import java.util.List;
@Service
public class MessageDbServiceImpl implements MessageApi {
@Resource
private UserServiceApi userServiceApi;
@Resource
private SysMessageService sysMessageService;
@Override
public void sendMessage(MessageSendParam messageSendParam) {
String receiveUserIds = messageSendParam.getReceiveUserIds();
// 获取当前登录人
LoginUser loginUser = LoginContext.me().getLoginUser();
List<SysMessage> sendMsgList = new ArrayList<>();
List<Long> userIds = new ArrayList<>();
// 发送所有人判断
if (MessageConstants.RECEIVE_ALL_USER_FLAG.equals(receiveUserIds)) {
// 查询所有用户
userIds = userServiceApi.queryAllUserIdList(new SysUserRequest());
} else {
String[] userIdArr = receiveUserIds.split(",");
userIds = Convert.toList(Long.class, userIdArr);
}
if (userIds == null || userIds.isEmpty()) {
throw new SystemModularException(MessageExceptionEnum.ERROR_RECEIVE_USER_IDS, receiveUserIds);
}
Set<Long> userIdSet = new HashSet<>(userIds);
SysMessage sysMessage = new SysMessage();
BeanUtil.copyProperties(messageSendParam, sysMessage);
// 初始化默认值
sysMessage.setReadFlag(MessageReadFlagEnum.UNREAD.getCode());
sysMessage.setSendUserId(loginUser.getUserId());
sysMessage.setMessageSendTime(new Date());
userIdSet.forEach(userId -> {
// 判断用户是否存在
if(userServiceApi.userExist(userId)){
sysMessage.setReceiveUserId(userId);
sendMsgList.add(sysMessage);
}
});
sysMessageService.saveBatch(sendMsgList);
}
@ -36,13 +83,18 @@ public class MessageDbServiceImpl implements MessageApi {
}
@Override
public void batchReadFlagByMessageIds(String messageIds, MessageReadFlagEnum flagEnum) {
}
@Override
public void deleteByMessageId(Long messageId) {
}
@Override
public void batchDeleteByMessageId(String messageIds) {
public void batchDeleteByMessageIds(String messageIds) {
}

View File

@ -54,6 +54,12 @@ public class SysMessage extends BaseEntity {
@TableField(value = "message_type")
private String messageType;
/**
*
*/
@TableField(value = "priority_level")
private String priorityLevel;
/**
*
*/

View File

@ -6,7 +6,7 @@
<parent>
<groupId>cn.stylefeng.roses</groupId>
<artifactId>kernel-d-message</artifactId>
<artifactId>kernel-s-message</artifactId>
<version>1.0.0</version>
<relativePath>../pom.xml</relativePath>
</parent>

View File

@ -1,6 +1,8 @@
package cn.stylefeng.roses.kernel.system;
import cn.stylefeng.roses.kernel.system.pojo.user.SysUserDTO;
import cn.stylefeng.roses.kernel.system.pojo.user.UserLoginInfoDTO;
import cn.stylefeng.roses.kernel.system.pojo.user.request.SysUserRequest;
import java.util.Date;
import java.util.List;
@ -73,4 +75,37 @@ public interface UserServiceApi {
*/
List<Long> getUserBindDataScope(Long userId);
/**
* ID()
*
* @param sysUserRequest
* @return List<Long> id
* @author liuhanqing
* @date 2021/1/4 22:09
*/
List<Long> queryAllUserIdList(SysUserRequest sysUserRequest);
/**
*
*
* @param userId id
* @return
* @author liuhanqing
* @date 2021/1/4 22:09
*/
SysUserDTO getUserInfo(Long userId);
/**
* id
*
* @param userId id
* @return
* @author liuhanqing
* @date 2021/1/4 22:55
*/
Boolean userExist(Long userId);
}

View File

@ -0,0 +1,81 @@
package cn.stylefeng.roses.kernel.system.pojo.user;
import lombok.Data;
import java.util.Date;
/**
*
*
* @author fengshuonan
* @date 2020/4/2 9:19
*/
@Data
public class SysUserDTO {
/**
*
*/
private Long userId;
/**
*
*/
private String account;
/**
*
*/
private String nickName;
/**
*
*/
private String realName;
/**
*
*/
private Long avatar;
/**
*
*/
private Date birthday;
/**
* M-F-
*/
private String sex;
/**
*
*/
private String email;
/**
*
*/
private String phone;
/**
*
*/
private String tel;
/**
*
*/
private Long orgId;
/**
*
*/
private Long positionId;
/**
*
*/
private Integer statusFlag;
}

View File

@ -1,4 +1,4 @@
package cn.stylefeng.roses.kernel.system.modular.user.pojo.request;
package cn.stylefeng.roses.kernel.system.pojo.user.request;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import cn.stylefeng.roses.kernel.validator.validators.date.DateValue;

View File

@ -8,7 +8,7 @@ import cn.stylefeng.roses.kernel.resource.api.annotation.PostResource;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
import cn.stylefeng.roses.kernel.rule.pojo.response.ResponseData;
import cn.stylefeng.roses.kernel.rule.pojo.response.SuccessResponseData;
import cn.stylefeng.roses.kernel.system.modular.user.pojo.request.SysUserRequest;
import cn.stylefeng.roses.kernel.system.pojo.user.request.SysUserRequest;
import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserRoleService;
import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserService;
import org.springframework.validation.annotation.Validated;

View File

@ -9,7 +9,7 @@ import cn.stylefeng.roses.kernel.rule.enums.SexEnum;
import cn.stylefeng.roses.kernel.rule.enums.YesOrNotEnum;
import cn.stylefeng.roses.kernel.system.enums.UserStatusEnum;
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUser;
import cn.stylefeng.roses.kernel.system.modular.user.pojo.request.SysUserRequest;
import cn.stylefeng.roses.kernel.system.pojo.user.request.SysUserRequest;
/**
*

View File

@ -3,7 +3,7 @@ package cn.stylefeng.roses.kernel.system.modular.user.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUser;
import cn.stylefeng.roses.kernel.system.modular.user.pojo.request.SysUserRequest;
import cn.stylefeng.roses.kernel.system.pojo.user.request.SysUserRequest;
import cn.stylefeng.roses.kernel.system.modular.user.pojo.response.SysUserResponse;
import org.apache.ibatis.annotations.Param;

View File

@ -1,7 +1,7 @@
package cn.stylefeng.roses.kernel.system.modular.user.service;
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserDataScope;
import cn.stylefeng.roses.kernel.system.modular.user.pojo.request.SysUserRequest;
import cn.stylefeng.roses.kernel.system.pojo.user.request.SysUserRequest;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;

View File

@ -1,7 +1,7 @@
package cn.stylefeng.roses.kernel.system.modular.user.service;
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserRole;
import cn.stylefeng.roses.kernel.system.modular.user.pojo.request.SysUserRequest;
import cn.stylefeng.roses.kernel.system.pojo.user.request.SysUserRequest;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;

View File

@ -4,7 +4,7 @@ import cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult;
import cn.stylefeng.roses.kernel.rule.pojo.dict.SimpleDict;
import cn.stylefeng.roses.kernel.system.UserServiceApi;
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUser;
import cn.stylefeng.roses.kernel.system.modular.user.pojo.request.SysUserRequest;
import cn.stylefeng.roses.kernel.system.pojo.user.request.SysUserRequest;
import cn.stylefeng.roses.kernel.system.modular.user.pojo.response.SysUserResponse;
import com.baomidou.mybatisplus.extension.service.IService;

View File

@ -2,7 +2,7 @@ package cn.stylefeng.roses.kernel.system.modular.user.service.impl;
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserDataScope;
import cn.stylefeng.roses.kernel.system.modular.user.mapper.SysUserDataScopeMapper;
import cn.stylefeng.roses.kernel.system.modular.user.pojo.request.SysUserRequest;
import cn.stylefeng.roses.kernel.system.pojo.user.request.SysUserRequest;
import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserDataScopeService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

View File

@ -4,7 +4,7 @@ import cn.stylefeng.roses.kernel.system.exception.SystemModularException;
import cn.stylefeng.roses.kernel.system.exception.enums.SysUserExceptionEnum;
import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserRole;
import cn.stylefeng.roses.kernel.system.modular.user.mapper.SysUserRoleMapper;
import cn.stylefeng.roses.kernel.system.modular.user.pojo.request.SysUserRequest;
import cn.stylefeng.roses.kernel.system.pojo.user.request.SysUserRequest;
import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserRoleService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

View File

@ -26,7 +26,8 @@ import cn.stylefeng.roses.kernel.system.modular.user.entity.SysUserRole;
import cn.stylefeng.roses.kernel.system.modular.user.factory.SysUserCreateFactory;
import cn.stylefeng.roses.kernel.system.modular.user.factory.UserLoginInfoFactory;
import cn.stylefeng.roses.kernel.system.modular.user.mapper.SysUserMapper;
import cn.stylefeng.roses.kernel.system.modular.user.pojo.request.SysUserRequest;
import cn.stylefeng.roses.kernel.system.pojo.user.SysUserDTO;
import cn.stylefeng.roses.kernel.system.pojo.user.request.SysUserRequest;
import cn.stylefeng.roses.kernel.system.modular.user.pojo.response.SysUserResponse;
import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserDataScopeService;
import cn.stylefeng.roses.kernel.system.modular.user.service.SysUserOrgService;
@ -52,6 +53,7 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
@ -451,6 +453,58 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
return sysUserDataScopeService.getUserDataScopeIdList(userId);
}
@Override
public List<Long> queryAllUserIdList(SysUserRequest sysUserRequest) {
LambdaQueryWrapper<SysUser> wrapper = createWrapper(sysUserRequest);
// 排除超级管理员
wrapper.ne(SysUser::getSuperAdminFlag, YesOrNotEnum.Y.getCode());
// 只查询id
wrapper.select(SysUser::getUserId);
// 查询全部用户ID
Function<Object, Long> mapper = id -> Long.valueOf(id.toString());
List<Long> userIds = this.listObjs(wrapper, mapper);
return userIds;
}
/**
*
*
* @author liuhanqing
* @date 2021/1/4 22:54
*/
@Override
public SysUserDTO getUserInfo(Long userId) {
SysUser sysUser = this.getById(userId);
if (ObjectUtil.isNull(sysUser)) {
throw new SystemModularException(SysUserExceptionEnum.USER_NOT_EXIST, userId);
}
SysUserDTO userDTO = new SysUserDTO();
BeanUtil.copyProperties(sysUser, userDTO);
return userDTO;
}
@Override
public Boolean userExist(Long userId) {
SysUserRequest userRequest = new SysUserRequest();
userRequest.setUserId(userId);
LambdaQueryWrapper<SysUser> wrapper = createWrapper(userRequest);
// 只查询id
wrapper.select(SysUser::getUserId);
// 查询用户
SysUser sysUser = this.getOne(wrapper);
if (sysUser == null || sysUser.getUserId() == null) {
return Boolean.FALSE;
}
return Boolean.TRUE;
}
/**
*
*