C端城市相关接口
This commit is contained in:
@@ -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<HyOpenAreaInfoDO> queryKeyOpenArea(){
|
||||||
|
return hyOpenAreaInfoMapper.queryKeyOpenArea();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<HyOpenAreaInfoDO> queryByKeyword(String keyword){
|
||||||
|
if (StringUtils.isEmpty(keyword)){
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
return hyOpenAreaInfoMapper.queryByKeyword(keyword);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<HyOpenAreaInfoDO> queryFirstLevel(){
|
||||||
|
return hyOpenAreaInfoMapper.queryFirstLevel();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<HyOpenAreaInfoDO> queryByIdsExcludeFirstLevel(List<Long> ids){
|
||||||
|
if (CollectionUtils.isEmpty(ids)){
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
return hyOpenAreaInfoMapper.queryByIdsExcludeFirstLevel(ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<ApplyReservationProvinceDTO> getApplyReservationProvinceCount(){
|
||||||
|
return hyOpenAreaInfoMapper.getApplyReservationProvinceCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<HyOpenAreaInfoDO> getChildrenList(String type ,Long parentId){
|
||||||
|
if (parentId==null){
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
return hyOpenAreaInfoMapper.getChildrenList(type,parentId);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,8 +1,13 @@
|
|||||||
package com.cool.store.mapper;
|
package com.cool.store.mapper;
|
||||||
|
|
||||||
|
import com.cool.store.dto.partner.ApplyReservationProvinceDTO;
|
||||||
import com.cool.store.entity.HyOpenAreaInfoDO;
|
import com.cool.store.entity.HyOpenAreaInfoDO;
|
||||||
|
import com.cool.store.entity.HyPartnerBaseInfoDO;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author zhangchenbiao
|
* @author zhangchenbiao
|
||||||
* @date 2023-05-29 03:51
|
* @date 2023-05-29 03:51
|
||||||
@@ -22,4 +27,46 @@ public interface HyOpenAreaInfoMapper {
|
|||||||
* dateTime:2023-05-29 03:51
|
* dateTime:2023-05-29 03:51
|
||||||
*/
|
*/
|
||||||
int updateByPrimaryKeySelective(@Param("record") HyOpenAreaInfoDO record);
|
int updateByPrimaryKeySelective(@Param("record") HyOpenAreaInfoDO record);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询重点城市
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
PageInfo<HyOpenAreaInfoDO> queryKeyOpenArea();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询所有
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<HyOpenAreaInfoDO> queryByKeyword(@Param("keyword") String keyword);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询所有一级城市 (所有省份+直辖市)
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<HyOpenAreaInfoDO> queryFirstLevel();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询所有一级城市 (所有省份+直辖市)
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<HyOpenAreaInfoDO> queryByIdsExcludeFirstLevel(@Param("ids") List<Long> ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询省份可申请可预约数量
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<ApplyReservationProvinceDTO> getApplyReservationProvinceCount();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询子列表
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<HyOpenAreaInfoDO> getChildrenList(@Param("type") String type , @Param("parentId") Long parentId);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
id, parent_id, area_name, area_path, background_banner, detail_banner, area_status,
|
id, parent_id, area_name, area_path, background_banner, detail_banner, area_status,
|
||||||
deleted, create_time, update_time, update_user_id
|
deleted, create_time, update_time, update_user_id
|
||||||
</sql>
|
</sql>
|
||||||
<insert id="insertSelective" keyColumn="id" keyProperty="record.id" useGeneratedKeys="true">
|
<insert id="insertSelective" parameterType="com.cool.store.entity.HyOpenAreaInfoDO" keyProperty="record.id" useGeneratedKeys="true">
|
||||||
insert into hy_open_area_info
|
insert into hy_open_area_info
|
||||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
<if test="record.parentId != null">
|
<if test="record.parentId != null">
|
||||||
@@ -121,4 +121,62 @@
|
|||||||
</set>
|
</set>
|
||||||
where id = #{record.id}
|
where id = #{record.id}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
|
||||||
|
<select id="queryKeyOpenArea" resultMap="BaseResultMap">
|
||||||
|
select * from
|
||||||
|
hy_open_area_info
|
||||||
|
where area_status = 'keyOpen'
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="queryByKeyword" resultMap="BaseResultMap">
|
||||||
|
select * from
|
||||||
|
hy_open_area_info
|
||||||
|
where area_path like concat('%',#{keyword},'%')
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
<select id="queryFirstLevel" resultMap="BaseResultMap">
|
||||||
|
select * from
|
||||||
|
hy_open_area_info where parent_id is null
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
<select id="queryByIdsExcludeFirstLevel" resultMap="BaseResultMap">
|
||||||
|
select * from
|
||||||
|
hy_open_area_info where parent_id is not null
|
||||||
|
<if test="ids !=null and ids.size>0">
|
||||||
|
<foreach collection="ids" item="id" open="and id in (" close=")" separator=",">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
<select id="getApplyReservationProvinceCount" resultType="com.cool.store.dto.partner.ApplyReservationProvinceDTO">
|
||||||
|
SELECT
|
||||||
|
substring(SUBSTRING_INDEX(area_path,'/',2),2) as areaName,
|
||||||
|
sum(if((area_status='open' or area_status = 'keyOpen') ,1,0)) as applyCount,
|
||||||
|
sum(if((area_status='notOpen' or area_status = 'saturated') ,1,0)) as reservationCount
|
||||||
|
FROM `hy_open_area_info` where parent_id is not null
|
||||||
|
group by substring(SUBSTRING_INDEX(area_path,'/',2),2)
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
<select id="getChildrenList" resultMap="BaseResultMap">
|
||||||
|
select * from
|
||||||
|
hy_open_area_info
|
||||||
|
<where>
|
||||||
|
<if test="parentId!=null">
|
||||||
|
and parent_id = #{parentId}
|
||||||
|
</if>
|
||||||
|
<if test="type!=null and type == 'apply'">
|
||||||
|
and (area_status = 'open' or area_status = 'keyOpen')
|
||||||
|
</if>
|
||||||
|
<if test="type!=null and type == 'reservation'">
|
||||||
|
and (area_status='notOpen' or area_status = 'saturated')
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
@@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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<String> area;
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> getArea() {
|
||||||
|
return area;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setArea(List<String> area) {
|
||||||
|
this.area = area;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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> city;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,18 +1,21 @@
|
|||||||
package com.cool.store.controller;
|
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.entity.EnterpriseUserDO;
|
||||||
import com.cool.store.enums.RocketMqTagEnum;
|
import com.cool.store.enums.RocketMqTagEnum;
|
||||||
|
import com.cool.store.mapper.HyOpenAreaInfoMapper;
|
||||||
import com.cool.store.http.ISVHttpRequest;
|
import com.cool.store.http.ISVHttpRequest;
|
||||||
import com.cool.store.mq.producer.SimpleMessageService;
|
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.response.ResponseResult;
|
||||||
import com.cool.store.service.EnterpriseUserService;
|
import com.cool.store.service.EnterpriseUserService;
|
||||||
import com.cool.store.utils.UUIDUtils;
|
import com.cool.store.utils.UUIDUtils;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -34,6 +37,8 @@ public class TestController {
|
|||||||
private EnterpriseUserService enterpriseUserService;
|
private EnterpriseUserService enterpriseUserService;
|
||||||
@Resource
|
@Resource
|
||||||
private ISVHttpRequest isvHttpRequest;
|
private ISVHttpRequest isvHttpRequest;
|
||||||
|
@Resource
|
||||||
|
HyOpenAreaInfoMapper hyOpenAreaInfoMapper;
|
||||||
|
|
||||||
@GetMapping("/sendMq")
|
@GetMapping("/sendMq")
|
||||||
public ResponseResult sendMq(){
|
public ResponseResult sendMq(){
|
||||||
@@ -43,6 +48,63 @@ public class TestController {
|
|||||||
return ResponseResult.success();
|
return ResponseResult.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/post")
|
||||||
|
public ResponseResult<Boolean> get(@RequestBody List<TestRequest> 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> 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<String> 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")
|
@GetMapping("getUserInfo")
|
||||||
public ResponseResult getUserInfo(@RequestParam("userId")String userId){
|
public ResponseResult getUserInfo(@RequestParam("userId")String userId){
|
||||||
EnterpriseUserDO enterpriseUser = enterpriseUserService.getUserInfoByUserId(userId);
|
EnterpriseUserDO enterpriseUser = enterpriseUserService.getUserInfoByUserId(userId);
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public class TokenValidateFilter implements Filter {
|
|||||||
private static List<String> patternList =
|
private static List<String> patternList =
|
||||||
|
|
||||||
Lists.newArrayList("/web/check/ok","/check/ok", "/partner/mini/program/doc.html","/partner/mini/program/v2/api-docs",
|
Lists.newArrayList("/web/check/ok","/check/ok", "/partner/mini/program/doc.html","/partner/mini/program/v2/api-docs",
|
||||||
"/**/swagger*/**",
|
"/**/swagger*/**","/**/openArea/**",
|
||||||
"/**/webjars/**");
|
"/**/webjars/**");
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import com.cool.store.dto.wx.MiniProgramMsgDTO;
|
|||||||
import com.cool.store.response.ResponseResult;
|
import com.cool.store.response.ResponseResult;
|
||||||
import com.cool.store.service.WechatMiniAppService;
|
import com.cool.store.service.WechatMiniAppService;
|
||||||
import com.cool.store.vo.wx.CodeSessionVO;
|
import com.cool.store.vo.wx.CodeSessionVO;
|
||||||
import com.cool.store.vo.wx.MiniProgramUserVO;
|
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|||||||
@@ -1,6 +1,11 @@
|
|||||||
package com.cool.store.controller;
|
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.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.OpenAreaTreeVO;
|
||||||
import com.cool.store.vo.OpenAreaVO;
|
import com.cool.store.vo.OpenAreaVO;
|
||||||
import com.cool.store.vo.OpenProvinceVO;
|
import com.cool.store.vo.OpenProvinceVO;
|
||||||
@@ -12,6 +17,7 @@ import io.swagger.annotations.ApiOperation;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -26,28 +32,31 @@ import java.util.List;
|
|||||||
public class OpenAreaController {
|
public class OpenAreaController {
|
||||||
|
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
OpenAreaService openAreaService;
|
||||||
|
|
||||||
|
|
||||||
@GetMapping(path = "/getOpenAreaList")
|
@GetMapping(path = "/getOpenAreaList")
|
||||||
@ApiOperation("点击重点城市/可申请加盟省份/可预约加盟省份 子列表")
|
@ApiOperation("点击重点城市/可申请加盟省份/可预约加盟省份 子列表")
|
||||||
@ApiImplicitParams({
|
@ApiImplicitParams({
|
||||||
@ApiImplicitParam(name = "parentId", value = "父区域名称", required = false),
|
@ApiImplicitParam(name = "parentId", value = "父区域ID", required = false),
|
||||||
@ApiImplicitParam(name = "type", value = "可预约-reservation 可申请-apply ", required = false)
|
@ApiImplicitParam(name = "type", value = "可预约-reservation 可申请-apply ", required = false)
|
||||||
})
|
})
|
||||||
public ResponseResult<List<OpenAreaVO>> getOpenAreaList(@RequestParam(value = "parentId",required = false)Long parentId,
|
public ResponseResult<List<OpenAreaVO>> getOpenAreaList(@RequestParam(value = "parentId",required = false)Long parentId,
|
||||||
@RequestParam(value = "type",required = false)String type){
|
@RequestParam(value = "type",required = false)String type){
|
||||||
|
|
||||||
return ResponseResult.success();
|
return ResponseResult.success(openAreaService.getChildrenList(type,parentId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@GetMapping(path = "/areaApplyQuery")
|
@GetMapping(path = "/areaApplyQuery")
|
||||||
@ApiOperation("区域申请搜索 树形结构")
|
@ApiOperation("区域申请搜索 树形结构")
|
||||||
@ApiImplicitParams({
|
@ApiImplicitParams({
|
||||||
@ApiImplicitParam(name = "keyWord", value = "搜索关键字", required = false),
|
@ApiImplicitParam(name = "keyword", value = "搜索关键字", required = false),
|
||||||
})
|
})
|
||||||
public ResponseResult<List<OpenAreaTreeVO>> getOpenAreaList(@RequestParam(value = "keyWord",required = false)String keyWord){
|
public ResponseResult<List<OpenAreaTreeVO>> getOpenAreaList(@RequestParam(value = "keyword",required = false)String keyword){
|
||||||
|
List<OpenAreaTreeVO> openAreaTreeVOS = openAreaService.queryByKeyword(keyword);
|
||||||
|
return ResponseResult.success(openAreaTreeVOS);
|
||||||
return ResponseResult.success();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -55,8 +64,8 @@ public class OpenAreaController {
|
|||||||
@ApiOperation("重点开放城市列表)")
|
@ApiOperation("重点开放城市列表)")
|
||||||
public ResponseResult<PageInfo<OpenAreaVO>> getOpenAreaList(@RequestParam(value = "pageNumber",required = false,defaultValue = "1")Integer pageNumber,
|
public ResponseResult<PageInfo<OpenAreaVO>> getOpenAreaList(@RequestParam(value = "pageNumber",required = false,defaultValue = "1")Integer pageNumber,
|
||||||
@RequestParam(value = "pageSize",required = false,defaultValue = "10")Integer pageSize){
|
@RequestParam(value = "pageSize",required = false,defaultValue = "10")Integer pageSize){
|
||||||
|
PageInfo<OpenAreaVO> openAreaVOPageInfo = openAreaService.queryKeyOpenAreaList(pageSize, pageNumber);
|
||||||
return ResponseResult.success();
|
return ResponseResult.success(openAreaVOPageInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -64,8 +73,7 @@ public class OpenAreaController {
|
|||||||
@GetMapping(path = "/getOpenProvince")
|
@GetMapping(path = "/getOpenProvince")
|
||||||
@ApiOperation("可申请加盟省份/可预约加盟省份")
|
@ApiOperation("可申请加盟省份/可预约加盟省份")
|
||||||
public ResponseResult<OpenProvinceVO> getOpenProvince(){
|
public ResponseResult<OpenProvinceVO> getOpenProvince(){
|
||||||
|
return ResponseResult.success(openAreaService.getOpenProvince());
|
||||||
return ResponseResult.success();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -73,6 +81,4 @@ public class OpenAreaController {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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<OpenAreaVO> queryKeyOpenAreaList(Integer pageSize, Integer pageNumber) {
|
||||||
|
PageHelper.startPage(pageNumber,pageSize);
|
||||||
|
PageInfo hyOpenAreaInfoDOPageInfo = hyOpenAreaInfoDAO.queryKeyOpenArea();
|
||||||
|
if (hyOpenAreaInfoDOPageInfo==null){
|
||||||
|
return new PageInfo<>();
|
||||||
|
}
|
||||||
|
List<OpenAreaVO> list = new ArrayList<>();
|
||||||
|
List<HyOpenAreaInfoDO> 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<OpenAreaTreeVO> queryByKeyword(String keyword) {
|
||||||
|
//先查出所有的一级菜单
|
||||||
|
List<HyOpenAreaInfoDO> openArea = hyOpenAreaInfoDAO.queryFirstLevel();
|
||||||
|
Map<Long, HyOpenAreaInfoDO> longHyOpenAreaInfoDOMap = openArea.stream().collect(Collectors.toMap(HyOpenAreaInfoDO::getId, x -> x));
|
||||||
|
|
||||||
|
//查询关键字下所有的数据 原始的数据
|
||||||
|
List<HyOpenAreaInfoDO> hyOpenAreaInfoDOS = hyOpenAreaInfoDAO.queryByKeyword(keyword);
|
||||||
|
|
||||||
|
Map<Long, HyOpenAreaInfoDO> 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<HyOpenAreaInfoDO> 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<OpenAreaTreeVO> openAreaTreeVOS = JSONObject.parseArray(objects.toJSONString(), OpenAreaTreeVO.class);
|
||||||
|
return openAreaTreeVOS;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public OpenProvinceVO getOpenProvince() {
|
||||||
|
//先查出所有的一级菜单
|
||||||
|
List<HyOpenAreaInfoDO> openArea = hyOpenAreaInfoDAO.queryFirstLevel();
|
||||||
|
List<ApplyReservationProvinceDTO> applyReservationProvinceCount = hyOpenAreaInfoDAO.getApplyReservationProvinceCount();
|
||||||
|
Map<String, Integer> applyMap = applyReservationProvinceCount.stream().collect(Collectors.toMap(ApplyReservationProvinceDTO::getAreaName, ApplyReservationProvinceDTO::getApplyCount));
|
||||||
|
Map<String, Integer> reservationMap = applyReservationProvinceCount.stream().collect(Collectors.toMap(ApplyReservationProvinceDTO::getAreaName, ApplyReservationProvinceDTO::getReservationCount));
|
||||||
|
List<OpenAreaVO> applyProvinceList = new ArrayList<>();
|
||||||
|
List<OpenAreaVO> 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<OpenAreaVO> getChildrenList(String type, Long parentId) {
|
||||||
|
List<HyOpenAreaInfoDO> childrenList = hyOpenAreaInfoDAO.getChildrenList(type, parentId);
|
||||||
|
List<OpenAreaVO> 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;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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<OpenAreaVO> queryKeyOpenAreaList(Integer pageSize,Integer pageNumber);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询全部
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<OpenAreaTreeVO> queryByKeyword(String keyword);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询可申请区域 可预约区域
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
OpenProvinceVO getOpenProvince();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询子列表
|
||||||
|
* @param type
|
||||||
|
* @param parentId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<OpenAreaVO> getChildrenList(String type,Long parentId);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user