From aa8ff2d61669d0779fdacdba76e26388587b435d Mon Sep 17 00:00:00 2001 From: 44323 <443237572@qq.com> Date: 星期四, 22 二月 2024 15:40:23 +0800 Subject: [PATCH] 租房新增需求 --- guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/HouseResourceService.java | 548 +++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 494 insertions(+), 54 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 a5d177c..3d683c2 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 @@ -3,31 +3,60 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +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; import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.*; +import com.stylefeng.guns.modular.system.util.ResultUtil; +import com.stylefeng.guns.modular.system.util.WxAppletTools; import com.stylefeng.guns.modular.system.warpper.PointLocation; +import com.stylefeng.guns.modular.system.warpper.req.AddHouseReq; +import com.stylefeng.guns.modular.system.warpper.req.HouseQuery; 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; import org.springframework.data.geo.Circle; import org.springframework.data.geo.Distance; 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; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLEncoder; +import java.security.SecureRandom; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -49,10 +78,20 @@ private ICollectionHouseResourceService collectionHouseResourceService; @Resource private MongoTemplate mongoTemplate; - - - - + @Autowired + private IHousingDemandService housingDemandService; + @Autowired + 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; /** * 获取房源列表 * @param req @@ -62,38 +101,72 @@ public SearchHouseResourceRes searchHouseResource(SearchHouseResourceReq req) { req.setPageNum((req.getPageNum() - 1) * req.getPageSize()); //租房处理推荐和记录历史搜索数据 - if(req.getType() == 1){ - fillSearchHistory(req); - } - + fillSearchHistory(req); //区域 - List<Integer> districtIds = null; - List<Integer> cityIds = null; - if(StringUtils.hasLength(req.getDistrict())){ - cityIds = new ArrayList<>(); - districtIds = new ArrayList<>(); - JSONArray jsonArray = JSON.parseArray(req.getDistrict()); - for (int i = 0; i < jsonArray.size(); i++) { - JSONObject jsonObject = jsonArray.getJSONObject(i); - Integer cityId = jsonObject.getInteger("cityId"); - Integer districtId = jsonObject.getInteger("districtId"); - //不限区域 - if(0 == districtId || null == districtId){ - List<Region> regions = regionService.selectList(new EntityWrapper<Region>().eq("parent_id", cityId)); - districtIds.addAll(regions.stream().map(Region::getId).collect(Collectors.toList())); + 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())); + } } - cityIds.add(cityId); - districtIds.add(districtId); } } + if (req.getDistrict() != null &&(!req.getDistrict().equals("")) ){ + // 一级id + Integer integer = Integer.valueOf(req.getDistrict()); + districtIds.add(integer); + if (req.getArea()!=null && (!req.getArea().equals(""))){ + String[] split = req.getArea().split(","); + for (String s : split) { + 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<>(); +// districtIds = new ArrayList<>(); +// JSONArray jsonArray = JSON.parseArray(req.getDistrict()); +// for (int i = 0; i < jsonArray.size(); i++) { +// JSONObject jsonObject = jsonArray.getJSONObject(i); +// Integer cityId = jsonObject.getInteger("cityId"); +// Integer districtId = jsonObject.getInteger("districtId"); +// //不限区域 +// if(0 == districtId || null == districtId){ +// List<Region> regions = regionService.selectList(new EntityWrapper<Region>().eq("parent_id", cityId)); +// districtIds.addAll(regions.stream().map(Region::getId).collect(Collectors.toList())); +// } +// cityIds.add(cityId); +// districtIds.add(districtId); +// } +// } //价格范围 Double saleAmountStart = null; Double saleAmountEnd = null; if(StringUtils.hasLength(req.getSaleAmount())){ - String[] split = req.getSaleAmount().split("-"); - saleAmountStart = Double.valueOf(split[0]); - saleAmountEnd = Double.valueOf(split[1]); + if (req.getSaleAmount().contains("以上")){ + saleAmountStart = Double.valueOf(req.getSaleAmount().substring(0, req.getSaleAmount().length() - 2)); + saleAmountEnd = 10000000000000000000000.0; + }else if (req.getSaleAmount().contains("以下")){ + saleAmountStart = 0.0; + saleAmountEnd = Double.valueOf(req.getSaleAmount().substring(0, req.getSaleAmount().length() - 2)); + }else{ + String[] split = req.getSaleAmount().split("-"); + saleAmountStart = Double.valueOf(split[0]); + saleAmountEnd = Double.valueOf(split[1]); + } } //户型 List<String> houseModels = null; @@ -110,15 +183,49 @@ 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); + } + } + 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); - Integer integer = this.baseMapper.searchHouseResourceCount(req, cityIds, districtIds, saleAmountStart, saleAmountEnd, houseModels, houseTypeIds); - searchHouseResource.setTotal(integer); + List<SearchHouseResourceListRes> searchHouseResourceListRes1 = this.baseMapper.searchHouseResource1(req, cityIds, districtIds, saleAmountStart, saleAmountEnd, houseModels, houseTypeIds); + searchHouseResource.setTotal(searchHouseResourceListRes1.size()); return searchHouseResource; } - /** * 填装历史搜索记录和修改历史搜索记录 @@ -128,7 +235,8 @@ AppUser appUser = appUserService.getAppUser(); if(null != appUser){ //获取历史搜索数据 - SearchHistoryCondition searchHistoryCondition = searchHistoryConditionService.selectOne(new EntityWrapper<SearchHistoryCondition>().eq("app_user_id", appUser.getId())); + SearchHistoryCondition searchHistoryCondition = searchHistoryConditionService + .selectOne(new EntityWrapper<SearchHistoryCondition>().eq("app_user_id", appUser.getId())); if(null == searchHistoryCondition){ //没有历史记录,将现有记录添加进去 searchHistoryCondition = new SearchHistoryCondition(); @@ -144,11 +252,11 @@ if(ToolUtil.isEmpty(req.getDistrict()) && ToolUtil.isEmpty(req.getSaleAmount()) && ToolUtil.isEmpty(req.getHouseModel()) && ToolUtil.isEmpty(req.getElevator()) && ToolUtil.isEmpty(req.getHouseTypeId())){ - req.setDistrict(searchHistoryCondition.getDistrict()); - req.setSaleAmount(searchHistoryCondition.getPrice()); - req.setHouseModel(searchHistoryCondition.getHouseModels()); - req.setElevator(searchHistoryCondition.getElevator()); - req.setHouseTypeId(searchHistoryCondition.getHouseTypeIds()); +// req.setDistrict(searchHistoryCondition.getDistrict()); +// req.setSaleAmount(searchHistoryCondition.getPrice()); +// req.setHouseModel(searchHistoryCondition.getHouseModels()); +// req.setElevator(searchHistoryCondition.getElevator()); +// req.setHouseTypeId(searchHistoryCondition.getHouseTypeIds()); }else{ //更新历史搜索记录 searchHistoryCondition.setDistrict(req.getDistrict()); @@ -181,27 +289,47 @@ */ @Override public HouseResourceInfoRes getHouseResourceInfo(Integer id) { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + 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.setAge(houseResource.getAge()); + houseResourceInfoRes.setDataType(houseResource.getDataType()); houseResourceInfoRes.setId(id); + houseResourceInfoRes.setBuildingOrientation(houseResource.getBuildingOrientation()); + houseResourceInfoRes.setVideoPhoto(houseResource.getVideoPhoto()); + houseResourceInfoRes.setQrCode(houseResource.getQrCode()); houseResourceInfoRes.setTitle(houseResource.getTitle()); houseResourceInfoRes.setSaleAmount(houseResource.getSaleAmount()); houseResourceInfoRes.setHouseModel(houseResource.getHouseModel()); houseResourceInfoRes.setRentalDuration(houseResource.getRentalDuration()); - houseResourceInfoRes.setSaleDate(sdf.format(houseResource.getSaleDate())); + houseResourceInfoRes.setSaleDate(houseResource.getStartTime()); houseResourceInfoRes.setHousePhoto(houseResource.getHousePhoto()); HouseType houseType = houseTypeService.selectById(houseResource.getHouseTypeId()); - houseResourceInfoRes.setHouseType(houseType.getName()); + 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()); Region region1 = regionService.selectById(houseResource.getCityId()); - houseResourceInfoRes.setAddress(region1.getName() + " > " + region.getName() + "/" + houseResource.getHouseAddress()); + if (region != null&®ion1 != null){ + if (houseResource.getHouseAddress()==null){ + houseResourceInfoRes.setAddress(region1.getName() + " > " + region.getName()); + }else{ + houseResourceInfoRes.setAddress(region1.getName() + " > " + region.getName() + "/" +houseResource.getHouseAddress() ); + } + } houseResourceInfoRes.setLongitude(houseResource.getLongitude()); houseResourceInfoRes.setLatitude(houseResource.getLatitude()); houseResourceInfoRes.setMoreIntroduction(houseResource.getMoreIntroduction()); @@ -211,7 +339,18 @@ houseResourceInfoRes.setNickname(appUser1.getNickname()); houseResourceInfoRes.setUserType(appUser1.getUserType()); houseResourceInfoRes.setInsertTime(sdf.format(houseResource.getInsertTime())); - houseResourceInfoRes.setUpdateTime(sdf.format(houseResource.getUpdateTime())); + // 后台添加的 + 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())); + } houseResourceInfoRes.setCode(houseResource.getCode()); int collectionTimes = collectionHouseResourceService.selectCount(new EntityWrapper<CollectionHouseResource>().eq("house_resource_id", id)); houseResourceInfoRes.setCollectionTimes(collectionTimes); @@ -224,7 +363,6 @@ addViewsNumber(houseResource); return houseResourceInfoRes; } - /** * 添加访问次数记录 @@ -245,6 +383,7 @@ public List<SearchHouseResourceListRes> getNearbyHouseResource(Integer id) { HouseResource houseResource = this.selectById(id); //获取中心半径5KM范围内的房源数据 + if (houseResource.getLongitude()!=null && houseResource.getLatitude()!=null){ Double x = Double.valueOf(houseResource.getLongitude()); Double y = Double.valueOf(houseResource.getLatitude()); Point point = new Point(x, y); @@ -252,21 +391,31 @@ 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()); 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()); @@ -276,6 +425,11 @@ searchHouseResourceListRes.setKeepPet(resource.getKeepPet()); list.add(searchHouseResourceListRes); } + return list; + } + + } + List<SearchHouseResourceListRes> list = new ArrayList<>(); return list; } @@ -288,13 +442,299 @@ @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; } + @Override + public SearchHouseResourceRes listHouse(HouseQuery query) { + SearchHouseResourceRes res = new SearchHouseResourceRes(); + res.setList(this.baseMapper.listHouse(query)); + res.setTotal(res.getList().size()); + return res; + } + @Override + public ResultUtil addHouse(AddHouseReq req) { + Integer appUserId = appUserService.getAppUser().getId(); + AppUser appUser = appUserService.selectOne(new EntityWrapper<AppUser>() + .eq("id", appUserId) + .eq("status", 1)); + if (appUser!=null){ + if (req.getId()==null){ + 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", 0) + .eq("type", 2) + ); + if (houseResources.size()>=3){ + return ResultUtil.error("未认证中介或认证未通过,只能同时发布3条房源信息"); + } + } + } + } + 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(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); + }else{ + houseResource.setRentalDuration(1); + } + } + 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); + pointLocation.setHouseId(houseResource.getId()); + mongoTemplate.insert(pointLocation); + houseResource.setCode(pointLocation.getId()); + houseResource.setAuthStatus(2); + houseResource.setAuthTime(new Date()); + this.baseMapper.updateById(houseResource); + 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(); + 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(); + } + 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(); + if (userType==2 && appUser.getUserType()==2){ + + }else{ + appUser.setChangeTime(new Date()); + } + appUser.setUserType(userType); + appUserService.updateById(appUser); + + return ResultUtil.success(); + } + + @Override + public List<CollectListRes> collect(Integer id) { + return this.baseMapper.collect(id); + } + + @Override + public ResultUtil<Integer> getSurplusPushNumber1() { + AppUser appUser = appUserService.getAppUser(); + // 判断这个人是什么身份 + if (appUser.getUserType()==2){ + // 最多只能发布三条房源信息 + int size = this.baseMapper.selectList(new EntityWrapper<HouseResource>() + .eq("app_user_id", appUser.getId()) + .eq("is_delete", 0) + .eq("type",2) + ).size(); + if (3-size<0){ + return ResultUtil.success(0); + } + return ResultUtil.success(3-size); + } + if (appUser.getUserType()==3){ + // 如果是中介 判断他是否认证成功 + 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", 0) + .eq("type",2) + ).size(); + if (3-size<0){ + return ResultUtil.success(0); + } + return ResultUtil.success(3-size); + } + } + return ResultUtil.success(0); + } + public List<CollectListRes> release(UserInfoQuery query, List<Integer> collect) { + return this.baseMapper.release(query,collect); + } } -- Gitblit v1.7.1