AdminSelectOptionsController.java 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package cc.uncarbon.module.adminapi.web.common;
  2. import cc.uncarbon.framework.core.enums.GenderEnum;
  3. import cc.uncarbon.framework.core.enums.YesOrNoEnum;
  4. import cc.uncarbon.framework.web.model.response.ApiResult;
  5. import cc.uncarbon.module.adminapi.model.response.SelectOptionItemVO;
  6. import cc.uncarbon.module.sys.model.response.SysDeptBO;
  7. import cc.uncarbon.module.sys.service.SysDeptService;
  8. import cc.uncarbon.module.adminapi.util.AdminStpUtil;
  9. import cn.dev33.satoken.annotation.SaCheckLogin;
  10. import cn.dev33.satoken.annotation.SaIgnore;
  11. import io.swagger.annotations.Api;
  12. import io.swagger.annotations.ApiOperation;
  13. import lombok.RequiredArgsConstructor;
  14. import lombok.extern.slf4j.Slf4j;
  15. import org.springframework.web.bind.annotation.GetMapping;
  16. import org.springframework.web.bind.annotation.RequestMapping;
  17. import org.springframework.web.bind.annotation.RestController;
  18. import java.util.List;
  19. // 约束:登录后才能使用 👇 后台管理对应的鉴权工具类
  20. @SaCheckLogin(type = AdminStpUtil.TYPE)
  21. @Api(value = "后台管理-下拉框数据源接口", tags = {"后台管理-下拉框数据源接口"})
  22. @RequestMapping("/api/v1")
  23. @RequiredArgsConstructor
  24. @RestController
  25. @Slf4j
  26. public class AdminSelectOptionsController {
  27. private final SysDeptService sysDeptService;
  28. /*
  29. 这里统一存放所有用于后台管理的下拉框数据源接口
  30. 避免多人协作时,不知道原来是否已经有了,或者写在某个边边角角里
  31. 造成重复开发
  32. */
  33. // 👇该注解标记的接口不需要登录
  34. @SaIgnore
  35. @ApiOperation(value = "(演示接口;可删除)性别下拉框")
  36. @GetMapping(value = "/select-options/genders")
  37. public ApiResult<List<SelectOptionItemVO>> genders(YesOrNoEnum demo) {
  38. if (demo == YesOrNoEnum.YES) {
  39. // demo=YES时,不输出「未知」、多输出demoString1
  40. List<SelectOptionItemVO> ret = SelectOptionItemVO.listOf(GenderEnum.class, item -> item != GenderEnum.UNKNOWN);
  41. for (SelectOptionItemVO item : ret) {
  42. item.setDemoString1("文本字段1-" + item.getValue());
  43. }
  44. return ApiResult.data(ret);
  45. }
  46. // 默认返回
  47. return ApiResult.data(SelectOptionItemVO.listOf(GenderEnum.class));
  48. }
  49. // 👇该注解标记的接口不需要登录
  50. @SaIgnore
  51. @ApiOperation(value = "(演示接口;可删除)部门下拉框")
  52. @GetMapping(value = "/select-options/depts")
  53. public ApiResult<List<SelectOptionItemVO>> depts(YesOrNoEnum demo) {
  54. if (demo == YesOrNoEnum.YES) {
  55. // demo=YES时,多输出上级ID、多输出demoString1
  56. List<SelectOptionItemVO> ret = SelectOptionItemVO.listOf(sysDeptService.adminList(), SysDeptBO::getId, SysDeptBO::getTitle, SysDeptBO::getParentId);
  57. for (SelectOptionItemVO item : ret) {
  58. item.setDemoString1("文本字段1-" + item.getId());
  59. }
  60. return ApiResult.data(ret);
  61. }
  62. // 默认返回
  63. return ApiResult.data(SelectOptionItemVO.listOf(sysDeptService.adminList(), SysDeptBO::getId, SysDeptBO::getTitle));
  64. }
  65. }