| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- import BaseService from '../../base';
- import { UAParser } from 'ua-parser-js';
- /**
- * 登录日志服务
- */
- export default class SysLoginLogService extends BaseService {
- /**
- * 记录登录日志
- */
- async save(id: number) {
- await this.getRepo().admin.sys.LoginLog.save({
- ip: this.getHelper().getReqIP(),
- userId: id,
- ua: this.ctx.get('user-agent'),
- });
- }
- /**
- * 计算日志总数
- */
- async count() {
- return await this.getRepo().admin.sys.LoginLog.count();
- }
- /**
- * 分页加载日志信息
- */
- async page(page: number, count: number) {
- // const result = await this.getRepo().admin.sys.LoginLog.find({
- // order: {
- // id: 'DESC',
- // },
- // take: count,
- // skip: page * count,
- // });
- const result = await this.getRepo().admin.sys.LoginLog.createQueryBuilder('login_log')
- .innerJoinAndSelect('sys_user', 'user', 'login_log.user_id = user.id')
- .orderBy('login_log.createTime', 'DESC')
- .offset(page * count)
- .limit(count)
- .getRawMany();
- const parser = new UAParser();
- return result.map(e => {
- const u = parser.setUA(e.login_log_ua).getResult();
- return {
- id: e.login_log_id,
- ip: e.login_log_ip,
- os: `${u.os.name} ${u.os.version}`,
- browser: `${u.browser.name} ${u.browser.version}`,
- time: e.login_log_createTime,
- username: e.user_username,
- };
- });
- }
- /**
- * 清空表中的所有数据
- */
- async clear() {
- await this.getRepo().admin.sys.LoginLog.clear();
- }
- }
|