Przeglądaj źródła

新增房源接口

houweiyu 4 lat temu
rodzic
commit
7445695c61

+ 42 - 25
pom.xml

@@ -19,6 +19,7 @@
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <maven-surefire-plugin.version>2.19.1</maven-surefire-plugin.version>
         <nacos.latest.version>0.2.1</nacos.latest.version>
+        <nacos-config-spring-boot.version>0.2.1</nacos-config-spring-boot.version>
     </properties>
 
     <parent>
@@ -28,6 +29,25 @@
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
 
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springframework.cloud</groupId>
+                <artifactId>spring-cloud-dependencies</artifactId>
+                <version>Greenwich.SR2</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.springframework.cloud</groupId>
+                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
+                <version>0.9.0.RELEASE</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
 
     <dependencies>
         <!-- 引入四维sdk -->
@@ -35,7 +55,7 @@
             <groupId>org.4dage</groupId>
             <artifactId>4dage-back-sdk</artifactId>
             <version>1.0.2.2-RELEASE</version>
-            <exclusions>
+        <!--    <exclusions>
                 <exclusion>
                     <groupId>com.baomidou</groupId>
                     <artifactId>mybatis-plus-extension</artifactId>
@@ -44,60 +64,57 @@
                     <groupId>org.mybatis</groupId>
                     <artifactId>mybatis</artifactId>
                 </exclusion>
-            </exclusions>
+            </exclusions>-->
         </dependency>
 
-        <!-- 引入nacos配置中心 -->
+        <!-- nacos 注册中心依赖 -->
         <dependency>
-            <groupId>com.alibaba.boot</groupId>
-            <artifactId>nacos-config-spring-boot-starter</artifactId>
-            <version>0.2.6</version>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
             <exclusions>
                 <exclusion>
-                    <groupId>commons-io</groupId>
-                    <artifactId>commons-io</artifactId>
-                </exclusion>
-                <exclusion>
                     <groupId>com.google.guava</groupId>
                     <artifactId>guava</artifactId>
                 </exclusion>
+                <exclusion>
+                    <groupId>commons-io</groupId>
+                    <artifactId>commons-io</artifactId>
+                </exclusion>
             </exclusions>
         </dependency>
-        <!-- 引入nacos服务发现 -->
+        <!-- nacos 配置中心依赖 -->
         <dependency>
             <groupId>com.alibaba.boot</groupId>
-            <artifactId>nacos-discovery-spring-boot-starter</artifactId>
-            <version>0.2.6</version>
+            <artifactId>nacos-config-spring-boot-starter</artifactId>
+            <version>${nacos-config-spring-boot.version}</version>
             <exclusions>
                 <exclusion>
-                    <groupId>commons-io</groupId>
-                    <artifactId>commons-io</artifactId>
+                    <groupId>com.google.guava</groupId>
+                    <artifactId>guava</artifactId>
                 </exclusion>
             </exclusions>
         </dependency>
+
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-core</artifactId>
             <version>3.3.1.tmp</version>
         </dependency>
-        <dependency>
+ <!--       <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-extension</artifactId>
-            <version>3.1.0</version>
+            <version>3.3.1.tmp</version>
             <exclusions>
                 <exclusion>
                     <groupId>com.baomidou</groupId>
                     <artifactId>mybatis-plus-core</artifactId>
                 </exclusion>
+                <exclusion>
+                    <groupId>org.mybatis</groupId>
+                    <artifactId>mybatis-spring</artifactId>
+                </exclusion>
             </exclusions>
-        </dependency>
-        <!--   <dependency>
-               <groupId>com.baomidou</groupId>
-               <artifactId>mybatis-plus-extension</artifactId>
-               <version>3.2.0</version>
-           </dependency>-->
-
-
+        </dependency>-->
     </dependencies>
 
 

+ 9 - 41
src/main/java/fcb/project/manager/FcbProjectManagerApplication.java

@@ -1,57 +1,25 @@
 package fcb.project.manager;
 
-import com.alibaba.nacos.api.annotation.NacosInjected;
-import com.alibaba.nacos.api.exception.NacosException;
-import com.alibaba.nacos.api.naming.NamingService;
 import org.mybatis.spring.annotation.MapperScan;
-import org.springframework.beans.factory.annotation.Value;
+import org.mybatis.spring.annotation.MapperScans;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.builder.SpringApplicationBuilder;
 import org.springframework.boot.context.ApplicationPidFileWriter;
-import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
-import org.springframework.cache.annotation.EnableCaching;
-import org.springframework.scheduling.annotation.EnableAsync;
-import org.springframework.scheduling.annotation.EnableScheduling;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.PostConstruct;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.context.annotation.ComponentScan;
 
 /**
  * @author abnerhou
  * @date 2021/1/5 12:25
  * @desciption
  */
+//@EnableFeignClients
+//@NacosPropertySource(dataId = "abner-test", autoRefreshed = true)
+@EnableDiscoveryClient
 @SpringBootApplication
-@EnableCaching
-@EnableScheduling
-@EnableAsync
-@RestController
-@MapperScan(basePackages = {"fbc.project.manager"})
-public class FcbProjectManagerApplication extends SpringBootServletInitializer {
-
-    @NacosInjected
-    private NamingService namingService;
-
-    @Value("${server.port}")
-    private int serverPort;
-
-    @Value("${spring.application.name}")
-    private String applicationName;
-
-    @PostConstruct
-    public void registerInstance() throws NacosException {
-        namingService.registerInstance(applicationName,"127.0.0.1",serverPort);
-    }
-
-    @Override
-    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
-        return application.sources(FcbProjectManagerApplication.class);
-    }
-
+@MapperScan(basePackages = {"fcb.project.manager.base.dao"})
+public class FcbProjectManagerApplication {
     public static void main(String[] args) {
-        SpringApplication springApplication = new SpringApplication(FcbProjectManagerApplication.class);
-        springApplication.addListeners(new ApplicationPidFileWriter());
-        springApplication.run(args);
+       SpringApplication.run(FcbProjectManagerApplication.class , args);
     }
 }

+ 9 - 1
src/main/java/fcb/project/manager/base/config/MyBatisPlusLogicalDeleteConfig.java

@@ -1,3 +1,5 @@
+/*
+
 package fcb.project.manager.base.config;
 
 import com.baomidou.mybatisplus.core.injector.ISqlInjector;
@@ -5,11 +7,15 @@ import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
+
+*/
 /**
  * 2 * @Author: Abner
  * 3 * @Date: 2021/1/7 14:12
  * 4
- */
+ *//*
+
+
 @Configuration
 public class MyBatisPlusLogicalDeleteConfig {
     @Bean
@@ -17,3 +23,5 @@ public class MyBatisPlusLogicalDeleteConfig {
         return new LogicSqlInjector();
     }
 }
+
+*/

+ 1 - 0
src/main/java/fcb/project/manager/base/dao/TmEstateDao.java

@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @author abner
  * @since 2021-01-07
  */
+
 public interface TmEstateDao extends BaseMapper<TmEstate> {
 
 }

+ 1 - 0
src/main/java/fcb/project/manager/base/dao/TmHouseDao.java

@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @author abner
  * @since 2021-01-07
  */
+
 public interface TmHouseDao extends BaseMapper<TmHouse> {
 
 }

+ 1 - 1
src/main/java/fcb/project/manager/base/entity/TmEstate.java

@@ -58,7 +58,7 @@ public class TmEstate implements Serializable {
     @ApiModelProperty(value = "是否删除:0->未删除; 1->已删除")
     @TableLogic
     @TableField(value = "isDelete" , fill = FieldFill.INSERT)
-    private Boolean isDelete;
+    private Integer isDelete;
 
 
 }

+ 10 - 4
src/main/java/fcb/project/manager/base/entity/TmHouse.java

@@ -29,7 +29,8 @@ public class TmHouse implements Serializable {
 
     private static final long serialVersionUID=1L;
 
-    private Integer id;
+    @ApiModelProperty(value = "唯一ID")
+    private String id;
 
     @ApiModelProperty(value = "封面照片url")
     private String coverImagUrl;
@@ -38,7 +39,7 @@ public class TmHouse implements Serializable {
     private String houseTitle;
 
     @ApiModelProperty(value = "创建者ID")
-    private Integer createById;
+    private String createById;
 
     @ApiModelProperty(value = "创建者名称")
     private String createByName;
@@ -55,7 +56,7 @@ public class TmHouse implements Serializable {
     private String status;
 
     @ApiModelProperty(value = "审核人ID")
-    private Integer auditId;
+    private String auditId;
 
     @ApiModelProperty(value = "审核人名称")
     private String auditName;
@@ -66,7 +67,12 @@ public class TmHouse implements Serializable {
     @ApiModelProperty(value = "是否删除: 0->未删除; 1->已删除")
     @TableLogic
     @TableField(value = "isDelete" , fill = FieldFill.INSERT)
-    private Boolean isDelete;
+    private Integer isDelete;
 
+    @ApiModelProperty(value = "所属楼盘ID")
+    private String estateId;
+
+    @ApiModelProperty(value = "类型")
+    private Integer type;
 
 }

+ 29 - 0
src/main/java/fcb/project/manager/base/enums/DeleteStatus.java

@@ -0,0 +1,29 @@
+package fcb.project.manager.base.enums;
+
+/**
+ * 2 * @Author: Abner
+ * 3 * @Date: 2021/1/7 15:21
+ * 4
+ */
+public enum DeleteStatus {
+
+     NOT_DELETE(0 , "未删除"),
+     HAS_DELETE(1 , "已删除"),
+
+    ;
+    private Integer code;
+    private String desc;
+
+    DeleteStatus(Integer code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+
+    public Integer getCode() {
+        return code;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+}

+ 3 - 2
src/main/java/fcb/project/manager/base/generator/CodeGenerator.java

@@ -91,8 +91,9 @@ public class CodeGenerator {
         strategy.setNaming(NamingStrategy.underline_to_camel);
         strategy.setColumnNaming(NamingStrategy.underline_to_camel);
         strategy.setEntityLombokModel(true);
-        // 如果要生成多个,这里可以传入String[]
-        strategy.setInclude("tm_estate","tm_house");
+        //首次生成,后续则只能手工增量添加后续新增的字段或者修改存量的字段
+        //只需要修改entity下的字段即可
+//        strategy.setInclude("");
         mpg.setStrategy(strategy);
         mpg.execute();
         System.out.println("代码自动生成执行完成");

+ 67 - 2
src/main/java/fcb/project/manager/base/service/impl/TmEstateServiceImpl.java

@@ -1,11 +1,20 @@
 package fcb.project.manager.base.service.impl;
 
-import fcb.project.manager.base.entity.TmEstate;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import fcb.project.manager.base.dao.TmEstateDao;
+import fcb.project.manager.base.entity.TmEstate;
+import fcb.project.manager.base.enums.DeleteStatus;
 import fcb.project.manager.base.service.ITmEstateService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import fdage.back.sdk.base.uuid.SnowFlakeUUidUtils;
+import lombok.extern.log4j.Log4j2;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
+
 /**
  * <p>
  *  服务实现类
@@ -15,6 +24,62 @@ import org.springframework.stereotype.Service;
  * @since 2021-01-07
  */
 @Service
+@Log4j2
 public class TmEstateServiceImpl extends ServiceImpl<TmEstateDao, TmEstate> implements ITmEstateService {
 
+
+
+     public IPage<TmEstate> getListByNameOrBelong(String estateName , String belongCompany,
+                                       Long pageNum , Long pageSize){
+         LambdaQueryWrapper<TmEstate> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+         if(StringUtils.isNotBlank(estateName)){
+           lambdaQueryWrapper.eq(TmEstate::getBelongCompanyName , belongCompany);
+         }
+         if(StringUtils.isNotBlank(estateName)){
+             lambdaQueryWrapper.eq(TmEstate::getEstateName , estateName);
+         }
+         lambdaQueryWrapper.eq(TmEstate::getIsDelete , DeleteStatus.NOT_DELETE.getCode());
+         IPage<TmEstate> page = new Page<>(pageNum , pageSize);
+         return  getBaseMapper().selectPage(page , lambdaQueryWrapper);
+     }
+
+     public TmEstate getOneByNameAndBelong(String estateName , String belongCompany){
+         LambdaQueryWrapper<TmEstate> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+         if(StringUtils.isNotBlank(estateName)){
+             lambdaQueryWrapper.eq(TmEstate::getBelongCompanyName , belongCompany);
+         }
+         if(StringUtils.isNotBlank(estateName)){
+             lambdaQueryWrapper.eq(TmEstate::getEstateName , estateName);
+         }
+         lambdaQueryWrapper.eq(TmEstate::getIsDelete , DeleteStatus.NOT_DELETE.getCode());
+         lambdaQueryWrapper.last("limit 1");
+         return getBaseMapper().selectOne(lambdaQueryWrapper);
+     }
+
+     public TmEstate getById(String id){
+         return getById(id);
+     }
+
+     public boolean updateEstate(TmEstate estate){
+         if(null == estate){
+             return false;
+         }
+         if(null == estate.getId()){
+             log.info("主键ID为空,无法更项目楼盘信息");
+             return false;
+         }
+         estate.setUpdateTime(LocalDateTime.now());
+         return saveOrUpdate(estate);
+     }
+
+     public boolean insertNew(TmEstate estate){
+         if(StringUtils.isBlank(estate.getId())){
+             estate.setId(SnowFlakeUUidUtils.generaUUid(null , null ,  "EST00001"));
+         }
+         estate.setCreateTime(LocalDateTime.now());
+         estate.setUpdateTime(LocalDateTime.now());
+         estate.setIsDelete(DeleteStatus.NOT_DELETE.getCode());
+         return 1 == getBaseMapper().insert(estate);
+     }
+
 }

+ 70 - 0
src/main/java/fcb/project/manager/base/service/impl/TmHouseServiceImpl.java

@@ -1,11 +1,22 @@
 package fcb.project.manager.base.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import fcb.project.manager.base.entity.TmEstate;
 import fcb.project.manager.base.entity.TmHouse;
 import fcb.project.manager.base.dao.TmHouseDao;
+import fcb.project.manager.base.enums.DeleteStatus;
 import fcb.project.manager.base.service.ITmHouseService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import fdage.back.sdk.base.uuid.SnowFlakeUUidUtils;
+import io.swagger.models.auth.In;
+import lombok.extern.log4j.Log4j2;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
+
 /**
  * <p>
  *  服务实现类
@@ -15,6 +26,65 @@ import org.springframework.stereotype.Service;
  * @since 2021-01-07
  */
 @Service
+@Log4j2
 public class TmHouseServiceImpl extends ServiceImpl<TmHouseDao, TmHouse> implements ITmHouseService {
 
+    public IPage<TmHouse> getListByNameOrBelong(String houseTitle , Integer status, int type,
+                                                Long pageNum , Long pageSize){
+        LambdaQueryWrapper<TmHouse> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        if(StringUtils.isNotBlank(houseTitle)){
+            lambdaQueryWrapper.eq(TmHouse::getHouseTitle , houseTitle);
+        }
+        if(null != status){
+            lambdaQueryWrapper.eq(TmHouse::getStatus , status);
+        }
+        lambdaQueryWrapper.eq(TmHouse::getType , type);
+        lambdaQueryWrapper.eq(TmHouse::getIsDelete , DeleteStatus.NOT_DELETE.getCode());
+        IPage<TmHouse> page = new Page<>(pageNum , pageSize);
+        return  getBaseMapper().selectPage(page , lambdaQueryWrapper);
+    }
+
+
+    public TmHouse getOneByNameAndEstate(String houseTitle , String estateId , int type){
+        LambdaQueryWrapper<TmHouse> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        if(StringUtils.isNotBlank(houseTitle)){
+            lambdaQueryWrapper.eq(TmHouse::getHouseTitle , houseTitle);
+        }
+        if(StringUtils.isNotBlank(estateId)){
+            lambdaQueryWrapper.eq(TmHouse::getEstateId , estateId);
+        }
+        lambdaQueryWrapper.eq(TmHouse::getType , type);
+        lambdaQueryWrapper.eq(TmHouse::getIsDelete , DeleteStatus.NOT_DELETE.getCode());
+        lambdaQueryWrapper.last("limit 1");
+        return getBaseMapper().selectOne(lambdaQueryWrapper);
+    }
+
+
+    public TmHouse getById(String id){
+        return getById(id);
+    }
+
+    public boolean updateHouse(TmHouse tmHouse){
+        if(null == tmHouse){
+            return false;
+        }
+        if(null == tmHouse.getId()){
+            log.info("主键ID为空,无法更房源信息");
+            return false;
+        }
+        tmHouse.setUpdateTime(LocalDateTime.now());
+        return saveOrUpdate(tmHouse);
+    }
+
+
+    public boolean insertNew(TmHouse tmHouse){
+        if(StringUtils.isBlank(tmHouse.getId())){
+            tmHouse.setId(SnowFlakeUUidUtils.generaUUid(null , null ,  "HUS00001"));
+        }
+        tmHouse.setCreateTime(LocalDateTime.now());
+        tmHouse.setUpdateTime(LocalDateTime.now());
+        tmHouse.setIsDelete(DeleteStatus.NOT_DELETE.getCode());
+        return 1 == getBaseMapper().insert(tmHouse);
+    }
+
 }

+ 137 - 0
src/main/java/fcb/project/manager/base/utils/DataUtils.java

@@ -0,0 +1,137 @@
+package fcb.project.manager.base.utils;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
+
+import java.math.BigDecimal;
+import java.util.*;
+
+/**
+ * @author abnerhou
+ * @date 2020/4/23 17:35
+ * @desciption
+ */
+@Component
+public class DataUtils {
+
+    public static BigDecimal getBigDecimalObj(Object data) {
+
+        if (null == data) {
+            return null;
+        } else if (data instanceof String) {
+            String dataStr = (String) data;
+            if (!StringUtils.isEmpty(dataStr.trim())) {
+                return new BigDecimal(dataStr.trim());
+            }
+        } else if (data instanceof Long) {
+            Long dataLong = (Long) data;
+            return BigDecimal.valueOf(dataLong);
+        } else if (data instanceof Integer) {
+            Integer dataInt = (Integer) data;
+            return BigDecimal.valueOf(dataInt);
+
+        } else if (data instanceof Double) {
+            Double dataDouble = (Double) data;
+            return BigDecimal.valueOf(dataDouble);
+        }
+
+        return null;
+
+    }
+
+    public static Integer getInteger(Object object) {
+        if (null == object) {
+            return new Integer(0);
+        }
+        if (object instanceof String) {
+            String ojStr = (String) object;
+            if (StringUtils.isEmpty(ojStr)) {
+                //TODO:在斟酌这里的处理方式
+                return new Integer(0);
+            } else {
+                return new Integer(Integer.parseInt(ojStr.trim()));
+            }
+        } else if (object instanceof Integer) {
+            return (Integer) object;
+        } else if (object instanceof Long) {
+            return (Integer) object;
+        } else if (object instanceof Double) {
+            return (Integer) object;
+        } else {
+            return new Integer(0);
+        }
+    }
+
+    public static Integer getIntegerWithDefault(Object object, boolean withDefault) {
+        if (null == object) {
+
+            return withDefault ? new Integer(0) : null;
+        }
+        if (object instanceof String) {
+            String ojStr = (String) object;
+            if (StringUtils.isEmpty(ojStr)) {
+
+                return withDefault ? new Integer(0) : null;
+            } else {
+                return new Integer(Integer.parseInt(ojStr.trim()));
+            }
+        } else if (object instanceof Integer) {
+            return (Integer) object;
+        } else if (object instanceof Long) {
+            return (Integer) object;
+        } else if (object instanceof Double) {
+            return (Integer) object;
+        } else {
+            return withDefault ? new Integer(0) : null;
+        }
+    }
+
+    public static Map<String, Object> assembleResult(long totalNum, long totalPageNum, long currPageNum, Object list) {
+        Map<String, Object> resultMap = new HashMap<>();
+        resultMap.put("totalNum", totalNum);
+        resultMap.put("totalPageNum", totalPageNum);
+        resultMap.put("curPage", currPageNum);
+        resultMap.put("list", list);
+        return resultMap;
+    }
+
+    public static <T> void assembleTimeQueryWrapper(Map<String, Object> constantQuery, String dynamicQuery,
+                                                    QueryWrapper<T> queryWrapper, String idQuery,
+                                                    String secondQuery, String thirdQuery) {
+        assembleConstantQuery(queryWrapper, constantQuery);
+        if (org.apache.commons.lang3.StringUtils.isNotBlank(dynamicQuery)) {
+            queryWrapper.and(wrapper -> wrapper
+                    .or().like(org.apache.commons.lang3.StringUtils.isNotBlank(secondQuery), secondQuery, dynamicQuery)
+                    .or().like(org.apache.commons.lang3.StringUtils.isNotBlank(thirdQuery), thirdQuery, dynamicQuery)
+                    .or().like(dynamicQuery.length() <= 32 && org.apache.commons.lang3.StringUtils.isNotBlank(idQuery), idQuery, dynamicQuery));
+        }
+
+    }
+
+    public static <T> void assembleConstantQuery(QueryWrapper<T> queryWrapper, Map<String, Object> constantQuery) {
+        if (null != queryWrapper && !CollectionUtils.isEmpty(constantQuery)) {
+            for (Map.Entry<String, Object> entry : constantQuery.entrySet()) {
+                queryWrapper.eq(entry.getKey(), entry.getValue());
+            }
+        }
+    }
+
+    /**
+     *  根据map的key进行字典升序排序
+     * @param map
+     * @return map
+     */
+    public static Map<String, Object> sortMapByKey(Map<String, Object>map) {
+        Map<String, Object> treemap = new TreeMap<String, Object>(map);
+        List<Map.Entry<String, Object>> list = new ArrayList<Map.Entry<String, Object>>(treemap.entrySet());
+        Collections.sort(list, new Comparator<Map.Entry<String, Object>>() {
+            @Override
+            public int compare(Map.Entry<String, Object> o1, Map.Entry<String, Object> o2) {
+                return org.apache.commons.lang3.StringUtils.compare(o1.getKey() , o2.getKey());
+            }
+        });
+        return treemap;
+    }
+}

+ 92 - 0
src/main/java/fcb/project/manager/core/controller/HouseManagerController.java

@@ -0,0 +1,92 @@
+package fcb.project.manager.core.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import fcb.project.manager.base.entity.TmEstate;
+import fcb.project.manager.base.entity.TmHouse;
+import fcb.project.manager.base.service.impl.TmHouseServiceImpl;
+import fcb.project.manager.base.utils.DataUtils;
+import fdage.back.sdk.base.entity.Result;
+import fdage.back.sdk.base.enums.ResultCodeEnum;
+import fdage.back.sdk.base.exception.CommonBaseException;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.models.auth.In;
+import lombok.extern.log4j.Log4j2;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 2 * @Author: Abner
+ * 3 * @Date: 2021/1/7 17:38
+ * 4
+ */
+@RestController
+@RequestMapping("fcb/house")
+@Log4j2
+public class HouseManagerController {
+
+    @Autowired
+    private TmHouseServiceImpl tmHouseService;
+
+    @GetMapping("/queryOrSearchList")
+    @ApiOperation(value = "根据条件拉取所有楼盘")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "houseTitle", value = "房源名称", paramType = "query", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "status", value = "状态", paramType = "query", required = true, dataType = "Integer"),
+            @ApiImplicitParam(name = "type", value = "房源类型: 1->新房,2->二手房", paramType = "query", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "pageNum", value = "当前页码", paramType = "query", required = true, dataType = "Long"),
+            @ApiImplicitParam(name = "pageSize", value = "每页大小", paramType = "query", required = true, dataType = "Long")
+    })
+    public Result<Object> getHouseList(@PathVariable(required = false) String houseTitle,
+                                         @PathVariable(required = false) Integer status,
+                                         @RequestParam(name = "type") Integer type,
+                                         @RequestParam(name = "pageNum")Long pageNum,
+                                         @RequestParam(name = "pageSize")Long pageSize){
+
+        IPage<TmHouse> resultPage = tmHouseService.getListByNameOrBelong(houseTitle , status , type , pageNum , pageSize);
+        return  Result.success(DataUtils.assembleResult(resultPage.getTotal(), resultPage.getPages(),
+                resultPage.getCurrent(), resultPage.getRecords()));
+    }
+
+
+    @PostMapping("/addHouse")
+    @ApiOperation(value = "创建房源")
+    public Result<Object> addNewEstate(@RequestBody TmHouse tmHouse){
+
+        if(!StringUtils.isNoneBlank(tmHouse.getHouseTitle() , tmHouse.getEstateId())){
+            throw new CommonBaseException(ResultCodeEnum.D101 , "楼盘名称或者所属公司不能为空");
+        }
+        TmHouse dbHouse = tmHouseService.getOneByNameAndEstate(tmHouse.getHouseTitle() , tmHouse.getEstateId() , tmHouse.getType());
+        if(null != dbHouse){
+            log.info("{}楼盘下面的房源{}已经存在" , tmHouse.getEstateId() , tmHouse.getHouseTitle());
+            throw new CommonBaseException(ResultCodeEnum.D101 , "楼盘已经存在,无需再添加");
+        }
+        if(tmHouseService.insertNew(tmHouse)){
+            return Result.success("新增成功");
+        }else{
+            return Result.failure("新增失败");
+        }
+    }
+
+    @PostMapping("/updateHouse")
+    @ApiOperation(value = "修改房源信息")
+    public Result<Object> updateEstate(@RequestBody TmHouse tmHouse){
+
+        if(null == tmHouse){
+            return Result.failure("入参为空");
+        }
+        if(StringUtils.isBlank(tmHouse.getId())){
+            return Result.failure("id不能为空");
+        }
+        TmHouse dbHouse = tmHouseService.getById(tmHouse.getId());
+        if(tmHouseService.updateHouse(tmHouse)){
+            return Result.success("修改成功");
+        }else{
+            return Result.failure("修改失败");
+        }
+    }
+
+
+}

+ 72 - 6
src/main/java/fcb/project/manager/core/controller/ProjectController.java

@@ -1,10 +1,19 @@
 package fcb.project.manager.core.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import fcb.project.manager.base.entity.TmEstate;
+import fcb.project.manager.base.service.impl.TmEstateServiceImpl;
+import fcb.project.manager.base.utils.DataUtils;
 import fdage.back.sdk.base.entity.Result;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import fdage.back.sdk.base.enums.ResultCodeEnum;
+import fdage.back.sdk.base.exception.CommonBaseException;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.log4j.Log4j2;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * 2 * @Author: Abner
@@ -13,14 +22,71 @@ import org.springframework.web.bind.annotation.RestController;
  */
 @RestController
 @RequestMapping("fcb/project")
+@Log4j2
 public class ProjectController {
 
+    @Autowired
+    private TmEstateServiceImpl tmEstateService;
+
     @GetMapping("/queryOrSearchList")
+    @ApiOperation(value = "根据条件拉取所有楼盘")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "estateName", value = "楼盘名称", paramType = "query", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "belongCompany", value = "所属公司", paramType = "query", required = true, dataType = "String"),
+            @ApiImplicitParam(name = "pageNum", value = "当前页码", paramType = "query", required = true, dataType = "Long"),
+            @ApiImplicitParam(name = "pageSize", value = "每页大小", paramType = "query", required = true, dataType = "Long")
+     })
     public Result<Object> getProjectList(@PathVariable(required = false) String estateName,
-                                         @PathVariable(required = false) String belongCompany){
+                                         @PathVariable(required = false) String belongCompany,
+                                         @RequestParam(name = "pageNum")Long pageNum,
+                                         @RequestParam(name = "pageSize")Long pageSize){
+
+        IPage<TmEstate> resultPage = tmEstateService.getListByNameOrBelong(estateName , belongCompany , pageNum , pageSize);
+        return  Result.success(DataUtils.assembleResult(resultPage.getTotal(), resultPage.getPages(),
+                resultPage.getCurrent(), resultPage.getRecords()));
+    }
 
+    @PostMapping("/addEstate")
+    @ApiOperation(value = "创建楼盘项目")
+    public Result<Object> addNewEstate(@RequestBody TmEstate tmEstate){
 
-        return Result.success("");
+        if(!StringUtils.isNoneBlank(tmEstate.getEstateName() , tmEstate.getBelongCompanyName())){
+            throw new CommonBaseException(ResultCodeEnum.D101 , "楼盘名称或者所属公司不能为空");
+        }
+        TmEstate dbEstate = tmEstateService.getOneByNameAndBelong(tmEstate.getEstateName() , tmEstate.getBelongCompanyName());
+        if(null != dbEstate){
+            log.info("{}公司下面的楼盘{}已经存在" , tmEstate.getBelongCompanyName() , tmEstate.getEstateName());
+            throw new CommonBaseException(ResultCodeEnum.D101 , "楼盘已经存在,无需再添加");
+        }
+        if(tmEstateService.insertNew(tmEstate)){
+           return Result.success("新增成功");
+        }else{
+            return Result.failure("新增失败");
+        }
     }
 
+    @PostMapping("/updateEstate")
+    @ApiOperation(value = "修改楼盘项目信息")
+    public Result<Object> updateEstate(@RequestBody TmEstate tmEstate){
+
+        if(null == tmEstate){
+            return Result.failure("入参为空");
+        }
+        if(StringUtils.isBlank(tmEstate.getId())){
+            return Result.failure("id不能为空");
+        }
+        TmEstate dbEstate = tmEstateService.getById(tmEstate.getId());
+        if(tmEstate.getIsDelete().compareTo(1) == 0 && dbEstate.getIsDelete().compareTo(0) == 0){
+            //删除楼盘操作,需要检查楼盘下面是否还有有效房源
+
+        }
+        if(tmEstateService.updateEstate(tmEstate)){
+            return Result.success("修改成功");
+        }else{
+            return Result.failure("修改失败");
+        }
+    }
+
+
+
 }

+ 18 - 0
src/main/resources/application-dev.properties

@@ -0,0 +1,18 @@
+
+server.port=8185
+
+
+
+#spring.datasource.url=jdbc:mysql://8.135.107.23:31306/fcb-project-manager?serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
+#spring.datasource.username=root
+#spring.datasource.password=4DAGE168!a
+spring.datasource.url=jdbc:mysql://120.25.146.52:3306/fcb-project-manager?serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
+spring.datasource.username=root
+spring.datasource.password=4dkk2020test%
+spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
+
+
+swagger.page.title=房车宝管理后台楼盘管理相关接口
+swagger.page.version=1.0
+swagger.page.desc=设计到房源api、楼盘项目管理、审核流程业务逻辑的接口
+swagger.page.packagePath=fcb.project.manager

+ 8 - 13
src/main/resources/application.properties

@@ -1,21 +1,16 @@
+
+
 #spring.profiles.active=prod
-#spring.profiles.active=dev
+spring.profiles.active=dev
 #spring.profiles.active=test
 
+#应用名
+spring.application.name=fbc-project-manager
 
-swagger.page.title=房车宝管理后台楼盘管理相关接口
-swagger.page.version=1.0
-swagger.page.desc=设计到房源api、楼盘项目管理、审核流程业务逻辑的接口
-swagger.page.packagePath=fcb.project.manager
-
+#注册中心
+spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
+#nacos.config.server-addr=127.0.0.1:8848
 
-#spring.datasource.url=jdbc:mysql://8.135.107.23:31306/fcb-project-manager?serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
-#spring.datasource.username=root
-#spring.datasource.password=4DAGE168!a
-spring.datasource.url=jdbc:mysql://120.25.146.52:3306/fcb-project-manager?serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
-spring.datasource.username=root
-spring.datasource.password=4dkk2020test%"
-spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
 
 
 mybatis-plus.global-config.db-config.logic-delete-value=1

+ 60 - 0
src/main/resources/log4j2.xml

@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<configuration status="INFO">
+    <!--全局参数-->
+    <Properties>
+        <Property name="pattern">%d{yyyy-MM-dd HH:mm:ss,SSS} [%thread]  |-%-5level   %c{1}:%L - %m%n</Property>
+        <property name="LOG_HOME">log/fcb/project-manager/</property>
+        <property name="REQUEST_FILE_NAME">request</property>
+        <property name="INFO_FILE_NAME">log_info</property>
+    </Properties>
+    <Appenders>
+        <Console name="Console" target="SYSTEM_OUT">
+            <PatternLayout>
+                <pattern>
+                    ${pattern}
+                </pattern>
+            </PatternLayout>
+        </Console>
+
+        <RollingFile  name="info-log"
+                                 fileName="${LOG_HOME}/${INFO_FILE_NAME}.log"
+                                 filePattern="${LOG_HOME}/$${date:yyyy-MM}/${INFO_FILE_NAME}-%d{yyyy-MM-dd}-%i.log">
+            <PatternLayout>
+                <pattern>
+                    ${pattern}
+                </pattern>
+            </PatternLayout>
+            <Policies>
+                <TimeBasedTriggeringPolicy modulate="true" interval="1"/>
+                <SizeBasedTriggeringPolicy size="200 MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="200"/>
+        </RollingFile >
+
+        <RollingRandomAccessFile name="request-log"
+                                 fileName="${LOG_HOME}/${REQUEST_FILE_NAME}.log"
+                                 filePattern="${LOG_HOME}/$${date:yyyy-MM}/${REQUEST_FILE_NAME}-%d{yyyy-MM-dd}-%i.log">
+            <PatternLayout
+                    pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n"/>
+            <Policies>
+                <TimeBasedTriggeringPolicy/>
+                <SizeBasedTriggeringPolicy size="200 MB"/>
+            </Policies>
+            <DefaultRolloverStrategy max="200"/>
+        </RollingRandomAccessFile>
+    </Appenders>
+
+    <Loggers>
+        <Root level="debug">
+            <AppenderRef ref="info-log" />
+            <AppenderRef ref="Console" />
+        </Root>
+        <Logger name="request" level="info"
+                additivity="false">
+            <AppenderRef ref="request-log"/>
+        </Logger>
+        <Logger name="org.springframework">
+            <AppenderRef ref="Console" />
+        </Logger>
+    </Loggers>
+</configuration>