first commit
This commit is contained in:
@ -0,0 +1,73 @@
|
||||
package com.qiaoba.module.system.controller;
|
||||
|
||||
import com.qiaoba.api.system.entity.SysDictData;
|
||||
import com.qiaoba.api.system.entity.param.SysDictDataParam;
|
||||
import com.qiaoba.common.base.result.AjaxResult;
|
||||
import com.qiaoba.common.database.entity.PageQuery;
|
||||
import com.qiaoba.common.database.entity.TableDataInfo;
|
||||
import com.qiaoba.common.poi.utils.ExcelUtil;
|
||||
import com.qiaoba.module.system.service.SysDictDataService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 字典数据管理 Web层
|
||||
*
|
||||
* @author ailanyin
|
||||
* @version 1.0
|
||||
* @since 2022-09-22 04:20:28
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/system/dict/data")
|
||||
@RequiredArgsConstructor
|
||||
public class SysDictDataController {
|
||||
|
||||
private final SysDictDataService sysDictDataService;
|
||||
|
||||
@PreAuthorize("hasAuthority('system:dict:list')")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo list(SysDictDataParam param, PageQuery pageQuery) {
|
||||
return sysDictDataService.selectPageList(param, pageQuery);
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAuthority('system:dict:export')")
|
||||
@PostMapping("/export")
|
||||
public void export(HttpServletResponse response, SysDictDataParam param) {
|
||||
List<SysDictData> list = sysDictDataService.selectList(param);
|
||||
ExcelUtil.exportExcel(list, SysDictData.class, "字典数据", response);
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAuthority('system:dict:query')")
|
||||
@GetMapping(value = "/{dictCode}")
|
||||
public AjaxResult getInfo(@PathVariable String dictCode) {
|
||||
return AjaxResult.success(sysDictDataService.selectById(dictCode));
|
||||
}
|
||||
|
||||
@GetMapping(value = "/type/{dictType}")
|
||||
public AjaxResult dictType(@PathVariable String dictType) {
|
||||
return AjaxResult.success(sysDictDataService.selectByDictType(dictType));
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAuthority('system:dict:add')")
|
||||
@PostMapping
|
||||
public AjaxResult add(@Validated @RequestBody SysDictData sysDictData) {
|
||||
return AjaxResult.toAjax(sysDictDataService.insert(sysDictData));
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAuthority('system:dict:edit')")
|
||||
@PutMapping
|
||||
public AjaxResult edit(@Validated @RequestBody SysDictData sysDictData) {
|
||||
return AjaxResult.toAjax(sysDictDataService.update(sysDictData));
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAuthority('system:dict:remove')")
|
||||
@DeleteMapping("/{ids}")
|
||||
public AjaxResult remove(@PathVariable List<String> ids) {
|
||||
return AjaxResult.toAjax(sysDictDataService.deleteByIds(ids));
|
||||
}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package com.qiaoba.module.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.qiaoba.api.system.entity.SysDictData;
|
||||
|
||||
public interface SysDictDataMapper extends BaseMapper<SysDictData> {
|
||||
|
||||
/**
|
||||
* 检查数据标签是否唯一
|
||||
*
|
||||
* @param sysDictData sysDictData
|
||||
* @return 已存在的值
|
||||
*/
|
||||
String checkDictLabelUnique(SysDictData sysDictData);
|
||||
|
||||
/**
|
||||
* 检查数据键值是否唯一
|
||||
*
|
||||
* @param sysDictData sysDictData
|
||||
* @return 已存在的值
|
||||
*/
|
||||
String checkDictValueUnique(SysDictData sysDictData);
|
||||
}
|
@ -1,8 +1,10 @@
|
||||
package com.qiaoba.module.system.service;
|
||||
|
||||
|
||||
import com.qiaoba.api.system.entity.SysDictData;
|
||||
import com.qiaoba.api.system.entity.param.SysDictDataParam;
|
||||
import com.qiaoba.api.system.service.SysDictApiService;
|
||||
import com.qiaoba.common.database.entity.PageQuery;
|
||||
import com.qiaoba.common.database.entity.TableDataInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -15,14 +17,6 @@ import java.util.List;
|
||||
*/
|
||||
public interface SysDictDataService extends SysDictApiService {
|
||||
|
||||
/**
|
||||
* 根据条件分页查询字典数据
|
||||
*
|
||||
* @param dictData 字典数据信息
|
||||
* @return 字典数据集合信息
|
||||
*/
|
||||
List<SysDictData> selectDictDataList(SysDictData dictData);
|
||||
|
||||
/**
|
||||
* 根据字典类型和字典键值查询字典数据信息
|
||||
*
|
||||
@ -38,29 +32,45 @@ public interface SysDictDataService extends SysDictApiService {
|
||||
* @param dictCode 字典数据ID
|
||||
* @return 字典数据
|
||||
*/
|
||||
SysDictData selectDictDataById(Long dictCode);
|
||||
SysDictData selectById(String dictCode);
|
||||
|
||||
/**
|
||||
* 批量删除字典数据信息
|
||||
*
|
||||
* @param dictCodes 需要删除的字典数据ID
|
||||
* @param ids 需要删除的字典数据ID
|
||||
*/
|
||||
void deleteDictDataByIds(Long[] dictCodes);
|
||||
int deleteByIds(List<String> ids);
|
||||
|
||||
/**
|
||||
* 新增保存字典数据信息
|
||||
*
|
||||
* @param dictData 字典数据信息
|
||||
* @param sysDictData 字典数据信息
|
||||
* @return 结果
|
||||
*/
|
||||
int insertDictData(SysDictData dictData);
|
||||
int insert(SysDictData sysDictData);
|
||||
|
||||
/**
|
||||
* 修改保存字典数据信息
|
||||
*
|
||||
* @param dictData 字典数据信息
|
||||
* @param sysDictData 字典数据信息
|
||||
* @return 结果
|
||||
*/
|
||||
int updateDictData(SysDictData dictData);
|
||||
int update(SysDictData sysDictData);
|
||||
|
||||
/**
|
||||
* 根据条件分页查询字典数据
|
||||
*
|
||||
* @param param 参数
|
||||
* @param pageQuery 分页信息
|
||||
* @return 字典数据集合信息
|
||||
*/
|
||||
TableDataInfo selectPageList(SysDictDataParam param, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询列表
|
||||
*
|
||||
* @param param param
|
||||
* @return list
|
||||
*/
|
||||
List<SysDictData> selectList(SysDictDataParam param);
|
||||
}
|
||||
|
@ -0,0 +1,98 @@
|
||||
package com.qiaoba.module.system.service.impl;
|
||||
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.qiaoba.api.system.entity.SysDictData;
|
||||
import com.qiaoba.api.system.entity.param.SysDictDataParam;
|
||||
import com.qiaoba.auth.utils.SecurityUtil;
|
||||
import com.qiaoba.common.base.exceptions.ServiceException;
|
||||
import com.qiaoba.common.database.entity.PageQuery;
|
||||
import com.qiaoba.common.database.entity.TableDataInfo;
|
||||
import com.qiaoba.module.system.mapper.SysDictDataMapper;
|
||||
import com.qiaoba.module.system.service.SysDictDataService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class SysDictDataServiceImpl implements SysDictDataService {
|
||||
|
||||
private final SysDictDataMapper sysDictDataMapper;
|
||||
|
||||
@Override
|
||||
public String selectDictLabel(String dictType, String dictValue) {
|
||||
QueryWrapper<SysDictData> wrapper = new QueryWrapper<>();
|
||||
wrapper.lambda()
|
||||
.eq(SysDictData::getDictType, dictType)
|
||||
.eq(SysDictData::getDictValue, dictValue);
|
||||
SysDictData sysDictData = sysDictDataMapper.selectOne(wrapper);
|
||||
return Objects.isNull(sysDictData) ? StrUtil.EMPTY : sysDictData.getDictLabel();
|
||||
}
|
||||
|
||||
@Override
|
||||
public SysDictData selectById(String dictCode) {
|
||||
return sysDictDataMapper.selectById(dictCode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int deleteByIds(List<String> ids) {
|
||||
return sysDictDataMapper.deleteBatchIds(ids);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int insert(SysDictData sysDictData) {
|
||||
checkAllowAddOrUpdate(sysDictData);
|
||||
sysDictData.setCreateTime(new Date());
|
||||
sysDictData.setCreateUser(SecurityUtil.getLoginUsername());
|
||||
return sysDictDataMapper.insert(sysDictData);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int update(SysDictData sysDictData) {
|
||||
checkAllowAddOrUpdate(sysDictData);
|
||||
sysDictData.setUpdateTime(new Date());
|
||||
sysDictData.setUpdateUser(SecurityUtil.getLoginUsername());
|
||||
return sysDictDataMapper.updateById(sysDictData);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TableDataInfo selectPageList(SysDictDataParam param, PageQuery pageQuery) {
|
||||
return TableDataInfo.build(sysDictDataMapper.selectPage(pageQuery.build(), param2Wrapper(param)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SysDictData> selectList(SysDictDataParam param) {
|
||||
return sysDictDataMapper.selectList(param2Wrapper(param));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SysDictData> selectByDictType(String dictType) {
|
||||
return sysDictDataMapper.selectList(param2Wrapper(new SysDictDataParam(dictType)));
|
||||
}
|
||||
|
||||
private QueryWrapper<SysDictData> param2Wrapper(SysDictDataParam param) {
|
||||
QueryWrapper<SysDictData> wrapper = new QueryWrapper<>();
|
||||
wrapper.lambda()
|
||||
.like(StrUtil.isNotBlank(param.getDictType()), SysDictData::getDictType, param.getDictType())
|
||||
.like(StrUtil.isNotBlank(param.getDictLabel()), SysDictData::getDictLabel, param.getDictLabel())
|
||||
.eq(StrUtil.isNotBlank(param.getStatus()), SysDictData::getStatus, param.getStatus());
|
||||
return wrapper;
|
||||
}
|
||||
|
||||
private void checkAllowAddOrUpdate(SysDictData sysDictData) {
|
||||
String dictLabel = sysDictDataMapper.checkDictLabelUnique(sysDictData);
|
||||
if (StrUtil.isNotBlank(dictLabel)) {
|
||||
throw new ServiceException("数据标签已存在");
|
||||
}
|
||||
|
||||
String dictValue = sysDictDataMapper.checkDictValueUnique(sysDictData);
|
||||
if (StrUtil.isNotBlank(dictValue)) {
|
||||
throw new ServiceException("数据键值已存在");
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.qiaoba.module.system.mapper.SysDictDataMapper">
|
||||
|
||||
<select id="checkDictLabelUnique" resultType="string">
|
||||
SELECT dict_label FROM sys_dict_data where dict_type = #{dictType} and dict_label = #{dictLabel}
|
||||
<if test="dictCode != null and dictCode != ''">
|
||||
and dict_code != #{dictCode}
|
||||
</if>
|
||||
limit 1
|
||||
</select>
|
||||
|
||||
<select id="checkDictValueUnique" resultType="string">
|
||||
SELECT dict_value FROM sys_dict_data where dict_type = #{dictType} and dict_value = #{dictValue}
|
||||
<if test="dictCode != null and dictCode != ''">
|
||||
and dict_code != #{dictCode}
|
||||
</if>
|
||||
limit 1
|
||||
</select>
|
||||
</mapper>
|
@ -20,6 +20,6 @@
|
||||
<foreach item="id" collection="list" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
limit 1
|
||||
and t2.dict_code is not null limit 1
|
||||
</select>
|
||||
</mapper>
|
||||
|
Reference in New Issue
Block a user