Browse Source

🚀 开发区域管理

master
wangxiang 3 years ago
parent
commit
af08936163
  1. 1
      kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/entity/TreeEntity.java
  2. 59
      kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/Address.java
  3. 35
      kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/Region.java
  4. 38
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/RegionController.java
  5. 20
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/AddressMapper.java
  6. 30
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/RegionMapper.java
  7. 17
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/AddressService.java
  8. 34
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/RegionService.java
  9. 47
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/AddressServiceImpl.java
  10. 52
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/RegionServiceImpl.java
  11. 74
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/Address.xml
  12. 50
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/RegionMapper.xml

1
kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/entity/TreeEntity.java

@ -22,6 +22,7 @@ public class TreeEntity<T> extends CommonEntity { @@ -22,6 +22,7 @@ public class TreeEntity<T> extends CommonEntity {
/** 编号 **/
@ApiModelProperty("编号")
private String id;
/** 父级编号 **/
@ApiModelProperty("父级编号")
private String parentId;

59
kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/Address.java

@ -1,59 +0,0 @@ @@ -1,59 +0,0 @@
package com.cloud.kicc.system.api.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.cloud.kicc.common.data.entity.CommonEntity;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.util.ArrayList;
import java.util.List;
/**
* @Author: TangSheng
* @Description: 地址管理实体
* @Since 1.0
* @Date Created in 9:57 2022/3/21
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName(value="sys_address")
public class Address extends CommonEntity {
/** 编号 **/
@ApiModelProperty("id")
@TableId(value = "id")
private String id;
@ApiModelProperty("编码")
private String code;
/** 父级编号 **/
@ApiModelProperty("父级编号")
private String parentId;
/** 名称 */
@ApiModelProperty("名称")
protected String name;
/** 排序 **/
@ApiModelProperty("排序")
private Integer sort;
@ApiModelProperty("子级集合")
@TableField(exist = false)
@JsonInclude(JsonInclude.Include.NON_EMPTY)
protected List<Address> children = new ArrayList();
@ApiModelProperty("标识字段")
@TableField(exist = false)
private String fooLevel;
// @ApiModelProperty("层级")
// private Integer level;
// @ApiModelProperty("排序")
// private boolean lastLevel;
}

35
kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/Region.java

@ -0,0 +1,35 @@ @@ -0,0 +1,35 @@
package com.cloud.kicc.system.api.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.cloud.kicc.common.data.entity.TreeEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
*<p>
* 区域管理
* 区域数据量太大了,采用懒加载形式处理
*</p>
*
* @Author: entfrm开发团队-王翔
* @Date: 2022/7/18
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName(value="sys_region", excludeProperty = { "remarks", "delFlag" })
public class Region extends TreeEntity<Region> {
/** 区域编码 */
private String code;
/** 地区级别 */
private Integer level;
/** 层级标记 */
@TableField(exist = false)
private String tag;
}

38
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/AddressController.java → kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/RegionController.java

@ -3,8 +3,8 @@ package com.cloud.kicc.system.controller; @@ -3,8 +3,8 @@ package com.cloud.kicc.system.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.cloud.kicc.common.core.api.R;
import com.cloud.kicc.common.core.constant.AppConstants;
import com.cloud.kicc.system.api.entity.Address;
import com.cloud.kicc.system.service.AddressService;
import com.cloud.kicc.system.api.entity.Region;
import com.cloud.kicc.system.service.RegionService;
import com.cloud.kicc.system.service.UserService;
import io.swagger.annotations.Api;
import lombok.RequiredArgsConstructor;
@ -20,30 +20,30 @@ import org.springframework.web.bind.annotation.*; @@ -20,30 +20,30 @@ import org.springframework.web.bind.annotation.*;
@RequiredArgsConstructor
@RequestMapping(AppConstants.APP_SYSTEM + "/address")
@Api(value = "app", tags = "地址管理模块")
public class AddressController {
public class RegionController {
private final UserService userService;
private final AddressService addressService;
private final RegionService regionService;
/**
* 新增节点
* @param address 节点dto
* @param region 节点dto
* @return
*/
@PostMapping("/add")
public R add(@RequestBody Address address){
addressService.save(address);
return R.ok(address);
public R add(@RequestBody Region region){
regionService.save(region);
return R.ok(region);
}
/**
* 修改节点
* @param address 修改对象
* @param region 修改对象
* @return
*/
@PutMapping("/update")
public R update(@RequestBody Address address){
addressService.updateById(address);
return R.ok(address);
public R update(@RequestBody Region region){
regionService.updateById(region);
return R.ok(region);
}
/**
@ -53,10 +53,10 @@ public class AddressController { @@ -53,10 +53,10 @@ public class AddressController {
*/
@DeleteMapping("/remove/{id}")
public R remove(@PathVariable("id") String id){
if(addressService.getMap(Wrappers.<Address>lambdaQuery().eq(Address::getParentId,id))!=null){
if(regionService.getMap(Wrappers.<Region>lambdaQuery().eq(Region::getParentId,id))!=null){
return R.error("存在下级区域,不允许删除");
}
addressService.removeById(id);
regionService.removeById(id);
return R.ok();
}
@ -67,7 +67,7 @@ public class AddressController { @@ -67,7 +67,7 @@ public class AddressController {
*/
@GetMapping("/{id:\\w+}")
public R getById(@PathVariable("id") String id) {
return R.ok(addressService.getById(id));
return R.ok(regionService.getById(id));
}
/**
@ -75,8 +75,8 @@ public class AddressController { @@ -75,8 +75,8 @@ public class AddressController {
* @return
*/
@GetMapping("/list")
public R list(Address address){
return R.ok(addressService.queryList(address));
public R list(Region region){
return R.ok(regionService.queryList(region));
}
/**
@ -85,7 +85,7 @@ public class AddressController { @@ -85,7 +85,7 @@ public class AddressController {
*/
@GetMapping("/lazyList")
public R lazyList(String parentId){
return R.ok(addressService.lazyList(parentId));
return R.ok(regionService.lazyList(parentId));
}
}
}

20
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/AddressMapper.java

@ -1,20 +0,0 @@ @@ -1,20 +0,0 @@
package com.cloud.kicc.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cloud.kicc.system.api.entity.Address;
import java.util.List;
/**
* @Author: TangSheng
* @Description:
* @Since 1.0
* @Date Created in 11:07 2022/3/21
*/
public interface AddressMapper extends BaseMapper<Address> {
List<Address> lazyList(String parentId);
List<Address> queryList(Address address);
}

30
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/RegionMapper.java

@ -0,0 +1,30 @@ @@ -0,0 +1,30 @@
package com.cloud.kicc.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cloud.kicc.system.api.entity.Region;
import java.util.List;
/**
* @Author: TangSheng
* @Description:
* @Since 1.0
* @Date Created in 11:07 2022/3/21
*/
public interface RegionMapper extends BaseMapper<Region> {
/**
* 懒加载查询
* @param parentId 父节点
* @return List
*/
List<Region> lazyList(String parentId);
/**
* 条件查询
* @param region 区域对象
* @return List
*/
List<Region> queryList(Region region);
}

17
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/AddressService.java

@ -1,17 +0,0 @@ @@ -1,17 +0,0 @@
package com.cloud.kicc.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cloud.kicc.system.api.entity.Address;
import java.util.List;
public interface AddressService extends IService<Address> {
List<Address> lazyList(String parentId);
List<Address> queryList(Address address);
}

34
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/RegionService.java

@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
package com.cloud.kicc.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cloud.kicc.system.api.entity.Region;
import java.util.List;
/**
*<p>
* 区域服务
*</p>
*
* @Author: entfrm开发团队-王翔
* @Date: 2022/7/18
*/
public interface RegionService extends IService<Region> {
/**
* 懒加载查询
* @param parentId 父节点
* @return List
*/
List<Region> lazyList(String parentId);
/**
* 条件查询
* @param region 区域对象
* @return List
*/
List<Region> queryList(Region region);
}

47
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/AddressServiceImpl.java

@ -1,47 +0,0 @@ @@ -1,47 +0,0 @@
package com.cloud.kicc.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cloud.kicc.system.api.entity.Address;
import com.cloud.kicc.system.mapper.AddressMapper;
import com.cloud.kicc.system.service.AddressService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
@Slf4j
public class AddressServiceImpl extends ServiceImpl<AddressMapper, Address> implements AddressService {
@Override
public List<Address> queryList(Address address) {
List<Address> addressList = this.baseMapper.queryList(address);
return addressList.stream().filter(item ->"1".equals(item.getFooLevel()))
.map(item -> {
List<Address> addresses = addressList.stream().filter(e -> "1".equals(item.getFooLevel())).collect(Collectors.toList());
if(addresses.size() != 0) {
item.setChildren(addresses);
}
return item;
}).collect(Collectors.toList());
}
@Override
public List<Address> lazyList(String parentId) {
List<Address> addressList = this.baseMapper.lazyList(parentId);
return addressList.stream().filter(item -> item.getParentId().equals(parentId))
.map(item -> {
List<Address> address = addressList.stream().filter(e -> e.getParentId().equals(item.getId())).collect(Collectors.toList());
if(address.size() != 0) {
item.setChildren(address);
}
return item;
}).collect(Collectors.toList());
}
}

52
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/RegionServiceImpl.java

@ -0,0 +1,52 @@ @@ -0,0 +1,52 @@
package com.cloud.kicc.system.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cloud.kicc.system.api.entity.Region;
import com.cloud.kicc.system.mapper.RegionMapper;
import com.cloud.kicc.system.service.RegionService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
/**
*<p>
* 区域服务实现
*</p>
*
* @Author: entfrm开发团队-王翔
* @Date: 2022/7/18
*/
@Service
@RequiredArgsConstructor
public class RegionServiceImpl extends ServiceImpl<RegionMapper, Region> implements RegionService {
@Override
public List<Region> queryList(Region region) {
List<Region> regionList = this.baseMapper.queryList(region);
return regionList.stream().filter(item ->"1".equals(item.getTag()))
.map(item -> {
List<Region> regions = regionList.stream().filter(e -> "1".equals(item.getTag())).collect(Collectors.toList());
if(regions.size() != 0) {
item.setChildren(regions);
}
return item;
}).collect(Collectors.toList());
}
@Override
public List<Region> lazyList(String parentId) {
List<Region> regionList = this.baseMapper.lazyList(parentId);
return regionList.stream().filter(item -> item.getParentId().equals(parentId))
.map(item -> {
List<Region> regions = regionList.stream().filter(e -> e.getParentId().equals(item.getId())).collect(Collectors.toList());
if(regions.size() != 0) {
item.setChildren(regions);
}
return item;
}).collect(Collectors.toList());
}
}

74
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/Address.xml

@ -1,74 +0,0 @@ @@ -1,74 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.cloud.kicc.system.mapper.AddressMapper">
<resultMap id="AddressResult" type="com.cloud.kicc.system.api.entity.Address">
<id column="id" property="id" />
<result column="parent_id" property="parentId" />
<!-- <result column="level" property="level" />-->
<!-- <result column="lastLevel" property="lastLevel" />-->
<result column="code" property="code" />
<result column="name" property="name" />
<result column="sort" property="sort" />
<result column="tenant_id" property="tenantId" />
<result column="create_by_id" property="createById"/>
<result column="create_by_name" property="createByName"/>
<result column="create_time" property="createTime"/>
<result column="update_by_id" property="updateById"/>
<result column="update_by_name" property="updateByName"/>
<result column="update_time" property="updateTime"/>
<result column="remarks" property="remarks"/>
<result column="del_flag" property="delFlag" />
<result column="begin_time" property="beginTime"/>
<result column="end_time" property="endTime"/>
</resultMap>
<select id="queryList" resultType="com.cloud.kicc.system.api.entity.Address">
SELECT * FROM
(
SELECT *, '1' as 'fooLevel' FROM sys_address
where
<if test="name!=null and name!=''">
name like concat('%',#{name},'%')
</if>
<if test="id!=null and id!=''">
and id like concat('%',#{id},'%')
</if>
<if test="createTime!= null and createTime!=''">
and createTime between #{beginTime} and #{endTime}
</if>
UNION ALL
SELECT T2.*, '2' as 'fooLevel' FROM
(SELECT id FROM sys_address where
<if test="name!=null and name!=''">
name like concat('%',#{name},'%')
</if>
<if test="id!=null and id!=''">
and id like concat('%',#{id},'%')
</if>
<if test="createTime!= null and createTime!=''">
and createTime between #{beginTime} and #{endTime}
</if>
) T1,
sys_address T2
WHERE T1.id = T2.parent_id
) result where del_flag ='0'
ORDER BY sort ASC
</select>
<select id="lazyList" resultType="com.cloud.kicc.system.api.entity.Address">
SELECT * FROM
(
SELECT * FROM sys_address where parent_id = #{parent_id}
UNION ALL
SELECT T2.* FROM (SELECT id FROM sys_address where parent_id = #{parent_id}) T1, sys_address T2
WHERE T1.id = T2.parent_id
)result where del_flag ='0'
ORDER BY sort ASC
</select>
</mapper>

50
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/resources/mapper/RegionMapper.xml

@ -0,0 +1,50 @@ @@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.cloud.kicc.system.mapper.RegionMapper">
<select id="queryList" resultType="com.cloud.kicc.system.api.entity.Region">
select * from (
select *, '1' as 'tag' from sys_region
<where>
<if test="name != null and name != ''">
name like concat(#{name},'%')
</if>
<if test="code != null and code!=''">
and code = #{code}
</if>
<if test="createTime != null and createTime != ''">
and createTime between #{beginTime} and #{endTime}
</if>
</where>
union all
select T2.*, '2' as 'tag' from
(select id from sys_region
<where>
<if test="name != null and name != ''">
and name like concat(#{name},'%')
</if>
<if test="code != null and code != ''">
and code = #{code}
</if>
<if test="createTime != null and createTime != ''">
and createTime between #{beginTime} and #{endTime}
</if>
</where>
) T1, sys_region T2
WHERE T1.id = T2.parent_id
) result where del_flag ='0'
ORDER BY sort ASC
</select>
<select id="lazyList" parameterType="String" resultType="com.cloud.kicc.system.api.entity.Region">
SELECT * FROM
(
SELECT * FROM sys_region where parent_id = #{parentId}
UNION ALL
SELECT T2.* FROM (SELECT id FROM sys_region where parent_id = #{parentId}) T1, sys_region T2
WHERE T1.id = T2.parent_id
)result where del_flag ='0'
ORDER BY sort ASC
</select>
</mapper>
Loading…
Cancel
Save