feat:依赖修复,完善core和mybatis还有log模块,log模块待完成

This commit is contained in:
lirui
2025-11-25 17:06:50 +08:00
parent d89960f51c
commit 6f7963a73b
36 changed files with 873 additions and 107 deletions

View File

@@ -17,4 +17,22 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>cn.meowrain</groupId>
<artifactId>aioj-backend-common-core</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>cn.meowrain</groupId>
<artifactId>aioj-backend-common-mybatis</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--feign 注解依赖-->
<dependency>
<groupId>cn.meowrain</groupId>
<artifactId>aioj-backend-common-feign</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>

View File

@@ -1,5 +1,7 @@
package cn.meowrain.aioj.backend.upms.api.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import java.time.LocalDateTime;

View File

@@ -0,0 +1,159 @@
/*
*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*
*/
package cn.meowrain.aioj.backend.upms.api.entity;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 日志表
* </p>
*
* @author lengleng
* @since 2017-11-20
*/
@Data
@Schema(description = "日志")
public class SysLog implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 编号
*/
@TableId(type = IdType.ASSIGN_ID)
// @ExcelProperty("日志编号")
@Schema(description = "日志编号")
private Long id;
/**
* 日志类型
*/
@NotBlank(message = "日志类型不能为空")
// @ExcelProperty("日志类型0-正常 9-错误)")
@Schema(description = "日志类型")
private String logType;
/**
* 日志标题
*/
@NotBlank(message = "日志标题不能为空")
// @ExcelProperty("日志标题")
@Schema(description = "日志标题")
private String title;
/**
* 创建者
*/
// @ExcelProperty("创建人")
@TableField(fill = FieldFill.INSERT)
@Schema(description = "创建人")
private String createBy;
/**
* 创建时间
*/
// @ExcelProperty("创建时间")
@TableField(fill = FieldFill.INSERT)
@Schema(description = "创建时间")
private LocalDateTime createTime;
/**
* 更新时间
*/
// @ExcelIgnore
@TableField(fill = FieldFill.UPDATE)
@Schema(description = "更新时间")
private LocalDateTime updateTime;
/**
* 操作IP地址
*/
// @ExcelProperty("操作ip地址")
@Schema(description = "操作ip地址")
private String remoteAddr;
/**
* 用户代理
*/
@Schema(description = "用户代理")
private String userAgent;
/**
* 请求URI
*/
// @ExcelProperty("浏览器")
@Schema(description = "请求uri")
private String requestUri;
/**
* 操作方式
*/
// @ExcelProperty("操作方式")
@Schema(description = "操作方式")
private String method;
/**
* 操作提交的数据
*/
// @ExcelProperty("提交数据")
@Schema(description = "提交数据")
private String params;
/**
* 执行时间
*/
// @ExcelProperty("执行时间")
@Schema(description = "方法执行时间")
private Long time;
/**
* 异常信息
*/
// @ExcelProperty("异常信息")
@Schema(description = "异常信息")
private String exception;
/**
* 服务ID
*/
// @ExcelProperty("应用标识")
@Schema(description = "应用标识")
private String serviceId;
/**
* 删除标记
*/
@TableLogic
// @ExcelIgnore
@TableField(fill = FieldFill.INSERT)
@Schema(description = "删除标记,1:已删除,0:正常")
private String delFlag;
}

View File

@@ -0,0 +1,21 @@
package cn.meowrain.aioj.backend.upms.api.feign;
import cn.meowrain.aioj.backend.framework.core.constants.ServiceNameConstants;
import cn.meowrain.aioj.backend.framework.core.web.Result;
import cn.meowrain.aioj.backend.framework.feign.annotation.NoToken;
import cn.meowrain.aioj.backend.upms.api.entity.SysLog;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@FeignClient(contextId = "remoteLogService", value = ServiceNameConstants.UPMS_SERVICE)
public interface RemoteLogService {
/**
* 保存日志 (异步多线程调用无token)
* @param sysLog 日志实体
* @return succes、false
*/
@NoToken
@PostMapping("/log/save")
Result<Boolean> saveLog(@RequestBody SysLog sysLog);
}

View File

@@ -0,0 +1 @@
cn.meowrain.aioj.backend.upms.api.feign.RemoteLogService

View File

@@ -17,4 +17,16 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>cn.meowrain</groupId>
<artifactId>aioj-backend-common-mybatis</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>cn.meowrain</groupId>
<artifactId>aioj-backend-upms-api</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,11 @@
package cn.meowrain.aioj.backend.upms.biz;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class AIOJAdminApplication {
public static void main(String[] args) {
SpringApplication.run(AIOJAdminApplication.class, args);
}
}

View File

@@ -0,0 +1,78 @@
package cn.meowrain.aioj.backend.upms.biz.controller;
import cn.hutool.core.collection.CollUtil;
import cn.meowrain.aioj.backend.framework.core.web.Result;
import cn.meowrain.aioj.backend.framework.core.web.Results;
import cn.meowrain.aioj.backend.upms.api.dto.SysLogDTO;
import cn.meowrain.aioj.backend.upms.api.entity.SysLog;
import cn.meowrain.aioj.backend.upms.biz.service.SysLogService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springdoc.core.annotations.ParameterObject;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/log")
@Tag(description = "log", name = "日志管理模块")
@RequiredArgsConstructor
public class SysLogController {
private final SysLogService sysLogService;
/**
* 分页查询系统日志
*
* @param page 分页参数对象
* @param sysLog 系统日志查询条件
* @return 包含分页结果的响应对象
*/
@GetMapping("/page")
@Operation(summary = "分页查询系统日志", description = "分页查询系统日志")
public Result<Page> getLogPage(@ParameterObject Page page, @ParameterObject SysLogDTO sysLog) {
return Results.success(sysLogService.getLogPage(page, sysLog));
}
/**
* 批量删除日志
*
* @param ids 要删除的日志ID数组
* @return 操作结果成功返回success失败返回false
*/
@DeleteMapping
// @HasPermission("sys_log_del")
@Operation(summary = "批量删除日志", description = "批量删除日志")
public Result<Boolean> removeByIds(@RequestBody Long[] ids) {
return Results.success(sysLogService.removeBatchByIds(CollUtil.toList(ids)));
}
/**
* 保存日志
*
* @param sysLog 日志实体
* @return 操作结果成功返回success失败返回false
*/
@PostMapping("/save")
@Operation(summary = "保存日志", description = "保存日志")
public Result<Boolean> saveLog(@Valid @RequestBody SysLog sysLog) {
return Results.success(sysLogService.saveLog(sysLog));
}
/**
* 导出系统日志到Excel表格
* @param sysLog 系统日志查询条件DTO
* @return 符合查询条件的系统日志列表
*/
// @ResponseExcel
// @GetMapping("/export")
// @HasPermission("sys_log_export")
// @Operation(summary = "导出系统日志到Excel表格", description = "导出系统日志到Excel表格")
// public List<SysLog> exportLogs(SysLogDTO sysLog) {
// return sysLogService.listLogs(sysLog);
// }
}

View File

@@ -0,0 +1,12 @@
package cn.meowrain.aioj.backend.upms.biz.mapper;
import cn.meowrain.aioj.backend.upms.api.entity.SysLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* 系统日志表 Mapper 接口
*/
@Mapper
public interface SysLogMapper extends BaseMapper<SysLog> {
}

View File

@@ -0,0 +1,35 @@
package cn.meowrain.aioj.backend.upms.biz.service;
import cn.meowrain.aioj.backend.upms.api.dto.SysLogDTO;
import cn.meowrain.aioj.backend.upms.api.entity.SysLog;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
public interface SysLogService extends IService<SysLog> {
/**
* 分页查询系统日志
*
* @param page 分页对象
* @param sysLog 系统日志
* @return 系统日志分页数据
*/
Page getLogPage(Page page, SysLogDTO sysLog);
/**
* 保存日志
*
* @param sysLog 日志实体
* @return Boolean
*/
Boolean saveLog(SysLog sysLog);
/**
* 查询日志列表
*
* @param sysLog 查询条件
* @return 日志列表
*/
List<SysLog> listLogs(SysLogDTO sysLog);
}

View File

@@ -0,0 +1,75 @@
package cn.meowrain.aioj.backend.upms.biz.service.impl;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import cn.meowrain.aioj.backend.upms.api.dto.SysLogDTO;
import cn.meowrain.aioj.backend.upms.api.entity.SysLog;
import cn.meowrain.aioj.backend.upms.biz.mapper.SysLogMapper;
import cn.meowrain.aioj.backend.upms.biz.service.SysLogService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@Service
public class SysLogServiceImpl extends ServiceImpl<SysLogMapper, SysLog> implements SysLogService {
/**
* 分页查询系统日志
*
* @param page 分页参数
* @param sysLog 日志查询条件
* @return 分页结果
*/
@Override
public Page getLogPage(Page page, SysLogDTO sysLog) {
return baseMapper.selectPage(page, buildQuery(sysLog));
}
/**
* 保存日志
*
* @param sysLog 日志对象
* @return 保存成功返回true
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean saveLog(SysLog sysLog) {
baseMapper.insert(sysLog);
return Boolean.TRUE;
}
/**
* 查询日志列表
*
* @param sysLog 查询条件DTO对象
* @return 日志列表
*/
@Override
public List<SysLog> listLogs(SysLogDTO sysLog) {
return baseMapper.selectList(buildQuery(sysLog));
}
/**
* 构建查询条件
*
* @param sysLog 前端查询条件DTO
* @return 构建好的LambdaQueryWrapper对象
*/
private LambdaQueryWrapper buildQuery(SysLogDTO sysLog) {
LambdaQueryWrapper<SysLog> wrapper = Wrappers.lambdaQuery();
if (StrUtil.isNotBlank(sysLog.getLogType())) {
wrapper.eq(SysLog::getLogType, sysLog.getLogType());
}
if (ArrayUtil.isNotEmpty(sysLog.getCreateTime())) {
wrapper.ge(SysLog::getCreateTime, sysLog.getCreateTime()[0])
.le(SysLog::getCreateTime, sysLog.getCreateTime()[1]);
}
return wrapper;
}
}