From 61731745804bf68c985e2e67464c508655f2ac04 Mon Sep 17 00:00:00 2001 From: pserimal Date: Wed, 28 Jun 2023 16:04:17 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96MDM=E7=9C=81=E5=B8=82?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cool/store/constants/RedisConstant.java | 14 +++++ .../com/cool/store/mapper/MdmAreaMapper.java | 20 +++++++ .../main/resources/mapper/MdmAreaMapper.xml | 18 ++++++ .../com/cool/store/dto/mdm/AreaSonDTO.java | 12 ++++ .../{ApprovalRegionDO.java => MDMAreaDO.java} | 4 +- .../cool/store/service/MDMAreaService.java | 20 +++++++ .../service/impl/MDMAreaServiceImpl.java | 55 +++++++++++++++++++ .../store/controller/MDMAreaController.java | 38 +++++++++++++ 8 files changed, 179 insertions(+), 2 deletions(-) create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/mapper/MdmAreaMapper.java create mode 100644 coolstore-partner-dao/src/main/resources/mapper/MdmAreaMapper.xml create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/mdm/AreaSonDTO.java rename coolstore-partner-model/src/main/java/com/cool/store/entity/{ApprovalRegionDO.java => MDMAreaDO.java} (86%) create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/MDMAreaService.java create mode 100644 coolstore-partner-service/src/main/java/com/cool/store/service/impl/MDMAreaServiceImpl.java create mode 100644 coolstore-partner-webb/src/main/java/com/cool/store/controller/MDMAreaController.java diff --git a/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java b/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java index 6f27bf41c..0cdf61372 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/constants/RedisConstant.java @@ -229,4 +229,18 @@ public class RedisConstant { public static final String PHONE_NUMBER= "phone_number_"; + /** + * MDM 省市区数据缓存 + */ + + /** + * 省级数据缓存 + */ + public static final String MDM_AREA_PROVINCE = "mdm:area:province"; + + /** + * 其他区域数据缓存 + */ + public static final String MDM_AREA_OTHERS = "mdm:area:others"; + } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/MdmAreaMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/MdmAreaMapper.java new file mode 100644 index 000000000..0a909f808 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/MdmAreaMapper.java @@ -0,0 +1,20 @@ +package com.cool.store.mapper; + +import com.cool.store.entity.MDMAreaDO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface MdmAreaMapper { + + /** + * 获取 MDM 省级地区数据 + * @return + */ + List getProvince(); + + List getSonArea(@Param("code") String code); + +} diff --git a/coolstore-partner-dao/src/main/resources/mapper/MdmAreaMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/MdmAreaMapper.xml new file mode 100644 index 000000000..ba90de3a3 --- /dev/null +++ b/coolstore-partner-dao/src/main/resources/mapper/MdmAreaMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/mdm/AreaSonDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/mdm/AreaSonDTO.java new file mode 100644 index 000000000..bbf1078bc --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/mdm/AreaSonDTO.java @@ -0,0 +1,12 @@ +package com.cool.store.dto.mdm; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class AreaSonDTO { + + @ApiModelProperty("父级code") + private String code; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/ApprovalRegionDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/MDMAreaDO.java similarity index 86% rename from coolstore-partner-model/src/main/java/com/cool/store/entity/ApprovalRegionDO.java rename to coolstore-partner-model/src/main/java/com/cool/store/entity/MDMAreaDO.java index e13b82881..415d328ec 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/ApprovalRegionDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/MDMAreaDO.java @@ -4,7 +4,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data -public class ApprovalRegionDO { +public class MDMAreaDO { @ApiModelProperty("id") private Integer id; @@ -16,7 +16,7 @@ public class ApprovalRegionDO { private String code; @ApiModelProperty("地区名") - private String regionName; + private String areaName; @ApiModelProperty("地区父级编号") private String parentCode; diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/MDMAreaService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/MDMAreaService.java new file mode 100644 index 000000000..a1d1c665a --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/MDMAreaService.java @@ -0,0 +1,20 @@ +package com.cool.store.service; + +import com.cool.store.entity.MDMAreaDO; + +import java.util.List; + +public interface MDMAreaService { + + /** + * 获取省级数据 + */ + List getProvince(); + + /** + * 获取子级地区 + * @param code 父级 code + */ + List getSonArea(String code); + +} diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MDMAreaServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MDMAreaServiceImpl.java new file mode 100644 index 000000000..cb816227e --- /dev/null +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/MDMAreaServiceImpl.java @@ -0,0 +1,55 @@ +package com.cool.store.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.cool.store.constants.RedisConstant; +import com.cool.store.entity.MDMAreaDO; +import com.cool.store.mapper.MdmAreaMapper; +import com.cool.store.service.MDMAreaService; +import com.cool.store.utils.RedisUtilPool; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class MDMAreaServiceImpl implements MDMAreaService { + + @Autowired + private RedisUtilPool redisUtilPool; + + @Autowired + private MdmAreaMapper mdmAreaMapper; + + /** + * 获取省级数据 + */ + @Override + public List getProvince() { + String provincesJson = redisUtilPool.getString(RedisConstant.MDM_AREA_PROVINCE); + if (StringUtils.isNotEmpty(provincesJson)) { + return (List) JSONObject.parseObject(provincesJson, List.class); + } + List areaDOList = mdmAreaMapper.getProvince(); + //过期时间三小时 + redisUtilPool.setString(RedisConstant.MDM_AREA_PROVINCE, JSONObject.toJSONString(areaDOList), 3 * 60 * 60); + return areaDOList; + } + + /** + * 获取子级地区 + * @param code 父级 code + */ + @Override + public List getSonArea(String code) { + String provincesJson = redisUtilPool.getString(RedisConstant.MDM_AREA_OTHERS); + if (StringUtils.isNotEmpty(provincesJson)) { + return (List) JSONObject.parseObject(provincesJson, List.class); + } + List areaDOList = mdmAreaMapper.getSonArea(code); + //过期时间三小时 + redisUtilPool.setString(RedisConstant.MDM_AREA_PROVINCE, JSONObject.toJSONString(areaDOList), 3 * 60 * 60); + return areaDOList; + } + +} diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/controller/MDMAreaController.java b/coolstore-partner-webb/src/main/java/com/cool/store/controller/MDMAreaController.java new file mode 100644 index 000000000..111a7cc19 --- /dev/null +++ b/coolstore-partner-webb/src/main/java/com/cool/store/controller/MDMAreaController.java @@ -0,0 +1,38 @@ +package com.cool.store.controller; + +import com.cool.store.dto.mdm.AreaSonDTO; +import com.cool.store.entity.MDMAreaDO; +import com.cool.store.response.ResponseResult; +import com.cool.store.service.MDMAreaService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequestMapping("/mdm/area") +@Api(tags = "MDM省市信息") +public class MDMAreaController { + + @Autowired + private MDMAreaService mdmAreaService; + + @PostMapping("/province") + @ApiOperation("获取MDM省级信息") + public ResponseResult> getProvince() { + return ResponseResult.success(mdmAreaService.getProvince()); + } + + @PostMapping("/son") + @ApiOperation("获取子级区域数据") + private ResponseResult> getSonArea(@RequestBody AreaSonDTO areaSon) { + return ResponseResult.success(mdmAreaService.getSonArea(areaSon.getCode())); + } + + +}