houweiyu 4 лет назад
Родитель
Сommit
22ae0bcad5
22 измененных файлов с 646 добавлено и 105 удалено
  1. 8 28
      pom.xml
  2. 3 5
      src/main/java/fcb/project/manager/FcbProjectManagerApplication.java
  3. 16 0
      src/main/java/fcb/project/manager/base/dao/TmAuditDao.java
  4. 2 3
      src/main/java/fcb/project/manager/base/dao/TmEstateDao.java
  5. 2 3
      src/main/java/fcb/project/manager/base/dao/TmHouseDao.java
  6. 90 0
      src/main/java/fcb/project/manager/base/entity/TmAudit.java
  7. 1 1
      src/main/java/fcb/project/manager/base/entity/TmEstate.java
  8. 9 2
      src/main/java/fcb/project/manager/base/entity/TmHouse.java
  9. 30 0
      src/main/java/fcb/project/manager/base/enums/AuditStatus.java
  10. 16 0
      src/main/java/fcb/project/manager/base/service/ITmAuditService.java
  11. 2 2
      src/main/java/fcb/project/manager/base/service/ITmEstateService.java
  12. 2 2
      src/main/java/fcb/project/manager/base/service/ITmHouseService.java
  13. 103 0
      src/main/java/fcb/project/manager/base/service/impl/TmAuditServiceImpl.java
  14. 48 48
      src/main/java/fcb/project/manager/base/service/impl/TmEstateServiceImpl.java
  15. 12 3
      src/main/java/fcb/project/manager/base/service/impl/TmHouseServiceImpl.java
  16. 136 0
      src/main/java/fcb/project/manager/core/controller/AuditController.java
  17. 122 7
      src/main/java/fcb/project/manager/core/controller/HouseManagerController.java
  18. 2 0
      src/main/java/fcb/project/manager/core/controller/ProjectController.java
  19. 1 1
      src/main/resources/application-dev.properties
  20. 18 0
      src/main/resources/application-prod.properties
  21. 18 0
      src/main/resources/application-test.properties
  22. 5 0
      src/main/resources/mybatis/mappers/TmAuditMapper.xml

+ 8 - 28
pom.xml

@@ -54,17 +54,7 @@
         <dependency>
             <groupId>org.4dage</groupId>
             <artifactId>4dage-back-sdk</artifactId>
-            <version>1.0.2.2-RELEASE</version>
-        <!--    <exclusions>
-                <exclusion>
-                    <groupId>com.baomidou</groupId>
-                    <artifactId>mybatis-plus-extension</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.mybatis</groupId>
-                    <artifactId>mybatis</artifactId>
-                </exclusion>
-            </exclusions>-->
+            <version>1.0.2-RELEASE</version>
         </dependency>
 
         <!-- nacos 注册中心依赖 -->
@@ -94,27 +84,17 @@
                 </exclusion>
             </exclusions>
         </dependency>
-
+        <!-- mybatis-plus逻辑删除依赖-->
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-core</artifactId>
             <version>3.3.1.tmp</version>
         </dependency>
- <!--       <dependency>
-            <groupId>com.baomidou</groupId>
-            <artifactId>mybatis-plus-extension</artifactId>
-            <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>-->
+        <!-- Rpc feign依赖 -->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+        </dependency>
     </dependencies>
 
 
@@ -146,7 +126,7 @@
                 <artifactId>spring-boot-maven-plugin</artifactId>
                 <configuration>
                     <!-- 工程主入口 -->
-                    <mainClass>com.scaffolding.app.portal.App</mainClass>
+                    <mainClass>fcb.project.manager.FcbProjectManagerApplication</mainClass>
                 </configuration>
                 <executions>
                     <execution>

+ 3 - 5
src/main/java/fcb/project/manager/FcbProjectManagerApplication.java

@@ -1,25 +1,23 @@
 package fcb.project.manager;
 
 import org.mybatis.spring.annotation.MapperScan;
-import org.mybatis.spring.annotation.MapperScans;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.context.ApplicationPidFileWriter;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
-import org.springframework.context.annotation.ComponentScan;
+import org.springframework.cloud.openfeign.EnableFeignClients;
 
 /**
  * @author abnerhou
  * @date 2021/1/5 12:25
  * @desciption
  */
-//@EnableFeignClients
+@EnableFeignClients
 //@NacosPropertySource(dataId = "abner-test", autoRefreshed = true)
 @EnableDiscoveryClient
 @SpringBootApplication
 @MapperScan(basePackages = {"fcb.project.manager.base.dao"})
 public class FcbProjectManagerApplication {
     public static void main(String[] args) {
-       SpringApplication.run(FcbProjectManagerApplication.class , args);
+        SpringApplication.run(FcbProjectManagerApplication.class, args);
     }
 }

+ 16 - 0
src/main/java/fcb/project/manager/base/dao/TmAuditDao.java

@@ -0,0 +1,16 @@
+package fcb.project.manager.base.dao;
+
+import fcb.project.manager.base.entity.TmAudit;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 审核表 Mapper 接口
+ * </p>
+ *
+ * @author abner
+ * @since 2021-01-08
+ */
+public interface TmAuditDao extends BaseMapper<TmAudit> {
+
+}

+ 2 - 3
src/main/java/fcb/project/manager/base/dao/TmEstateDao.java

@@ -5,13 +5,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
  * <p>
- *  Mapper 接口
+ * 楼盘项目信息表 Mapper 接口
  * </p>
  *
  * @author abner
- * @since 2021-01-07
+ * @since 2021-01-08
  */
-
 public interface TmEstateDao extends BaseMapper<TmEstate> {
 
 }

+ 2 - 3
src/main/java/fcb/project/manager/base/dao/TmHouseDao.java

@@ -5,13 +5,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
 /**
  * <p>
- *  Mapper 接口
+ * 项目管理房源信息表 Mapper 接口
  * </p>
  *
  * @author abner
- * @since 2021-01-07
+ * @since 2021-01-08
  */
-
 public interface TmHouseDao extends BaseMapper<TmHouse> {
 
 }

+ 90 - 0
src/main/java/fcb/project/manager/base/entity/TmAudit.java

@@ -0,0 +1,90 @@
+package fcb.project.manager.base.entity;
+
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 审核表
+ * </p>
+ *
+ * @author abner
+ * @since 2021-01-08
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="TmAudit对象", description="审核表")
+public class TmAudit implements Serializable {
+
+    private static final long serialVersionUID=1L;
+
+    @ApiModelProperty(value = "唯一ID")
+    private String id;
+
+    @ApiModelProperty(value = "vr项目名称")
+    private String vrTitle;
+
+    @ApiModelProperty(value = "vr房源ID")
+    private String vrId;
+
+    @ApiModelProperty(value = "vr项目类型")
+    private Integer vrType;
+
+    @ApiModelProperty(value = "所属楼盘")
+    private String belongEstateName;
+
+    @ApiModelProperty(value = "所属楼盘ID")
+    private String belongEstateId;
+
+    @ApiModelProperty(value = "公司名称")
+    private String belongCompanyName;
+
+    @ApiModelProperty(value = "所属公司ID")
+    private String belongCompanyId;
+
+    @ApiModelProperty(value = "创建人名字")
+    private String creatorName;
+
+    @ApiModelProperty(value = "创建人ID")
+    private String creatorId;
+
+    @ApiModelProperty(value = "提审时间")
+    private LocalDateTime sumitTime;
+
+    @ApiModelProperty(value = "审核状态: 0->待审核;1->已审核;-1->不通过")
+    private Integer auditStatus;
+
+    @ApiModelProperty(value = "审核人名字")
+    private String auditorName;
+
+    @ApiModelProperty(value = "审核人的ID")
+    private String auditorId;
+
+    @ApiModelProperty(value = "审核时间")
+    private LocalDateTime auditTime;
+
+    @ApiModelProperty(value = "vr项目是否上线: 1->上线; 0->下线")
+    private Integer vrOnline;
+
+    @ApiModelProperty(value = "创建时间")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "最新更新时间")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty(value = "是否删除: 0->未删除; 1->已删除")
+    @TableField("isDelete")
+    private Integer isDelete;
+
+    @ApiModelProperty(value = "场景链接")
+    private String vrLink;
+
+
+}

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

@@ -15,7 +15,7 @@ import lombok.experimental.Accessors;
 
 /**
  * <p>
- * 
+ *
  * </p>
  *
  * @author abner

+ 9 - 2
src/main/java/fcb/project/manager/base/entity/TmHouse.java

@@ -15,7 +15,7 @@ import lombok.experimental.Accessors;
 
 /**
  * <p>
- * 
+ *
  * </p>
  *
  * @author abner
@@ -53,7 +53,7 @@ public class TmHouse implements Serializable {
     private LocalDateTime updateTime;
 
     @ApiModelProperty(value = "状态")
-    private String status;
+    private Integer status;
 
     @ApiModelProperty(value = "审核人ID")
     private String auditId;
@@ -75,4 +75,11 @@ public class TmHouse implements Serializable {
     @ApiModelProperty(value = "类型")
     private Integer type;
 
+    @ApiModelProperty(value = "是否上线: 1->上线; 0->下线")
+    private Integer online;
+
+
+    @ApiModelProperty(value = "房源场景链接")
+    private String vrLink;
+
 }

+ 30 - 0
src/main/java/fcb/project/manager/base/enums/AuditStatus.java

@@ -0,0 +1,30 @@
+package fcb.project.manager.base.enums;
+
+/**
+ * 2 * @Author: Abner
+ * 3 * @Date: 2021/1/8 15:52
+ * 4
+ */
+public enum AuditStatus {
+
+    WAITING_AUDIT(0 , "待审核"),
+    AUDITED(1 , "已审核"),
+    REJECT(-1 , "不通过"),
+    ;
+
+    private Integer code;
+    private String desc;
+
+    AuditStatus(Integer code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+
+    public Integer getCode() {
+        return code;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+}

+ 16 - 0
src/main/java/fcb/project/manager/base/service/ITmAuditService.java

@@ -0,0 +1,16 @@
+package fcb.project.manager.base.service;
+
+import fcb.project.manager.base.entity.TmAudit;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 审核表 服务类
+ * </p>
+ *
+ * @author abner
+ * @since 2021-01-08
+ */
+public interface ITmAuditService extends IService<TmAudit> {
+
+}

+ 2 - 2
src/main/java/fcb/project/manager/base/service/ITmEstateService.java

@@ -5,11 +5,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
 
 /**
  * <p>
- *  服务类
+ * 楼盘项目信息表 服务类
  * </p>
  *
  * @author abner
- * @since 2021-01-07
+ * @since 2021-01-08
  */
 public interface ITmEstateService extends IService<TmEstate> {
 

+ 2 - 2
src/main/java/fcb/project/manager/base/service/ITmHouseService.java

@@ -5,11 +5,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
 
 /**
  * <p>
- *  服务类
+ * 项目管理房源信息表 服务类
  * </p>
  *
  * @author abner
- * @since 2021-01-07
+ * @since 2021-01-08
  */
 public interface ITmHouseService extends IService<TmHouse> {
 

+ 103 - 0
src/main/java/fcb/project/manager/base/service/impl/TmAuditServiceImpl.java

@@ -0,0 +1,103 @@
+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.TmAudit;
+import fcb.project.manager.base.dao.TmAuditDao;
+import fcb.project.manager.base.entity.TmEstate;
+import fcb.project.manager.base.entity.TmHouse;
+import fcb.project.manager.base.enums.AuditStatus;
+import fcb.project.manager.base.enums.DeleteStatus;
+import fcb.project.manager.base.service.ITmAuditService;
+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 org.springframework.transaction.annotation.Transactional;
+
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 审核表 服务实现类
+ * </p>
+ *
+ * @author abner
+ * @since 2021-01-08
+ */
+@Service
+@Log4j2
+public class TmAuditServiceImpl extends ServiceImpl<TmAuditDao, TmAudit> implements ITmAuditService {
+
+
+    public IPage<TmAudit> queryOrSearchList(String vrTitle , Integer vrType,
+                                            String belongEstate , String belongCompany,
+                                            Integer auditStatus , long pageNum , long pageSize){
+        IPage<TmAudit> page = new Page<>(pageNum , pageSize);
+        LambdaQueryWrapper<TmAudit> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        if(StringUtils.isNoneBlank(vrTitle)){
+            lambdaQueryWrapper.like(TmAudit::getVrTitle , vrTitle);
+        }
+        if(StringUtils.isNotBlank(belongCompany)){
+            lambdaQueryWrapper.eq(TmAudit::getBelongCompanyName , belongCompany);
+        }
+        if(StringUtils.isNotBlank(belongEstate)){
+            lambdaQueryWrapper.like(TmAudit::getBelongEstateName , belongEstate);
+        }
+        if(null != auditStatus){
+            lambdaQueryWrapper.eq(TmAudit::getAuditStatus , auditStatus);
+        }
+        return getBaseMapper().selectPage(page , lambdaQueryWrapper);
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    public int updateAudit(TmAudit tmAudit){
+        if(null == tmAudit){
+            return -1;
+        }
+        if(null != tmAudit.getId()){
+            return -1;
+        }
+        tmAudit.setUpdateTime(LocalDateTime.now());
+        return getBaseMapper().updateById(tmAudit);
+    }
+
+    public TmAudit selectForUpdate(String id){
+        LambdaQueryWrapper<TmAudit> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(TmAudit::getId , id);
+        lambdaQueryWrapper.last("for update");
+        return getBaseMapper().selectOne(lambdaQueryWrapper);
+    }
+
+    public int addNewAudit(TmHouse tmHouse , TmEstate tmEstate){
+        if(null == tmHouse){
+            return -1;
+        }
+        TmAudit tmAudit = new TmAudit();
+        tmAudit.setId(SnowFlakeUUidUtils.generaUUid(null , null , "AUD00000"));
+        tmAudit.setVrTitle(tmHouse.getHouseTitle());
+        tmAudit.setVrType(tmHouse.getType());
+        if(null != tmEstate){
+            tmAudit.setBelongEstateName(tmEstate.getEstateName());
+            tmAudit.setBelongEstateId(tmEstate.getId());
+        }
+        //TODO:
+        tmAudit.setCreatorId("");
+        //TODO:
+        tmAudit.setCreatorName("");
+        tmAudit.setSumitTime(LocalDateTime.now());
+        tmAudit.setAuditStatus(AuditStatus.WAITING_AUDIT.getCode());
+        tmAudit.setVrOnline(tmHouse.getOnline());
+        tmAudit.setCreateTime(LocalDateTime.now());
+        tmAudit.setUpdateTime(LocalDateTime.now());
+        tmAudit.setIsDelete(DeleteStatus.NOT_DELETE.getCode());
+        return getBaseMapper().insert(tmAudit);
+    }
+
+
+
+
+
+}

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

@@ -29,57 +29,57 @@ public class TmEstateServiceImpl extends ServiceImpl<TmEstateDao, TmEstate> impl
 
 
 
-     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 IPage<TmEstate> getListByNameOrBelong(String estateName , String belongCompany,
+                                                 Long pageNum , Long pageSize){
+        LambdaQueryWrapper<TmEstate> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        if(StringUtils.isNotBlank(estateName)){
+            lambdaQueryWrapper.like(TmEstate::getBelongCompanyName , belongCompany);
+        }
+        if(StringUtils.isNotBlank(estateName)){
+            lambdaQueryWrapper.like(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 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 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 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);
-     }
+    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);
+    }
 
 }

+ 12 - 3
src/main/java/fcb/project/manager/base/service/impl/TmHouseServiceImpl.java

@@ -14,6 +14,7 @@ import io.swagger.models.auth.In;
 import lombok.extern.log4j.Log4j2;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDateTime;
 
@@ -33,13 +34,13 @@ public class TmHouseServiceImpl extends ServiceImpl<TmHouseDao, TmHouse> impleme
                                                 Long pageNum , Long pageSize){
         LambdaQueryWrapper<TmHouse> lambdaQueryWrapper = new LambdaQueryWrapper<>();
         if(StringUtils.isNotBlank(houseTitle)){
-            lambdaQueryWrapper.eq(TmHouse::getHouseTitle , houseTitle);
+            lambdaQueryWrapper.like(TmHouse::getHouseTitle , houseTitle);
         }
         if(null != status){
             lambdaQueryWrapper.eq(TmHouse::getStatus , status);
         }
         lambdaQueryWrapper.eq(TmHouse::getType , type);
-        lambdaQueryWrapper.eq(TmHouse::getIsDelete , DeleteStatus.NOT_DELETE.getCode());
+//        lambdaQueryWrapper.eq(TmHouse::getIsDelete , DeleteStatus.NOT_DELETE.getCode());
         IPage<TmHouse> page = new Page<>(pageNum , pageSize);
         return  getBaseMapper().selectPage(page , lambdaQueryWrapper);
     }
@@ -61,9 +62,10 @@ public class TmHouseServiceImpl extends ServiceImpl<TmHouseDao, TmHouse> impleme
 
 
     public TmHouse getById(String id){
-        return getById(id);
+        return getBaseMapper().selectById(id);
     }
 
+    @Transactional(rollbackFor =  Exception.class)
     public boolean updateHouse(TmHouse tmHouse){
         if(null == tmHouse){
             return false;
@@ -76,6 +78,13 @@ public class TmHouseServiceImpl extends ServiceImpl<TmHouseDao, TmHouse> impleme
         return saveOrUpdate(tmHouse);
     }
 
+    public TmHouse selectForUpdate(String id){
+        LambdaQueryWrapper<TmHouse> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(TmHouse::getId , id);
+        lambdaQueryWrapper.last("for update");
+        return getBaseMapper().selectOne(lambdaQueryWrapper);
+    }
+
 
     public boolean insertNew(TmHouse tmHouse){
         if(StringUtils.isBlank(tmHouse.getId())){

+ 136 - 0
src/main/java/fcb/project/manager/core/controller/AuditController.java

@@ -0,0 +1,136 @@
+package fcb.project.manager.core.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import fcb.project.manager.base.entity.TmAudit;
+import fcb.project.manager.base.entity.TmHouse;
+import fcb.project.manager.base.service.impl.TmAuditServiceImpl;
+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.lettuce.core.dynamic.CommandCreationException;
+import io.swagger.annotations.Api;
+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.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 2 * @Author: Abner
+ * 3 * @Date: 2021/1/8 11:19
+ * 4
+ */
+@Api(tags = "审核相关接口")
+@RestController
+@RequestMapping("fcb/audit")
+@Log4j2
+public class AuditController {
+
+
+    @Autowired
+    private TmAuditServiceImpl tmAuditService;
+
+    @Autowired
+    private TmHouseServiceImpl tmHouseService;
+
+    @GetMapping("/queryOrSearchList")
+    @ApiOperation(value = "根据条件拉取所有审批记录")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "vrTitle", value = "vr项目名称", paramType = "query", required = false, dataType = "String"),
+            @ApiImplicitParam(name = "vrType", value = "vr项目类型: 1->新房;2->二手房;", paramType = "query", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "belongEstate", value = "所属楼盘", paramType = "query", required = false, dataType = "String"),
+            @ApiImplicitParam(name = "belongCompany", value = "所属公司", paramType = "query", required = false, dataType = "String"),
+            @ApiImplicitParam(name = "auditStatus", value = "审核状态", paramType = "query", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "pageNum", value = "当前页码", paramType = "query", required = true, dataType = "Long"),
+            @ApiImplicitParam(name = "pageSize", value = "每页大小", paramType = "query", required = true, dataType = "Long")
+    })
+    public Result<Object> queryList(String vrTitle , Integer vrType,
+                                    String belongEstate , String belongCompany,
+                                    Integer auditStatus , Long pageNum , Long pageSize){
+
+        IPage<TmAudit> resultPage = tmAuditService.queryOrSearchList(vrTitle , vrType ,
+                                                                    belongEstate , belongCompany ,
+                                                                    auditStatus , pageNum , pageSize);
+        return  Result.success(DataUtils.assembleResult(resultPage.getTotal(), resultPage.getPages(),
+                resultPage.getCurrent(), resultPage.getRecords()));
+    }
+
+
+    @PostMapping("/doAudit")
+    @ApiOperation(value = "审核")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "审核记录ID", paramType = "query", required = false, dataType = "String"),
+            @ApiImplicitParam(name = "auditStatus", value = "审核状态", paramType = "query", required = false, dataType = "Integer"),
+    })
+    @Transactional(rollbackFor = Exception.class)
+    public Result<Object> audit(String id , Integer auditStatus){
+
+        if(StringUtils.isBlank(id) || null == auditStatus){
+            return Result.failure("审核记录ID或者审核结果不能为空");
+        }
+        TmAudit tmAudit = tmAuditService.getById(id);
+        if(null == tmAudit){
+            return Result.failure("审核记录不存在");
+        }
+        if(null != tmAudit.getAuditStatus() && tmAudit.getAuditStatus().equals(auditStatus)){
+            return Result.failure("已经处理过了,无需重复处理");
+        }
+        if(StringUtils.isBlank(tmAudit.getVrId())){
+            return Result.failure("该审核记录未绑定房源,无需处理");
+        }
+        //这里要先锁定当前审核记录
+        tmAudit = null;
+        tmAudit = tmAuditService.selectForUpdate(id);
+        if(null == tmAudit){
+            log.info("更新审核状态环节,审核记录[{}]抢锁失败" , id);
+            return Result.failure("抢锁失败");
+        }
+        TmHouse dbHouse = tmHouseService.selectForUpdate(tmAudit.getVrId());
+        if(null == tmAudit){
+            log.info("更新审核状态环节,审核记录[{}]抢锁失败" , id);
+            return Result.failure("抢锁失败");
+        }
+        //TODO:这里需要增加更新审核人
+        tmAudit.setAuditStatus(auditStatus);
+        int update = tmAuditService.updateAudit(tmAudit);
+        if(update != 1){
+           throw new CommonBaseException(ResultCodeEnum.D101 , "更新审核记录失败");
+        }
+
+        return Result.failure("审核失败");
+    }
+
+    @PostMapping("/online")
+    @ApiOperation(value = "上线/下线")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "审核记录ID", paramType = "query", required = false, dataType = "String"),
+            @ApiImplicitParam(name = "online", value = "是否上线:1->上线;0->下线", paramType = "query", required = false, dataType = "Integer"),
+    })
+    public Result<Object> online(String id , Integer online){
+
+        if(StringUtils.isBlank(id) || null == online){
+            return Result.failure("审核记录ID或者状态不能为空");
+        }
+        TmAudit tmAudit = tmAuditService.getById(id);
+        if(null == tmAudit){
+            return Result.failure("审核记录不存在");
+        }
+        if(null != tmAudit.getVrOnline() && tmAudit.getVrOnline().equals(online)){
+            return Result.failure("已经处理过了,无需重复处理");
+        }
+        tmAudit.setVrOnline(online);
+        int update = tmAuditService.updateAudit(tmAudit);
+        if(update == 1){
+            return Result.success();
+        }else{
+            return Result.failure("操作失败");
+        }
+    }
+
+
+}

+ 122 - 7
src/main/java/fcb/project/manager/core/controller/HouseManagerController.java

@@ -1,20 +1,25 @@
 package fcb.project.manager.core.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import fcb.project.manager.base.entity.TmAudit;
 import fcb.project.manager.base.entity.TmEstate;
 import fcb.project.manager.base.entity.TmHouse;
+import fcb.project.manager.base.enums.DeleteStatus;
+import fcb.project.manager.base.service.impl.TmAuditServiceImpl;
+import fcb.project.manager.base.service.impl.TmEstateServiceImpl;
 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.Api;
 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.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 /**
@@ -22,6 +27,7 @@ import org.springframework.web.bind.annotation.*;
  * 3 * @Date: 2021/1/7 17:38
  * 4
  */
+@Api(tags = "房源相关接口")
 @RestController
 @RequestMapping("fcb/house")
 @Log4j2
@@ -30,17 +36,23 @@ public class HouseManagerController {
     @Autowired
     private TmHouseServiceImpl tmHouseService;
 
+    @Autowired
+    private TmAuditServiceImpl tmAuditService;
+
+    @Autowired
+    private TmEstateServiceImpl tmEstateService;
+
     @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 = "houseTitle", value = "房源名称", paramType = "query", required = false, dataType = "String"),
+            @ApiImplicitParam(name = "status", value = "状态: 0->草稿;1->待审核;2->已审核;3->未通过", paramType = "query", required = false, 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,
+    public Result<Object> getHouseList(@RequestParam(required = false) String houseTitle,
+                                         @RequestParam(required = false) Integer status,
                                          @RequestParam(name = "type") Integer type,
                                          @RequestParam(name = "pageNum")Long pageNum,
                                          @RequestParam(name = "pageSize")Long pageSize){
@@ -52,8 +64,8 @@ public class HouseManagerController {
 
 
     @PostMapping("/addHouse")
-    @ApiOperation(value = "创建房源")
-    public Result<Object> addNewEstate(@RequestBody TmHouse tmHouse){
+    @ApiOperation(value = "创建房源-这里需要720或者四维看看微服务创建完成调用")
+    public Result<Object> addNewHouse(@RequestBody TmHouse tmHouse){
 
         if(!StringUtils.isNoneBlank(tmHouse.getHouseTitle() , tmHouse.getEstateId())){
             throw new CommonBaseException(ResultCodeEnum.D101 , "楼盘名称或者所属公司不能为空");
@@ -70,6 +82,28 @@ public class HouseManagerController {
         }
     }
 
+    @PostMapping("/updateVrLink")
+    @ApiOperation(value = "更新房源的VRLINK-这里需要720或者四维看看微服务创建完成调用")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "houseId", value = "房源ID", paramType = "query", required = false, dataType = "String"),
+            @ApiImplicitParam(name = "vrLink", value = "场景vrlink", paramType = "query", required = false, dataType = "String"),
+    })
+    public Result<Object> updateVrLink(@RequestParam String houseId ,
+                                       @RequestParam String vrLink){
+        if(!StringUtils.isNoneBlank(houseId , vrLink)){
+            return Result.failure("房源ID或者VRLINK为空了");
+        }
+        TmHouse dbHouse = tmHouseService.getById(houseId);
+        if(null == dbHouse){
+            return Result.failure("房源不存在");
+        }
+        dbHouse.setVrLink(vrLink);
+        if(tmHouseService.updateHouse(dbHouse)){
+            return Result.success("更新成功");
+        }
+        return Result.failure("更新失败");
+    }
+
     @PostMapping("/updateHouse")
     @ApiOperation(value = "修改房源信息")
     public Result<Object> updateEstate(@RequestBody TmHouse tmHouse){
@@ -88,5 +122,86 @@ public class HouseManagerController {
         }
     }
 
+    @PostMapping("/submitAudit")
+    @ApiOperation(value = "提交审核记录")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "houseId", value = "房源ID", paramType = "query", required = true, dataType = "String"),
+    })
+    public Result<Object> addNewAudit(@RequestParam String houseId){
+
+        if(StringUtils.isBlank(houseId)){
+            return Result.failure("房源ID不能为空");
+        }
+        TmHouse dbHouse = tmHouseService.getById(houseId);
+        if(null == dbHouse){
+            return Result.failure("房源不存在");
+        }
+        if(StringUtils.isBlank(dbHouse.getEstateId())){
+            return Result.failure("房源未分配所属的楼盘不存在");
+        }
+        TmEstate tmEstate = tmEstateService.getById(dbHouse.getEstateId());
+        if(null == tmEstate){
+            return Result.failure("房源所属的楼盘不存在");
+        }
+
+        int insert = tmAuditService.addNewAudit(dbHouse , tmEstate);
+        if(insert == 1){
+           return Result.success();
+        }else{
+            return Result.failure("提交失败");
+        }
+    }
+
+
+    @PostMapping("/dismissAudit")
+    @ApiOperation(value = "撤销审核记录")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "houseId", value = "房源ID", paramType = "query", required = true, dataType = "String"),
+    })
+    @Transactional(rollbackFor = Exception.class)
+    public Result<Object> dismissAudit(@RequestParam String houseId){
+        if(StringUtils.isBlank(houseId)){
+            return Result.failure("房源ID不能为空");
+        }
+        TmHouse dbHouse = tmHouseService.getById(houseId);
+        if(null == dbHouse || null == dbHouse.getAuditId()){
+            return Result.failure("房源不存在或者未提交审核");
+        }
+        dbHouse = null;
+        //抢房源的锁,去掉原来审核的
+        dbHouse = tmHouseService.selectForUpdate(houseId);
+        if(null == dbHouse){
+            return Result.failure("房源抢锁失败,无法撤销审核");
+        }
+        //走到这里,说明房源的锁已经抢到了
+        TmAudit tmAudit = tmAuditService.getById(dbHouse.getAuditId());
+        if(null == tmAudit){
+            return Result.failure("该房源未提交审核");
+        }
+        //开启事务,抢审批记录的锁
+        tmAudit = null;
+        tmAudit = tmAuditService.selectForUpdate(dbHouse.getAuditId());
+        if(null == tmAudit){
+            //抢锁失败,则快速返回,释放
+            return Result.failure("该房源正在审核,无法撤销");
+        }
+        //走到这里,说明审核的锁已经抢到了
+        //两个锁都抢到了,则可以开始做撤销动作了
+        dbHouse.setAuditId(null);
+        dbHouse.setAuditName(null);
+        dbHouse.setAuditTime(null);
+        if(!tmHouseService.updateHouse(dbHouse)){
+            throw new CommonBaseException(ResultCodeEnum.D101 , "撤销房源的审批记录失败");
+        }
+
+        tmAudit.setIsDelete(DeleteStatus.HAS_DELETE.getCode());
+        int updateAudit = tmAuditService.updateAudit(tmAudit);
+        if(updateAudit != 1){
+            throw new CommonBaseException(ResultCodeEnum.D101 , "删除审批记录失败");
+        }
+
+        return Result.success("撤销成功");
+    }
+
 
 }

+ 2 - 0
src/main/java/fcb/project/manager/core/controller/ProjectController.java

@@ -7,6 +7,7 @@ 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.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
@@ -20,6 +21,7 @@ import org.springframework.web.bind.annotation.*;
  * 3 * @Date: 2021/1/7 12:16
  * 4
  */
+@Api(tags = "项目管理相关接口")
 @RestController
 @RequestMapping("fcb/project")
 @Log4j2

+ 1 - 1
src/main/resources/application-dev.properties

@@ -1,5 +1,5 @@
 
-server.port=8185
+server.port=8285
 
 
 

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

@@ -0,0 +1,18 @@
+
+server.port=8285
+
+
+
+#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

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

@@ -0,0 +1,18 @@
+
+server.port=8285
+
+
+
+#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

+ 5 - 0
src/main/resources/mybatis/mappers/TmAuditMapper.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="fcb.project.manager.base.dao.TmAuditDao">
+
+</mapper>