package com.xiaopeng.operation.service.impl; import com.xiaopeng.api.model.account.SysUser; import com.xiaopeng.api.model.operation.XpWhitelist; import com.xiaopeng.api.model.operation.XpWhitelistOperlog; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.utils.ip.IpUtils; import com.xiaopeng.common.core.web.domain.AjaxResult; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.operation.dto.WhitelistAddDto; import com.xiaopeng.operation.mapper.XpWhitelistMapper; import com.xiaopeng.operation.mapper.XpWhitelistOperlogMapper; import com.xiaopeng.operation.query.WhitelistPageListQuery; import com.xiaopeng.operation.service.IXpWhitelistService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; /** *

* 白名单管理 服务实现类 *

* * @author mitao * @since 2026-02-03 */ @Service public class XpWhitelistServiceImpl extends ServiceImpl implements IXpWhitelistService { @Autowired private XpWhitelistOperlogMapper xpWhitelistOperlogMapper; @Override public PageInfo pageList(WhitelistPageListQuery query) { PageInfo pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize()); List list = this.baseMapper.pageList(pageInfo,query); pageInfo.setRecords(list); return pageInfo; } @Override public List exportList(WhitelistPageListQuery query) { List list = this.baseMapper.exportList(query); return list; } @Override public R addWhitelist(WhitelistAddDto dto, SysUser sysUser) { List addList = new ArrayList<>(); List accounts = Arrays.asList(dto.getAccount().split(",")); StringBuilder operationContent = new StringBuilder("新增账号:"); StringBuilder accountBuilder = new StringBuilder(); for (String account : accounts) { XpWhitelist xpWhitelist = new XpWhitelist(); xpWhitelist.setAccount(account); xpWhitelist.setStatus(true); xpWhitelist.setIsPriorityDispatch(dto.getIsPriorityDispatch()); xpWhitelist.setWhitelistSource(1); addList.add(xpWhitelist); accountBuilder.append("\"").append(account).append("\"").append(","); } XpWhitelistOperlog xpWhitelistOperlog = new XpWhitelistOperlog(); xpWhitelistOperlog.setOperationName(sysUser.getNickName()); xpWhitelistOperlog.setOperationAccount(sysUser.getPhoneNumber()); xpWhitelistOperlog.setOperationType(1); xpWhitelistOperlog.setOperationIp(IpUtils.getIpAddr()); xpWhitelistOperlog.setOperationAccountId(sysUser.getId()); StringBuilder content = operationContent.append(accountBuilder.substring(0, accountBuilder.length() - 1)); xpWhitelistOperlog.setOperationContent(content.toString()); xpWhitelistOperlogMapper.insert(xpWhitelistOperlog); this.saveBatch(addList); return R.ok(); } @Override public R editWhitelist(XpWhitelist dto, SysUser sysUser) { XpWhitelist whitelist = this.getById(dto.getId()); StringBuilder operationContent = new StringBuilder("编辑账号:"); StringBuilder accountBuilder = new StringBuilder(); if (!whitelist.getAccount().equals(dto.getAccount())) { accountBuilder.append("白名单账号" + "\"" + whitelist.getAccount() + "\"" + "为" + "\"" + dto.getAccount() + "\""); } if (StringUtils.hasLength(whitelist.getNickName()) || StringUtils.hasLength(dto.getNickName())) { if (!StringUtils.hasLength(whitelist.getNickName())) { if (!whitelist.getNickName().equals(dto.getNickName())) { accountBuilder.append("用户名称" + "\"" + whitelist.getNickName() + "\"" + "为" + "\"" + dto.getNickName() + "\""); } } else { if (!whitelist.getNickName().equals(dto.getNickName())) { accountBuilder.append("用户名称" + "\"" + "为" + "\"" + dto.getNickName() + "\""); } } } if (whitelist.getStatus() != dto.getStatus()) { accountBuilder.append("状态" + "\"" + (whitelist.getIsPriorityDispatch() ? "正常" : "冻结") + "\"" + "为" + "\"" + (dto.getIsPriorityDispatch() ? "正常" : "冻结") + "\""); } if (whitelist.getIsPriorityDispatch() != dto.getIsPriorityDispatch()) { accountBuilder.append("优先派单" + "\"" + (whitelist.getIsPriorityDispatch() ? "是" : "否") + "\"" + "为" + "\"" + (dto.getIsPriorityDispatch() ? "是" : "否") + "\""); } XpWhitelistOperlog xpWhitelistOperlog = new XpWhitelistOperlog(); xpWhitelistOperlog.setOperationName(sysUser.getNickName()); xpWhitelistOperlog.setOperationAccount(sysUser.getPhoneNumber()); xpWhitelistOperlog.setOperationType(2); xpWhitelistOperlog.setOperationIp(IpUtils.getIpAddr()); xpWhitelistOperlog.setOperationAccountId(sysUser.getId()); accountBuilder.append("\"").append(dto.getAccount()).append("\""); StringBuilder content = operationContent.append(accountBuilder); xpWhitelistOperlog.setOperationContent(content.toString()); xpWhitelistOperlogMapper.insert(xpWhitelistOperlog); whitelist.setNickName(dto.getNickName()); whitelist.setIsPriorityDispatch(dto.getIsPriorityDispatch()); whitelist.setAccount(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); StringBuilder operationContent = new StringBuilder("编辑账号:"+"\""+whitelist.getAccount()+"\""); StringBuilder accountBuilder = new StringBuilder(); accountBuilder.append("状态" + "\"" + (whitelist.getIsPriorityDispatch() ? "正常" : "冻结") + "\"" + "为" + "\"" + (!whitelist.getIsPriorityDispatch() ? "正常" : "冻结") + "\""); XpWhitelistOperlog xpWhitelistOperlog = new XpWhitelistOperlog(); xpWhitelistOperlog.setOperationName(sysUser.getNickName()); xpWhitelistOperlog.setOperationAccount(sysUser.getPhoneNumber()); xpWhitelistOperlog.setOperationType(2); xpWhitelistOperlog.setOperationIp(IpUtils.getIpAddr()); xpWhitelistOperlog.setOperationAccountId(sysUser.getId()); StringBuilder content = operationContent.append(accountBuilder); xpWhitelistOperlog.setOperationContent(content.toString()); xpWhitelistOperlogMapper.insert(xpWhitelistOperlog); whitelist.setStatus(!whitelist.getStatus()); this.updateById(whitelist); return R.ok(); } @Override public R deleteByIds(List ids, SysUser sysUser) { List accounts = this.lambdaQuery().in(XpWhitelist::getId, ids).list() .stream().map(XpWhitelist::getAccount).collect(Collectors.toList()); this.removeBatchByIds(ids); StringBuilder operationContent = new StringBuilder("删除账号:"); StringBuilder accountBuilder = new StringBuilder(); for (String account : accounts) { accountBuilder.append("\"" + account + "\""+","); } XpWhitelistOperlog xpWhitelistOperlog = new XpWhitelistOperlog(); xpWhitelistOperlog.setOperationName(sysUser.getNickName()); xpWhitelistOperlog.setOperationAccount(sysUser.getPhoneNumber()); xpWhitelistOperlog.setOperationType(3); xpWhitelistOperlog.setOperationIp(IpUtils.getIpAddr()); xpWhitelistOperlog.setOperationAccountId(sysUser.getId()); StringBuilder content = operationContent.append(accountBuilder.substring(0, accountBuilder.length() - 1)); xpWhitelistOperlog.setOperationContent(content.toString()); xpWhitelistOperlogMapper.insert(xpWhitelistOperlog); return R.ok(); } @Override public R freezeByIds(List ids, SysUser sysUser) { List list = this.lambdaQuery().in(XpWhitelist::getId, ids).list(); for (XpWhitelist xpWhitelist : list) { xpWhitelist.setStatus(false); } this.updateBatchById(list); StringBuilder operationContent = new StringBuilder("共计冻结"+ids+"条数据"); XpWhitelistOperlog xpWhitelistOperlog = new XpWhitelistOperlog(); xpWhitelistOperlog.setOperationName(sysUser.getNickName()); xpWhitelistOperlog.setOperationAccount(sysUser.getPhoneNumber()); xpWhitelistOperlog.setOperationType(6); xpWhitelistOperlog.setOperationIp(IpUtils.getIpAddr()); xpWhitelistOperlog.setOperationAccountId(sysUser.getId()); xpWhitelistOperlog.setOperationContent(operationContent.toString()); xpWhitelistOperlogMapper.insert(xpWhitelistOperlog); return R.ok(); } }