AreaController.java 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. package com.ylx.web.controller.massage;
  2. import cn.hutool.core.collection.CollectionUtil;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import com.baomidou.mybatisplus.core.toolkit.StringUtils;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.ylx.common.core.domain.R;
  8. import com.ylx.massage.domain.Area;
  9. import com.ylx.massage.domain.dto.CoordinateDTO;
  10. import com.ylx.massage.domain.vo.AreaTreeNode;
  11. import com.ylx.massage.domain.vo.CityInfoVo;
  12. import com.ylx.massage.service.AreaService;
  13. import io.swagger.annotations.Api;
  14. import io.swagger.annotations.ApiOperation;
  15. import org.springframework.web.bind.annotation.*;
  16. import javax.annotation.Resource;
  17. import java.io.Serializable;
  18. import java.util.List;
  19. /**
  20. * 区域数据(Area)表控制层
  21. *
  22. * @author makejava
  23. * @since 2024-07-01 09:22:27
  24. */
  25. @RestController
  26. @Api(tags = {"区域数据表控制层"})
  27. @RequestMapping("area")
  28. public class AreaController {
  29. /**
  30. * 服务对象
  31. */
  32. @Resource
  33. private AreaService areaService;
  34. /**
  35. * 分页查询所有数据
  36. *
  37. * @param page 分页对象
  38. * @param area 查询实体
  39. * @return 所有数据
  40. */
  41. @GetMapping
  42. public R selectAll(Page<Area> page, Area area) {
  43. return R.ok(this.areaService.page(page, new QueryWrapper<>(area)));
  44. }
  45. @GetMapping("/select")
  46. @ApiOperation("按层级查询")
  47. public R select(Area area) {
  48. LambdaQueryWrapper<Area> objectLambdaQueryWrapper = new LambdaQueryWrapper<>();
  49. objectLambdaQueryWrapper.eq(null != area.getLevel(),Area::getLevel, area.getLevel())
  50. .eq(StringUtils.isNotBlank(area.getParentCode()),Area::getParentCode, area.getParentCode());
  51. return R.ok(this.areaService.list(objectLambdaQueryWrapper));
  52. }
  53. /**
  54. * 通过主键查询单条数据
  55. *
  56. * @param id 主键
  57. * @return 单条数据
  58. */
  59. @GetMapping("{id}")
  60. public R selectOne(@PathVariable Serializable id) {
  61. return R.ok(this.areaService.getById(id));
  62. }
  63. /**
  64. * 新增数据
  65. *
  66. * @param area 实体对象
  67. * @return 新增结果
  68. */
  69. @PostMapping
  70. public R insert(@RequestBody Area area) {
  71. return R.ok(this.areaService.save(area));
  72. }
  73. /**
  74. * 修改数据
  75. *
  76. * @param area 实体对象
  77. * @return 修改结果
  78. */
  79. @PutMapping
  80. public R update(@RequestBody Area area) {
  81. return R.ok(this.areaService.updateById(area));
  82. }
  83. /**
  84. * 删除数据
  85. *
  86. * @param idList 主键结合
  87. * @return 删除结果
  88. */
  89. @DeleteMapping
  90. public R delete(@RequestParam("idList") List<Long> idList) {
  91. return R.ok(this.areaService.removeByIds(idList));
  92. }
  93. /**
  94. * 根据城市名称查询编码
  95. * @param name
  96. * @return R
  97. */
  98. @GetMapping("/code")
  99. @ApiOperation("name获取code")
  100. public R getCodeByName(@RequestParam String name) {
  101. LambdaQueryWrapper<Area> queryWrapper = new LambdaQueryWrapper<>();
  102. queryWrapper.eq(Area::getName, name);
  103. List<Area> list = this.areaService.list(queryWrapper);
  104. if (CollectionUtil.isEmpty(list)) {
  105. return R.fail("未找到此数据");
  106. }
  107. return R.ok(CollectionUtil.getFirst(list).getCode());
  108. }
  109. @GetMapping("/tree")
  110. @ApiOperation("获取全量区域树形结构")
  111. public R<List<AreaTreeNode>> getAreaTree() {
  112. List<AreaTreeNode> tree = this.areaService.getAreaTree();
  113. return R.ok(tree);
  114. }
  115. @PostMapping("/city")
  116. @ApiOperation("根据经纬度获取城市信息")
  117. public R<CityInfoVo> getCityInfoByCoordinates(@RequestBody CoordinateDTO dto) {
  118. CityInfoVo cityInfoVo = this.areaService.getCityInfoByCoordinates(dto);
  119. return R.ok(cityInfoVo);
  120. }
  121. }