package com.poyee.common.dict.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.poyee.base.dto.Result;
import com.poyee.common.dict.domain.DictData;
import com.poyee.common.dict.domain.DictType;
import com.poyee.common.dict.query.DictQuery;
import com.poyee.common.dict.service.IDictDataService;
import com.poyee.common.dict.service.IDictTypeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
*
* 字典表
*
*
* @author poyi
* @since 2024-10-22
*/
@RestController
@RequestMapping("/dict")
@Slf4j
@Api(tags = "字典表管理")
public class DictController {
@Resource
private IDictDataService dictDataService;
@Resource
private IDictTypeService dictTypeService;
@ApiOperation(value = "字典表type列表")
@PostMapping("/type/list")
public Result listDictType(@RequestBody DictType dictType) {
LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(StringUtils.isNotBlank(dictType.getDictType()), DictType::getDictType, dictType.getDictType());
queryWrapper.eq(dictType.getStatus() != null, DictType::getStatus, dictType.getStatus());
if(StringUtils.isNotBlank(dictType.getKeyword())) {
queryWrapper.nested(q -> q.like(DictType::getDictType, dictType.getKeyword())
.or()
.like(DictType::getDictName, dictType.getKeyword()));
}
queryWrapper.orderByDesc(DictType::getSord);
Page dictTypePage = new Page<>(dictType.getPageNo(),dictType.getPageSize());
Page pageInfo = dictTypeService.page(dictTypePage,queryWrapper);
return Result.success(pageInfo);
}
@ApiOperation(value = "字典表type新增")
@PostMapping("/type/add")
public Result addDictType(@RequestBody DictType dictType) {
dictTypeService.save(dictType);
return Result.success();
}
@ApiOperation(value = "字典表修改,删除即修改状态为0")
@PostMapping("/type/update")
public Result updateDictType(@RequestBody DictType dictType) {
dictTypeService.updateById(dictType);
return Result.success();
}
@ApiOperation(value = "字典表Data列表")
@PostMapping("/data/list")
public Result listDictData(@RequestBody DictData dictData) {
Page dictDataPage = new Page<>(dictData.getPageNo(), dictData.getPageSize());
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(StringUtils.isNotBlank(dictData.getDictType()), DictData::getDictType, dictData.getDictType());
queryWrapper.eq(dictData.getStatus() != null, DictData::getStatus, dictData.getStatus());
queryWrapper.orderByAsc(DictData::getId);
Page pageInfo = dictDataService.page(dictDataPage,queryWrapper);
return Result.success(pageInfo);
}
@ApiOperation(value = "字典表Data新增")
@PostMapping("/data/add")
public Result addDictData(@RequestBody DictData dictData) {
dictDataService.save(dictData);
dictDataService.delDataCache(dictData.getDictType());
return Result.success();
}
@ApiOperation(value = "字典表data修改,删除即修改状态为0")
@PostMapping("/data/update")
public Result updateDictData(@RequestBody DictData dictData) {
dictDataService.updateById(dictData);
DictData data = dictDataService.getById(dictData.getId());
dictDataService.delDataCache(data.getDictType());
return Result.success();
}
@ApiOperation(value = "字典表Data查询")
@PostMapping("/data/search")
public Result getDictDataList(@RequestBody DictQuery dictQuery) {
List dictDataList = dictDataService.selectDictData(dictQuery.getDictType(), dictQuery.getDictLabel(), dictQuery.getStatus(), dictQuery.isUserCache());
return Result.success(dictDataList);
}
@ApiOperation(value = "字典表Data查询,多type,用逗号拼接")
@PostMapping("/data/search/types")
public Result batchQueryData(@RequestBody DictQuery dictQuery) {
Map> typeData = dictDataService.selectByTypes(dictQuery.getDictType());
return Result.success(typeData);
}
}