6
jinlin
2023-12-04 35d048aa5c0eecd6a737c04278779b0720b0e3db
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/**
 * Copyright (c) 2018 人人开源 All rights reserved.
 *
 * https://www.renren.io
 *
 * 版权所有,侵权必究!
 */
 
package com.zt.modules.log.service;
 
import com.zt.common.db.query.QueryFilter;
import com.zt.common.service.BaseService;
import com.zt.core.context.UserContext;
import com.zt.modules.log.dao.SysLogLoginDao;
import com.zt.modules.log.model.SysLogLogin;
import com.zt.modules.sys.dto.RoleDto;
import com.zt.modules.sys.model.SysRole;
import com.zt.modules.sys.service.SysRoleService;
import com.zt.modules.sys.service.SysRoleUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
 
import java.util.List;
import java.util.stream.Collectors;
 
/**
 * 登录日志
 *
 * @author Mark sunlightcs@gmail.com
 * @since 1.0.0
 */
@Service
public class SysLogLoginService extends BaseService<SysLogLoginDao, SysLogLogin> {
    @Autowired
    private SysRoleService sysRoleService;
 
    @Autowired
    private SysRoleUserService sysRoleUserService;
 
 
 
    public List<SysLogLogin> page(QueryFilter queryFilter) {
        String roleName = "";
        List<RoleDto> roles = sysRoleUserService.getUserRoles(UserContext.getUser().getId());
        if (roles != null && roles.size() > 0) {
            // 同时拥有两种权限查看全部
            if (roles.stream().filter(p -> p.getCode().equals("xtbmybm")).count() > 0
                    && roles.stream().filter(p -> p.getCode().equals("xtsjybm")).count() > 0) {
                roleName = "all";
            } else {
                // 如果当前用户拥有角色编码为xtbmy的角色权限,则查看除系统管理员(拥有角色编码为xtgly权限的用户)、系统保密员(拥有角色编码为xtsjy权限的用户)以外的用户登录、操作日志
                if (roles.stream().filter(p -> p.getCode().equals("xtbmybm")).count() > 0) {
                    roleName = "xtbmybm";
                }
                // 如果当前用户拥有角色编码为xtsjy的角色权限,则查看系统管理员(拥有角色编码为xtgly权限的用户)、系统保密员的登录(拥有角色编码为xtsjy权限的用户)、操作日志
                else if (roles.stream().filter(p -> p.getCode().equals("xtsjybm")).count() > 0) {
                    roleName = "xtsjybm";
                } else {
                    roleName = "other";
                }
            }
        } else {
            roleName = "other";
        }
        queryFilter.addParam("action", roleName);
        queryFilter.addParam("currentUserId", UserContext.getUser().getId());
        List<SysLogLogin> list = baseDao.getList(queryFilter.getQueryParams());
        return queryFilter.getPageList(list);
    }
 
    public List<SysLogLogin> list(QueryFilter queryFilter) {
        return super.query(queryFilter);
    }
 
    @Transactional(rollbackFor = Exception.class)
    public void insert(SysLogLogin entity) {
        baseDao.insert(entity);
    }
}