package com.cloudroam.controller.v1; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.cloudroam.bo.SysDictItemBO; import com.cloudroam.common.util.PageUtil; import com.cloudroam.dto.sysDict.CreateOrUpdateSysDictDTO; import com.cloudroam.dto.sysDict.CreateOrUpdateSysDictItemDTO; import com.cloudroam.dto.sysDict.QuerySysDictDTO; import com.cloudroam.dto.sysDict.QuerySysDictItemDTO; import com.cloudroam.model.SysDictDO; import com.cloudroam.service.SysDictItemService; import com.cloudroam.service.SysDictService; import io.github.talelin.autoconfigure.exception.ForbiddenException; import io.github.talelin.autoconfigure.exception.NotFoundException; import io.github.talelin.core.annotation.LoginRequired; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import com.cloudroam.model.SysDictItemDO; import com.cloudroam.vo.CreatedVO; import com.cloudroam.vo.DeletedVO; import com.cloudroam.vo.PageResponseVO; import com.cloudroam.vo.UpdatedVO; import javax.validation.constraints.Min; import javax.validation.constraints.Max; import javax.validation.constraints.Positive; import java.util.Date; import java.util.List; /** * 数据字典详情前端控制器 * * @author generator@TaoJie * @since 2023-08-03 */ @RestController @RequestMapping("/v1/sysDictItem") public class SysDictItemController { @Autowired private SysDictService sysDictService; @Autowired private SysDictItemService sysDictItemService; @PostMapping("") @LoginRequired public CreatedVO create(@RequestBody @Validated CreateOrUpdateSysDictItemDTO validator) { SysDictDO sysDictDO = sysDictService.getById(validator.getDictId()); if (sysDictDO == null) { throw new NotFoundException("父字典不能为空"); } //根据当前的name查看字典是否存在 if(sysDictItemService.existsSysDictItemByName(validator)){ throw new ForbiddenException(10280); } // 根据当前的value查看字典值是否存在 if(sysDictItemService.existsSysDictItemByValue(validator)){ throw new ForbiddenException(10281); } validator.setDictType(sysDictDO.getName()); sysDictItemService.createSysDictItem(validator); return new CreatedVO(1); } @PutMapping("/{id}") @LoginRequired public UpdatedVO update(@RequestBody @Validated CreateOrUpdateSysDictItemDTO validator) { SysDictDO sysDictDO = sysDictService.getById(validator.getDictId()); if (sysDictDO == null) { throw new NotFoundException("父字典不能为空"); } if(StrUtil.isBlank(validator.getId())){ throw new NotFoundException("传入的字典Id不能为空"); } SysDictItemDO sysDictItemDO = sysDictItemService.getById(validator.getId()); if (sysDictItemDO == null) { throw new NotFoundException("字典项不存在"); } //根据当前的name查看字典是否存在 if(sysDictItemService.existsSysDictItemByName(validator)){ throw new ForbiddenException(10280); } // 根据当前的value查看字典值是否存在 if(sysDictItemService.existsSysDictItemByValue(validator)){ throw new ForbiddenException(10281); } SysDictItemDO updateSysDictItemDO=new SysDictItemDO(); BeanUtils.copyProperties(validator,updateSysDictItemDO); updateSysDictItemDO.setUpdateTime(new Date()); sysDictItemService.updateById(updateSysDictItemDO); return new UpdatedVO(); } @DeleteMapping("/{id}") @LoginRequired public DeletedVO delete(@PathVariable String id) { if(StrUtil.isBlank(id)){ throw new NotFoundException("字典id不能为空"); } SysDictItemDO sysDictItemDO = sysDictItemService.getById(id); if (sysDictItemDO == null) { throw new NotFoundException("字典项不存在"); } sysDictItemService.removeById(id); return new DeletedVO(); } @GetMapping("/{id}") public SysDictItemDO get(@PathVariable(value = "id") @Positive(message = "id不能为空") String id) { return sysDictItemService.getById(id); } @GetMapping("/page") public PageResponseVO page( @Validated QuerySysDictItemDTO dto ) { IPage iPage=sysDictItemService.getSysDictItemPage(dto); return PageUtil.build(iPage); } @GetMapping("/list") public List list( @Validated QuerySysDictItemDTO dto ) { List list=sysDictItemService.getSysDictItemList(dto); return list; } @GetMapping("/list2") public List list2( @Validated QuerySysDictItemDTO dto ) { List list=sysDictItemService.getSysDictItemWithDictList(dto); return list; } }