package com.cyksj.web.controller.manage; import cn.dev33.satoken.annotation.SaCheckLogin; import cn.dev33.satoken.annotation.SaCheckRole; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.cyksj.common.exception.BusinessRuntimeException; import com.cyksj.dto.Result; import com.cyksj.enums.GatewayResponse; import com.cyksj.mapper.LoginAuditMapper; import com.cyksj.model.entity.LoginAudit; import lombok.RequiredArgsConstructor; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.web.bind.annotation.*; import java.util.Date; @RestController @RequestMapping("/manage/login/audit") @SaCheckLogin @SaCheckRole("root") @RequiredArgsConstructor public class LoginAuditController { private final LoginAuditMapper mapper; @GetMapping("/get") public Result> list(@RequestParam(defaultValue = "1") int start, @RequestParam(defaultValue = "20") int limit, String loginType, String loginId, String account, String result, String loginMethod, String ip, @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date from, @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date to) { if (start < 1 || limit < 1 || limit > 100 || (from != null && to != null && from.after(to))) { throw BusinessRuntimeException.getInstance("查询参数错误"); } LambdaQueryWrapper query = new LambdaQueryWrapper() .eq(loginType != null, LoginAudit::getLoginType, loginType) .eq(loginId != null, LoginAudit::getLoginId, loginId) .eq(account != null, LoginAudit::getAccount, account) .eq(result != null, LoginAudit::getResult, result) .eq(loginMethod != null, LoginAudit::getLoginMethod, loginMethod) .ge(from != null, LoginAudit::getCreatedTime, from) .le(to != null, LoginAudit::getCreatedTime, to) .orderByDesc(LoginAudit::getId); if (ip != null) query.and(q -> q.eq(LoginAudit::getRemoteIp, ip).or().eq(LoginAudit::getRealIp, ip)); return GatewayResponse.SUCCESS.newBuilder().toResult(mapper.selectPage(new Page<>(start, limit), query)); } }