first commit

This commit is contained in:
2023-05-31 21:21:57 +08:00
parent bb4963a84f
commit 603b8c1c9f
10 changed files with 449 additions and 203 deletions

View File

@ -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));
}
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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("数据键值已存在");
}
}
}

View File

@ -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>

View File

@ -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>