From 1fd13c74d42852ba60553d10fb189b8774414822 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E7=AB=B9=E7=BA=A2?= Date: Wed, 7 Jun 2023 20:24:37 +0800 Subject: [PATCH] =?UTF-8?q?C=E7=AB=AF=E5=9F=8E=E5=B8=82=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cool/store/dao/HyOpenAreaInfoDAO.java | 59 +++++ .../store/mapper/HyOpenAreaInfoMapper.java | 47 ++++ .../resources/mapper/HyOpenAreaInfoMapper.xml | 60 ++++- .../partner/ApplyReservationProvinceDTO.java | 19 ++ .../java/com/cool/store/request/City.java | 34 +++ .../com/cool/store/request/TestRequest.java | 19 ++ .../cool/store/controller/TestController.java | 70 +++++- .../store/config/TokenValidateFilter.java | 2 +- .../controller/MiniProgramAppController.java | 1 - .../store/controller/OpenAreaController.java | 32 +-- .../service/Impl/OpenAreaServiceImpl.java | 212 ++++++++++++++++++ .../cool/store/service/OpenAreaService.java | 50 +++++ 12 files changed, 585 insertions(+), 20 deletions(-) create mode 100644 coolstore-partner-dao/src/main/java/com/cool/store/dao/HyOpenAreaInfoDAO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/dto/partner/ApplyReservationProvinceDTO.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/City.java create mode 100644 coolstore-partner-model/src/main/java/com/cool/store/request/TestRequest.java create mode 100644 coolstore-partner-webc/src/main/java/com/cool/store/service/Impl/OpenAreaServiceImpl.java create mode 100644 coolstore-partner-webc/src/main/java/com/cool/store/service/OpenAreaService.java diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyOpenAreaInfoDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyOpenAreaInfoDAO.java new file mode 100644 index 000000000..cb37b6900 --- /dev/null +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyOpenAreaInfoDAO.java @@ -0,0 +1,59 @@ +package com.cool.store.dao; + +import com.cool.store.dto.partner.ApplyReservationProvinceDTO; +import com.cool.store.entity.HyOpenAreaInfoDO; +import com.cool.store.entity.HyPartnerBaseInfoDO; +import com.cool.store.mapper.HyOpenAreaInfoMapper; +import com.github.pagehelper.PageInfo; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Repository; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2023/6/6 14:32 + * @Version 1.0 + */ +@Repository +public class HyOpenAreaInfoDAO { + + @Resource + HyOpenAreaInfoMapper hyOpenAreaInfoMapper; + + public PageInfo queryKeyOpenArea(){ + return hyOpenAreaInfoMapper.queryKeyOpenArea(); + } + + public List queryByKeyword(String keyword){ + if (StringUtils.isEmpty(keyword)){ + return new ArrayList<>(); + } + return hyOpenAreaInfoMapper.queryByKeyword(keyword); + } + + public List queryFirstLevel(){ + return hyOpenAreaInfoMapper.queryFirstLevel(); + } + + public List queryByIdsExcludeFirstLevel(List ids){ + if (CollectionUtils.isEmpty(ids)){ + return new ArrayList<>(); + } + return hyOpenAreaInfoMapper.queryByIdsExcludeFirstLevel(ids); + } + + public List getApplyReservationProvinceCount(){ + return hyOpenAreaInfoMapper.getApplyReservationProvinceCount(); + } + + public List getChildrenList(String type ,Long parentId){ + if (parentId==null){ + return new ArrayList<>(); + } + return hyOpenAreaInfoMapper.getChildrenList(type,parentId); + } +} diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyOpenAreaInfoMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyOpenAreaInfoMapper.java index a3581e90f..090036d31 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyOpenAreaInfoMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyOpenAreaInfoMapper.java @@ -1,8 +1,13 @@ package com.cool.store.mapper; +import com.cool.store.dto.partner.ApplyReservationProvinceDTO; import com.cool.store.entity.HyOpenAreaInfoDO; +import com.cool.store.entity.HyPartnerBaseInfoDO; +import com.github.pagehelper.PageInfo; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * @author zhangchenbiao * @date 2023-05-29 03:51 @@ -22,4 +27,46 @@ public interface HyOpenAreaInfoMapper { * dateTime:2023-05-29 03:51 */ int updateByPrimaryKeySelective(@Param("record") HyOpenAreaInfoDO record); + + /** + * 查询重点城市 + * @return + */ + PageInfo queryKeyOpenArea(); + + + /** + * 查询所有 + * @return + */ + List queryByKeyword(@Param("keyword") String keyword); + + /** + * 查询所有一级城市 (所有省份+直辖市) + * @return + */ + List queryFirstLevel(); + + + /** + * 查询所有一级城市 (所有省份+直辖市) + * @return + */ + List queryByIdsExcludeFirstLevel(@Param("ids") List ids); + + /** + * 查询省份可申请可预约数量 + * @return + */ + List getApplyReservationProvinceCount(); + + /** + * 查询子列表 + * @return + */ + List getChildrenList(@Param("type") String type , @Param("parentId") Long parentId); + + + + } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyOpenAreaInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyOpenAreaInfoMapper.xml index c66f1251b..91b0c2fec 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyOpenAreaInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyOpenAreaInfoMapper.xml @@ -18,7 +18,7 @@ id, parent_id, area_name, area_path, background_banner, detail_banner, area_status, deleted, create_time, update_time, update_user_id - + insert into hy_open_area_info @@ -121,4 +121,62 @@ where id = #{record.id} + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/ApplyReservationProvinceDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/ApplyReservationProvinceDTO.java new file mode 100644 index 000000000..fd32b7f5f --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/partner/ApplyReservationProvinceDTO.java @@ -0,0 +1,19 @@ +package com.cool.store.dto.partner; + +import lombok.Data; + +/** + * @Author suzhuhong + * @Date 2023/6/7 17:27 + * @Version 1.0 + */ +@Data +public class ApplyReservationProvinceDTO { + + private String areaName; + + private Integer applyCount; + + private Integer reservationCount; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/City.java b/coolstore-partner-model/src/main/java/com/cool/store/request/City.java new file mode 100644 index 000000000..fe388a2bd --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/City.java @@ -0,0 +1,34 @@ +package com.cool.store.request; + +import lombok.Data; + +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2023/6/6 16:48 + * @Version 1.0 + */ +@Data +public class City { + + private String name; + + private List area; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List getArea() { + return area; + } + + public void setArea(List area) { + this.area = area; + } +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/request/TestRequest.java b/coolstore-partner-model/src/main/java/com/cool/store/request/TestRequest.java new file mode 100644 index 000000000..27fb6893f --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/request/TestRequest.java @@ -0,0 +1,19 @@ +package com.cool.store.request; + +import lombok.Data; + +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2023/6/6 16:21 + * @Version 1.0 + */ +@Data +public class TestRequest { + + private String name; + + private List city; + +} diff --git a/coolstore-partner-webb/src/main/java/com/cool/store/controller/TestController.java b/coolstore-partner-webb/src/main/java/com/cool/store/controller/TestController.java index 8c6d7b2d9..ba075bac2 100644 --- a/coolstore-partner-webb/src/main/java/com/cool/store/controller/TestController.java +++ b/coolstore-partner-webb/src/main/java/com/cool/store/controller/TestController.java @@ -1,18 +1,21 @@ package com.cool.store.controller; +import com.alibaba.fastjson.JSONObject; +import com.cool.store.entity.HyOpenAreaInfoDO; import com.cool.store.entity.EnterpriseUserDO; import com.cool.store.enums.RocketMqTagEnum; +import com.cool.store.mapper.HyOpenAreaInfoMapper; import com.cool.store.http.ISVHttpRequest; import com.cool.store.mq.producer.SimpleMessageService; +import com.cool.store.request.AllocationInvestmentManagerRequest; +import com.cool.store.request.City; +import com.cool.store.request.TestRequest; import com.cool.store.response.ResponseResult; import com.cool.store.service.EnterpriseUserService; import com.cool.store.utils.UUIDUtils; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.List; @@ -34,6 +37,8 @@ public class TestController { private EnterpriseUserService enterpriseUserService; @Resource private ISVHttpRequest isvHttpRequest; + @Resource + HyOpenAreaInfoMapper hyOpenAreaInfoMapper; @GetMapping("/sendMq") public ResponseResult sendMq(){ @@ -43,6 +48,63 @@ public class TestController { return ResponseResult.success(); } + @PostMapping("/post") + public ResponseResult get(@RequestBody List testRequestList){ + log.info(JSONObject.toJSONString(testRequestList)); + for (TestRequest testRequest:testRequestList) { + //省市区 + String name = testRequest.getName(); + HyOpenAreaInfoDO hyOpenAreaInfoDO = new HyOpenAreaInfoDO(); + String replace = name.replace(" ", ""); + hyOpenAreaInfoDO.setAreaName(replace); + String regionPath = "/"+replace+"/"; + hyOpenAreaInfoDO.setAreaPath(regionPath); + hyOpenAreaInfoDO.setAreaStatus("open"); + hyOpenAreaInfoMapper.insertSelective(hyOpenAreaInfoDO); + Long id = hyOpenAreaInfoDO.getId(); + log.info("yuyyyyyyyyyyyyyyyyyyyyy:{}",JSONObject.toJSONString(hyOpenAreaInfoDO)); + List city = testRequest.getCity(); + for (City c:city) { + String regionPath2 = ""; + Long id1 = 0L; + if (c.getName().equals("其他")){ + continue; + } + if (c.getName().equals(replace)){ + //直辖市 + regionPath2 = regionPath; + id1 = id; + }else { + regionPath2 = regionPath +c.getName().replace(" ","")+"/"; + hyOpenAreaInfoDO = new HyOpenAreaInfoDO(); + hyOpenAreaInfoDO.setAreaName(c.getName().replace(" ","")); + hyOpenAreaInfoDO.setAreaStatus("open"); + hyOpenAreaInfoDO.setAreaPath(regionPath2); + hyOpenAreaInfoDO.setParentId(id); + hyOpenAreaInfoMapper.insertSelective(hyOpenAreaInfoDO); + log.info("33333333333333333333333333333333:{}",JSONObject.toJSONString(hyOpenAreaInfoDO)); + id1 = hyOpenAreaInfoDO.getId(); + } + + List area = c.getArea(); + for (String c1:area) { + if (c1.equals("其他")){ + continue; + } + String regionPath1 = regionPath2 +c1.replace(" ","")+"/"; + hyOpenAreaInfoDO = new HyOpenAreaInfoDO(); + hyOpenAreaInfoDO.setAreaName(c1.replace(" ","")); + hyOpenAreaInfoDO.setAreaStatus("open"); + hyOpenAreaInfoDO.setAreaPath(regionPath1); + hyOpenAreaInfoDO.setParentId(id1); + log.info("hhhhhhhhhhhhhhhhhhhhhhhhhhhh:{}",JSONObject.toJSONString(hyOpenAreaInfoDO)); + hyOpenAreaInfoMapper.insertSelective(hyOpenAreaInfoDO); + } + } + } + return ResponseResult.success(); + } + @GetMapping("getUserInfo") public ResponseResult getUserInfo(@RequestParam("userId")String userId){ EnterpriseUserDO enterpriseUser = enterpriseUserService.getUserInfoByUserId(userId); diff --git a/coolstore-partner-webc/src/main/java/com/cool/store/config/TokenValidateFilter.java b/coolstore-partner-webc/src/main/java/com/cool/store/config/TokenValidateFilter.java index 3e4f66ac9..85109fe69 100644 --- a/coolstore-partner-webc/src/main/java/com/cool/store/config/TokenValidateFilter.java +++ b/coolstore-partner-webc/src/main/java/com/cool/store/config/TokenValidateFilter.java @@ -41,7 +41,7 @@ public class TokenValidateFilter implements Filter { private static List patternList = Lists.newArrayList("/web/check/ok","/check/ok", "/partner/mini/program/doc.html","/partner/mini/program/v2/api-docs", - "/**/swagger*/**", + "/**/swagger*/**","/**/openArea/**", "/**/webjars/**"); diff --git a/coolstore-partner-webc/src/main/java/com/cool/store/controller/MiniProgramAppController.java b/coolstore-partner-webc/src/main/java/com/cool/store/controller/MiniProgramAppController.java index 39cf09cf6..3e579f680 100644 --- a/coolstore-partner-webc/src/main/java/com/cool/store/controller/MiniProgramAppController.java +++ b/coolstore-partner-webc/src/main/java/com/cool/store/controller/MiniProgramAppController.java @@ -6,7 +6,6 @@ import com.cool.store.dto.wx.MiniProgramMsgDTO; import com.cool.store.response.ResponseResult; import com.cool.store.service.WechatMiniAppService; import com.cool.store.vo.wx.CodeSessionVO; -import com.cool.store.vo.wx.MiniProgramUserVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; diff --git a/coolstore-partner-webc/src/main/java/com/cool/store/controller/OpenAreaController.java b/coolstore-partner-webc/src/main/java/com/cool/store/controller/OpenAreaController.java index 29ca427cb..f1793d9c6 100644 --- a/coolstore-partner-webc/src/main/java/com/cool/store/controller/OpenAreaController.java +++ b/coolstore-partner-webc/src/main/java/com/cool/store/controller/OpenAreaController.java @@ -1,6 +1,11 @@ package com.cool.store.controller; +import com.alibaba.fastjson.JSONArray; +import com.aliyun.openservices.shade.com.alibaba.rocketmq.common.filter.impl.Op; +import com.cool.store.enums.RocketMqTagEnum; import com.cool.store.response.ResponseResult; +import com.cool.store.service.OpenAreaService; +import com.cool.store.utils.UUIDUtils; import com.cool.store.vo.OpenAreaTreeVO; import com.cool.store.vo.OpenAreaVO; import com.cool.store.vo.OpenProvinceVO; @@ -12,6 +17,7 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; import java.util.List; /** @@ -26,28 +32,31 @@ import java.util.List; public class OpenAreaController { + @Resource + OpenAreaService openAreaService; + + @GetMapping(path = "/getOpenAreaList") @ApiOperation("点击重点城市/可申请加盟省份/可预约加盟省份 子列表") @ApiImplicitParams({ - @ApiImplicitParam(name = "parentId", value = "父区域名称", required = false), + @ApiImplicitParam(name = "parentId", value = "父区域ID", required = false), @ApiImplicitParam(name = "type", value = "可预约-reservation 可申请-apply ", required = false) }) public ResponseResult> getOpenAreaList(@RequestParam(value = "parentId",required = false)Long parentId, @RequestParam(value = "type",required = false)String type){ - return ResponseResult.success(); + return ResponseResult.success(openAreaService.getChildrenList(type,parentId)); } @GetMapping(path = "/areaApplyQuery") @ApiOperation("区域申请搜索 树形结构") @ApiImplicitParams({ - @ApiImplicitParam(name = "keyWord", value = "搜索关键字", required = false), + @ApiImplicitParam(name = "keyword", value = "搜索关键字", required = false), }) - public ResponseResult> getOpenAreaList(@RequestParam(value = "keyWord",required = false)String keyWord){ - - - return ResponseResult.success(); + public ResponseResult> getOpenAreaList(@RequestParam(value = "keyword",required = false)String keyword){ + List openAreaTreeVOS = openAreaService.queryByKeyword(keyword); + return ResponseResult.success(openAreaTreeVOS); } @@ -55,8 +64,8 @@ public class OpenAreaController { @ApiOperation("重点开放城市列表)") public ResponseResult> getOpenAreaList(@RequestParam(value = "pageNumber",required = false,defaultValue = "1")Integer pageNumber, @RequestParam(value = "pageSize",required = false,defaultValue = "10")Integer pageSize){ - - return ResponseResult.success(); + PageInfo openAreaVOPageInfo = openAreaService.queryKeyOpenAreaList(pageSize, pageNumber); + return ResponseResult.success(openAreaVOPageInfo); } @@ -64,8 +73,7 @@ public class OpenAreaController { @GetMapping(path = "/getOpenProvince") @ApiOperation("可申请加盟省份/可预约加盟省份") public ResponseResult getOpenProvince(){ - - return ResponseResult.success(); + return ResponseResult.success(openAreaService.getOpenProvince()); } @@ -73,6 +81,4 @@ public class OpenAreaController { - - } diff --git a/coolstore-partner-webc/src/main/java/com/cool/store/service/Impl/OpenAreaServiceImpl.java b/coolstore-partner-webc/src/main/java/com/cool/store/service/Impl/OpenAreaServiceImpl.java new file mode 100644 index 000000000..81e5ba8e3 --- /dev/null +++ b/coolstore-partner-webc/src/main/java/com/cool/store/service/Impl/OpenAreaServiceImpl.java @@ -0,0 +1,212 @@ +package com.cool.store.service.Impl; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.cool.store.dao.HyOpenAreaInfoDAO; +import com.cool.store.dto.partner.ApplyReservationProvinceDTO; +import com.cool.store.entity.HyOpenAreaInfoDO; +import com.cool.store.service.OpenAreaService; +import com.cool.store.vo.OpenAreaTreeVO; +import com.cool.store.vo.OpenAreaVO; +import com.cool.store.vo.OpenProvinceVO; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Author suzhuhong + * @Date 2023/6/6 14:28 + * @Version 1.0 + */ +@Service +public class OpenAreaServiceImpl implements OpenAreaService { + + + @Resource + HyOpenAreaInfoDAO hyOpenAreaInfoDAO; + + + @Override + public PageInfo queryKeyOpenAreaList(Integer pageSize, Integer pageNumber) { + PageHelper.startPage(pageNumber,pageSize); + PageInfo hyOpenAreaInfoDOPageInfo = hyOpenAreaInfoDAO.queryKeyOpenArea(); + if (hyOpenAreaInfoDOPageInfo==null){ + return new PageInfo<>(); + } + List list = new ArrayList<>(); + List hyOpenAreaInfoDOList = hyOpenAreaInfoDOPageInfo.getList(); + hyOpenAreaInfoDOList.stream().forEach(x->{ + list.add(convertDoToVo(x)); + }); + hyOpenAreaInfoDOPageInfo.setList(list); + return hyOpenAreaInfoDOPageInfo; + } + + + /** + * List DO->VO + * @param hyOpenAreaInfoDO + * @return + */ + private OpenAreaVO convertDoToVo(HyOpenAreaInfoDO hyOpenAreaInfoDO){ + OpenAreaVO openAreaVO = new OpenAreaVO(); + openAreaVO.setId(hyOpenAreaInfoDO.getId()); + openAreaVO.setAreaName(hyOpenAreaInfoDO.getAreaName()); + openAreaVO.setParentId(hyOpenAreaInfoDO.getParentId()); + openAreaVO.setAreaPath(hyOpenAreaInfoDO.getAreaPath()); + openAreaVO.setAreaStatus(hyOpenAreaInfoDO.getAreaStatus()); + openAreaVO.setBackgroundBanner(hyOpenAreaInfoDO.getBackgroundBanner()); + openAreaVO.setDetailBanner(hyOpenAreaInfoDO.getDetailBanner()); + return openAreaVO; + } + + + + @Override + public List queryByKeyword(String keyword) { + //先查出所有的一级菜单 + List openArea = hyOpenAreaInfoDAO.queryFirstLevel(); + Map longHyOpenAreaInfoDOMap = openArea.stream().collect(Collectors.toMap(HyOpenAreaInfoDO::getId, x -> x)); + + //查询关键字下所有的数据 原始的数据 + List hyOpenAreaInfoDOS = hyOpenAreaInfoDAO.queryByKeyword(keyword); + + Map hyMap = hyOpenAreaInfoDOS.stream().collect(Collectors.toMap(HyOpenAreaInfoDO::getId, x -> x)); + + Set list = new HashSet(); + hyOpenAreaInfoDOS.stream().forEach(x->{ + Long parentId = x.getParentId(); + HyOpenAreaInfoDO hyOpenAreaInfoDO = hyMap.get(parentId); + if (hyOpenAreaInfoDO==null&&parentId!=null){ + //添加到集合中 + list.add(x.getParentId()); + } + }); + if (CollectionUtils.isNotEmpty(list)){ + //二级采单 + List hyOpenAreaInfoDOList = hyOpenAreaInfoDAO.queryByIdsExcludeFirstLevel(new ArrayList<>(list)); + hyOpenAreaInfoDOS.addAll(hyOpenAreaInfoDOList); + //如果二级采单是空 说明list全部是一级采单 + if (CollectionUtils.isEmpty(hyOpenAreaInfoDOList)){ + list.stream().forEach(x->{ + HyOpenAreaInfoDO hyOpenAreaInfoDO = hyMap.get(x); + if (hyOpenAreaInfoDO==null){ + hyOpenAreaInfoDOS.add(longHyOpenAreaInfoDOMap.get(x)); + } + }); + } + hyOpenAreaInfoDOList.stream().forEach(x->{ + Long parentId = x.getParentId(); + HyOpenAreaInfoDO hyOpenAreaInfoDO = hyMap.get(parentId); + if (hyOpenAreaInfoDO==null){ + HyOpenAreaInfoDO infoDO = longHyOpenAreaInfoDOMap.get(parentId); + hyOpenAreaInfoDOS.add(infoDO); + } + }); + } + JSONArray objects = buildTree(JSONArray.parseArray(JSONObject.toJSONString(hyOpenAreaInfoDOS)), "id", "parentId","childNode" ); + List openAreaTreeVOS = JSONObject.parseArray(objects.toJSONString(), OpenAreaTreeVO.class); + return openAreaTreeVOS; + } + + @Override + public OpenProvinceVO getOpenProvince() { + //先查出所有的一级菜单 + List openArea = hyOpenAreaInfoDAO.queryFirstLevel(); + List applyReservationProvinceCount = hyOpenAreaInfoDAO.getApplyReservationProvinceCount(); + Map applyMap = applyReservationProvinceCount.stream().collect(Collectors.toMap(ApplyReservationProvinceDTO::getAreaName, ApplyReservationProvinceDTO::getApplyCount)); + Map reservationMap = applyReservationProvinceCount.stream().collect(Collectors.toMap(ApplyReservationProvinceDTO::getAreaName, ApplyReservationProvinceDTO::getReservationCount)); + List applyProvinceList = new ArrayList<>(); + List reservationProvinceList = new ArrayList<>(); + + openArea.stream().forEach(x->{ + String areaName = x.getAreaName(); + if (applyMap.getOrDefault(areaName,0)>0){ + applyProvinceList.add(convertDoToVo(x)); + } + if (reservationMap.getOrDefault(areaName,0)>0){ + reservationProvinceList.add(convertDoToVo(x)); + } + }); + OpenProvinceVO openProvinceVO = new OpenProvinceVO(); + openProvinceVO.setApplyProvinceList(applyProvinceList); + openProvinceVO.setReservationProvinceList(reservationProvinceList); + return openProvinceVO; + } + + @Override + public List getChildrenList(String type, Long parentId) { + List childrenList = hyOpenAreaInfoDAO.getChildrenList(type, parentId); + List result = new ArrayList<>(); + childrenList.stream().forEach(x->{ + OpenAreaVO openAreaVO = convertDoToVo(x); + result.add(openAreaVO); + }); + return result; + } + + + /** + * 组装城市树 + * @param arr + * @param id + * @param pid + * @param child + * @return + */ + public static JSONArray buildTree(JSONArray arr, String id, String pid, String child) { + //新建一个JSONArray来接收组装成树形结构的返回值 + JSONArray jsonArray = new JSONArray(); + //新建一个JSONObject对象 + JSONObject hash = new JSONObject(); + //将数组转换为object格式 + for (int i = 0; i < arr.size(); i++) { + //获取当前的JSON对象 + JSONObject json = (JSONObject) arr.get(i); + //把当前id作为键,当前JSON对象作为值 put回hash这个Object对象中 + //这里的put方法类似于map的put方法 + hash.put(json.getString(id), json); + } + //遍历结果集 + for (int j = 0; j < arr.size(); j++) { + //单条记录 + JSONObject aVal = (JSONObject) arr.get(j); + //在hash中取出key为单条记录中pid的值 + String pidStr = ""; + //如果父级id不等于null + if (aVal.get(pid) != null) { + pidStr = aVal.get(pid).toString(); + } + //从hash这个对象中获取父级对象 parent + JSONObject hashParent = (JSONObject) hash.get(pidStr); + //如果记录的pid存在,则说明它有父节点,将她添加到孩子节点的集合中 + if (hashParent != null) { + //检查是否有child属性 + if (hashParent.get(child) != null) { + //有子节点 则先将子节点取出 + JSONArray children = (JSONArray) hashParent.get(child); + //然后把当前这个对象放进子节点之中 + children.add(aVal); + //最后把子节点在放回父节点之中 + hashParent.put(child, children); + } else { + //无子节点 则新建一个子节点 + JSONArray children = new JSONArray(); + //然后再把当前对象放进去 + children.add(aVal); + //最后在放回父节点之中 + hashParent.put(child, children); + } + } else { + jsonArray.add(aVal); + } + } + return jsonArray; + + } +} diff --git a/coolstore-partner-webc/src/main/java/com/cool/store/service/OpenAreaService.java b/coolstore-partner-webc/src/main/java/com/cool/store/service/OpenAreaService.java new file mode 100644 index 000000000..687e5d780 --- /dev/null +++ b/coolstore-partner-webc/src/main/java/com/cool/store/service/OpenAreaService.java @@ -0,0 +1,50 @@ +package com.cool.store.service; + +import com.alibaba.fastjson.JSONArray; +import com.cool.store.vo.OpenAreaTreeVO; +import com.cool.store.vo.OpenAreaVO; +import com.cool.store.vo.OpenProvinceVO; +import com.github.pagehelper.PageInfo; + +import java.util.List; + +/** + * @Author suzhuhong + * @Date 2023/6/6 14:27 + * @Version 1.0 + */ +public interface OpenAreaService { + + /** + * 重点城市 + * @param pageSize + * @param pageNumber + * @return + */ + PageInfo queryKeyOpenAreaList(Integer pageSize,Integer pageNumber); + + + /** + * 查询全部 + * @return + */ + List queryByKeyword(String keyword); + + + /** + * 查询可申请区域 可预约区域 + * @return + */ + OpenProvinceVO getOpenProvince(); + + + /** + * 查询子列表 + * @param type + * @param parentId + * @return + */ + List getChildrenList(String type,Long parentId); + + +}