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/api/HouseResourceController.java |  303 ++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 276 insertions(+), 27 deletions(-)

diff --git a/guns-admin/src/main/java/com/stylefeng/guns/modular/api/HouseResourceController.java b/guns-admin/src/main/java/com/stylefeng/guns/modular/api/HouseResourceController.java
index 05aab6c..3a6a77c 100644
--- a/guns-admin/src/main/java/com/stylefeng/guns/modular/api/HouseResourceController.java
+++ b/guns-admin/src/main/java/com/stylefeng/guns/modular/api/HouseResourceController.java
@@ -1,21 +1,48 @@
 package com.stylefeng.guns.modular.api;
 
+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.google.gson.Gson;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.stylefeng.guns.modular.file.OSSService;
+import com.stylefeng.guns.modular.system.model.AppUser;
+import com.stylefeng.guns.modular.system.model.HouseResource;
 import com.stylefeng.guns.modular.system.model.HouseType;
-import com.stylefeng.guns.modular.system.service.ICollectionHouseResourceService;
-import com.stylefeng.guns.modular.system.service.IHouseResourceService;
-import com.stylefeng.guns.modular.system.service.IHouseTypeService;
-import com.stylefeng.guns.modular.system.service.IReportHouseResourceService;
+import com.stylefeng.guns.modular.system.service.*;
+import com.stylefeng.guns.modular.system.util.HttpRequestUtil;
+import com.stylefeng.guns.modular.system.util.HttpUtils;
 import com.stylefeng.guns.modular.system.util.ResultUtil;
-import com.stylefeng.guns.modular.system.warpper.req.ReportHouseResourceReq;
-import com.stylefeng.guns.modular.system.warpper.req.SearchHouseResourceReq;
+import com.stylefeng.guns.modular.system.util.WxAppletTools;
+import com.stylefeng.guns.modular.system.warpper.req.*;
 import com.stylefeng.guns.modular.system.warpper.res.*;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
+import org.apache.http.entity.ContentType;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.*;
+import org.springframework.mock.web.MockMultipartFile;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.client.RestTemplate;
+import org.springframework.web.multipart.MultipartFile;
 
-import java.util.List;
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.security.SecureRandom;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author zhibing.pu
@@ -33,8 +60,174 @@
     private ICollectionHouseResourceService collectionHouseResourceService;
     @Autowired
     private IReportHouseResourceService reportHouseResourceService;
+    @Autowired
+    private IAppUserService appUserService;
+    @Autowired
+    private WxAppletTools wxAppletTools;
+    @Autowired
+    private RestTemplate restTemplate;
+    @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";
+    // 生成小程序码
+    private String generateMiniProgramCode(String apiUrl, String pagePath, String outputFilePath) throws IOException {
+        URL url = new URL(apiUrl);
+        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);
+        }
+    }
+    @ResponseBody
+    @GetMapping("/base/houseResource/qrCode/{id}")
+    @ApiOperation(value = "海报二维码", tags = {"房源"})
+    public ResultUtil<String> poster(@PathVariable("id") Integer id){
+        HouseResource houseResource = houseResourceService.selectById(id);
+        return ResultUtil.success(houseResource.getQrCode());
+    }
+    @ResponseBody
+    @GetMapping("/base/houseResource/historyTitle")
+    @ApiOperation(value = "选择之前填入过的标题", tags = {"房源"})
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header")
+    })
+    public ResultUtil<List<String>> historyTitle(){
+        Integer id = appUserService.getAppUser().getId();
+        List<String> titles = houseResourceService.selectList(new EntityWrapper<HouseResource>()
+                .eq("app_user_id", id)).stream().filter(t-> StringUtils.hasLength(t.getTitle())).map(HouseResource::getTitle)
+                .collect(Collectors.toList());
+        return ResultUtil.success(titles);
+    }
+    @ResponseBody
+    @GetMapping("/base/houseResource/historyIntroduce")
+    @ApiOperation(value = "选择之前填入过的更多介绍", tags = {"房源"})
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header")
+    })
+    public ResultUtil<List<String>> historyIntroduce(){
+        Integer id = appUserService.getAppUser().getId();
+        List<String> titles = houseResourceService.selectList(new EntityWrapper<HouseResource>()
+                .eq("app_user_id", id)).stream().filter(t-> StringUtils.hasLength(t.getMoreIntroduction())).map(HouseResource::getMoreIntroduction)
+                .collect(Collectors.toList());
+        return ResultUtil.success(titles);
+    }
+    @ResponseBody
+    @GetMapping("/base/houseResource/getHouse")
+    @ApiOperation(value = "根据选择的区域 获取附近小区", tags = {"房源"})
+    public ResultUtil<List<String>> getHouse(String cityName){
+        List<String> res = new ArrayList<>();
+        String url = "https://apis.map.qq.com/ws/place/v1/search?boundary=region(香港,0)&keyword="+cityName+"&filter=category=住宅区,别墅,社区,宿舍&page_size=30&page_index=1&key=G52BZ-X5AKH-V2JDQ-WSLRK-7DSMZ-YWFXZ";
+        String s = HttpUtils.sendGet(url);
+        Gson gson = new Gson();
+        JsonObject jsonObject = gson.fromJson(s, JsonObject.class);
+        JsonArray dataArray = jsonObject.getAsJsonArray("data");
+        List<String> titles = new ArrayList<>();
+        for (JsonElement element : dataArray) {
+            JsonObject dataObject = element.getAsJsonObject();
+            String title = dataObject.get("title").getAsString();
+            titles.add(title);
+        }
+        for (String title : titles) {
+            res.add(title);
+        }
+        return ResultUtil.success(res);
+    }
+
+    public static void main(String[] args) {
+        String url = "https://apis.map.qq.com/ws/place/v1/search?boundary=region(香港,0)&keyword=上环/中环/金钟&filter=category=住宅区,别墅,社区,宿舍&page_size=30&page_index=1&key=G52BZ-X5AKH-V2JDQ-WSLRK-7DSMZ-YWFXZ";
+        String s = HttpUtils.sendGet(url);
+        // 使用Gson库解析JSON
+        Gson gson = new Gson();
+        JsonObject jsonObject = gson.fromJson(s, JsonObject.class);
+        JsonArray dataArray = jsonObject.getAsJsonArray("data");
+
+        // 遍历data数组,提取title字段值并放入集合
+        List<String> titles = new ArrayList<>();
+        for (JsonElement element : dataArray) {
+            JsonObject dataObject = element.getAsJsonObject();
+            String title = dataObject.get("title").getAsString();
+            titles.add(title);
+        }
+
+        // 打印集合中的title字段值
+        for (String title : titles) {
+            System.out.println(title);
+        }
+    }
+    // todo 放行
+    @ResponseBody
+    @PostMapping("/base/addHouse/confirm")
+    @ApiOperation(value = "中介身份提示", tags = {"发布"})
+    @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....",
+            required = true, paramType = "header")
+    public ResultUtil confirm(Integer userType){
+        AppUser appUser = appUserService.getAppUser();
+        if(null != appUser && (appUser.getStatus() == 2|| appUser.getStatus() == 3)){
+            return ResultUtil.errorLogin("当前账号已被冻结或删除");
+        }
+        return houseResourceService.confirm(userType);
+    }
+
+    @ResponseBody
+    @PostMapping("/base/addHouse/userInfo")
+    @ApiOperation(value = "发布房源获取当前人的中介认证状态", tags = {"发布"})
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header")
+    })
+    public ResultUtil userInfo(){
+        AppUser appUser = appUserService.getAppUser();
+        if(null != appUser && (appUser.getStatus() == 2|| appUser.getStatus() == 3)){
+            return ResultUtil.errorLogin("当前账号已被冻结或删除");
+        }
+        Integer auth = appUserService.getAppUser().getAuth();
+        return ResultUtil.success(appUser);
+    }
+
+    @ResponseBody
+    @PostMapping("/base/addHouse/add")
+    @ApiOperation(value = "发布房源", tags = {"发布"})
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header")
+    })
+    public ResultUtil addHouse(@RequestBody AddHouseReq req){
+        AppUser appUser = appUserService.getAppUser();
+        if(null != appUser && (appUser.getStatus() == 2|| appUser.getStatus() == 3)){
+            return ResultUtil.errorLogin("当前账号已被冻结或删除");
+        }
+        return houseResourceService.addHouse(req);
+    }
 
     @ResponseBody
     @GetMapping("/base/houseResource/searchHouseResource")
@@ -44,9 +237,6 @@
         return ResultUtil.success(searchHouseResource);
     }
 
-
-
-
     @ResponseBody
     @GetMapping("/base/houseType/getHouseType")
     @ApiOperation(value = "获取房源类型", tags = {"首页"})
@@ -54,7 +244,6 @@
         List<HouseType> houseTypes = houseTypeService.selectList(null);
         return ResultUtil.success(houseTypes);
     }
-
 
     @ResponseBody
     @GetMapping("/base/houseResource/getDistrictHouseResourceNumber")
@@ -68,32 +257,32 @@
         return ResultUtil.success(districtHouseResourceNumber);
     }
 
-
     @ResponseBody
     @PostMapping("/base/houseResource/getHouseResourceInfo")
     @ApiOperation(value = "获取房源详情", tags = {"详情"})
     @ApiImplicitParams({
             @ApiImplicitParam(name = "id", value = "房源id", required = true),
-            @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = false, paramType = "header")
+//            @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = false, paramType = "header")
     })
     public ResultUtil<HouseResourceInfoRes> getHouseResourceInfo(Integer id){
         HouseResourceInfoRes houseResourceInfo = houseResourceService.getHouseResourceInfo(id);
         return ResultUtil.success(houseResourceInfo);
     }
 
-
     @ResponseBody
-    @PostMapping("/api/houseResource/collectionHouseResource")
+    @PostMapping("/base/houseResource/collectionHouseResource")
     @ApiOperation(value = "收藏/取消收藏房源操作", tags = {"详情"})
     @ApiImplicitParams({
             @ApiImplicitParam(name = "id", value = "房源id", required = true),
             @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header")
     })
     public ResultUtil collectionHouseResource(Integer id){
+        AppUser appUser = appUserService.getAppUser();
+        if(null != appUser && (appUser.getStatus() == 2|| appUser.getStatus() == 3)){
+            return ResultUtil.errorLogin("当前账号已被冻结或删除");
+        }
         return collectionHouseResourceService.collectionHouseResource(id);
     }
-
-
 
     @ResponseBody
     @GetMapping("/base/houseResource/getNearbyHouseResource")
@@ -106,26 +295,86 @@
         return ResultUtil.success(nearbyHouseResource);
     }
 
-
     @ResponseBody
-    @GetMapping("/base/houseResource/getContactInformation")
+    @GetMapping("/base/houseResource/getContactInformation/{id}")
     @ApiOperation(value = "获取联系方式", tags = {"详情"})
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "id", value = "房源id", required = true),
-    })
-    public ResultUtil<ContactInformationRes> getContactInformation(Integer id){
+    public ResultUtil<ContactInformationRes> getContactInformation(@PathVariable("id") Integer id){
         ContactInformationRes contactInformation = houseResourceService.getContactInformation(id);
         return ResultUtil.success(contactInformation);
     }
 
-
-
     @ResponseBody
-    @PostMapping("/api/houseResource/addReportHouseResource")
+    @PostMapping("/base/houseResource/addReportHouseResource")
     @ApiOperation(value = "添加房源举报", tags = {"详情"})
-    public ResultUtil addReportHouseResource(ReportHouseResourceReq req){
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header")
+    })
+    public ResultUtil addReportHouseResource(@RequestBody ReportHouseResourceReq req){
+        AppUser appUser = appUserService.getAppUser();
+        if(null != appUser && (appUser.getStatus() == 2|| appUser.getStatus() == 3)){
+            return ResultUtil.errorLogin("当前账号已被冻结或删除");
+        }
         return reportHouseResourceService.addReportHouseResource(req);
     }
 
+    @ResponseBody
+    @PostMapping("/base/intermediary/list")
+    @ApiOperation(value = "找中介", tags = {"服务"})
+    public ResultUtil<SearchIntermediaryRes> searchIntermediaryList(@RequestBody SearchIntermediaryReq req){
+        SearchIntermediaryRes res= appUserService.searchIntermediaryList(req);
+        return ResultUtil.success(res);
+    }
 
+    @ResponseBody
+    @PostMapping("/base/intermediary/intermediaryInfo")
+    @ApiOperation(value = "找中介-中介信息", tags = {"服务"})
+    public ResultUtil<SearchIntermediaryListRes> searchIntermediaryInfo(Integer id){
+        SearchIntermediaryListRes res= appUserService.searchIntermediaryInfo(id);
+        if (res==null){
+            SearchIntermediaryListRes searchIntermediaryListRes = new SearchIntermediaryListRes();
+            AppUser appUser = appUserService.selectById(id);
+            searchIntermediaryListRes.setId(id);
+            searchIntermediaryListRes.setNickname(appUser.getNickname());
+            searchIntermediaryListRes.setCompanyName(appUser.getCompanyName());
+            searchIntermediaryListRes.setCompanyAddress(appUser.getCompanyAddress());
+            searchIntermediaryListRes.setIntroduce(appUser.getIntroduce());
+            searchIntermediaryListRes.setProfilePhoto(appUser.getProfilePhoto());
+            searchIntermediaryListRes.setPhone(appUser.getPhone());
+            searchIntermediaryListRes.setHouseCount(0);
+            return ResultUtil.success(searchIntermediaryListRes);
+        }
+        return ResultUtil.success(res);
+    }
+
+    @ResponseBody
+    @GetMapping("/base/intermediary/getContactInfo/{id}")
+    @ApiOperation(value = "获取中介联系方式", tags = {"详情"})
+    public ResultUtil<AppUser> getContactInfo(@PathVariable("id") Integer id){
+        AppUser appUser = appUserService.selectById(id);
+        return ResultUtil.success(appUser);
+    }
+    @ResponseBody
+    @PostMapping("/base/intermediary/listHouse")
+    @ApiOperation(value = "个人详情-我的房源", tags = {"服务"})
+    @ApiImplicitParams({
+//            @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header")
+    })
+    public ResultUtil<SearchHouseResourceRes> listHouse(@RequestBody HouseQuery query){
+        SearchHouseResourceRes res= houseResourceService.listHouse(query);
+        return ResultUtil.success(res);
+    }
+
+    @ResponseBody
+    @PostMapping("/base/housingDemand/getSurplusPushNumber1")
+    @ApiOperation(value = "获取剩余发布数量", tags = {"房源"})
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header")
+    })
+    public ResultUtil getSurplusPushNumber1(){
+        AppUser appUser = appUserService.getAppUser();
+        if(null != appUser && (appUser.getStatus() == 2|| appUser.getStatus() == 3)){
+            return ResultUtil.errorLogin("当前账号已被冻结或删除");
+        }
+        return houseResourceService.getSurplusPushNumber1();
+    }
 }

--
Gitblit v1.7.1