package com.gkhy.exam.system.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.exam.common.api.CommonPage; import com.gkhy.exam.common.constant.UserConstant; import com.gkhy.exam.common.domain.entity.SysDictData; import com.gkhy.exam.common.exception.ApiException; import com.gkhy.exam.common.utils.DictUtils; import com.gkhy.exam.common.utils.PageUtils; import com.gkhy.exam.common.utils.SecurityUtils; import com.gkhy.exam.system.mapper.SysDictDataMapper; import com.gkhy.exam.system.service.SysDictDataService; import org.springframework.stereotype.Service; import java.util.List; /** *

* 字典数据表 服务实现类 *

* * @author kzy * @since 2023-11-01 15:37:51 */ @Service public class SysDictDataServiceImpl extends ServiceImpl implements SysDictDataService { @Override public CommonPage selectDictDataList(SysDictData dictData) { PageUtils.startPage(); List dictDataList = baseMapper.selectDictDataList(dictData); return CommonPage.restPage(dictDataList); } @Override public String selectDictLabel(String dictType, String dictValue) { return baseMapper.selectDictLabel(dictType,dictValue); } @Override public SysDictData selectDictDataById(Long dictId) { return getById(dictId); } @Override public void deleteDictDataByIds(Long[] dictIds) { for (Long dictId : dictIds) { SysDictData data = selectDictDataById(dictId); baseMapper.deleteById(dictId); List dictDatas = baseMapper.selectDictDataByType(data.getDictType()); DictUtils.setDictCache(data.getDictType(), dictDatas); } } @Override public int insertDictData(SysDictData dictData) { if(!checkDictDataUnique(dictData)){ throw new ApiException("已存在相同字典数据"); } dictData.setCreateBy(SecurityUtils.getUsername()); int row = baseMapper.insert(dictData); if (row > 0) { List dictDatas = baseMapper.selectDictDataByType(dictData.getDictType()); DictUtils.setDictCache(dictData.getDictType(), dictDatas); } return row; } @Override public int updateDictData(SysDictData dictData) { if(!checkDictDataUnique(dictData)){ throw new ApiException("已存在相同字典数据"); } dictData.setUpdateBy(SecurityUtils.getUsername()); int row = baseMapper.updateById(dictData); if (row > 0) { List dictDatas = baseMapper.selectDictDataByType(dictData.getDictType()); DictUtils.setDictCache(dictData.getDictType(), dictDatas); } return row; } public boolean checkDictDataUnique(SysDictData dictData) { LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery() .eq(SysDictData::getDictType, dictData.getDictType()) .eq(SysDictData::getLabel, dictData.getLabel()); if(dictData.getId()!=null){ lambdaQueryWrapper.ne(SysDictData::getId,dictData.getId()); } long existCount= count(lambdaQueryWrapper); if(existCount>0){ return UserConstant.NOT_UNIQUE; } return UserConstant.UNIQUE; } }