From d78caa042d3692a10bd902219c8af9b446e368aa Mon Sep 17 00:00:00 2001 From: lbw Date: Sat, 17 Feb 2024 14:47:47 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20Introducing=20new=20features.=20?= =?UTF-8?q?=E8=A1=8C=E6=94=BF=E5=8C=BA=E5=88=92=E7=AE=A1=E7=90=86=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pigx/admin/api/entity/SysAreaEntity.java | 128 +++++++++++++++++ .../admin/controller/SysAreaController.java | 135 ++++++++++++++++++ .../pigx/admin/mapper/SysAreaMapper.java | 11 ++ .../pigx/admin/service/SysAreaService.java | 28 ++++ .../service/impl/SysAreaServiceImpl.java | 74 ++++++++++ .../main/resources/mapper/SysAreaMapper.xml | 24 ++++ 6 files changed, 400 insertions(+) create mode 100644 pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysAreaEntity.java create mode 100644 pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysAreaController.java create mode 100644 pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysAreaMapper.java create mode 100644 pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysAreaService.java create mode 100644 pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysAreaServiceImpl.java create mode 100644 pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysAreaMapper.xml diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysAreaEntity.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysAreaEntity.java new file mode 100644 index 000000000..e61b3baf9 --- /dev/null +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysAreaEntity.java @@ -0,0 +1,128 @@ +package com.pig4cloud.pigx.admin.api.entity; + +import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.FieldNameConstants; + +import java.time.LocalDateTime; + +/** + * 行政区划表 + * + * @author lbw + * @date 2024-02-16 21:59:02 + */ +@Data +@FieldNameConstants +@TableName("sys_area") +@EqualsAndHashCode(callSuper = true) +@Schema(description = "行政区划表") +public class SysAreaEntity extends Model { + + + /** + * 主键ID + */ + @TableId(type = IdType.ASSIGN_ID) + @Schema(description = "主键ID") + private Long id; + + /** + * 父ID + */ + @Schema(description = "父ID") + private Long pid; + + /** + * 地区名称 + */ + @Schema(description = "地区名称") + private String name; + + /** + * 地区字母 + */ + @Schema(description = "地区字母") + private String letter; + + /** + * 高德地区code + */ + @Schema(description = "地区code") + private Long adcode; + + /** + * 经纬度 + */ + @Schema(description = "经纬度") + private String location; + + /** + * 排序值 + */ + @Schema(description = "排序值") + private Long areaSort; + + /** + * 0:未生效,1:生效 + */ + @Schema(description = "0:未生效,1:生效") + private String areaStatus; + + /** + * 0:国家,1:省,2:城市,3:区县 + */ + @Schema(description = "0:国家,1:省,2:城市,3:区县") + private String areaType; + + /** + * 0:非热门,1:热门 + */ + @Schema(description = "0:非热门,1:热门") + private String hot; + + /** + * 城市编码 + */ + @Schema(description = "城市编码") + private String cityCode; + + /** + * 创建人 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description = "创建人") + private String createBy; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + @Schema(description = "创建时间") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description = "更新时间") + private String updateBy; + + /** + * 更新时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @Schema(description = "更新时间") + private LocalDateTime updateTime; + + /** + * 删除标记 + */ + @TableLogic + @TableField(fill = FieldFill.INSERT) + @Schema(description = "删除标记") + private String delFlag; +} diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysAreaController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysAreaController.java new file mode 100644 index 000000000..7c6bdcbb3 --- /dev/null +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysAreaController.java @@ -0,0 +1,135 @@ +package com.pig4cloud.pigx.admin.controller; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ArrayUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.pig4cloud.pigx.admin.api.entity.SysAreaEntity; +import com.pig4cloud.pigx.admin.service.SysAreaService; +import com.pig4cloud.pigx.common.core.util.R; +import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel; +import com.pig4cloud.pigx.common.log.annotation.SysLog; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springdoc.core.annotations.ParameterObject; +import org.springframework.http.HttpHeaders; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 行政区划 + * + * @author lbw + * @date 2024-02-16 22:40:06 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/sysArea") +@Tag(description = "sysArea", name = "行政区划管理") +@SecurityRequirement(name = HttpHeaders.AUTHORIZATION) +public class SysAreaController { + + private final SysAreaService sysAreaService; + + /** + * 分页查询 + * + * @param page 分页对象 + * @param sysArea 行政区划 + * @return + */ + @Operation(summary = "分页查询", description = "分页查询") + @GetMapping("/page") + @PreAuthorize("@pms.hasPermission('sys_sysArea_view')") + public R getSysAreaPage(@ParameterObject Page page, @ParameterObject SysAreaEntity sysArea) { + return R.ok(sysAreaService.selectPage(page, sysArea)); + } + + /** + * 前端联动组件需要数据 + * + * @param sysArea 查询条件 + * @return tree + */ + @Operation(summary = "分页查询", description = "分页查询") + @GetMapping("/tree") + @PreAuthorize("@pms.hasPermission('sys_sysArea_view')") + public R getSysAreaTree(@ParameterObject SysAreaEntity sysArea) { + return R.ok(sysAreaService.selectTree(sysArea)); + } + + + /** + * 通过id查询行政区划 + * + * @param sysArea 查询条件 + * @return R + */ + @Operation(summary = "通过id查询", description = "通过id查询") + @GetMapping("/details") + @PreAuthorize("@pms.hasPermission('sys_sysArea_view')") + public R getDetails(@ParameterObject SysAreaEntity sysArea) { + return R.ok(sysAreaService.getOne(Wrappers.query(sysArea))); + } + + /** + * 新增行政区划 + * + * @param sysArea 行政区划 + * @return R + */ + @Operation(summary = "新增行政区划", description = "新增行政区划") + @SysLog("新增行政区划") + @PostMapping + @PreAuthorize("@pms.hasPermission('sys_sysArea_add')") + public R save(@RequestBody SysAreaEntity sysArea) { + return R.ok(sysAreaService.save(sysArea)); + } + + /** + * 修改行政区划 + * + * @param sysArea 行政区划 + * @return R + */ + @Operation(summary = "修改行政区划", description = "修改行政区划") + @SysLog("修改行政区划") + @PutMapping + @PreAuthorize("@pms.hasPermission('sys_sysArea_edit')") + public R updateById(@RequestBody SysAreaEntity sysArea) { + return R.ok(sysAreaService.updateById(sysArea)); + } + + /** + * 通过id删除行政区划 + * + * @param ids id列表 + * @return R + */ + @Operation(summary = "通过id删除行政区划", description = "通过id删除行政区划") + @SysLog("通过id删除行政区划") + @DeleteMapping + @PreAuthorize("@pms.hasPermission('sys_sysArea_del')") + public R removeById(@RequestBody Long[] ids) { + return R.ok(sysAreaService.removeBatchByIds(CollUtil.toList(ids))); + } + + + /** + * 导出excel 表格 + * + * @param sysArea 查询条件 + * @param ids 导出指定ID + * @return excel 文件流 + */ + @ResponseExcel + @GetMapping("/export") + @PreAuthorize("@pms.hasPermission('sys_sysArea_export')") + public List export(SysAreaEntity sysArea, Long[] ids) { + return sysAreaService.list(Wrappers.lambdaQuery(sysArea).in(ArrayUtil.isNotEmpty(ids), SysAreaEntity::getId, ids)); + } +} diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysAreaMapper.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysAreaMapper.java new file mode 100644 index 000000000..10a703556 --- /dev/null +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysAreaMapper.java @@ -0,0 +1,11 @@ +package com.pig4cloud.pigx.admin.mapper; + +import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper; +import com.pig4cloud.pigx.admin.api.entity.SysAreaEntity; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface SysAreaMapper extends PigxBaseMapper { + + +} diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysAreaService.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysAreaService.java new file mode 100644 index 000000000..f99400c38 --- /dev/null +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/SysAreaService.java @@ -0,0 +1,28 @@ +package com.pig4cloud.pigx.admin.service; + +import cn.hutool.core.lang.tree.Tree; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.pig4cloud.pigx.admin.api.entity.SysAreaEntity; + +import java.util.List; + +public interface SysAreaService extends IService { + + /** + * 查询行政区划树 + * + * @param sysArea 查询条件 + * @return 树 + */ + List> selectTree(SysAreaEntity sysArea); + + /** + * 分页查询 + * + * @param page 分页对象 + * @param sysArea 行政区划 + * @return Page + */ + Page selectPage(Page page, SysAreaEntity sysArea); +} diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysAreaServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysAreaServiceImpl.java new file mode 100644 index 000000000..5bd23c028 --- /dev/null +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysAreaServiceImpl.java @@ -0,0 +1,74 @@ +package com.pig4cloud.pigx.admin.service.impl; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.lang.tree.Tree; +import cn.hutool.core.lang.tree.TreeNode; +import cn.hutool.core.lang.tree.TreeUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +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.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.pig4cloud.pigx.admin.api.entity.SysAreaEntity; +import com.pig4cloud.pigx.admin.mapper.SysAreaMapper; +import com.pig4cloud.pigx.admin.service.SysAreaService; +import com.pig4cloud.pigx.common.core.constant.enums.YesNoEnum; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Objects; +import java.util.Optional; + +/** + * 行政区划 + * + * @author lbw + * @date 2024-02-16 22:40:06 + */ +@Service +public class SysAreaServiceImpl extends ServiceImpl implements SysAreaService { + /** + * 查询行政区划树 + * + * @param sysArea 查询条件 + * @return 树 + */ + @Override + public List> selectTree(SysAreaEntity sysArea) { + List entityList = baseMapper.selectList(Wrappers.lambdaQuery(sysArea) + .eq(SysAreaEntity::getAreaStatus, YesNoEnum.YES.getCode()) + .orderByDesc(SysAreaEntity::getAreaSort)); + + List> nodeList = CollUtil.newArrayList(); + for (SysAreaEntity sysAreaEntity : entityList) { + TreeNode treeNode = new TreeNode<>(sysAreaEntity.getAdcode(), sysAreaEntity.getPid() + , sysAreaEntity.getName(), -Optional.ofNullable(sysAreaEntity.getAreaSort()).orElse(0L)); + + HashMap extraMap = MapUtil.of(SysAreaEntity.Fields.adcode, sysAreaEntity.getAdcode()); + extraMap.put(SysAreaEntity.Fields.hot, sysAreaEntity.getHot()); + treeNode.setExtra(extraMap); + nodeList.add(treeNode); + } + + return TreeUtil.build(nodeList, Optional.ofNullable(sysArea.getPid()).orElse(1L)); + } + + /** + * 分页查询 + * + * @param page 分页对象 + * @param sysArea 行政区划 + * @return Page + */ + @Override + public Page selectPage(Page page, SysAreaEntity sysArea) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(); + wrapper.like(StrUtil.isNotBlank(sysArea.getName()), SysAreaEntity::getName, sysArea.getName()); + wrapper.eq(Objects.nonNull(sysArea.getAdcode()), SysAreaEntity::getPid, sysArea.getAdcode()); + wrapper.orderByAsc(SysAreaEntity::getAreaType); + wrapper.orderByDesc(SysAreaEntity::getAreaSort); + return baseMapper.selectPage(page, wrapper); + } +} diff --git a/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysAreaMapper.xml b/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysAreaMapper.xml new file mode 100644 index 000000000..3a39091bb --- /dev/null +++ b/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysAreaMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + +