44323
2024-02-22 aa8ff2d61669d0779fdacdba76e26388587b435d
guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/HouseResourceService.java
@@ -186,8 +186,10 @@
        SearchHouseResourceRes searchHouseResource = new SearchHouseResourceRes();
        List<SearchHouseResourceListRes> searchHouseResourceListRes = this.baseMapper.searchHouseResource(req, cityIds, districtIds, saleAmountStart, saleAmountEnd, houseModels, houseTypeIds);
        // 如果有根据用户历史来搜索必看 如果没有搜索出数据 那么查询所有必看
        if (req.getDataType()!=null&&req.getDataType()==1 && (!StringUtils.hasLength(req.getDistrict())) && searchHouseResourceListRes!=null&&searchHouseResourceListRes.size()==0){
        if (req.getDataType()!=null&&req.getDataType()==1 && (!StringUtils.hasLength(req.getDistrict()))
                && searchHouseResourceListRes!=null&&searchHouseResourceListRes.size()==0){
            cityIds=null;
            districtIds=null;
            searchHouseResourceListRes = this.baseMapper.searchHouseResource(req, cityIds, districtIds, saleAmountStart, saleAmountEnd, houseModels, houseTypeIds);
@@ -198,6 +200,27 @@
                t.setHouseResource(3);
            }
        }
        if (req.getUserType()==5){
            // 中介房源
            List<SearchHouseResourceListRes> collect = searchHouseResourceListRes.stream()
                    .filter(t -> t.getHouseResource() == 3)
                    .sorted(Comparator.comparing(SearchHouseResourceListRes::getInsertTime).reversed())
                    .collect(Collectors.toList());
            // 个人房源
            List<SearchHouseResourceListRes> collect1 = searchHouseResourceListRes.stream()
                    .filter(t -> t.getHouseResource() == 2)
                    .sorted(Comparator.comparing(SearchHouseResourceListRes::getInsertTime).reversed())
                    .collect(Collectors.toList());
            searchHouseResourceListRes = collect;
            searchHouseResourceListRes.addAll(collect1);
        }else{
            List<SearchHouseResourceListRes> collect = searchHouseResourceListRes.stream()
                    .sorted(Comparator.comparing(SearchHouseResourceListRes::getInsertTime).reversed())
                    .collect(Collectors.toList());
            searchHouseResourceListRes = collect;
        }
        searchHouseResource.setList(searchHouseResourceListRes);
        List<SearchHouseResourceListRes> searchHouseResourceListRes1 = this.baseMapper.searchHouseResource1(req, cityIds, districtIds, saleAmountStart, saleAmountEnd, houseModels, houseTypeIds);
        searchHouseResource.setTotal(searchHouseResourceListRes1.size());
@@ -277,6 +300,7 @@
        if (houseResource.getHouseTypeId()!=null)req.setHouseTypeId(houseResource.getHouseTypeId().toString());
        fillSearchHistory(req);
        HouseResourceInfoRes houseResourceInfoRes = new HouseResourceInfoRes();
        houseResourceInfoRes.setAge(houseResource.getAge());
        houseResourceInfoRes.setDataType(houseResource.getDataType());
        houseResourceInfoRes.setId(id);
        houseResourceInfoRes.setBuildingOrientation(houseResource.getBuildingOrientation());
@@ -369,7 +393,9 @@
        List<Integer> ids = pointLocations.stream().map(PointLocation::getHouseId).collect(Collectors.toList());
        if (ids.size()!= 0){
        List<HouseResource> houseResources = this.selectBatchIds(ids);
            List<HouseResource> collect = houseResources.stream().filter(t -> !t.getId().equals(id) && t.getAuthStatus() == 2 && t.getType() == 2
            List<HouseResource> collect = houseResources.stream()
                    .filter(t -> !t.getId().equals(id)
                            && t.getAuthStatus() == 2 && t.getType() == 2
                    && t.getStatus() == 1 && t.getIsDelete() == 0 && t.getDataType() == houseResource.getDataType())
                    .collect(Collectors.toList());
            List<SearchHouseResourceListRes> list = new ArrayList<>();
@@ -379,13 +405,17 @@
            searchHouseResourceListRes.setId(resource.getId());
            AppUser appUser = appUserService.selectById(resource.getAppUserId());
            searchHouseResourceListRes.setHouseResource(appUser.getUserType());
            searchHouseResourceListRes.setImgUrl(resource.getHousePhoto().split(",")[0]);
            if(StringUtils.hasLength(resource.getHousePhoto())){
                searchHouseResourceListRes.setImgUrl(resource.getHousePhoto().split(",")[0]);
            }
            searchHouseResourceListRes.setTitle(resource.getTitle());
            searchHouseResourceListRes.setHouseArea(resource.getHouseArea());
            searchHouseResourceListRes.setHouseModel(resource.getHouseModel());
            Region region = regionService.selectById(houseResource.getDistrictId());
            Region region1 = regionService.selectById(houseResource.getCityId());
            searchHouseResourceListRes.setAddress(region1.getName() + " > " + region.getName() + "/" + houseResource.getHouseAddress());
            if (region!=null && region1!=null){
                searchHouseResourceListRes.setAddress(region1.getName() + " > " + region.getName() + "/" + houseResource.getHouseAddress());
            }
            searchHouseResourceListRes.setSaleAmount(resource.getSaleAmount().doubleValue());
            searchHouseResourceListRes.setElevator(resource.getElevator());
            searchHouseResourceListRes.setDryingArea(resource.getDryingArea());
@@ -453,22 +483,36 @@
                }
            }
            HouseResource houseResource = new HouseResource();
            houseResource.setPlatform(req.getPlatform());
            BeanUtils.copyProperties(req,houseResource);
            houseResource.setType(req.getType());
            if (StringUtils.hasLength(req.getHousePhoto())){
                houseResource.setHousePhoto(req.getHousePhoto());
            }else{
                houseResource.setHousePhoto("");
            }
            houseResource.setInsertTime(new Date());
            houseResource.setGoodHouse(0);
            houseResource.setAge(req.getAge());
            houseResource.setIsDelete(0);
            houseResource.setInsertUserId(appUserId);
            houseResource.setViewsNumber(0);
            houseResource.setUpdateTime(new Date());
            // todo 修改回审核和上下架状态
            houseResource.setStatus(1);
            houseResource.setHeadImg(req.getHeadImg());
            houseResource.setDataType(req.getDataType());
            houseResource.setAuthStatus(1);
            houseResource.setAuthStatus(2);
            houseResource.setLeaseTime(req.getTime());
            houseResource.setAppUserId(appUserId);
            houseResource.setFirmHouse(req.getFirmHouse());
            if(req.getRentalMoney()!=null){
                // 如果勾选了同时可租
                houseResource.setKeepPet(null);
                houseResource.setLeaseTime(null);
                houseResource.setStartTime("");
            }
            if (StringUtils.hasLength(req.getTime())){
                if (req.getTime().contains("年")){
                    houseResource.setRentalDuration(2);
@@ -478,22 +522,52 @@
            }
            if (req.getType()==2){
                if (req.getId()==null){
                    houseResource.setAuthTime(new Date());
                    houseResource.setAuthStatus(2);
                    this.baseMapper.insert(houseResource);
                }else{
                    houseResource.setAuthTime(new Date());
                    houseResource.setAuthStatus(2);
                    this.baseMapper.updateById(houseResource);
                }
            }else{
                if (req.getId()==null){
                    houseResource.setAuthTime(new Date());
                    houseResource.setAuthStatus(2);
                    this.baseMapper.insert(houseResource);
                }else{
                    houseResource.setAuthTime(new Date());
                    houseResource.setAuthStatus(2);
                    this.baseMapper.updateById(houseResource);
                }
            }
            HouseResource houseResource2 = new HouseResource();
            if(req.getRentalMoney()!=null){
                BeanUtils.copyProperties(houseResource,houseResource2);
                houseResource2.setDataType(1);
                houseResource2.setId(null);
                houseResource2.setLeaseTime(req.getTime());
                houseResource2.setKeepPet(req.getKeepPet());
                houseResource2.setStartTime(req.getStartTime());
                this.baseMapper.insert(houseResource2);
                if (req.getType()==2){
                    getQRCode(houseResource2);
                }
            }
            if (req.getType()==2 && req.getId()==null){
                if(req.getRentalMoney()!=null && houseResource2.getId()!=null){
                    PointLocation pointLocation = new PointLocation();
                    GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.valueOf(req.getLongitude()),Double.valueOf(req.getLatitude()));
                    pointLocation.setGeoJsonPoint(geoJsonPoint);
                    pointLocation.setHouseId(houseResource2.getId());
                    mongoTemplate.insert(pointLocation);
                    houseResource2.setCode(pointLocation.getId());
                    houseResource2.setAuthStatus(2);
                    houseResource2.setAuthTime(new Date());
                    this.baseMapper.updateById(houseResource2);
                }
                PointLocation pointLocation = new PointLocation();
                GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.valueOf(req.getLongitude()),Double.valueOf(req.getLatitude()));
                pointLocation.setGeoJsonPoint(geoJsonPoint);
@@ -501,67 +575,22 @@
                mongoTemplate.insert(pointLocation);
                houseResource.setCode(pointLocation.getId());
                houseResource.setAuthStatus(2);
                houseResource.setAuthTime(new Date());
                this.baseMapper.updateById(houseResource);
                InputStream inputStream = null;
                OutputStream outputStream = null;
                String accessToken = wxAppletTools.getAccessToken();
                try {
                    String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken;
                    Map<String, Object> param = new HashMap<>();
                    param.put("scene","id="+houseResource.getId());
                    //pageA/houseDetail
                    param.put("page", "pageA/houseDetail");
                    param.put("check_path", false);
                    param.put("env_version", "trial");
                    param.put("width", 200); //二维码尺寸
                    param.put("is_hyaline", true); // 是否需要透明底色, is_hyaline 为true时,生成透明底色的小程序码 参数仅对小程序码生效
                    param.put("auto_color", true); // 自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调 参数仅对小程序码生效
                    Map<String, Object> line_color = new HashMap<>();
                    line_color.put("r", 0);
                    line_color.put("g", 0);
                    line_color.put("b", 0);
                    param.put("line_color", line_color);
                    System.err.println("调用生成微信URL接口传参:" + param);
                    MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
                    HttpEntity requestEntity = new HttpEntity(param, headers);
                    ResponseEntity<byte[]> entity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, byte[].class, new Object[0]);
                    System.err.println("调用小程序生成微信永久小程序码URL接口返回结果:" + entity.getBody());
                    byte[] result = entity.getBody();
                    System.err.println(Base64.encodeBase64String(result));
                    inputStream = new ByteArrayInputStream(result);
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
                    // 最后上传生成的文件名
                    String finalFileName = System.currentTimeMillis() + "" + new SecureRandom().nextInt(0x0400) + ".jpg";
                    // oss中的文件夹名
                    String objectName = sdf.format(new Date()) + "/" + finalFileName;
                    // 上传oss
                    String s = ossService.uploadFile2OSS(inputStream, objectName);
                    //获取文件的URl地址
                    String imgUrl = ossService.getImgUrl(objectName);
                    houseResource.setQrCode(imgUrl);
                    this.baseMapper.updateById(houseResource);
                    System.err.println("看看文件路径" + imgUrl);
                } catch (Exception e) {
                    System.err.println("调用小程序生成微信永久小程序码URL接口异常" + e);
                } finally {
                    if (inputStream != null) {
                        try {
                            inputStream.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                    if (outputStream != null) {
                        try {
                            outputStream.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        return null;
                    }
                }
                getQRCode(houseResource);
            }
            if (req.getType()==2 && req.getId()!=null){
                if(req.getRentalMoney()!=null && houseResource2.getId()!=null){
                    PointLocation pointLocation = new PointLocation();
                    GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.valueOf(req.getLongitude()),Double.valueOf(req.getLatitude()));
                    pointLocation.setGeoJsonPoint(geoJsonPoint);
                    pointLocation.setHouseId(houseResource2.getId());
                    mongoTemplate.insert(pointLocation);
                    houseResource2.setCode(pointLocation.getId());
                    houseResource2.setAuthStatus(2);
                    houseResource2.setAuthTime(new Date());
                    this.baseMapper.updateById(houseResource2);
                }
                HouseResource houseResource1 = this.baseMapper.selectById(req.getId());
                if (!StringUtils.hasLength(houseResource1.getCode())){
                    PointLocation pointLocation = new PointLocation();
@@ -584,11 +613,71 @@
                UpdateResult updateResult = mongoTemplate.updateFirst(query, update, PointLocation.class);
                System.err.println(updateResult.getModifiedCount());
            }
            return ResultUtil.success();
        }
        return ResultUtil.success();
    }
    public void getQRCode(HouseResource houseResource) {
        InputStream inputStream = null;
        OutputStream outputStream = null;
        String accessToken = wxAppletTools.getAccessToken();
        try {
            String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken;
            Map<String, Object> param = new HashMap<>();
            param.put("scene","id="+houseResource.getId());
            param.put("page", "pageA/houseDetail");
            param.put("check_path", false);
            param.put("env_version", "trial");
            param.put("width", 200); //二维码尺寸
            param.put("is_hyaline", true); // 是否需要透明底色, is_hyaline 为true时,生成透明底色的小程序码 参数仅对小程序码生效
            param.put("auto_color", true); // 自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调 参数仅对小程序码生效
            Map<String, Object> line_color = new HashMap<>();
            line_color.put("r", 0);
            line_color.put("g", 0);
            line_color.put("b", 0);
            param.put("line_color", line_color);
            System.err.println("调用生成微信URL接口传参:" + param);
            MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
            HttpEntity requestEntity = new HttpEntity(param, headers);
            ResponseEntity<byte[]> entity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, byte[].class, new Object[0]);
            System.err.println("调用小程序生成微信永久小程序码URL接口返回结果:" + entity.getBody());
            byte[] result = entity.getBody();
            System.err.println(Base64.encodeBase64String(result));
            inputStream = new ByteArrayInputStream(result);
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
            // 最后上传生成的文件名
            String finalFileName = System.currentTimeMillis() + "" + new SecureRandom().nextInt(0x0400) + ".jpg";
            // oss中的文件夹名
            String objectName = sdf.format(new Date()) + "/" + finalFileName;
            // 上传oss
            String s = ossService.uploadFile2OSS(inputStream, objectName);
            //获取文件的URl地址
            String imgUrl = ossService.getImgUrl(objectName);
            houseResource.setQrCode(imgUrl);
            this.baseMapper.updateById(houseResource);
            System.err.println("看看文件路径" + imgUrl);
        } catch (Exception e) {
            System.err.println("调用小程序生成微信永久小程序码URL接口异常" + e);
        } finally {
            if (inputStream != null) {
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (outputStream != null) {
                try {
                    outputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    @Override
    public ResultUtil confirm(Integer userType) {
        AppUser appUser = appUserService.getAppUser();