From f45b80c5f8836bfb16b6cfff7df29aec631131ed Mon Sep 17 00:00:00 2001 From: 44323 <443237572@qq.com> Date: 星期二, 16 一月 2024 17:19:56 +0800 Subject: [PATCH] 发布房源 默认为审核通过和已上架状态 --- guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/HouseResourceService.java | 254 +++++++++++++++++++++++++++++++------------------- 1 files changed, 156 insertions(+), 98 deletions(-) diff --git a/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/HouseResourceService.java b/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/HouseResourceService.java index 4f40b24..16223e3 100644 --- a/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/HouseResourceService.java +++ b/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/HouseResourceService.java @@ -6,6 +6,7 @@ import com.alipay.api.internal.util.codec.Base64; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.mongodb.client.result.UpdateResult; import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.file.OSSService; import com.stylefeng.guns.modular.system.dao.HouseResourceMapper; @@ -19,8 +20,11 @@ import com.stylefeng.guns.modular.system.warpper.req.SearchHouseResourceReq; import com.stylefeng.guns.modular.system.warpper.req.UserInfoQuery; import com.stylefeng.guns.modular.system.warpper.res.*; +import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; import org.apache.http.entity.ContentType; +import org.dom4j.Document; +import org.dom4j.Element; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -29,8 +33,11 @@ import org.springframework.data.geo.Metrics; import org.springframework.data.geo.Point; import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.geo.GeoJsonPoint; import org.springframework.data.mongodb.core.query.Criteria; +import org.springframework.data.mongodb.core.query.CriteriaDefinition; import org.springframework.data.mongodb.core.query.Query; +import org.springframework.data.mongodb.core.query.Update; import org.springframework.http.*; import org.springframework.mock.web.MockMultipartFile; import org.springframework.stereotype.Service; @@ -77,54 +84,14 @@ private WxAppletTools wxAppletTools; @Autowired private RestTemplate restTemplate; - + @Autowired + private IUserService userService; @Autowired private OSSService ossService; @Value("${wx.appletsAppid}") private String wxAppletsAppid; - @Value("${wx.appletsAppSecret}") private String wxAppletsAppSecret; - /** - * 生成小程序码地址 - */ - public static final String CREATE_CODE_URL = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=ACCESS_TOKEN"; - // 生成小程序码 - - public String generateMiniProgramCode(String outputFilePath) throws IOException { - // 获取access_token - String accessToken = wxAppletTools.getAccessToken(); - // 替换CREATE_CODE_URL - String uri = CREATE_CODE_URL.replace("ACCESS_TOKEN", accessToken); - // 跳转到的小程序页面路径 - String pagePath = "pages/index/index"; - URL url = new URL(uri); - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - // 设置请求方法 - connection.setRequestMethod("POST"); - connection.setDoOutput(true); - // 构建请求参数 - String params = "path=" + URLEncoder.encode(pagePath, "UTF-8"); - // 获取输出流 - try (OutputStream outputStream = connection.getOutputStream()) { - outputStream.write(params.getBytes()); - } - // 获取输入流 - try (InputStream inputStream = connection.getInputStream(); - FileOutputStream outputStream = new FileOutputStream(outputFilePath)) { - // 将返回的图片数据写入文件 - byte[] buffer = new byte[1024]; - int bytesRead; - while ((bytesRead = inputStream.read(buffer)) != -1) { - outputStream.write(buffer, 0, bytesRead); - } - ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(buffer); - MultipartFile file = new MockMultipartFile(ContentType.APPLICATION_OCTET_STREAM.toString(), byteArrayInputStream); - return ossService.uploadFile(file); - } - } - - /** * 获取房源列表 * @param req @@ -134,12 +101,22 @@ public SearchHouseResourceRes searchHouseResource(SearchHouseResourceReq req) { req.setPageNum((req.getPageNum() - 1) * req.getPageSize()); //租房处理推荐和记录历史搜索数据 - if(req.getType() == 1){ - fillSearchHistory(req); - } + fillSearchHistory(req); //区域 List<Integer> districtIds = new ArrayList<>(); List<Integer> cityIds = new ArrayList<>(); + if (req.getDataType()!=null && req.getDataType()==1 && req.getUserType()==5 && req.getDistrict()==null && req.getArea()==null){ + // 如果用户有历史 并且在首页列表的时候 看他有没有历史搜索 + if (appUserService.getAppUser()!=null){ + SearchHistoryCondition app_user_id = searchHistoryConditionService.selectOne(new EntityWrapper<SearchHistoryCondition>() + .eq("app_user_id", appUserService.getAppUser().getId())); + if (app_user_id!=null){ + if(StringUtils.hasLength(app_user_id.getDistrict()) ){ + districtIds.add(Integer.valueOf(app_user_id.getDistrict())); + } + } + } + } if (req.getDistrict() != null &&(!req.getDistrict().equals("")) ){ // 一级id Integer integer = Integer.valueOf(req.getDistrict()); @@ -150,6 +127,12 @@ cityIds.add(Integer.valueOf(s)); } } + }else if (StringUtils.hasLength(req.getArea())){ + String[] split = req.getArea().split(","); + for (String s : split) { + cityIds.add(Integer.valueOf(s)); + } + // 根据用户历史搜索 推荐对应的区域 } // if(StringUtils.hasLength(req.getDistrict())){ // cityIds = new ArrayList<>(); @@ -184,8 +167,6 @@ saleAmountStart = Double.valueOf(split[0]); saleAmountEnd = Double.valueOf(split[1]); } - - } //户型 List<String> houseModels = null; @@ -202,11 +183,24 @@ houseTypeIds.add(Integer.valueOf(s)); } } - 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){ + cityIds=null; + districtIds=null; + searchHouseResourceListRes = this.baseMapper.searchHouseResource(req, cityIds, districtIds, saleAmountStart, saleAmountEnd, houseModels, houseTypeIds); + } + for (SearchHouseResourceListRes t : searchHouseResourceListRes) { + if (t.getIsManage()!=null && t.getIsManage() == 1){ + // 后台添加设置为中介房源 + t.setHouseResource(3); + } + } searchHouseResource.setList(searchHouseResourceListRes); - searchHouseResource.setTotal(searchHouseResourceListRes.size()); + List<SearchHouseResourceListRes> searchHouseResourceListRes1 = this.baseMapper.searchHouseResource1(req, cityIds, districtIds, saleAmountStart, saleAmountEnd, houseModels, houseTypeIds); + searchHouseResource.setTotal(searchHouseResourceListRes1.size()); return searchHouseResource; } @@ -275,6 +269,13 @@ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); AppUser appUser = appUserService.getAppUser(); HouseResource houseResource = this.selectById(id); + SearchHouseResourceReq req = new SearchHouseResourceReq(); + if (houseResource.getDistrictId()!=null)req.setDistrict(houseResource.getCityId().toString()); + if (houseResource.getSaleAmount()!=null)req.setSaleAmount(houseResource.getSaleAmount().toString()); + req.setHouseModel(houseResource.getHouseModel()); + req.setElevator(houseResource.getElevator()); + if (houseResource.getHouseTypeId()!=null)req.setHouseTypeId(houseResource.getHouseTypeId().toString()); + fillSearchHistory(req); HouseResourceInfoRes houseResourceInfoRes = new HouseResourceInfoRes(); houseResourceInfoRes.setDataType(houseResource.getDataType()); houseResourceInfoRes.setId(id); @@ -291,7 +292,9 @@ if (houseType!=null)houseResourceInfoRes.setHouseType(houseType.getName()); houseResourceInfoRes.setFloor(houseResource.getFloor()); houseResourceInfoRes.setElevator(houseResource.getElevator()); - houseResourceInfoRes.setDryingArea(houseResource.getDryingArea()); + if (houseResource.getBalcony()!=null&&houseResource.getBalcony()==1)houseResourceInfoRes.setDryingAreas("阳台"); + if (houseResource.getDryingArea()!=null&&houseResource.getDryingArea()==1)houseResourceInfoRes.setDryingAreas("天台"); + if (houseResource.getAir()!=null&&houseResource.getAir()==1)houseResourceInfoRes.setDryingAreas("无"); houseResourceInfoRes.setHouseArea(houseResource.getHouseArea()); houseResourceInfoRes.setKeepPet(houseResource.getKeepPet()); Region region = regionService.selectById(houseResource.getDistrictId()); @@ -312,6 +315,15 @@ houseResourceInfoRes.setNickname(appUser1.getNickname()); houseResourceInfoRes.setUserType(appUser1.getUserType()); houseResourceInfoRes.setInsertTime(sdf.format(houseResource.getInsertTime())); + // 后台添加的 + if (houseResource.getIsManage()!=null && houseResource.getIsManage()==1){ + User user = userService.selectById(houseResource.getInsertUserId()); + if (user!=null){ + houseResourceInfoRes.setNickname(user.getName()); + houseResourceInfoRes.setProfilePhoto(user.getAvatar()); + houseResourceInfoRes.setUserType(3); + } + } if (houseResource.getUpdateTime()!=null){ houseResourceInfoRes.setUpdateTime(sdf.format(houseResource.getUpdateTime())); } @@ -327,7 +339,6 @@ addViewsNumber(houseResource); return houseResourceInfoRes; } - /** * 添加访问次数记录 @@ -352,15 +363,18 @@ Double x = Double.valueOf(houseResource.getLongitude()); Double y = Double.valueOf(houseResource.getLatitude()); Point point = new Point(x, y); - Circle circle = new Circle(point, new Distance(100000, Metrics.KILOMETERS)); + Circle circle = new Circle(point, new Distance(5, Metrics.KILOMETERS)); Query query = Query.query(Criteria.where("geoJsonPoint").withinSphere(circle)); List<PointLocation> pointLocations = mongoTemplate.find(query, PointLocation.class); List<Integer> ids = pointLocations.stream().map(PointLocation::getHouseId).collect(Collectors.toList()); if (ids.size()!= 0){ List<HouseResource> houseResources = this.selectBatchIds(ids); - List<SearchHouseResourceListRes> list = new ArrayList<>(); + 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<>(); //遍历解析出返回数据 - for (HouseResource resource : houseResources) { + for (HouseResource resource : collect) { SearchHouseResourceListRes searchHouseResourceListRes = new SearchHouseResourceListRes(); searchHouseResourceListRes.setId(resource.getId()); AppUser appUser = appUserService.selectById(resource.getAppUserId()); @@ -398,10 +412,10 @@ @Override public ContactInformationRes getContactInformation(Integer id) { HouseResource houseResource = this.selectById(id); - AppUser appUser = appUserService.selectById(houseResource.getAppUserId()); ContactInformationRes contactInformationRes = new ContactInformationRes(); - contactInformationRes.setWhatsApp(appUser.getWatchApp()); - contactInformationRes.setPhone(appUser.getPhone()); + contactInformationRes.setWatchApp(houseResource.getWatchApp()); + contactInformationRes.setPhone(houseResource.getPhone()); + contactInformationRes.setWechatQrCode(houseResource.getWechatQRCode()); return contactInformationRes; } @@ -420,26 +434,20 @@ .eq("status", 1)); if (appUser!=null){ if (req.getId()==null){ - if (req.getType()!=1){ - if (appUser.getAuditStatus()!=2){ + if (req.getType()==2){ + if (StringUtils.hasLength(req.getWechatQRCode()))appUser.setWechatQrCode1(req.getWechatQRCode()); + if (StringUtils.hasLength(req.getWatchApp()))appUser.setWatchApp1(req.getWatchApp()); + if (StringUtils.hasLength(req.getPhone()))appUser.setPhone1(req.getPhone()); + appUserService.updateById(appUser); + if (appUser.getAuth()!=2){ // 未认证 只能能发布三条房源信息 List<HouseResource> houseResources = this.selectList(new EntityWrapper<HouseResource>() .eq("app_user_id", appUserId) - .eq("is_delete", 1) - .eq("status", 1) + .eq("is_delete", 0) + .eq("type", 2) ); if (houseResources.size()>=3){ - return ResultUtil.error("中介账号未认证,只能同时上架3条房源信息"); - } - }else if (appUser.getAuditStatus()==2){ - // 已经认证 只能能发布20条房源信息 - List<HouseResource> houseResources = this.selectList(new EntityWrapper<HouseResource>() - .eq("app_user_id", appUserId) - .eq("is_delete", 1) - .eq("status", 1) - ); - if (houseResources.size()>=20){ - return ResultUtil.error("当前中介账号只能同时上架20条房源信息"); + return ResultUtil.error("未认证中介或认证未通过,只能同时发布3条房源信息"); } } } @@ -453,13 +461,13 @@ houseResource.setIsDelete(0); houseResource.setInsertUserId(appUserId); houseResource.setViewsNumber(0); + houseResource.setUpdateTime(new Date()); // todo 修改回审核和上下架状态 houseResource.setStatus(1); houseResource.setDataType(req.getDataType()); - houseResource.setAuthStatus(1); houseResource.setLeaseTime(req.getTime()); - houseResource.setAppUserId(appUserService.getAppUser().getId()); + houseResource.setAppUserId(appUserId); houseResource.setFirmHouse(req.getFirmHouse()); if (StringUtils.hasLength(req.getTime())){ if (req.getTime().contains("年")){ @@ -469,14 +477,42 @@ } } if (req.getType()==2){ + if (req.getId()==null){ + houseResource.setAuthStatus(2); + this.baseMapper.insert(houseResource); + }else{ + houseResource.setAuthStatus(2); + this.baseMapper.updateById(houseResource); + } + }else{ + if (req.getId()==null){ + houseResource.setAuthStatus(2); + this.baseMapper.insert(houseResource); + }else{ + houseResource.setAuthStatus(2); + this.baseMapper.updateById(houseResource); + } + } + if (req.getType()==2 && req.getId()==null){ + PointLocation pointLocation = new PointLocation(); + GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.valueOf(req.getLongitude()),Double.valueOf(req.getLatitude())); + pointLocation.setGeoJsonPoint(geoJsonPoint); + pointLocation.setHouseId(houseResource.getId()); + mongoTemplate.insert(pointLocation); + houseResource.setCode(pointLocation.getId()); + houseResource.setAuthStatus(2); + this.baseMapper.updateById(houseResource); InputStream inputStream = null; OutputStream outputStream = null; String accessToken = wxAppletTools.getAccessToken(); try { - String url = "https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=" + accessToken; + String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken; Map<String, Object> param = new HashMap<>(); - param.put("path", "pages/home/home"); -// param.put("page", "pages/index/index"); // 路径 如果没有默认跳转到首页面微信小程序发布后才可以使用不能添加参数 + 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); // 自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调 参数仅对小程序码生效 @@ -499,10 +535,11 @@ // oss中的文件夹名 String objectName = sdf.format(new Date()) + "/" + finalFileName; // 上传oss - ossService.uploadFile2OSS(inputStream, objectName); + 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); @@ -520,17 +557,32 @@ } catch (IOException e) { e.printStackTrace(); } - return null; } } - this.baseMapper.insert(houseResource); - }else{ - if (req.getId()==null){ - this.baseMapper.insert(houseResource); - }else{ - this.baseMapper.updateById(houseResource); + } + if (req.getType()==2 && req.getId()!=null){ + HouseResource houseResource1 = this.baseMapper.selectById(req.getId()); + if (!StringUtils.hasLength(houseResource1.getCode())){ + PointLocation pointLocation = new PointLocation(); + GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.valueOf(req.getLongitude()),Double.valueOf(req.getLatitude())); + pointLocation.setGeoJsonPoint(geoJsonPoint); + pointLocation.setHouseId(req.getId()); + mongoTemplate.insert(pointLocation); + houseResource1.setCode(pointLocation.getId()); + houseResource1.setAuthStatus(2); + this.baseMapper.updateById(houseResource1); } + Query query = Query.query(Criteria.where("_id").is(houseResource1.getCode())); + PointLocation pointLocation = new PointLocation(); + pointLocation.setId(houseResource1.getCode()); + pointLocation.setHouseId(houseResource.getId()); + GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.valueOf(req.getLongitude()),Double.valueOf(req.getLatitude())); + pointLocation.setGeoJsonPoint(geoJsonPoint); + org.bson.Document document = (org.bson.Document)mongoTemplate.getConverter() .convertToMongoType(pointLocation); + Update update = Update.fromDocument (document); + UpdateResult updateResult = mongoTemplate.updateFirst(query, update, PointLocation.class); + System.err.println(updateResult.getModifiedCount()); } return ResultUtil.success(); } @@ -540,8 +592,14 @@ @Override public ResultUtil confirm(Integer userType) { AppUser appUser = appUserService.getAppUser(); + if (userType==2 && appUser.getUserType()==2){ + + }else{ + appUser.setChangeTime(new Date()); + } appUser.setUserType(userType); appUserService.updateById(appUser); + return ResultUtil.success(); } @@ -558,28 +616,28 @@ // 最多只能发布三条房源信息 int size = this.baseMapper.selectList(new EntityWrapper<HouseResource>() .eq("app_user_id", appUser.getId()) - .eq("is_delete", 1) + .eq("is_delete", 0) + .eq("type",2) ).size(); - if (3-size<0)size=0; + if (3-size<0){ + return ResultUtil.success(0); + } return ResultUtil.success(3-size); } if (appUser.getUserType()==3){ // 如果是中介 判断他是否认证成功 - if (appUser.getAuditStatus()==2){ - // 可以发布20条 - // 最多只能发布三条房源信息 - int size = this.baseMapper.selectList(new EntityWrapper<HouseResource>() - .eq("app_user_id", appUser.getId()) - .eq("is_delete", 1) - ).size(); - if (20-size<0)size=0; - return ResultUtil.success(3-size); + if (appUser.getAuth()==2){ + return ResultUtil.success(99999); }else{ + // 如果是中介但是还未认证 最多只能上架三条 int size = this.baseMapper.selectList(new EntityWrapper<HouseResource>() .eq("app_user_id", appUser.getId()) - .eq("is_delete", 1) + .eq("is_delete", 0) + .eq("type",2) ).size(); - if (3-size<0)size=0; + if (3-size<0){ + return ResultUtil.success(0); + } return ResultUtil.success(3-size); } } -- Gitblit v1.7.1