系统日志添加类型

系统日志列表筛选
系统消息的更新和删除
This commit is contained in:
zhaoyz 2024-04-30 17:12:00 +08:00
parent 512a4af309
commit 291fa4efa5
18 changed files with 178 additions and 14 deletions

View File

@ -23,4 +23,6 @@ public @interface SysLog {
*/ */
String expression() default ""; String expression() default "";
String type() default "0";
} }

View File

@ -51,6 +51,7 @@ public class SysLogAspect {
SysLogEventSource logVo = SysLogUtils.getSysLog(); SysLogEventSource logVo = SysLogUtils.getSysLog();
logVo.setTitle(value); logVo.setTitle(value);
logVo.setLogType(sysLog.type());
// 获取请求body参数 // 获取请求body参数
if (StrUtil.isBlank(logVo.getParams())) { if (StrUtil.isBlank(logVo.getParams())) {
logVo.setBody(point.getArgs()); logVo.setBody(point.getArgs());

View File

@ -21,7 +21,13 @@ public enum LogTypeEnum {
/** /**
* 错误日志类型 * 错误日志类型
*/ */
ERROR("9", "错误日志"); ERROR("4", "错误日志"),
ADD("1", "添加"),
DELETE("2", "删除"),
EDIT("3", "编辑");
/** /**
* 类型 * 类型

View File

@ -1268,18 +1268,27 @@ DROP TABLE IF EXISTS `sys_message`;
CREATE TABLE `sys_message` CREATE TABLE `sys_message`
( (
`id` bigint NOT NULL COMMENT '主键', `id` bigint NOT NULL COMMENT '主键',
`category` varchar(800) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '消息类型', `category` varchar(800) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '消息类型',
`hospital` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '医院名称',ssss `hospital` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '医院名称',
`message` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '消息内容', `message` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '消息内容',
`href` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '跳转链接', `href` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '跳转链接',
`hotspots` bit(1) NULL DEFAULT 0 COMMENT '是否热点', `hotspots` bit(1) NULL DEFAULT 0 COMMENT '是否热点',
`del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '删除标记0未删除1已删除', `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '删除标记0未删除1已删除',
`creator` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '所属人', `creator` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '所属人',
`receiver` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '接收人', `creator_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '接收人',
`updater` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '修改人',
`updater_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '修改人',
`create_time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建时间', `create_time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '创建时间',
`update_time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新时间', `update_time` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic; ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
SET DROP TABLE IF EXISTS `sys_message_user`;
FOREIGN_KEY_CHECKS = 1; CREATE TABLE `sys_message_user`
(
`message_id` bigint NULL DEFAULT NULL COMMENT '消息id',
`user_id` bigint NULL DEFAULT NULL COMMENT '用户id',
`read_flag` bit(1) NULL DEFAULT 0 COMMENT '是否已读'
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;

View File

@ -88,4 +88,9 @@ public class SysLogDTO {
*/ */
private LocalDateTime[] createTime; private LocalDateTime[] createTime;
/**
* 创建时间区间 [开始时间结束时间]
*/
private String[] timeInterval;
} }

View File

@ -36,7 +36,7 @@ public class SysLog implements Serializable {
* 日志类型 * 日志类型
*/ */
@NotBlank(message = "日志类型不能为空") @NotBlank(message = "日志类型不能为空")
@ExcelProperty("日志类型0-正常 9-错误 1-添加 2-删除 3-编辑)") @ExcelProperty("日志类型0-正常 1-添加 2-删除 3-编辑 4-错误")
@Schema(description = "日志类型") @Schema(description = "日志类型")
private String logType; private String logType;

View File

@ -49,8 +49,14 @@ public class SysMessage {
@Schema(description = "创建人") @Schema(description = "创建人")
private Long creator; private Long creator;
@Schema(description = "接收人") @Schema(description = "创建人名字")
private String receiver; private String creatorName;
@Schema(description = "修改人")
private Long updater;
@Schema(description = "修改人姓名")
private String updaterName;
@Schema(description = "创建时间") @Schema(description = "创建时间")
private String createTime; private String createTime;

View File

@ -0,0 +1,21 @@
package com.rax.admin.api.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(description = "消息用户")
public class SysMessageUser {
@Schema(description = "消息id")
private String messageId;
@Schema(description = "用户id")
private String userId;
@Schema(description = "是否已读")
@TableField(fill = FieldFill.INSERT)
private Boolean readFlag;
}

View File

@ -7,6 +7,9 @@ import lombok.Data;
@Schema(description = "系统消息") @Schema(description = "系统消息")
public class SysMessageVO { public class SysMessageVO {
@Schema(description = "消息id")
private String id;
@Schema(description = "接收人") @Schema(description = "接收人")
private String receiver; private String receiver;

View File

@ -26,15 +26,26 @@ public class SysMessageController {
return sysMessageService.saveMessage(sysMessageVO); return sysMessageService.saveMessage(sysMessageVO);
} }
@PostMapping("/update")
public R update(SysMessageVO sysMessageVO) {
return sysMessageService.updateMessage(sysMessageVO);
}
@PostMapping("/page") @PostMapping("/page")
public R page(Page page, SysMessageVO sysMessageVO) { public R page(Page page, SysMessageVO sysMessageVO) {
return R.ok(sysMessageService.page(page, Wrappers.<SysMessage>lambdaQuery() return R.ok(sysMessageService.page(page, Wrappers.<SysMessage>lambdaQuery()
.eq(StringUtils.hasText(sysMessageVO.getCategory()), .eq(StringUtils.hasText(sysMessageVO.getCategory()),
SysMessage::getCategory, SysMessage::getCategory,
sysMessageVO.getCategory()) sysMessageVO.getCategory())
.eq(SysMessage::getDelFlag, 0)
.like(StringUtils.hasText(sysMessageVO.getMessage()), .like(StringUtils.hasText(sysMessageVO.getMessage()),
SysMessage::getMessage, SysMessage::getMessage,
sysMessageVO.getMessage()))); sysMessageVO.getMessage())));
} }
@PostMapping("/delete")
public R delete(String ids) {
return sysMessageService.deleteMessage(ids);
}
} }

View File

@ -3,7 +3,9 @@ package com.rax.admin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.rax.admin.api.entity.SysMessage; import com.rax.admin.api.entity.SysMessage;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper @Mapper
public interface SysMessageMapper extends BaseMapper<SysMessage> { public interface SysMessageMapper extends BaseMapper<SysMessage> {
boolean deleteMessage(@Param("ids") String ids);
} }

View File

@ -0,0 +1,9 @@
package com.rax.admin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.rax.admin.api.entity.SysMessageUser;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface SysMessageUserMapper extends BaseMapper<SysMessageUser> {
}

View File

@ -9,4 +9,8 @@ import com.rax.common.core.util.R;
public interface SysMessageService extends IService<SysMessage> { public interface SysMessageService extends IService<SysMessage> {
R saveMessage(SysMessageVO sysMessageVO); R saveMessage(SysMessageVO sysMessageVO);
R updateMessage(SysMessageVO sysMessageVO);
R deleteMessage(String ids);
} }

View File

@ -0,0 +1,7 @@
package com.rax.admin.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.rax.admin.api.entity.SysMessageUser;
public interface SysMessageUserService extends IService<SysMessageUser> {
}

View File

@ -35,9 +35,9 @@ public class SysLogServiceImpl extends ServiceImpl<SysLogMapper, SysLog> impleme
wrapper.eq(SysLog::getLogType, sysLog.getLogType()); wrapper.eq(SysLog::getLogType, sysLog.getLogType());
} }
if (ArrayUtil.isNotEmpty(sysLog.getCreateTime())) { if (ArrayUtil.isNotEmpty(sysLog.getTimeInterval())) {
wrapper.ge(SysLog::getCreateTime, sysLog.getCreateTime()[0]) wrapper.ge(SysLog::getCreateTime, sysLog.getTimeInterval()[0])
.le(SysLog::getCreateTime, sysLog.getCreateTime()[1]); .le(SysLog::getCreateTime, sysLog.getTimeInterval()[1]);
} }
wrapper.orderByDesc(SysLog::getCreateTime); wrapper.orderByDesc(SysLog::getCreateTime);

View File

@ -1,19 +1,34 @@
package com.rax.admin.service.impl; package com.rax.admin.service.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.rax.admin.api.entity.SysMessage; import com.rax.admin.api.entity.SysMessage;
import com.rax.admin.api.entity.SysMessageUser;
import com.rax.admin.api.entity.SysUser;
import com.rax.admin.api.vo.SysMessageVO; import com.rax.admin.api.vo.SysMessageVO;
import com.rax.admin.mapper.SysMessageMapper; import com.rax.admin.mapper.SysMessageMapper;
import com.rax.admin.service.SysMessageService; import com.rax.admin.service.SysMessageService;
import com.rax.admin.service.SysMessageUserService;
import com.rax.admin.service.SysUserService;
import com.rax.common.core.util.R; import com.rax.common.core.util.R;
import com.rax.common.security.service.RaxUser; import com.rax.common.security.service.RaxUser;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.Arrays;
import java.util.List;
@Service @Service
public class SysMessageServiceImpl extends ServiceImpl<SysMessageMapper, SysMessage> implements SysMessageService { public class SysMessageServiceImpl extends ServiceImpl<SysMessageMapper, SysMessage> implements SysMessageService {
@Autowired
private SysUserService sysUserService;
@Autowired
private SysMessageUserService sysMessageUserService;
@Override @Override
public R saveMessage(SysMessageVO sysMessageVO) { public R saveMessage(SysMessageVO sysMessageVO) {
@ -21,10 +36,54 @@ public class SysMessageServiceImpl extends ServiceImpl<SysMessageMapper, SysMess
BeanUtils.copyProperties(sysMessageVO, sysMessage); BeanUtils.copyProperties(sysMessageVO, sysMessage);
RaxUser raxUser = (RaxUser) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); RaxUser raxUser = (RaxUser) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
sysMessage.setCreator(raxUser.getId()); sysMessage.setCreator(raxUser.getId());
SysUser sysUser = sysUserService.getById(raxUser.getId());
sysMessage.setCreatorName(sysUser.getName());
sysMessage.setHospital(raxUser.getHospitalId()); sysMessage.setHospital(raxUser.getHospitalId());
sysMessage.setCreateTime(DateUtil.now()); sysMessage.setCreateTime(DateUtil.now());
sysMessage.setUpdateTime(DateUtil.now()); sysMessage.setUpdateTime(DateUtil.now());
boolean status = save(sysMessage); boolean status = save(sysMessage);
return R.ok(status); if (status) {
saveMessageUser(sysMessageVO, sysMessage);
return R.ok("消息保存成功");
} else {
return R.failed("消息保存失败");
}
}
@Override
public R updateMessage(SysMessageVO sysMessageVO) {
SysMessage sysMessage = new SysMessage();
BeanUtils.copyProperties(sysMessageVO, sysMessage);
sysMessage.setUpdateTime(DateUtil.now());
RaxUser raxUser = (RaxUser) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
sysMessage.setUpdater(raxUser.getId());
SysUser sysUser = sysUserService.getById(raxUser.getId());
sysMessage.setUpdaterName(sysUser.getName());
boolean status = updateById(sysMessage);
if (status) {
saveMessageUser(sysMessageVO, sysMessage);
return R.ok("消息更新成功");
} else {
return R.failed("消息更新失败");
}
}
private void saveMessageUser(SysMessageVO sysMessageVO, SysMessage sysMessage) {
if (StringUtils.hasText(sysMessageVO.getReceiver())) {
List messageUserList = Arrays.stream(sysMessageVO.getReceiver().split(StrUtil.COMMA)).map(userId -> {
SysMessageUser sysMessageUser = new SysMessageUser();
sysMessageUser.setUserId(userId);
sysMessageUser.setMessageId(sysMessage.getId());
return sysMessageUser;
}).toList();
sysMessageUserService.saveBatch(messageUserList);
}
}
@Override
public R deleteMessage(String ids) {
List<String> idList = Arrays.asList(ids.split(StrUtil.COMMA));
ids = ids.replace(",", "','");
return R.ok(this.baseMapper.deleteMessage(ids));
} }
} }

View File

@ -0,0 +1,11 @@
package com.rax.admin.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.rax.admin.api.entity.SysMessageUser;
import com.rax.admin.mapper.SysMessageUserMapper;
import com.rax.admin.service.SysMessageUserService;
import org.springframework.stereotype.Service;
@Service
public class SysMessageUserServiceImpl extends ServiceImpl<SysMessageUserMapper, SysMessageUser> implements SysMessageUserService {
}

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.rax.admin.mapper.SysMessageMapper">
<update id="deleteMessage">
UPDATE sys_message set del_flag = 1 WHERE id IN (#{ids});
DELETE FROM sys_message_user where message_id in (#{ids});
</update>
</mapper>