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/warpper/res/HouseResourceInfoRes.java            |    4 
 guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/res/SearchHouseResourceListRes.java      |    6 
 guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/Md5Util.java                                |   48 ++++++
 guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/HouseResourceService.java           |  166 +++++++++++++++--------
 guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/res/CollectListRes.java                  |    3 
 guns-admin/src/main/java/com/stylefeng/guns/modular/api/FileController.java                                 |    1 
 guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/HouseResource.java                         |   12 +
 guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/HouseResourceMapper.xml              |   35 +++-
 guns-management/src/main/java/com/stylefeng/guns/modular/system/warpper/res/SearchHouseResourceListRes.java |    3 
 guns-admin/pom.xml                                                                                          |    6 
 guns-admin/src/main/java/com/stylefeng/guns/modular/api/HouseResourceController.java                        |   83 +++++++++++
 guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/req/AddHouseReq.java                     |    7 +
 12 files changed, 295 insertions(+), 79 deletions(-)

diff --git a/guns-admin/pom.xml b/guns-admin/pom.xml
index a3d0ca2..d908228 100644
--- a/guns-admin/pom.xml
+++ b/guns-admin/pom.xml
@@ -34,9 +34,11 @@
             <version>1.0.6</version>
         </dependency>
         <!-- Aliyun OSS SDK -->
-        <dependency><groupId>com.aliyun.oss</groupId>
+        <dependency>
+            <groupId>com.aliyun.oss</groupId>
             <artifactId>aliyun-sdk-oss</artifactId>
-            <version>3.14.0</version></dependency>
+            <version>3.15.1</version>
+        </dependency>
         <!--spring boot依赖-->
         <dependency>
             <groupId>org.springframework.boot</groupId>
diff --git a/guns-admin/src/main/java/com/stylefeng/guns/modular/api/FileController.java b/guns-admin/src/main/java/com/stylefeng/guns/modular/api/FileController.java
index 66a7a7d..23fef39 100644
--- a/guns-admin/src/main/java/com/stylefeng/guns/modular/api/FileController.java
+++ b/guns-admin/src/main/java/com/stylefeng/guns/modular/api/FileController.java
@@ -35,7 +35,6 @@
         if (originalFilename != null && originalFilename.contains(".")) {
             System.err.println(originalFilename.substring(originalFilename.lastIndexOf(".")));
         }
-
         // 创建 OSSClient 实例
             OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
         long l = System.currentTimeMillis();
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 05dde86..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,12 +1,20 @@
 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.*;
+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.util.WxAppletTools;
 import com.stylefeng.guns.modular.system.warpper.req.*;
@@ -21,6 +29,7 @@
 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;
@@ -32,10 +41,8 @@
 import java.security.SecureRandom;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author zhibing.pu
@@ -110,7 +117,75 @@
         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")
diff --git a/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/HouseResourceMapper.xml b/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/HouseResourceMapper.xml
index 97aaf44..e385b58 100644
--- a/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/HouseResourceMapper.xml
+++ b/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/HouseResourceMapper.xml
@@ -7,7 +7,7 @@
     <select id="searchHouseResource" resultType="com.stylefeng.guns.modular.system.warpper.res.SearchHouseResourceListRes">
         select
         hr.id,
-        au.user_type as houseResource,
+        IFNULL(au.user_type,0)as houseResource,
         hr.house_photo as imgUrl,
         hr.title,
         hr.house_area as houseArea,
@@ -15,6 +15,7 @@
         concat(rp.`name`, rc.`name`) as address,
         hr.longitude,
         hr.latitude,
+        hr.headImg,
         hr.platform,
         hr.sale_amount as saleAmount,
         IFNULL(au.nickname,su.`name`) as nickname,
@@ -37,10 +38,10 @@
         left join t_region rp on (rp.id = rc.parent_id)
         left join t_house_type tp on hr.house_type_id = tp.id
         where hr.is_delete = 0 and hr.`status` = 1 and hr.auth_status = 2 and hr.type=2
-        <if test="null != req.type and 2 == req.type">
-            and hr.data_type = #{req.type}
+        <if test="null != req.type and req.type == 1">
+            and (hr.data_type = #{req.type})
         </if>
-        <if test="null != req.type and 1 == req.type">
+        <if test="null != req.type and req.type == 2">
             and hr.data_type = #{req.type}
         </if>
         <if test="null != req.userType and 2 == req.userType">
@@ -70,7 +71,7 @@
                 #{item}
             </foreach>
         </if>
-        <if test="null != saleAmountStart and null != saleAmountEnd">
+        <if test="req.type!=null and req.type==2 and null != saleAmountStart and null != saleAmountEnd">
             and hr.sale_amount &gt;= #{saleAmountStart} and hr.sale_amount &lt; #{saleAmountEnd}
         </if>
         <if test="null != houseModels">
@@ -146,25 +147,30 @@
         hr.latitude,
         hr.platform,
         hr.sale_amount as saleAmount,
+        IFNULL(au.nickname,su.`name`) as nickname,
+        IFNULL(au.profile_photo,su.avatar) as profilePhoto,
         au.profile_photo as profilePhoto,
-        au.nickname,
-        hr.elevator,
         hr.drying_area as dryingArea,
         hr.garden,
         hr.carport,
         hr.air,
         hr.balcony,
+        hr.is_manage as isManage,
         hr.leaseTime,
-        hr.keep_pet as keepPet
+        tp.name as houseTypeName,
+        hr.keep_pet as keepPet,
+        hr.insert_time as insertTime
         from t_house_resource hr
         left join t_app_user au on (hr.app_user_id = au.id)
+        LEFT JOIN sys_user su ON hr.insert_user_id = su.id AND hr.is_manage = 1
         left join t_region rc on (hr.district_id = rc.id)
         left join t_region rp on (rp.id = rc.parent_id)
+        left join t_house_type tp on hr.house_type_id = tp.id
         where hr.is_delete = 0 and hr.`status` = 1 and hr.auth_status = 2 and hr.type=2
-        <if test="null != req.type and 2 == req.type">
-            and hr.data_type = #{req.type}
+        <if test="null != req.type and req.type == 1">
+            and (hr.data_type = #{req.type})
         </if>
-        <if test="null != req.type and 1 == req.type">
+        <if test="null != req.type and req.type == 2">
             and hr.data_type = #{req.type}
         </if>
         <if test="null != req.userType and 2 == req.userType">
@@ -194,7 +200,7 @@
                 #{item}
             </foreach>
         </if>
-        <if test="null != saleAmountStart and null != saleAmountEnd">
+        <if test="req.type!=null and req.type==2 and null != saleAmountStart and null != saleAmountEnd">
             and hr.sale_amount &gt;= #{saleAmountStart} and hr.sale_amount &lt; #{saleAmountEnd}
         </if>
         <if test="null != houseModels">
@@ -242,7 +248,7 @@
         <if test="null != req.dataType and req.dataType == 2">
             and now() &lt;= DATE_ADD(hr.insert_time,INTERVAL 21 day)
         </if>
-        order by au.user_type desc,hr.insert_time desc
+        order by au.user_type desc
         <if test="null != req.sort and req.sort == 1">
             ,hr.insert_time desc
         </if>
@@ -466,6 +472,8 @@
         hr.garden as garden,
         hr.carport as carport,
         hr.balcony as balcony,
+
+
         hr.app_user_id as appuserId,
         hr.city_id as cityId,
         hr.district_id as districtId,
@@ -496,6 +504,7 @@
         hr.garden,
         hr.carport,
         hr.balcony,
+
         hr.app_user_id as appUserId,
         hr.city_id as cityId,
         hr.district_id as districtId,
diff --git a/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/HouseResource.java b/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/HouseResource.java
index eb80a6c..8ae341b 100644
--- a/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/HouseResource.java
+++ b/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/HouseResource.java
@@ -42,6 +42,11 @@
     @TableField("title")
     private String title;
     /**
+     * 房源封面图
+     */
+    @TableField("headImg")
+    private String headImg;
+    /**
      * 小区名字
      */
     @TableField("cell_name")
@@ -312,4 +317,11 @@
      */
     @TableField("pool")
     private Integer pool;
+
+
+    /**
+     * 楼龄
+     */
+    @TableField("age")
+    private Integer age;
 }
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 bc20bf7..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
@@ -300,6 +300,7 @@
         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());
@@ -482,6 +483,7 @@
                 }
             }
             HouseResource houseResource = new HouseResource();
+
             houseResource.setPlatform(req.getPlatform());
             BeanUtils.copyProperties(req,houseResource);
             houseResource.setType(req.getType());
@@ -492,17 +494,25 @@
             }
             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);
@@ -531,7 +541,33 @@
                     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);
@@ -541,66 +577,20 @@
                 houseResource.setAuthStatus(2);
                 houseResource.setAuthTime(new Date());
                 this.baseMapper.updateById(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());
-                    //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); // 自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调 参数仅对小程序码生效
-                    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();
-                        }
-                        return null;
-                    }
-                }
+                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();
@@ -623,11 +613,71 @@
                 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();
diff --git a/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/Md5Util.java b/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/Md5Util.java
new file mode 100644
index 0000000..771b3dc
--- /dev/null
+++ b/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/Md5Util.java
@@ -0,0 +1,48 @@
+package com.stylefeng.guns.modular.system.util;
+
+import java.security.MessageDigest;
+
+public class Md5Util {
+    private static final String hexDigIts[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};
+
+    /**
+     * MD5加密
+     *
+     * @param origin      字符
+     * @param charsetname 编码
+     * @return
+     */
+    public static String MD5Encode(String origin, String charsetname) {
+        String resultString = null;
+        try {
+            resultString = new String(origin);
+            MessageDigest md = MessageDigest.getInstance("MD5");
+            if (null == charsetname || "".equals(charsetname)) {
+                resultString = byteArrayToHexString(md.digest(resultString.getBytes()));
+            } else {
+                resultString = byteArrayToHexString(md.digest(resultString.getBytes(charsetname)));
+            }
+        } catch (Exception e) {
+        }
+        return resultString;
+    }
+
+
+    public static String byteArrayToHexString(byte b[]) {
+        StringBuffer resultSb = new StringBuffer();
+        for (int i = 0; i < b.length; i++) {
+            resultSb.append(byteToHexString(b[i]));
+        }
+        return resultSb.toString();
+    }
+
+    public static String byteToHexString(byte b) {
+        int n = b;
+        if (n < 0) {
+            n += 256;
+        }
+        int d1 = n / 16;
+        int d2 = n % 16;
+        return hexDigIts[d1] + hexDigIts[d2];
+    }
+}
diff --git a/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/req/AddHouseReq.java b/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/req/AddHouseReq.java
index c60a668..cb0ad88 100644
--- a/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/req/AddHouseReq.java
+++ b/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/req/AddHouseReq.java
@@ -63,6 +63,7 @@
     private String videoPhoto;
     @ApiModelProperty(value = "房源视频")
     private String houseVideo;
+
     @ApiModelProperty(value = "标题", required = true)
     private String title;
     @ApiModelProperty(value = "更多介绍(求租描述)", required = true)
@@ -89,5 +90,11 @@
     private Integer building;
     @ApiModelProperty(value ="是否有泳池(0=否,1=是)")
     private Integer pool;
+    @ApiModelProperty(value ="同时可租租金")
+    private BigDecimal rentalMoney;
+    @ApiModelProperty(value ="楼龄")
+    private Integer age;
+    @ApiModelProperty(value = "房源封面图片")
+    private String headImg;
 
 }
diff --git a/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/res/CollectListRes.java b/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/res/CollectListRes.java
index 5d8781d..f66dbcd 100644
--- a/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/res/CollectListRes.java
+++ b/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/res/CollectListRes.java
@@ -89,5 +89,8 @@
     @ApiModelProperty("房源审核状态")
     private Integer authStatus;
 
+    @ApiModelProperty("选择同时出租的租金 月")
+    private BigDecimal rentalMoney;
+
 
 }
diff --git a/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/res/HouseResourceInfoRes.java b/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/res/HouseResourceInfoRes.java
index 8809f8f..f140289 100644
--- a/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/res/HouseResourceInfoRes.java
+++ b/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/res/HouseResourceInfoRes.java
@@ -76,5 +76,9 @@
     @ApiModelProperty("房屋朝向")
     private String buildingOrientation;
 
+    @ApiModelProperty("同时可租 租金")
+    private BigDecimal rentalMoney;
+    @ApiModelProperty("楼龄")
+    private Integer age;
 
 }
diff --git a/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/res/SearchHouseResourceListRes.java b/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/res/SearchHouseResourceListRes.java
index b8d5a79..3dcc8ee 100644
--- a/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/res/SearchHouseResourceListRes.java
+++ b/guns-admin/src/main/java/com/stylefeng/guns/modular/system/warpper/res/SearchHouseResourceListRes.java
@@ -4,6 +4,7 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -17,7 +18,7 @@
     private Integer id;
     @ApiModelProperty("房源来源(2=个人房源,3=中介房源)")
     private Integer houseResource;
-    @ApiModelProperty("封面图")
+    @ApiModelProperty("图片")
     private String imgUrl;
     @ApiModelProperty("标题")
     private String title;
@@ -57,8 +58,11 @@
     private Integer keepPet;
     @ApiModelProperty("租期")
     private String leaseTime;
+    @ApiModelProperty("房源封面图片")
+    private String headImg;
     @ApiModelProperty("是否为平台添加")
     private Integer isManage;
     @ApiModelProperty("添加时间")
     private Date insertTime;
+
 }
diff --git a/guns-management/src/main/java/com/stylefeng/guns/modular/system/warpper/res/SearchHouseResourceListRes.java b/guns-management/src/main/java/com/stylefeng/guns/modular/system/warpper/res/SearchHouseResourceListRes.java
index 4138326..35ea568 100644
--- a/guns-management/src/main/java/com/stylefeng/guns/modular/system/warpper/res/SearchHouseResourceListRes.java
+++ b/guns-management/src/main/java/com/stylefeng/guns/modular/system/warpper/res/SearchHouseResourceListRes.java
@@ -4,6 +4,8 @@
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
+import java.math.BigDecimal;
+
 /**
  * @author zhibing.pu
  * @Date 2023/11/13 11:42
@@ -47,4 +49,5 @@
     private Integer balcony;
     @ApiModelProperty("是否可养宠物(0=否,1=是)")
     private Integer keepPet;
+
 }

--
Gitblit v1.7.1