parent
d44c35e52a
commit
1935bc2e62
|
|
@ -3,18 +3,17 @@
|
|||
<div class="journal">
|
||||
<el-card class="!border-none" shadow="never">
|
||||
<el-form class="ls-form" :model="formData" inline>
|
||||
<el-form-item label="管理员">
|
||||
<el-form-item class="w-[280px]" label="管理员">
|
||||
<el-input
|
||||
class="w-[280px]"
|
||||
placeholder="请输入"
|
||||
v-model="formData.username"
|
||||
v-model="formData.admin_name"
|
||||
clearable
|
||||
@keyup.enter="resetPage"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="访问方式">
|
||||
<el-select class="w-[280px]" v-model="formData.type" placeholder="请选择">
|
||||
<el-form-item class="w-[280px]" label="访问方式">
|
||||
<el-select v-model="formData.type" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="(item, index) in visitType"
|
||||
:key="index"
|
||||
|
|
@ -24,9 +23,8 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="来源IP">
|
||||
<el-form-item class="w-[280px]" label="来源IP">
|
||||
<el-input
|
||||
class="w-[280px]"
|
||||
placeholder="请输入"
|
||||
v-model="formData.ip"
|
||||
clearable
|
||||
|
|
@ -36,14 +34,13 @@
|
|||
|
||||
<el-form-item label="访问时间">
|
||||
<daterange-picker
|
||||
v-model:startTime="formData.startTime"
|
||||
v-model:endTime="formData.endTime"
|
||||
v-model:startTime="formData.start_time"
|
||||
v-model:endTime="formData.end_time"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="访问链接">
|
||||
<el-form-item class="w-[280px]" label="访问链接">
|
||||
<el-input
|
||||
class="w-[280px]"
|
||||
placeholder="请输入"
|
||||
v-model="formData.url"
|
||||
clearable
|
||||
|
|
@ -54,6 +51,12 @@
|
|||
<el-form-item>
|
||||
<el-button type="primary" @click="resetPage">查询</el-button>
|
||||
<el-button @click="resetParams">重置</el-button>
|
||||
<export-data
|
||||
class="ml-2.5"
|
||||
:fetch-fun="systemLogLists"
|
||||
:params="formData"
|
||||
:page-size="pager.size"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
|
|
@ -62,14 +65,14 @@
|
|||
<div>
|
||||
<el-table :data="pager.lists" size="large">
|
||||
<el-table-column label="记录ID" prop="id" />
|
||||
<el-table-column label="操作" prop="title" min-width="120" />
|
||||
<el-table-column label="管理员" prop="username" min-width="120" />
|
||||
<el-table-column label="操作" prop="action" min-width="120" />
|
||||
<el-table-column label="管理员" prop="admin_name" min-width="120" />
|
||||
<el-table-column label="管理员ID" prop="admin_id" min-width="120" />
|
||||
<el-table-column label="访问链接" prop="url" min-width="160" />
|
||||
<el-table-column label="访问方式" prop="type" min-width="100" />
|
||||
<el-table-column label="访问方式" prop="type" />
|
||||
<el-table-column label="访问参数" prop="params" min-width="160" />
|
||||
<el-table-column label="来源IP" prop="ip" min-width="160" />
|
||||
<el-table-column label="错误信息" prop="error" min-width="160" />
|
||||
<el-table-column label="执行耗时(毫秒)" prop="taskTime" min-width="100" />
|
||||
<el-table-column label="日志时间" prop="createTime" min-width="180" />
|
||||
<el-table-column label="日志时间" prop="create_time" min-width="180" />
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="flex mt-4 justify-end">
|
||||
|
|
@ -83,14 +86,23 @@
|
|||
import { systemLogLists } from '@/api/setting/system'
|
||||
import { usePaging } from '@/hooks/usePaging'
|
||||
|
||||
interface formDataObj {
|
||||
admin_name?: string // 管理员
|
||||
url?: string // 访问链接
|
||||
ip?: string // ip
|
||||
type?: string // 访问方式
|
||||
start_time?: string // 日志时间开始
|
||||
end_time?: string // 日志时间结束
|
||||
}
|
||||
|
||||
// 查询表单
|
||||
const formData = ref({
|
||||
username: '',
|
||||
const formData = ref<formDataObj>({
|
||||
admin_name: '',
|
||||
url: '',
|
||||
ip: '',
|
||||
type: '',
|
||||
startTime: '',
|
||||
endTime: ''
|
||||
start_time: '',
|
||||
end_time: ''
|
||||
})
|
||||
|
||||
// 访问方式
|
||||
|
|
@ -106,6 +118,18 @@ const visitType = ref<Array<any>>([
|
|||
{
|
||||
label: 'post',
|
||||
value: 'post'
|
||||
},
|
||||
{
|
||||
label: 'put',
|
||||
value: 'put'
|
||||
},
|
||||
{
|
||||
label: 'delete',
|
||||
value: 'delete'
|
||||
},
|
||||
{
|
||||
label: 'option',
|
||||
value: 'option'
|
||||
}
|
||||
])
|
||||
|
||||
|
|
@ -114,7 +138,9 @@ const { pager, getLists, resetParams, resetPage } = usePaging({
|
|||
params: formData.value
|
||||
})
|
||||
|
||||
getLists()
|
||||
onMounted(() => {
|
||||
getLists()
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,9 @@ package com.mdd.admin.aop.aspect;
|
|||
import com.alibaba.fastjson2.JSON;
|
||||
import com.mdd.admin.LikeAdminThreadLocal;
|
||||
import com.mdd.admin.aop.Log;
|
||||
import com.mdd.common.entity.system.SystemLogOperate;
|
||||
import com.mdd.common.entity.admin.Admin;
|
||||
import com.mdd.common.entity.system.OperationLog;
|
||||
import com.mdd.common.mapper.admin.AdminMapper;
|
||||
import com.mdd.common.mapper.system.SystemLogOperateMapper;
|
||||
import com.mdd.common.util.IpUtils;
|
||||
import com.mdd.common.util.RequestUtils;
|
||||
|
|
@ -36,6 +38,9 @@ public class LogAspect {
|
|||
@Resource
|
||||
SystemLogOperateMapper systemLogOperateMapper;
|
||||
|
||||
@Resource
|
||||
AdminMapper adminMapper;
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(LogAspect.class);
|
||||
|
||||
/**
|
||||
|
|
@ -143,20 +148,26 @@ public class LogAspect {
|
|||
status = 2; // 1=成功, 2=失败
|
||||
}
|
||||
|
||||
String adminName = "";
|
||||
Admin admin = adminMapper.selectById(adminId);
|
||||
if (admin != null) {
|
||||
adminName = admin.getName();
|
||||
}
|
||||
// 数据库日志
|
||||
SystemLogOperate model = new SystemLogOperate();
|
||||
OperationLog model = new OperationLog();
|
||||
model.setAdminId(adminId);
|
||||
model.setTitle(logAnnotation.title());
|
||||
model.setAdminName(adminName);
|
||||
model.setAction(logAnnotation.title());
|
||||
model.setIp(IpUtils.getIpAddress());
|
||||
model.setType(request.getMethod());
|
||||
model.setMethod(className + "." + methodName + "()");
|
||||
// model.setMethod(className + "." + methodName + "()");
|
||||
model.setUrl(RequestUtils.route());
|
||||
model.setArgs(params);
|
||||
model.setError(error);
|
||||
model.setStatus(status);
|
||||
model.setStartTime(beginTime / 1000);
|
||||
model.setEndTime(endTime / 1000);
|
||||
model.setTaskTime(endTime - beginTime);
|
||||
model.setParams(params);
|
||||
model.setResult(error);
|
||||
// model.setStatus(status);
|
||||
// model.setStartTime(beginTime / 1000);
|
||||
// model.setEndTime(endTime / 1000);
|
||||
// model.setTaskTime(endTime - beginTime);
|
||||
model.setCreateTime(System.currentTimeMillis() / 1000);
|
||||
executor.submit(() -> {
|
||||
systemLogOperateMapper.insert(model);
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ public class ArtCateServiceImpl implements IArtCateService {
|
|||
ArticleCate model = new ArticleCate();
|
||||
model.setName(createValidate.getName());
|
||||
model.setSort(createValidate.getSort());
|
||||
model.setIsShow(model.getIsShow());
|
||||
model.setIsShow(createValidate.getIsShow());
|
||||
model.setCreateTime(TimeUtils.timestamp());
|
||||
model.setUpdateTime(TimeUtils.timestamp());
|
||||
articleCategoryMapper.insert(model);
|
||||
|
|
|
|||
|
|
@ -93,13 +93,14 @@ public class FinanceRechargerServiceImpl implements IFinanceRechargerService {
|
|||
"like:sn@t.sn:str",
|
||||
"=:pay_way@t.pay_way:int",
|
||||
"=:pay_status@t.pay_status:int",
|
||||
"datetime:start_time-end_time@create_time:long",
|
||||
"datetime:start_time-end_time@t.create_time:str",
|
||||
});
|
||||
|
||||
if (StringUtils.isNotEmpty(searchValidate.getUser_info())) {
|
||||
String keyword = searchValidate.getUser_info();
|
||||
mpjQueryWrapper.nested(wq->wq
|
||||
.like("U.nickname", keyword).or()
|
||||
.like("U.account", keyword).or()
|
||||
.like("U.sn", keyword).or()
|
||||
.like("U.mobile", keyword));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ public class FinanceRefundServiceImpl implements IFinanceRefundService {
|
|||
"like:order_sn@t.order_sn:str",
|
||||
"=:refund_type@t.refund_type:int",
|
||||
"=:refund_status@t.refund_status:int",
|
||||
"datetime:start_time-end_time@create_time:long",
|
||||
"datetime:start_time-end_time@t.create_time:str",
|
||||
});
|
||||
|
||||
|
||||
|
|
@ -70,6 +70,7 @@ public class FinanceRefundServiceImpl implements IFinanceRefundService {
|
|||
String keyword = searchValidate.getUser_info();
|
||||
mpjQueryWrapper.nested(wq->wq
|
||||
.like("U.nickname", keyword).or()
|
||||
.like("U.account", keyword).or()
|
||||
.like("U.sn", keyword).or()
|
||||
.like("U.mobile", keyword));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,14 +42,15 @@ public class FinanceWalletServiceImpl implements IFinanceWalletService {
|
|||
.orderByDesc("id");
|
||||
|
||||
logMoneyMapper.setSearch(mpjQueryWrapper, searchValidate, new String[]{
|
||||
"=:change_type@change_type:int",
|
||||
"datetime:startTime-endTime@create_time:long",
|
||||
"=:change_type@t.change_type:int",
|
||||
"datetime:start_time-end_time@t.create_time:str",
|
||||
});
|
||||
|
||||
if (StringUtils.isNotEmpty(searchValidate.getUser_info())) {
|
||||
String keyword = searchValidate.getUser_info();
|
||||
mpjQueryWrapper.nested(wq->wq
|
||||
.like("U.nickname", keyword).or()
|
||||
.like("U.account", keyword).or()
|
||||
.like("U.sn", keyword).or()
|
||||
.like("U.mobile", keyword));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -73,13 +73,14 @@ public class UserServiceImpl implements IUserService {
|
|||
String keyword = searchValidate.getKeyword();
|
||||
queryWrapper.nested(wq->wq
|
||||
.like("sn", keyword).or()
|
||||
.like("account", keyword).or()
|
||||
.like("nickname", keyword).or()
|
||||
.like("mobile", keyword));
|
||||
}
|
||||
|
||||
userMapper.setSearch(queryWrapper, searchValidate, new String[]{
|
||||
"=:channel:int",
|
||||
"datetime:createTimeStart-createTimeEnd@create_time:str"
|
||||
"datetime:create_time_start-create_time_end@create_time:str"
|
||||
});
|
||||
|
||||
IPage<User> iPage = userMapper.selectPage( new Page<>(pageNo, pageSize), queryWrapper);
|
||||
|
|
@ -166,7 +167,7 @@ public class UserServiceImpl implements IUserService {
|
|||
case "account":
|
||||
if (!user.getAccount().equals(value)) {
|
||||
User u = userMapper.selectOne(new QueryWrapper<User>()
|
||||
.eq("username", value)
|
||||
.eq("account", value)
|
||||
.isNull("delete_time")
|
||||
.last("limit 1"));
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ import com.mdd.admin.vo.system.SystemLogOperateVo;
|
|||
import com.mdd.common.config.GlobalConfig;
|
||||
import com.mdd.common.core.PageResult;
|
||||
import com.mdd.common.entity.system.SystemLogLogin;
|
||||
import com.mdd.common.entity.system.SystemLogOperate;
|
||||
import com.mdd.common.entity.system.OperationLog;
|
||||
import com.mdd.common.mapper.system.SystemLogLoginMapper;
|
||||
import com.mdd.common.mapper.system.SystemLogOperateMapper;
|
||||
import com.mdd.common.util.StringUtils;
|
||||
|
|
@ -50,20 +50,19 @@ public class SystemLogsServerImpl implements ISystemLogsServer {
|
|||
Integer pageNo = pageValidate.getPage_no();
|
||||
Integer pageSize = pageValidate.getPage_size();
|
||||
|
||||
MPJQueryWrapper<SystemLogOperate> mpjQueryWrapper = new MPJQueryWrapper<SystemLogOperate>()
|
||||
.selectAll(SystemLogOperate.class)
|
||||
MPJQueryWrapper<OperationLog> mpjQueryWrapper = new MPJQueryWrapper<OperationLog>()
|
||||
.selectAll(OperationLog.class)
|
||||
.select("sa.account as username,sa.name nickname")
|
||||
.leftJoin("?_admin sa ON sa.id=t.admin_id".replace("?_", GlobalConfig.tablePrefix))
|
||||
.orderByDesc("id");
|
||||
|
||||
logOperateMapper.setSearch(mpjQueryWrapper, searchValidate, new String[]{
|
||||
"like:title:str",
|
||||
"like:action:str",
|
||||
"like:username@sa.name:str",
|
||||
"like:ip:str",
|
||||
"=:type:str",
|
||||
"=:status:int",
|
||||
"=:url:str",
|
||||
"datetime:startTime-endTime@t.create_time:str"
|
||||
"datetime:start_time-end_time@t.create_time:str"
|
||||
});
|
||||
|
||||
IPage<SystemLogOperateVo> iPage = logOperateMapper.selectJoinPage(
|
||||
|
|
@ -72,11 +71,7 @@ public class SystemLogsServerImpl implements ISystemLogsServer {
|
|||
mpjQueryWrapper);
|
||||
|
||||
for (SystemLogOperateVo vo : iPage.getRecords()) {
|
||||
vo.setTaskTime(vo.getTaskTime());
|
||||
vo.setStartTime(TimeUtils.timestampToDate(vo.getStartTime()));
|
||||
vo.setEndTime(TimeUtils.timestampToDate(vo.getEndTime()));
|
||||
vo.setCreateTime(TimeUtils.timestampToDate(vo.getCreateTime()));
|
||||
vo.setError(StringUtils.isNull(vo.getError()) ? "" : vo.getError());
|
||||
}
|
||||
|
||||
return PageResult.iPageHandle(iPage);
|
||||
|
|
|
|||
|
|
@ -25,10 +25,10 @@ public class FinanceRechargeSearchValidate implements Serializable {
|
|||
private Integer pay_status;
|
||||
|
||||
@ApiModelProperty(value = "开始时间")
|
||||
private Integer start_time;
|
||||
private String start_time;
|
||||
|
||||
@ApiModelProperty(value = "结束时间")
|
||||
private Integer end_time;
|
||||
private String end_time;
|
||||
|
||||
@ApiModelProperty(value = "导出信息")
|
||||
private Integer export;
|
||||
|
|
|
|||
|
|
@ -27,9 +27,9 @@ public class FinanceRefundSearchValidate implements Serializable {
|
|||
private Integer refund_status;
|
||||
|
||||
@ApiModelProperty("开始时间")
|
||||
private Long start_time;
|
||||
private String start_time;
|
||||
|
||||
@ApiModelProperty("结束时间")
|
||||
private Long end_time;
|
||||
private String end_time;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,9 +19,9 @@ public class FinanceWalletSearchValidate implements Serializable {
|
|||
private Integer change_type;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Integer start_time;
|
||||
private String start_time;
|
||||
|
||||
@ApiModelProperty(value = "结束时间")
|
||||
private Integer end_time;
|
||||
private String end_time;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ public class SystemSearchOperateValidate implements Serializable {
|
|||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "标题")
|
||||
private String title;
|
||||
private String action;
|
||||
|
||||
@ApiModelProperty(value = "账号")
|
||||
private String username;
|
||||
|
|
@ -24,16 +24,14 @@ public class SystemSearchOperateValidate implements Serializable {
|
|||
@ApiModelProperty(value = "类型")
|
||||
private String type;
|
||||
|
||||
@ApiModelProperty(value = "状态")
|
||||
private String status;
|
||||
|
||||
@ApiModelProperty(value = "路由")
|
||||
private String url;
|
||||
|
||||
@ApiModelProperty(value = "开始时间")
|
||||
private String startTime;
|
||||
private String start_time;
|
||||
|
||||
@ApiModelProperty(value = "结束时间")
|
||||
private String endTime;
|
||||
private String end_time;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,10 +19,10 @@ public class UserSearchValidate implements Serializable {
|
|||
private String keyword;
|
||||
|
||||
@ApiModelProperty(value = "开始时间")
|
||||
private String createTimeStart;
|
||||
private String create_time_start;
|
||||
|
||||
@ApiModelProperty(value = "结束时间")
|
||||
private String createTimeEnd;
|
||||
private String create_time_end;
|
||||
|
||||
@ApiModelProperty(value = "导出信息")
|
||||
private Integer export;
|
||||
|
|
|
|||
|
|
@ -12,49 +12,35 @@ public class SystemLogOperateVo implements Serializable {
|
|||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty(value = "主键")
|
||||
@ApiModelProperty("ID")
|
||||
private Integer id;
|
||||
|
||||
@ApiModelProperty(value = "用户账号")
|
||||
private String username;
|
||||
@ApiModelProperty("操作人ID")
|
||||
private Integer adminId;
|
||||
|
||||
@ApiModelProperty(value = "用户昵称")
|
||||
private String nickname;
|
||||
private String adminName;
|
||||
|
||||
@ApiModelProperty(value = "请求类型: GET/POST/PUT")
|
||||
private String account;
|
||||
|
||||
@ApiModelProperty("操作标题")
|
||||
private String action;
|
||||
|
||||
@ApiModelProperty("请求类型: GET/POST/PUT")
|
||||
private String type;
|
||||
|
||||
@ApiModelProperty(value = "操作标题")
|
||||
private String title;
|
||||
|
||||
@ApiModelProperty(value = "请求方式")
|
||||
private String method;
|
||||
|
||||
@ApiModelProperty(value = "请求IP")
|
||||
private String ip;
|
||||
|
||||
@ApiModelProperty(value = "请求地址")
|
||||
@ApiModelProperty("请求接口")
|
||||
private String url;
|
||||
|
||||
@ApiModelProperty(value = "请求参数")
|
||||
private String args;
|
||||
@ApiModelProperty("请求参数")
|
||||
private String params;
|
||||
|
||||
@ApiModelProperty(value = "错误信息")
|
||||
private String error;
|
||||
@ApiModelProperty("请求结果")
|
||||
private String result;
|
||||
|
||||
@ApiModelProperty(value = "执行状态: [1=成功, 2=失败]")
|
||||
private Integer status;
|
||||
@ApiModelProperty("请求IP")
|
||||
private String ip;
|
||||
|
||||
@ApiModelProperty(value = "执行耗时")
|
||||
private String taskTime;
|
||||
|
||||
@ApiModelProperty(value = "开始时间")
|
||||
private String startTime;
|
||||
|
||||
@ApiModelProperty(value = "结束时间")
|
||||
private String endTime;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
@ApiModelProperty("创建时间")
|
||||
private String createTime;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ import java.io.Serializable;
|
|||
|
||||
@Data
|
||||
@ApiModel("系统操作日志实体")
|
||||
public class SystemLogOperate implements Serializable {
|
||||
public class OperationLog implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
|
|
@ -21,38 +21,27 @@ public class SystemLogOperate implements Serializable {
|
|||
@ApiModelProperty("操作人ID")
|
||||
private Integer adminId;
|
||||
|
||||
@ApiModelProperty("请求类型: GET/POST/PUT")
|
||||
private String type;
|
||||
private String adminName;
|
||||
|
||||
private String account;
|
||||
|
||||
@ApiModelProperty("操作标题")
|
||||
private String title;
|
||||
private String action;
|
||||
|
||||
@ApiModelProperty("请求方法")
|
||||
private String method;
|
||||
|
||||
@ApiModelProperty("请求IP")
|
||||
private String ip;
|
||||
@ApiModelProperty("请求类型: GET/POST/PUT")
|
||||
private String type;
|
||||
|
||||
@ApiModelProperty("请求接口")
|
||||
private String url;
|
||||
|
||||
@ApiModelProperty("请求参数")
|
||||
private String args;
|
||||
private String params;
|
||||
|
||||
@ApiModelProperty("错误信息")
|
||||
private String error;
|
||||
@ApiModelProperty("请求结果")
|
||||
private String result;
|
||||
|
||||
@ApiModelProperty("执行状态: [1=成功, 2=失败]")
|
||||
private Integer status;
|
||||
|
||||
@ApiModelProperty("开始时间")
|
||||
private Long startTime;
|
||||
|
||||
@ApiModelProperty("结束时间")
|
||||
private Long endTime;
|
||||
|
||||
@ApiModelProperty("执行耗时")
|
||||
private Long taskTime;
|
||||
@ApiModelProperty("请求IP")
|
||||
private String ip;
|
||||
|
||||
@ApiModelProperty("创建时间")
|
||||
private Long createTime;
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
package com.mdd.common.mapper.system;
|
||||
|
||||
import com.mdd.common.core.basics.IBaseMapper;
|
||||
import com.mdd.common.entity.system.SystemLogOperate;
|
||||
import com.mdd.common.entity.system.OperationLog;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* 系统操作日志
|
||||
*/
|
||||
@Mapper
|
||||
public interface SystemLogOperateMapper extends IBaseMapper<SystemLogOperate> {
|
||||
public interface SystemLogOperateMapper extends IBaseMapper<OperationLog> {
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue