智慧保安后台管理-外网项目备份
Administrator
2022-01-07 b6c999b2bb066b9147be00b9cdf41b2638e5a70d
登录记录新增
1 files modified
8 files added
388 ■■■■■ changed files
src/main/java/org/springblade/common/config/ServerConfig.java 66 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/auth/endpoint/BladeTokenEndPoint.java 38 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/loginrecord/controller/LoginRecordController.java 94 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/loginrecord/entity/LoginRecord.java 74 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/loginrecord/mapper/LoginRecordMapper.java 25 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/loginrecord/mapper/LoginRecordMapper.xml 22 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/loginrecord/service/LoginRecordService.java 20 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/loginrecord/service/impl/LoginRecordServiceImpl.java 32 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/loginrecord/vo/LoginRecordVo.java 17 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/common/config/ServerConfig.java
New file
@@ -0,0 +1,66 @@
package org.springblade.common.config;
import org.springframework.boot.web.context.WebServerInitializedEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
import java.net.InetAddress;
import java.net.UnknownHostException;
/**
 * 服务器配置
 * @author zhongrj
 * @since 2022-01-07
 */
@Component
public class ServerConfig implements ApplicationListener<WebServerInitializedEvent> {
    private int serverPort;
    /**
     * 获取服务器 url
     * @return
     */
    public String getUrl() {
        InetAddress address = null;
        try {
            address = InetAddress.getLocalHost();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        return "http://"+address.getHostAddress() +":"+this.serverPort;
    }
    /**
     * 获取服务器 ip
     * @return
     */
    public String getServerIp() {
        InetAddress address = null;
        try {
            address = InetAddress.getLocalHost();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        return address.getHostAddress();
    }
    /**
     * 获取服务器 hostname
     * @return
     */
    public String getServerHostName() {
        InetAddress address = null;
        try {
            address = InetAddress.getLocalHost();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        return address.getHostName();
    }
    @Override
    public void onApplicationEvent(WebServerInitializedEvent event) {
        this.serverPort = event.getWebServer().getPort();
    }
}
src/main/java/org/springblade/modules/auth/endpoint/BladeTokenEndPoint.java
@@ -23,6 +23,7 @@
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import org.springblade.common.cache.CacheNames;
import org.springblade.common.config.ServerConfig;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.jwt.JwtUtil;
import org.springblade.core.jwt.props.JwtProperties;
@@ -43,12 +44,18 @@
import org.springblade.modules.exam.entity.ExamPaper;
import org.springblade.modules.exam.service.ExamPaperService;
import org.springblade.modules.exam.vo.ExamPaperVO;
import org.springblade.modules.loginrecord.entity.LoginRecord;
import org.springblade.modules.loginrecord.service.LoginRecordService;
import org.springblade.modules.system.entity.UserInfo;
import org.springblade.modules.zc.service.IZcService;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.time.Duration;
import java.util.Date;
import java.util.List;
import java.util.UUID;
@@ -71,6 +78,10 @@
    private final JwtProperties jwtProperties;
    private final IZcService iZcService;
    private final ExamPaperService examPaperService;
    private final LoginRecordService loginRecordService;
    private final ServerConfig serverConfig;
    /**
     * 登录
@@ -131,10 +142,37 @@
                    }
                }
            }
        }else {
            //新增登录记录
            this.saveLoginRecord(userInfo);
        }
        return TokenUtil.createAuthInfo(userInfo);
    }
    /**
     * 新增登录记录信息
     * @param userInfo
     */
    private void saveLoginRecord(UserInfo userInfo) {
        //创建对象
        LoginRecord loginRecord = new LoginRecord();
        //request 对象获取
        ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = requestAttributes.getRequest();
        //数据封装
        loginRecord.setCreateTime(new Date());
        loginRecord.setServerIp(serverConfig.getServerIp());
        loginRecord.setServerHost(serverConfig.getServerHostName());
        loginRecord.setRequestUri(request.getRequestURI());
        loginRecord.setRemoteIp(request.getRemoteAddr());
        loginRecord.setDeptId(userInfo.getUser().getDeptId());
        loginRecord.setUserId(userInfo.getUser().getId());
        loginRecord.setType("1");
        loginRecord.setCreateBy(userInfo.getUser().getRealName());
        //新增
        loginRecordService.save(loginRecord);
    }
    @GetMapping("/oauth/logout")
    @ApiOperation(value = "退出登录")
src/main/java/org/springblade/modules/loginrecord/controller/LoginRecordController.java
New file
@@ -0,0 +1,94 @@
package org.springblade.modules.loginrecord.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.modules.loginrecord.entity.LoginRecord;
import org.springblade.modules.loginrecord.service.LoginRecordService;
import org.springblade.modules.loginrecord.vo.LoginRecordVo;
import org.springframework.web.bind.annotation.*;
/**
 * @author zhongrj
 * @time 2022-01-07
 * @desc 登录记录控制层
 */
@RestController
@AllArgsConstructor
@RequestMapping("/loginRecord")
public class LoginRecordController {
    private final LoginRecordService loginRecordService;
    /**
     * 自定义分页
     * @param query page,size
     * @param loginRecord 登录记录信息对象
     */
    @GetMapping("/page")
    public R<IPage<LoginRecordVo>> page(LoginRecordVo loginRecord, Query query) {
        IPage<LoginRecordVo> pages = loginRecordService.selectSecurityPaperPage(Condition.getPage(query), loginRecord);
        return R.data(pages);
    }
    /**
     * 新增
     * @param loginRecord 登录记录信息对象
     */
    @PostMapping("/save")
    @ApiOperation(value = "新增", notes = "传入loginRecord")
    public R save(@RequestBody LoginRecord loginRecord){
        return R.data(loginRecordService.save(loginRecord));
    }
    /**
     * 修改
     * @param loginRecord 登录记录信息对象
     */
    @PostMapping("/update")
    public R update(@RequestBody LoginRecord loginRecord){
        return R.status(loginRecordService.updateById(loginRecord));
    }
    /**
     * 新增或修改
     * @param loginRecord 登录记录信息对象
     */
    @PostMapping("/submit")
    public R submit(@RequestBody LoginRecord loginRecord){
        if (null==loginRecord.getId()){
            loginRecordService.save(loginRecord);
        }else {
            loginRecordService.updateById(loginRecord);
        }
        return R.data(loginRecord);
    }
    /**
     * 删除
     * @param ids 登录记录信息ids 数组
     */
    @PostMapping("/remove")
    public R remove(@ApiParam(value = "主键集合") @RequestParam String ids) {
        return R.status(loginRecordService.removeByIds(Func.toLongList(ids)));
    }
    /**
     * 详情
     * @param loginRecord 登录记录信息对象
     */
    @GetMapping("/detail")
    @ApiOperation(value = "详情", notes = "传入loginRecord")
    public R<LoginRecord> detail(LoginRecord loginRecord) {
        LoginRecord detail = loginRecordService.getOne(Condition.getQueryWrapper(loginRecord));
        return R.data(detail);
    }
}
src/main/java/org/springblade/modules/loginrecord/entity/LoginRecord.java
New file
@@ -0,0 +1,74 @@
package org.springblade.modules.loginrecord.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
 * 登录记录实体类
 * @author zhongrj
 * @time 2022-01-07
 */
@Data
@TableName("sys_login_record")
public class LoginRecord implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 登录记录主键id,非自增
     */
    @TableId(value = "id",type = IdType.ASSIGN_ID)
    private Long id;
    private Long userId;
    /**
     * 服务器名
     */
    private String serverHost;
    /**
     * 服务器ip
     */
    private String serverIp;
    /**
     * 登录类型  1:外网  2:内网
     */
    private String type;
    /**
     * 请求uri
     */
    private String requestUri;
    /**
     * 请求ip
     */
    private String remoteIp;
    /**
     * 请求人姓名
     */
    private String createBy;
    /**
     * 创建时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    /**
     * 公司部门id
     */
    private String deptId;
}
src/main/java/org/springblade/modules/loginrecord/mapper/LoginRecordMapper.java
New file
@@ -0,0 +1,25 @@
package org.springblade.modules.loginrecord.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param;
import org.springblade.modules.loginrecord.entity.LoginRecord;
import org.springblade.modules.loginrecord.vo.LoginRecordVo;
import java.util.List;
/**
 * 工商信息Mapper 接口
 * @author zhongrj
 */
public interface LoginRecordMapper extends BaseMapper<LoginRecord> {
    /**
     * 登录记录自定义分页
     * @param page
     * @param loginRecord
     * @return
     */
    List<LoginRecordVo> selectSecurityPaperPage(@Param("page") IPage<LoginRecordVo> page,@Param("loginRecord") LoginRecordVo loginRecord);
}
src/main/java/org/springblade/modules/loginrecord/mapper/LoginRecordMapper.xml
New file
@@ -0,0 +1,22 @@
<?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="org.springblade.modules.loginrecord.mapper.LoginRecordMapper">
    <!--登录记录自定义分页信息-->
    <select id="selectSecurityPaperPage" resultType="org.springblade.modules.loginrecord.vo.LoginRecordVo">
        select
            slr.*,
            bd.dept_name deptName
        from
            sys_login_record slr
        left join blade_dept bd on bd.id = slr.dept_id
        <if test="loginRecord.deptName!=null and loginRecord.deptName!=''">
            bd.dept_name like concat('%',#{loginRecord.deptName},'%')
        </if>
        <if test="loginRecord.createBy!=null and loginRecord.createBy!=''">
            slr.create_by like concat('%',#{loginRecord.createBy},'%')
        </if>
        order by slr.id desc
    </select>
</mapper>
src/main/java/org/springblade/modules/loginrecord/service/LoginRecordService.java
New file
@@ -0,0 +1,20 @@
package org.springblade.modules.loginrecord.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.modules.loginrecord.entity.LoginRecord;
import org.springblade.modules.loginrecord.vo.LoginRecordVo;
/**
 * 登录记录服务类
 * @author zhongrj
 */
public interface LoginRecordService extends IService<LoginRecord> {
    /**
     * 自定义分页
     * @param page
     * @param loginRecord 登录记录信息对象
     */
    IPage<LoginRecordVo> selectSecurityPaperPage(IPage<LoginRecordVo> page, LoginRecordVo loginRecord);
}
src/main/java/org/springblade/modules/loginrecord/service/impl/LoginRecordServiceImpl.java
New file
@@ -0,0 +1,32 @@
package org.springblade.modules.loginrecord.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.AllArgsConstructor;
import org.springblade.modules.loginrecord.entity.LoginRecord;
import org.springblade.modules.loginrecord.mapper.LoginRecordMapper;
import org.springblade.modules.loginrecord.service.LoginRecordService;
import org.springblade.modules.loginrecord.vo.LoginRecordVo;
import org.springframework.stereotype.Service;
/**
 * 保安员证管理服务实现类
 * @author zhongrj
 * @since 2022-01-07
 */
@Service
@AllArgsConstructor
public class LoginRecordServiceImpl extends ServiceImpl<LoginRecordMapper, LoginRecord> implements LoginRecordService {
    /**
     * 自定义分页
     * @param page
     * @param loginRecord 登录记录信息对象
     * @return
     */
    @Override
    public IPage<LoginRecordVo> selectSecurityPaperPage(IPage<LoginRecordVo> page, LoginRecordVo loginRecord) {
        return page.setRecords(baseMapper.selectSecurityPaperPage(page,loginRecord));
    }
}
src/main/java/org/springblade/modules/loginrecord/vo/LoginRecordVo.java
New file
@@ -0,0 +1,17 @@
package org.springblade.modules.loginrecord.vo;
import lombok.Data;
import org.springblade.modules.loginrecord.entity.LoginRecord;
import java.io.Serializable;
/**
 * 登录记录vo
 * @author zhongrj
 * @since 2022-01-07
 */
@Data
public class LoginRecordVo extends LoginRecord implements Serializable {
    private String deptName;
}