From 640d1ebf2b738440ab16f8e8954bfeed1472a3b3 Mon Sep 17 00:00:00 2001 From: 44323 <443237572@qq.com> Date: 星期五, 29 十二月 2023 17:59:26 +0800 Subject: [PATCH] 接口所有代码 --- guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/HouseResourceService.java | 182 ++++++++++++++++++++++++++++++++++----------- 1 files changed, 136 insertions(+), 46 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..8bcf13e 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,6 +20,7 @@ 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.springframework.beans.BeanUtils; @@ -29,8 +31,12 @@ 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.mapping.Document; 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,6 +83,8 @@ private WxAppletTools wxAppletTools; @Autowired private RestTemplate restTemplate; + @Autowired + private IUserService userService; @Autowired private OSSService ossService; @@ -134,12 +142,23 @@ 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 +169,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 +209,6 @@ saleAmountStart = Double.valueOf(split[0]); saleAmountEnd = Double.valueOf(split[1]); } - - } //户型 List<String> houseModels = null; @@ -202,11 +225,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 +311,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 +334,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 +357,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 +381,6 @@ addViewsNumber(houseResource); return houseResourceInfoRes; } - /** * 添加访问次数记录 @@ -352,15 +405,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 +454,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 +476,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,10 +503,10 @@ 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()); @@ -520,17 +570,51 @@ } catch (IOException e) { e.printStackTrace(); } - return null; } } - this.baseMapper.insert(houseResource); + if (req.getId()==null){ + this.baseMapper.insert(houseResource); + }else{ + this.baseMapper.updateById(houseResource); + } }else{ if (req.getId()==null){ this.baseMapper.insert(houseResource); }else{ 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()); + 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()); + 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 +624,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 +648,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