“mitao”
2026-01-20 4e5beb844f03daec12f2b039365730b0683f8a9e
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package com.estate.expert.admin.service.impl;
 
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.estate.expert.admin.domain.business.client.ClientRepository;
import com.estate.expert.admin.domain.business.screenaccount.ScreenAccount;
import com.estate.expert.admin.domain.business.screenaccount.ScreenAccountDto;
import com.estate.expert.admin.domain.business.screenaccount.ScreenAccountMapper;
import com.estate.expert.admin.domain.business.screenaccount.ScreenAccountRepository;
import com.estate.expert.admin.domain.common.EntityBase;
import com.estate.expert.admin.domain.common.request.PageReq;
import com.estate.expert.admin.domain.project.ProjectRepository;
import com.estate.expert.admin.domain.repository.ScreenAccountMybatisMapper;
import com.estate.expert.admin.domain.user.User;
import com.estate.expert.admin.enums.BizResultCode;
import com.estate.expert.admin.service.ScreenAccountService;
import com.estate.expert.admin.utils.MD5Utils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
 
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
 
/**
 * 大屏账号服务实现
 */
@Slf4j
@Service
public class ScreenAccountServiceImpl extends ServiceImpl<ScreenAccountMybatisMapper, ScreenAccount> implements ScreenAccountService {
 
    @Resource
    private ScreenAccountRepository screenAccountRepository;
 
    @Resource
    private ClientRepository clientRepository;
 
    @Resource
    private ProjectRepository projectRepository;
 
    @Resource
    private ScreenAccountMybatisMapper screenAccountMybatisMapper;
 
    @Override
    public Page<ScreenAccountDto> list(String name, String keyword, Integer type,PageReq pageReq) {
        List<Integer> clientListIds =null;
        List<Integer> projectIds =null;
        if(keyword!=null && !keyword.isEmpty()){
            // 查出client表name匹配的数据
            clientListIds = clientRepository.listClientIds(keyword);
            if(clientListIds.isEmpty()){
                clientListIds.add(-1);
            }
 
            // 查出项目
            projectIds = projectRepository.listProjectIds(keyword);
            if(projectIds.isEmpty()){
                projectIds.add(-1);
            }
        }
        Page<ScreenAccountDto> page = new Page<>(pageReq.getPage(), pageReq.getSize());
        List<ScreenAccountDto> list = screenAccountMybatisMapper.list(page, name,keyword, type,clientListIds, projectIds);
        if(!list.isEmpty()){
            for (ScreenAccountDto screenAccountDto : list) {
                if(screenAccountDto.getType()==1){
                    String clientProjectIds = screenAccountDto.getClientProjectIds();
                    List<String>  clientNameList = screenAccountMybatisMapper.getClientNameList(List.of(clientProjectIds.split(",")));
                    screenAccountDto.setClientOrProject(String.join(",", clientNameList));
                }
                if(screenAccountDto.getType()==2){
                    String clientProjectIds = screenAccountDto.getClientProjectIds();
                    List<String>  projectNameList = screenAccountMybatisMapper.getProjectNameList(List.of(clientProjectIds.split(",")));
                    screenAccountDto.setClientOrProject(String.join(",", projectNameList));
                }
            }
        }
        page.setRecords(list);
        return page;
    }
 
 
    @Override
    public boolean existsByAccount(String account) {
        List<ScreenAccount> screenAccounts = screenAccountMybatisMapper.selectList(new LambdaUpdateWrapper<ScreenAccount>().eq(ScreenAccount::getAccount, account).eq(EntityBase::isDeleted, false));
        return !screenAccounts.isEmpty();
    }
 
    @Override
    public boolean existsByAccountAndIdNot(String account, Integer id) {
        List<ScreenAccount> screenAccounts = screenAccountMybatisMapper.selectList(new LambdaUpdateWrapper<ScreenAccount>().eq(ScreenAccount::getAccount, account).ne(EntityBase::getId,id).eq(EntityBase::isDeleted, false));
        return !screenAccounts.isEmpty();
    }
 
    @Override
    public ScreenAccount getUserFromMobile(String mobile) {
        return this.baseMapper.getUserFromMobile(mobile);
    }
 
//    @Override
//    public ScreenAccount add(User creator, ScreenAccount entity) {
//        // 检查账号名称是否已存在
//        BizResultCode.ENTITY_NAME_ALREADY_EXISTS.check(entityRepository.existsByName(entity.getName()));
//        // 检查登录账号是否已存在
//        BizResultCode.ACCOUNT_ALREADY_EXISTS.check(screenAccountRepository.existsByAccount(entity.getAccount()));
//        // 密码加密
//        entity.setPassword(MD5Utils.encrypt(entity.getPassword()));
//        entity.setId(null);
//        entity.setCreator(creator);
//        entity.setCreateTime(LocalDateTime.now());
//        entity.setUpdateTime(LocalDateTime.now());
//        return save(entity);
//    }
//
//    @Override
//    public ScreenAccount edit(ScreenAccount entity) {
//        // 检查账号名称是否已存在
//        var otherEntity = entityRepository.findByName(entity.getName());
//        BizResultCode.ENTITY_NAME_ALREADY_EXISTS.check(otherEntity != null && !otherEntity.getId().equals(entity.getId()));
//        // 检查登录账号是否已存在
//        var otherAccount = screenAccountRepository.findByAccount(entity.getAccount());
//        BizResultCode.ACCOUNT_ALREADY_EXISTS.check(otherAccount != null && !otherAccount.getId().equals(entity.getId()));
//        // 如果密码不为空,说明要修改密码,进行加密
//        if (entity.getPassword() != null && !entity.getPassword().equals(get(entity.getId()).getPassword())) {
//            entity.setPassword(MD5Utils.encrypt(entity.getPassword()));
//        } else {
//            // 否则保持原密码
//            entity.setPassword(get(entity.getId()).getPassword());
//        }
//        entity.setUpdateTime(LocalDateTime.now());
//        return save(entity);
//    }
}