diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/AreaStatusEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/AreaStatusEnum.java index a2c11fed1..360f94192 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/AreaStatusEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/AreaStatusEnum.java @@ -9,8 +9,6 @@ public enum AreaStatusEnum { OPEN("open","开放"), - NOT_OPEN("notOpen","未开放"), - SATURATED("saturated","已饱和"), KEY_OPEN("keyOpen","重点开放"), diff --git a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java index c1d8e96b8..a7f853c16 100644 --- a/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java +++ b/coolstore-partner-common/src/main/java/com/cool/store/enums/ErrorCodeEnum.java @@ -131,6 +131,9 @@ public enum ErrorCodeEnum { EXHIBITION_NOT_SIGNED(106004, "线索未进行会销签到", null), EXHIBITION_NOT_SUBMIT_INTENTION(106005, "线索未提交意向申请", null), EXHIBITION_LINE_INTERVIEWED(106006, "线索已预约面审", null), + + + OPEN_AREA_IS_NOT_EXISTS(107006, "意向区域城市不存在", null), ; 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 index 710657010..44ddae98e 100644 --- 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 @@ -10,6 +10,7 @@ import com.google.common.collect.Maps; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.ListUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import javax.annotation.Resource; @@ -29,8 +30,8 @@ public class HyOpenAreaInfoDAO { @Resource HyOpenAreaInfoMapper hyOpenAreaInfoMapper; - public List queryKeyOpenArea(){ - return hyOpenAreaInfoMapper.queryKeyOpenArea(); + public List queryKeyOpenArea(String keyword,Integer keyOpenStatus){ + return hyOpenAreaInfoMapper.queryKeyOpenArea( keyword, keyOpenStatus); } public List queryByKeyword(String keyword,Boolean applyFlag,String areaStatus,Boolean filterData){ @@ -156,4 +157,9 @@ public class HyOpenAreaInfoDAO { } return hyOpenAreaInfoMapper.selectByAreaPath(areaPath); } + + public int updateByPrimaryKeySelective(HyOpenAreaInfoDO hyOpenAreaInfoDO){ + return hyOpenAreaInfoMapper.updateByPrimaryKeySelective( hyOpenAreaInfoDO); + } + } 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 14292b821..e4aea5f83 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 @@ -29,7 +29,7 @@ public interface HyOpenAreaInfoMapper { * 查询重点城市 * @return */ - List queryKeyOpenArea(); + List queryKeyOpenArea(@Param("keyword") String keyword,@Param("keyOpenStatus") Integer keyOpenStatus); /** diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyOpenAreaInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyOpenAreaInfoMapper.xml index bf291be37..f15afeae2 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyOpenAreaInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyOpenAreaInfoMapper.xml @@ -26,6 +26,9 @@ insert into xfsg_open_area_info + + id, + parent_id, @@ -58,6 +61,9 @@ + + #{record.id}, + #{record.parentId}, @@ -123,6 +129,9 @@ update_user_id = #{record.updateUserId}, + + key_open_status = #{record.keyOpenStatus}, + where id = #{record.id} @@ -185,8 +194,12 @@ select * from xfsg_open_area_info where area_status = 'keyOpen' - and province_city_flag = 1 - and parent_id is not null + + and area_name like CONCAT('%',#{keyword},'%') + + + and key_open_status = #{keyOpenStatus} + + + \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/dto/OpenCityDTO.java b/coolstore-partner-model/src/main/java/com/cool/store/dto/OpenCityDTO.java new file mode 100644 index 000000000..99435c0b8 --- /dev/null +++ b/coolstore-partner-model/src/main/java/com/cool/store/dto/OpenCityDTO.java @@ -0,0 +1,21 @@ +package com.cool.store.dto; + +import com.cool.store.annotation.Excel; +import lombok.Data; + +/** + * @Author suzhuhong + * @Date 2024/3/25 17:03 + * @Version 1.0 + */ +@Data +public class OpenCityDTO { + + @Excel(name = "CODE", width = 10) + private Integer code; + @Excel(name = "NAME", width = 20) + private String name; + + private String path; + +} diff --git a/coolstore-partner-model/src/main/java/com/cool/store/entity/HyOpenAreaInfoDO.java b/coolstore-partner-model/src/main/java/com/cool/store/entity/HyOpenAreaInfoDO.java index 2ac8efadc..5f7792a7a 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/entity/HyOpenAreaInfoDO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/entity/HyOpenAreaInfoDO.java @@ -50,4 +50,6 @@ public class HyOpenAreaInfoDO implements Serializable { @ApiModelProperty("更新人") private String updateUserId; + @ApiModelProperty("重点开放城市状态 0-开启 1-禁用") + private Integer keyOpenStatus; } \ No newline at end of file diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/LineInfoVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/LineInfoVO.java index 9d59f76bc..5e53f838f 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/LineInfoVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/LineInfoVO.java @@ -188,5 +188,8 @@ public class LineInfoVO { @ApiModelProperty("更新人") private String updateUserId; + @ApiModelProperty("公开拒绝原因") + private String rejectPublicReason; + } diff --git a/coolstore-partner-model/src/main/java/com/cool/store/vo/OpenAreaVO.java b/coolstore-partner-model/src/main/java/com/cool/store/vo/OpenAreaVO.java index 53d806044..a00da02f4 100644 --- a/coolstore-partner-model/src/main/java/com/cool/store/vo/OpenAreaVO.java +++ b/coolstore-partner-model/src/main/java/com/cool/store/vo/OpenAreaVO.java @@ -46,4 +46,10 @@ public class OpenAreaVO { @ApiModelProperty("更新人") private String updateUserId; + @ApiModelProperty("更新人名称") + private String updateUserName; + + @ApiModelProperty("重点开放城市状态 0-开启 1-禁用") + private Integer keyOpenStatus; + } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/OpenAreaService.java b/coolstore-partner-service/src/main/java/com/cool/store/service/OpenAreaService.java index bd242495b..c6b522ebf 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/OpenAreaService.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/OpenAreaService.java @@ -51,7 +51,32 @@ public interface OpenAreaService { Boolean batchUpdate(String userId, OpenAreaRequest openAreaRequest); - PageInfo queryKeyOpenAreaList(Integer pageSize, Integer pageNumber); + PageInfo queryKeyOpenAreaList(Integer pageSize, Integer pageNumber,String keyWord,Integer status); + + + /** + * 可加盟省份 + * @param pageSize + * @param pageNumber + * @return + */ + PageInfo franchisableProvinces(Integer pageSize, Integer pageNumber); + + /** + * 删除重点城市 将重点城市状态改为open + * @param id + * @return + */ + Boolean deleteKeyCity(Long id); + + /** + * 启用 or 禁用 + * @param id + * @param keyOpenStatus + * @return + */ + Boolean updateKeyCityStatus(Long id,Integer keyOpenStatus); + /** * V1.4 diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/OpenAreaServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/OpenAreaServiceImpl.java index 8e23c86c8..13f70a1d5 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/OpenAreaServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/OpenAreaServiceImpl.java @@ -3,8 +3,13 @@ package com.cool.store.service.impl; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.cool.store.constants.CommonConstants; +import com.cool.store.dao.EnterpriseUserDAO; import com.cool.store.dao.HyOpenAreaInfoDAO; +import com.cool.store.entity.EnterpriseUserDO; import com.cool.store.entity.HyOpenAreaInfoDO; +import com.cool.store.enums.AreaStatusEnum; +import com.cool.store.enums.ErrorCodeEnum; +import com.cool.store.exception.ServiceException; import com.cool.store.mapper.HyOpenAreaInfoMapper; import com.cool.store.request.OpenAreaRequest; import com.cool.store.service.OpenAreaService; @@ -39,6 +44,8 @@ public class OpenAreaServiceImpl implements OpenAreaService { private HyOpenAreaInfoMapper hyOpenAreaInfoMapper; @Resource private RedisUtilPool redisUtilPool; + @Resource + EnterpriseUserDAO enterpriseUserDAO; @Override @@ -153,15 +160,34 @@ public class OpenAreaServiceImpl implements OpenAreaService { } @Override - public PageInfo queryKeyOpenAreaList(Integer pageSize, Integer pageNumber) { + public PageInfo queryKeyOpenAreaList(Integer pageSize, Integer pageNumber,String keyWord,Integer status) { PageHelper.startPage(pageNumber,pageSize); - List hyOpenAreaInfoDOS = hyOpenAreaInfoDAO.queryKeyOpenArea(); + List hyOpenAreaInfoDOS = hyOpenAreaInfoDAO.queryKeyOpenArea(keyWord,status); PageInfo hyOpenAreaInfoDOPageInfo = new PageInfo<>(hyOpenAreaInfoDOS); if (hyOpenAreaInfoDOPageInfo==null){ return new PageInfo<>(); } List list = new ArrayList<>(); List hyOpenAreaInfoDOList = hyOpenAreaInfoDOPageInfo.getList(); + List userIds = hyOpenAreaInfoDOList.stream().map(HyOpenAreaInfoDO::getUpdateUserId).collect(Collectors.toList()); + List userInfoByUserIds = enterpriseUserDAO.getUserInfoByUserIds(userIds); + Map userMap = userInfoByUserIds.stream().collect(Collectors.toMap(EnterpriseUserDO::getUserId, EnterpriseUserDO::getName)); + hyOpenAreaInfoDOList.stream().forEach(x->{ + OpenAreaVO openAreaVO = convertDoToVo(x); + openAreaVO.setUpdateUserName(userMap.get(x.getUpdateUserId())); + list.add(openAreaVO); + }); + hyOpenAreaInfoDOPageInfo.setList(list); + return hyOpenAreaInfoDOPageInfo; + } + + @Override + public PageInfo franchisableProvinces(Integer pageSize, Integer pageNumber) { + PageHelper.startPage(pageNumber,pageSize); + List openArea = hyOpenAreaInfoDAO.queryFirstLevel(); + PageInfo hyOpenAreaInfoDOPageInfo = new PageInfo<>(openArea); + List list = new ArrayList<>(); + List hyOpenAreaInfoDOList = hyOpenAreaInfoDOPageInfo.getList(); hyOpenAreaInfoDOList.stream().forEach(x->{ list.add(convertDoToVo(x)); }); @@ -169,6 +195,27 @@ public class OpenAreaServiceImpl implements OpenAreaService { return hyOpenAreaInfoDOPageInfo; } + @Override + public Boolean deleteKeyCity(Long id) { + HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(id); + if (hyOpenAreaInfoDO==null){ + throw new ServiceException(ErrorCodeEnum.OPEN_AREA_IS_NOT_EXISTS); + } + hyOpenAreaInfoDO.setAreaStatus(AreaStatusEnum.OPEN.getCode()); + hyOpenAreaInfoDAO.updateByPrimaryKeySelective(hyOpenAreaInfoDO); + return Boolean.TRUE; + } + + @Override + public Boolean updateKeyCityStatus(Long id, Integer keyOpenStatus) { + HyOpenAreaInfoDO hyOpenAreaInfoDO = hyOpenAreaInfoDAO.selectById(id); + if (hyOpenAreaInfoDO==null){ + throw new ServiceException(ErrorCodeEnum.OPEN_AREA_IS_NOT_EXISTS); + } + hyOpenAreaInfoDO.setKeyOpenStatus(keyOpenStatus); + hyOpenAreaInfoDAO.updateByPrimaryKeySelective(hyOpenAreaInfoDO); + return Boolean.TRUE; + } @Override @@ -199,6 +246,7 @@ public class OpenAreaServiceImpl implements OpenAreaService { openAreaVO.setAreaStatus(hyOpenAreaInfoDO.getAreaStatus()); openAreaVO.setBackgroundBanner(hyOpenAreaInfoDO.getBackgroundBanner()); openAreaVO.setDetailBanner(hyOpenAreaInfoDO.getDetailBanner()); + openAreaVO.setKeyOpenStatus(hyOpenAreaInfoDO.getKeyOpenStatus()); return openAreaVO; } diff --git a/coolstore-partner-service/src/main/java/com/cool/store/utils/poi/ExcelUtil.java b/coolstore-partner-service/src/main/java/com/cool/store/utils/poi/ExcelUtil.java index 6daa90dad..ccea4e063 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/utils/poi/ExcelUtil.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/utils/poi/ExcelUtil.java @@ -218,7 +218,7 @@ public class ExcelUtil { // 定义一个map用于存放excel列的序号和field. Map cellMap = new HashMap<>(16); // 获取表头 - Row heard = sheet.getRow(6); + Row heard = sheet.getRow(0); for (int i = 0; i < heard.getPhysicalNumberOfCells(); i++) { Cell cell = heard.getCell(i); if (ObjectUtil.isNotNull(cell)) { @@ -1132,8 +1132,8 @@ public class ExcelUtil { */ private List fillCollection(Sheet sheet, int rows, Map fieldsMap) throws InstantiationException, IllegalAccessException { List list = new ArrayList<>(); - int j=10; - for (int i = 0; i < rows-5; i++) { + int j=1; + for (int i = 0; i < rows-1; i++) { // 从第2行开始取数据,默认第一行是表头. Row row = sheet.getRow(j); j++; diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/OpenAreaController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/OpenAreaController.java index 83bc2b485..f5ab3f0ab 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/OpenAreaController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webb/OpenAreaController.java @@ -71,9 +71,29 @@ public class OpenAreaController { @GetMapping(path = "/getKeyOpenAreaList") @ApiOperation("重点城市列表") - public ResponseResult> getKeyOpenAreaList(@RequestParam(value = "pageNumber",required = false,defaultValue = "1")Integer pageNumber, - @RequestParam(value = "pageSize",required = false,defaultValue = "10")Integer pageSize ){ - return ResponseResult.success(openAreaService.queryKeyOpenAreaList(pageSize,pageNumber)); + public ResponseResult> getKeyOpenAreaList(@RequestParam(value = "pageNumber",required = true,defaultValue = "1")Integer pageNumber, + @RequestParam(value = "pageSize",required = true,defaultValue = "10")Integer pageSize, + @RequestParam(value = "keyword",required = false)String keyword, + @RequestParam(value = "status",required = false)Integer status ){ + return ResponseResult.success(openAreaService.queryKeyOpenAreaList(pageSize,pageNumber,keyword,status)); + } + + @GetMapping(path = "/updateKeyCityStatus") + @ApiOperation("启用或者禁用重点城市") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "区域ID", required = true), + @ApiImplicitParam(name = "keyOpenStatus", value = "启用或者禁用 启用-0 禁用-1", required = true) + }) + public ResponseResult getKeyOpenAreaList(@RequestParam(value = "id",required = false)Long id, + @RequestParam(value = "keyOpenStatus",required = false)Integer keyOpenStatus ){ + return ResponseResult.success(openAreaService.updateKeyCityStatus(id,keyOpenStatus)); + } + + + @GetMapping(path = "/deleteKeyCity") + @ApiOperation("删除重点城市") + public ResponseResult getKeyOpenAreaList(@RequestParam(value = "id",required = false)Long id){ + return ResponseResult.success(openAreaService.deleteKeyCity(id)); } } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniOpenAreaController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniOpenAreaController.java index c5c2bcf7e..293f08b91 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniOpenAreaController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/MiniOpenAreaController.java @@ -57,7 +57,15 @@ public class MiniOpenAreaController { @ApiOperation("重点开放城市列表)") public ResponseResult> getOpenAreaList(@RequestParam(value = "pageNumber",required = false,defaultValue = "1")Integer pageNumber, @RequestParam(value = "pageSize",required = false,defaultValue = "10")Integer pageSize){ - PageInfo openAreaVOPageInfo = openAreaService.queryKeyOpenAreaList(pageSize, pageNumber); + PageInfo openAreaVOPageInfo = openAreaService.queryKeyOpenAreaList(pageSize, pageNumber,null,null); + return ResponseResult.success(openAreaVOPageInfo); + } + + @GetMapping(path = "/franchisableProvinces") + @ApiOperation("可申请省份)") + public ResponseResult> franchisableProvinces(@RequestParam(value = "pageNumber",required = false,defaultValue = "1")Integer pageNumber, + @RequestParam(value = "pageSize",required = false,defaultValue = "10")Integer pageSize){ + PageInfo openAreaVOPageInfo = openAreaService.franchisableProvinces(pageSize, pageNumber); return ResponseResult.success(openAreaVOPageInfo); } diff --git a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/TestController.java b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/TestController.java index 4ee762c67..55b56786d 100644 --- a/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/TestController.java +++ b/coolstore-partner-web/src/main/java/com/cool/store/controller/webc/TestController.java @@ -1,20 +1,26 @@ package com.cool.store.controller.webc; +import com.alibaba.fastjson.JSONObject; import com.cool.store.dao.*; +import com.cool.store.dto.OpenCityDTO; import com.cool.store.entity.*; +import com.cool.store.mapper.HyOpenAreaInfoMapper; import com.cool.store.response.ResponseResult; +import com.cool.store.utils.poi.ExcelUtil; 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 org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import java.io.ByteArrayOutputStream; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.concurrent.Future; @Slf4j @RestController -@RequestMapping("/test") +@RequestMapping("/pc/test") public class TestController { @Resource @@ -35,6 +41,79 @@ public class TestController { @Resource private UserRegionMappingDAO userRegionMappingDAO; + + @PostMapping("/importCity") + public ResponseResult importCity(MultipartFile file){ + ExcelUtil util = new ExcelUtil<>(OpenCityDTO.class); + try { + List lineDOList = util.importExcel(file.getInputStream()); + get(lineDOList); + } catch (Exception e) { + e.printStackTrace(); + } + return ResponseResult.success(0); + } + + @Resource + HyOpenAreaInfoMapper hyOpenAreaInfoMapper; + + public Integer get(List importTask) { + List codes = new ArrayList<>(); + try { + List acityDTOS = importTask; + HashMap first = new HashMap<>(8); + for (OpenCityDTO acityDTO : acityDTOS){ + Integer code = acityDTO.getCode(); + //如果code后面三位都是0 + int i = code % 10000; + if (i == 0){ + //表示是一级菜单 + acityDTO.setPath("/"+acityDTO.getName()+"/"); + first.put(code / 10000,acityDTO.getName()); + HyOpenAreaInfoDO hyOpenAreaInfoDO = new HyOpenAreaInfoDO(); + hyOpenAreaInfoDO.setAreaPath(acityDTO.getPath()); + hyOpenAreaInfoDO.setId(acityDTO.getCode().longValue()); + hyOpenAreaInfoDO.setAreaName(acityDTO.getName()); + hyOpenAreaInfoDO.setAreaStatus("open"); + hyOpenAreaInfoMapper.insertSelective(hyOpenAreaInfoDO); + continue; + } + //二级菜单 + int j = code % 100; + if (j == 0){ + //北京市直辖市 + String name = acityDTO.getName(); + //code + int k = code / 10000; + String firstName = first.get(k); + if (firstName == null){ + codes.add(acityDTO); + log.info("========================={}",acityDTO); + continue; + } + // 先对name中相同的字段进行去重 + String newName = name.replace(firstName, ""); + // 然后拼接path + acityDTO.setPath("/"+firstName+"/"+newName+"/"); + acityDTO.setName(newName); + HyOpenAreaInfoDO hyOpenAreaInfoDO = new HyOpenAreaInfoDO(); + hyOpenAreaInfoDO.setAreaPath(acityDTO.getPath()); + hyOpenAreaInfoDO.setId(acityDTO.getCode().longValue()); + hyOpenAreaInfoDO.setAreaName(acityDTO.getName()); + hyOpenAreaInfoDO.setAreaStatus("open"); + hyOpenAreaInfoDO.setParentId(k*10000L); + hyOpenAreaInfoMapper.insertSelective(hyOpenAreaInfoDO); + } + + } + System.out.println(JSONObject.toJSONString(codes)); + } catch (Exception e) { + } + return 0; + } + + + @GetMapping("/getUserInfo") public ResponseResult getUserInfo(@RequestParam("userId")String userId){ EnterpriseUserDO enterpriseUser = enterpriseUserDAO.getUserInfoById(userId);