package com.doumee.service.business.impl; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Constants; import com.doumee.core.utils.Utils; import com.doumee.dao.business.ApplicationInfoMapper; import com.doumee.dao.business.LabelsMapper; import com.doumee.dao.business.ServerProviderMapper; import com.doumee.dao.business.model.ApplicationInfo; import com.doumee.dao.business.model.Labels; import com.doumee.dao.business.model.ServerProvider; import com.doumee.service.business.ServerProviderService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.Date; import java.util.List; import java.util.Objects; /** * 服务商信息Service实现 * @author 江蹄蹄 * @date 2025/09/08 10:24 */ @Service public class ServerProviderServiceImpl implements ServerProviderService { @Autowired private ServerProviderMapper serverProviderMapper; @Autowired private LabelsMapper labelsMapper; @Autowired private ApplicationInfoMapper applicationInfoMapper; @Autowired private SystemDictDataBiz systemDictDataBiz; @Override public Integer create(ServerProvider serverProvider) { if(Objects.isNull(serverProvider) || StringUtils.isBlank(serverProvider.getName()) || StringUtils.isBlank(serverProvider.getLogo()) // || Objects.isNull(serverProvider.getStarLevel()) // || Objects.isNull(serverProvider.getIndustryId()) // || StringUtils.isBlank(serverProvider.getLinkPhone()) // || StringUtils.isBlank(serverProvider.getLinkName()) // || StringUtils.isBlank(serverProvider.getIntroduction()) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } //查询名称是否重复 if(serverProviderMapper.selectCount(new QueryWrapper().lambda().eq(ServerProvider::getIsdeleted,Constants.ZERO).eq(ServerProvider::getName,serverProvider.getName()))>Constants.ZERO){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"服务商名称[ "+serverProvider.getName()+" ]已存在!"); } if(Objects.nonNull(serverProvider.getIndustryId())&&Objects.isNull(labelsMapper.selectById(serverProvider.getIndustryId()))){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"行业信息错误"); }; LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); serverProvider.setCreateDate(new Date()); serverProvider.setCreator(loginUserInfo.getId()); serverProvider.setEditor(serverProvider.getCreator()); serverProvider.setEditDate(serverProvider.getCreateDate()); serverProvider.setStatus(Constants.ZERO); serverProvider.setIsdeleted(Constants.ZERO); serverProviderMapper.insert(serverProvider); return serverProvider.getId(); } @Override public void deleteById(Integer id) { if(applicationInfoMapper.selectCount(new QueryWrapper().lambda() .eq(ApplicationInfo::getIsdeleted,Constants.ZERO).eq(ApplicationInfo::getServerId,id) )>Constants.ZERO){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"服务商使用中,无法进行删除"); } serverProviderMapper.update(null,new UpdateWrapper().lambda() .set(ServerProvider::getIsdeleted,Constants.ONE).eq(ServerProvider::getId,id)); } @Override public void delete(ServerProvider serverProvider) { UpdateWrapper deleteWrapper = new UpdateWrapper<>(serverProvider); serverProviderMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } serverProviderMapper.deleteBatchIds(ids); } @Override public void updateStatus(ServerProvider serverProvider) { if(Objects.isNull(serverProvider) || Objects.isNull(serverProvider.getId()) || Objects.isNull(serverProvider.getStatus()) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } serverProviderMapper.update(null,new UpdateWrapper().lambda().set(ServerProvider::getStatus,serverProvider.getStatus()).eq(ServerProvider::getId,serverProvider.getId())); } @Override public void updateById(ServerProvider serverProvider) { if(Objects.isNull(serverProvider) || Objects.isNull(serverProvider.getId()) || StringUtils.isBlank(serverProvider.getName()) || StringUtils.isBlank(serverProvider.getLogo()) // || Objects.isNull(serverProvider.getStarLevel()) // || Objects.isNull(serverProvider.getIndustryId()) // || StringUtils.isBlank(serverProvider.getLinkPhone()) // || StringUtils.isBlank(serverProvider.getLinkName()) // || StringUtils.isBlank(serverProvider.getIntroduction()) ){ throw new BusinessException(ResponseStatus.BAD_REQUEST); } //查询名称是否重复 if(serverProviderMapper.selectCount(new QueryWrapper().lambda().ne(ServerProvider::getId,serverProvider.getId()) .eq(ServerProvider::getIsdeleted,Constants.ZERO).eq(ServerProvider::getName,serverProvider.getName()))>Constants.ZERO){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"服务商名称[ "+serverProvider.getName()+" ]已存在!"); } if(Objects.nonNull(serverProvider.getIndustryId())&&Objects.isNull(labelsMapper.selectById(serverProvider.getIndustryId()))){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"行业信息错误"); }; LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); serverProvider.setEditor(loginUserInfo.getId()); serverProvider.setEditDate(new Date()); serverProviderMapper.updateById(serverProvider); } @Override public void updateByIdInBatch(List serverProviders) { if (CollectionUtils.isEmpty(serverProviders)) { return; } for (ServerProvider serverProvider: serverProviders) { this.updateById(serverProvider); } } @Override public ServerProvider findById(Integer id) { MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper(); queryWrapper.selectAll(ServerProvider.class) .selectAs(Labels::getName,ServerProvider::getIndustryName) .leftJoin(Labels.class,Labels::getId,ServerProvider::getIndustryId) .eq(ServerProvider::getId,id) .orderByDesc(ServerProvider::getId) ; String prefix = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.LOGO_FILE).getCode(); ServerProvider serverProvider = serverProviderMapper.selectJoinOne(ServerProvider.class,queryWrapper); if(Objects.isNull(serverProvider)){ throw new BusinessException(ResponseStatus.DATA_EMPTY); } serverProvider.setFullLog(prefix + serverProvider.getLogo()); return serverProvider; } @Override public ServerProvider findOne(ServerProvider serverProvider) { QueryWrapper wrapper = new QueryWrapper<>(serverProvider); return serverProviderMapper.selectOne(wrapper); } @Override public List findList(ServerProvider serverProvider) { QueryWrapper wrapper = new QueryWrapper<>(serverProvider); wrapper.lambda().eq(ServerProvider::getIsdeleted,Constants.ZERO); wrapper.lambda().eq(ServerProvider::getStatus,Constants.ZERO); return serverProviderMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper(); Utils.MP.blankToNull(pageWrap.getModel()); ServerProvider model = pageWrap.getModel(); queryWrapper.selectAll(ServerProvider.class) .selectAs(Labels::getName,ServerProvider::getIndustryName) .leftJoin(Labels.class,Labels::getId,ServerProvider::getIndustryId) .eq(ServerProvider::getIsdeleted,Constants.ZERO) .and(StringUtils.isNotBlank(model.getName()),i->i.like(ServerProvider::getName,model.getName())) .eq(Objects.nonNull(model.getStatus()),ServerProvider::getStatus,model.getStatus()) .eq(Objects.nonNull(model.getIndustryId()),ServerProvider::getIndustryId,model.getIndustryId()) .orderByDesc(ServerProvider::getId) ; IPage serverProviderIPage = serverProviderMapper.selectJoinPage(page, ServerProvider.class ,queryWrapper); String prefix = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.LOGO_FILE).getCode(); serverProviderIPage.getRecords().forEach(i->{ i.setFullLog(prefix + i.getLogo()); }); return PageData.from(serverProviderIPage); } @Override public long count(ServerProvider serverProvider) { QueryWrapper wrapper = new QueryWrapper<>(serverProvider); return serverProviderMapper.selectCount(wrapper); } }