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