| | |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.util.PhoneUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.Wrapper; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.xiaopeng.api.dto.account.UcUserInfo; |
| | | import com.xiaopeng.api.feignClient.account.UserResourcesClient; |
| | |
| | | import com.xiaopeng.api.model.operation.XpWhitelistOperlog; |
| | | import com.xiaopeng.common.core.domain.R; |
| | | import com.xiaopeng.common.core.exception.ServiceException; |
| | | import com.xiaopeng.common.core.utils.SensitiveDataCryptoUtil; |
| | | import com.xiaopeng.common.core.utils.ip.IpUtils; |
| | | import com.xiaopeng.common.core.web.page.PageInfo; |
| | | import com.xiaopeng.operation.constant.I18nKeyConstant; |
| | |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.StringUtils; |
| | | |
| | | import java.io.Serializable; |
| | | import java.time.LocalDate; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | |
| | | |
| | | @Override |
| | | public PageInfo<XpWhitelist> pageList(WhitelistPageListQuery query) { |
| | | query.setAccountQueryValues(SensitiveDataCryptoUtil.queryValues(query.getAccount())); |
| | | PageInfo<XpWhitelist> pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize()); |
| | | List<XpWhitelist> list = this.baseMapper.pageList(pageInfo,query); |
| | | decryptWhitelistAccounts(list); |
| | | pageInfo.setRecords(list); |
| | | return pageInfo; |
| | | } |
| | | |
| | | @Override |
| | | public List<XpWhitelist> exportList(WhitelistPageListQuery query) { |
| | | query.setAccountQueryValues(SensitiveDataCryptoUtil.queryValues(query.getAccount())); |
| | | List<XpWhitelist> list = this.baseMapper.exportList(query); |
| | | decryptWhitelistAccounts(list); |
| | | return list; |
| | | } |
| | | |
| | |
| | | |
| | | Set<String> existsAccounts = new HashSet<>(); |
| | | if (CollUtil.isNotEmpty(candidates)) { |
| | | existsAccounts = this.lambdaQuery() |
| | | Set<String> existsStoredAccounts = this.lambdaQuery() |
| | | .select(XpWhitelist::getAccount) |
| | | .in(XpWhitelist::getAccount, candidates) |
| | | .in(XpWhitelist::getAccount, buildQueryValues(candidates)) |
| | | .list() |
| | | .stream() |
| | | .map(XpWhitelist::getAccount) |
| | | .filter(StringUtils::hasLength) |
| | | .collect(Collectors.toSet()); |
| | | existsAccounts = existsStoredAccounts.stream() |
| | | .map(SensitiveDataCryptoUtil::decryptIfPossible) |
| | | .collect(Collectors.toSet()); |
| | | } |
| | | |
| | |
| | | continue; |
| | | } |
| | | XpWhitelist xpWhitelist = new XpWhitelist(); |
| | | xpWhitelist.setAccount(account); |
| | | xpWhitelist.setAccount(SensitiveDataCryptoUtil.encrypt(account)); |
| | | xpWhitelist.setNickName(userMap.get(account).getNickName()); |
| | | xpWhitelist.setAppUserId(userMap.get(account).getUid()); |
| | | xpWhitelist.setStatus(true); |
| | |
| | | StringBuilder operationContent = new StringBuilder("新增账号:"); |
| | | StringBuilder accountBuilder = new StringBuilder(); |
| | | for (XpWhitelist item : addList) { |
| | | accountBuilder.append("\"").append(item.getAccount()).append("\"").append(","); |
| | | accountBuilder.append("\"").append(SensitiveDataCryptoUtil.decryptIfPossible(item.getAccount())).append("\"").append(","); |
| | | } |
| | | if (accountBuilder.length() > 0) { |
| | | operationContent.append(accountBuilder.substring(0, accountBuilder.length() - 1)); |
| | |
| | | } |
| | | UcUserInfo userByAccount = this.getUserByAccount(dto.getAccount()); |
| | | XpWhitelist old = this.lambdaQuery() |
| | | .eq(XpWhitelist::getAccount, dto.getAccount()) |
| | | .in(XpWhitelist::getAccount, SensitiveDataCryptoUtil.queryValues(dto.getAccount())) |
| | | .ne(XpWhitelist::getId, dto.getId()) |
| | | .last("limit 1").one(); |
| | | if (old != null) { |
| | | return R.fail("该账号已存在"); |
| | | } |
| | | XpWhitelist whitelist = this.getById(dto.getId()); |
| | | whitelist.setAccount(SensitiveDataCryptoUtil.decryptIfPossible(whitelist.getAccount())); |
| | | |
| | | whitelist.setAppUserId(userByAccount.getUid()); |
| | | |
| | |
| | | xpWhitelistOperlogMapper.insert(xpWhitelistOperlog); |
| | | whitelist.setNickName(dto.getNickName()); |
| | | whitelist.setIsPriorityDispatch(dto.getIsPriorityDispatch()); |
| | | whitelist.setAccount(dto.getAccount()); |
| | | whitelist.setAccount(SensitiveDataCryptoUtil.encrypt(dto.getAccount())); |
| | | whitelist.setStatus(dto.getStatus()); |
| | | this.updateById(whitelist); |
| | | return R.ok(); |
| | |
| | | @Override |
| | | public R freezeUnfreeze(Long id, SysUser sysUser) { |
| | | XpWhitelist whitelist = this.getById(id); |
| | | whitelist.setAccount(SensitiveDataCryptoUtil.decryptIfPossible(whitelist.getAccount())); |
| | | StringBuilder operationContent = new StringBuilder("编辑账号:"+"\""+whitelist.getAccount()+"\""); |
| | | StringBuilder accountBuilder = new StringBuilder(); |
| | | accountBuilder.append("状态" + "\"" + (whitelist.getIsPriorityDispatch() ? "正常" : "冻结") + "\"" + "为" + "\"" + (!whitelist.getIsPriorityDispatch() ? "正常" : "冻结") + "\""); |
| | |
| | | @Override |
| | | public R deleteByIds(List<Long> ids, SysUser sysUser) { |
| | | List<String> accounts = this.lambdaQuery().in(XpWhitelist::getId, ids).list() |
| | | .stream().map(XpWhitelist::getAccount).collect(Collectors.toList()); |
| | | .stream().map(XpWhitelist::getAccount) |
| | | .map(SensitiveDataCryptoUtil::decryptIfPossible) |
| | | .collect(Collectors.toList()); |
| | | this.removeBatchByIds(ids); |
| | | StringBuilder operationContent = new StringBuilder("删除账号:"); |
| | | StringBuilder accountBuilder = new StringBuilder(); |
| | |
| | | @Override |
| | | public List<String> getAllWhiteList() { |
| | | return lambdaQuery().select(XpWhitelist::getAccount).list() |
| | | .stream().map(XpWhitelist::getAccount).collect(Collectors.toList()); |
| | | .stream().map(XpWhitelist::getAccount) |
| | | .map(SensitiveDataCryptoUtil::decryptIfPossible) |
| | | .collect(Collectors.toList()); |
| | | } |
| | | |
| | | private static List<String> buildQueryValues(Collection<String> plainValues) { |
| | | Set<String> values = new LinkedHashSet<>(); |
| | | if (plainValues == null) { |
| | | return new ArrayList<>(); |
| | | } |
| | | for (String plainValue : plainValues) { |
| | | if (StringUtils.hasLength(plainValue)) { |
| | | values.addAll(SensitiveDataCryptoUtil.queryValues(plainValue)); |
| | | } |
| | | } |
| | | return new ArrayList<>(values); |
| | | } |
| | | |
| | | private static void decryptWhitelistAccounts(List<XpWhitelist> list) { |
| | | if (CollUtil.isEmpty(list)) { |
| | | return; |
| | | } |
| | | for (XpWhitelist item : list) { |
| | | item.setAccount(SensitiveDataCryptoUtil.decryptIfPossible(item.getAccount())); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public XpWhitelist getById(Serializable id) { |
| | | XpWhitelist whitelist = super.getById(id); |
| | | decryptWhitelistAccount(whitelist); |
| | | return whitelist; |
| | | } |
| | | |
| | | @Override |
| | | public boolean save(XpWhitelist entity) { |
| | | encryptWhitelistAccount(entity); |
| | | try { |
| | | return super.save(entity); |
| | | } finally { |
| | | decryptWhitelistAccount(entity); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public boolean saveBatch(Collection<XpWhitelist> entityList) { |
| | | if (entityList != null) { |
| | | entityList.forEach(this::encryptWhitelistAccount); |
| | | } |
| | | try { |
| | | return super.saveBatch(entityList); |
| | | } finally { |
| | | decryptWhitelistAccounts(entityList); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public boolean updateById(XpWhitelist entity) { |
| | | encryptWhitelistAccount(entity); |
| | | try { |
| | | return super.updateById(entity); |
| | | } finally { |
| | | decryptWhitelistAccount(entity); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public boolean updateBatchById(Collection<XpWhitelist> entityList) { |
| | | if (entityList != null) { |
| | | entityList.forEach(this::encryptWhitelistAccount); |
| | | } |
| | | try { |
| | | return super.updateBatchById(entityList); |
| | | } finally { |
| | | decryptWhitelistAccounts(entityList); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public List<XpWhitelist> list(Wrapper<XpWhitelist> queryWrapper) { |
| | | List<XpWhitelist> list = super.list(queryWrapper); |
| | | decryptWhitelistAccounts(list); |
| | | return list; |
| | | } |
| | | |
| | | @Override |
| | | public List<XpWhitelist> list() { |
| | | List<XpWhitelist> list = super.list(); |
| | | decryptWhitelistAccounts(list); |
| | | return list; |
| | | } |
| | | |
| | | private void encryptWhitelistAccount(XpWhitelist whitelist) { |
| | | if (whitelist != null) { |
| | | whitelist.setAccount(SensitiveDataCryptoUtil.encrypt(whitelist.getAccount())); |
| | | } |
| | | } |
| | | |
| | | private static void decryptWhitelistAccount(XpWhitelist whitelist) { |
| | | if (whitelist != null) { |
| | | whitelist.setAccount(SensitiveDataCryptoUtil.decryptIfPossible(whitelist.getAccount())); |
| | | } |
| | | } |
| | | |
| | | private void decryptWhitelistAccounts(Collection<XpWhitelist> list) { |
| | | if (CollUtil.isEmpty(list)) { |
| | | return; |
| | | } |
| | | for (XpWhitelist item : list) { |
| | | decryptWhitelistAccount(item); |
| | | } |
| | | } |
| | | } |