TmHouseServiceImpl.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. package fcb.project.manager.base.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.metadata.IPage;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  6. import fcb.project.manager.base.dao.TmHouseDao;
  7. import fcb.project.manager.base.entity.ContextTokenBean;
  8. import fcb.project.manager.base.entity.TmHouse;
  9. import fcb.project.manager.base.enums.DeleteStatus;
  10. import fcb.project.manager.base.enums.HouseStatus;
  11. import fcb.project.manager.base.enums.SysUserRoleEnums;
  12. import fcb.project.manager.base.enums.UuidPreEnum;
  13. import fcb.project.manager.base.service.ITmHouseService;
  14. import fcb.project.manager.base.service.custom.PanoService;
  15. import fcb.project.manager.core.feignInterfaces.UserFeign;
  16. import fdage.back.sdk.base.uuid.SnowFlakeUUidUtils;
  17. import lombok.extern.log4j.Log4j2;
  18. import org.apache.commons.lang3.StringUtils;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.beans.factory.annotation.Value;
  21. import org.springframework.stereotype.Service;
  22. import org.springframework.transaction.annotation.Transactional;
  23. import org.springframework.util.CollectionUtils;
  24. import java.time.LocalDateTime;
  25. import java.util.*;
  26. /**
  27. * <p>
  28. * 服务实现类
  29. * </p>
  30. *
  31. * @author abner
  32. * @since 2021-01-07
  33. */
  34. @Service
  35. @Log4j2
  36. public class TmHouseServiceImpl extends ServiceImpl<TmHouseDao, TmHouse> implements ITmHouseService {
  37. @Autowired
  38. private UserFeign userFeign;
  39. @Autowired
  40. private PanoService panoService;
  41. @Autowired
  42. private TmAuditServiceImpl tmAuditService;
  43. @Value("${inner.vr.scene.host}")
  44. private String innerSceneVrHost;
  45. @Value("${outer.vr.scene.host}")
  46. private String outerSceneVrHost;
  47. public IPage<TmHouse> getListByNameOrBelong(String houseTitle,
  48. Integer status, Integer type,
  49. String estateId, ContextTokenBean contextTokenBean,
  50. String token,
  51. Long pageNum, Long pageSize) {
  52. LambdaQueryWrapper<TmHouse> lambdaQueryWrapper = new LambdaQueryWrapper<>();
  53. lambdaQueryWrapper.eq(TmHouse::getEstateId, estateId);
  54. lambdaQueryWrapper.eq(TmHouse::getIsShow, 1);
  55. if (StringUtils.isNotBlank(houseTitle)) {
  56. lambdaQueryWrapper.like(TmHouse::getHouseTitle, houseTitle);
  57. }
  58. if (null != contextTokenBean) {
  59. if (StringUtils.equals(contextTokenBean.getRoleKey(), SysUserRoleEnums.ADMIN.getRoleKey())
  60. || StringUtils.equals(contextTokenBean.getRoleKey(), SysUserRoleEnums.GROUP.getRoleKey())) {
  61. //超级管理员和集团管理员可以看到所有数据
  62. } else {
  63. //非超级管理员,只能看到自己部门的
  64. Map<String , Object> map = new HashMap<>();
  65. map.put("id" , contextTokenBean.getDepartmentId());
  66. Object userResult = userFeign.getAllChildDeptList(map);
  67. log.info("用户模块返回的数据为:{}" , userResult);
  68. lambdaQueryWrapper.eq(TmHouse::getBelongCompanyId , contextTokenBean.getDepartmentId());
  69. }
  70. }
  71. if (null != status) {
  72. lambdaQueryWrapper.eq(TmHouse::getStatus, status);
  73. }
  74. if (null != type) {
  75. lambdaQueryWrapper.eq(TmHouse::getType, type);
  76. }
  77. lambdaQueryWrapper.orderByDesc(TmHouse::getCreateTime);
  78. IPage<TmHouse> page = new Page<>(pageNum, pageSize, true);
  79. IPage<TmHouse> resultPage = getBaseMapper().selectPage(page, lambdaQueryWrapper);
  80. if(null != resultPage && resultPage.getTotal() > 0){
  81. List<String> getAllHouseIds = new ArrayList<>();
  82. for (int i = 0; i < resultPage.getRecords().size(); i++) {
  83. getAllHouseIds.add(resultPage.getRecords().get(i).getId());
  84. }
  85. //从720获取最新的预览路径,重新封装给前端展示
  86. TreeMap<String , Object> treeMap = panoService.getHouseVrlinks(getAllHouseIds , token);
  87. for (int i = 0; i < resultPage.getRecords().size(); i++) {
  88. String vrId = resultPage.getRecords().get(i).getId();
  89. //获取当前房源的审核记录数,用于前端判决是否展示审核历史图标
  90. resultPage.getRecords().get(i).setCountNum(tmAuditService.countAuditNum(vrId));
  91. if(!CollectionUtils.isEmpty(treeMap)){
  92. String path = (String) treeMap.get(vrId);
  93. String outerHost = outerSceneVrHost.substring(0 , outerSceneVrHost.length() - 1);
  94. String innerHost = innerSceneVrHost.substring(0 , innerSceneVrHost.length() - 1);
  95. resultPage.getRecords().get(i).setInnerVrLink(innerHost + path);
  96. resultPage.getRecords().get(i).setInnerVrLink(outerHost + path);
  97. }
  98. }
  99. }
  100. return resultPage;
  101. }
  102. public IPage<TmHouse> checkEstateCanDelete(String estateId) {
  103. LambdaQueryWrapper<TmHouse> lambdaQueryWrapper = new LambdaQueryWrapper<>();
  104. lambdaQueryWrapper.eq(TmHouse::getEstateId, estateId);
  105. lambdaQueryWrapper.in(TmHouse::getStatus, HouseStatus.AUDITED.getCode() , HouseStatus.WAITING_AUDIT.getCode());
  106. IPage<TmHouse> page = new Page<>(1, 10, true);
  107. return getBaseMapper().selectPage(page, lambdaQueryWrapper);
  108. }
  109. public IPage<TmHouse> getAuditHouseList(String houseTitle, Integer status, Integer type,
  110. String belongCompany, String estateName, String token,
  111. Long pageNum, Long pageSize) {
  112. LambdaQueryWrapper<TmHouse> lambdaQueryWrapper = new LambdaQueryWrapper<>();
  113. lambdaQueryWrapper.eq(TmHouse::getIsShow, 1);
  114. if (StringUtils.isNotBlank(houseTitle)) {
  115. lambdaQueryWrapper.like(TmHouse::getHouseTitle, houseTitle);
  116. }
  117. lambdaQueryWrapper.orderByDesc(TmHouse::getSubmitAuditTime);
  118. if (null != status) {
  119. if (HouseStatus.ALL.getCode().compareTo(status) != 0) {
  120. lambdaQueryWrapper.eq(TmHouse::getStatus, status);
  121. } else {
  122. lambdaQueryWrapper.ne(TmHouse::getStatus, HouseStatus.DRAFT.getCode());
  123. }
  124. //捞取所有状态,默认不设置status的过滤条件
  125. } else {
  126. lambdaQueryWrapper.eq(TmHouse::getStatus, HouseStatus.WAITING_AUDIT.getCode());
  127. }
  128. if (StringUtils.isNotBlank(estateName)) {
  129. lambdaQueryWrapper.like(TmHouse::getEstateName, estateName);
  130. }
  131. if (StringUtils.isNotBlank(belongCompany)) {
  132. lambdaQueryWrapper.eq(TmHouse::getBelongCompanyId, belongCompany);
  133. }
  134. if (null != type) {
  135. lambdaQueryWrapper.eq(TmHouse::getType, type);
  136. }
  137. IPage<TmHouse> page = new Page<>(pageNum, pageSize, true);
  138. IPage<TmHouse> resultPage = getBaseMapper().selectPage(page, lambdaQueryWrapper);
  139. if(null != resultPage && resultPage.getTotal() > 0){
  140. List<String> getAllHouseIds = new ArrayList<>();
  141. for (int i = 0; i < resultPage.getRecords().size(); i++) {
  142. getAllHouseIds.add(resultPage.getRecords().get(i).getId());
  143. }
  144. //从720获取最新的预览路径,重新封装给前端展示
  145. TreeMap<String , Object> treeMap = panoService.getHouseVrlinks(getAllHouseIds , token);
  146. for (int i = 0; i < resultPage.getRecords().size(); i++) {
  147. String vrId = resultPage.getRecords().get(i).getId();
  148. resultPage.getRecords().get(i).setCountNum(tmAuditService.countAuditNum(vrId));
  149. if(!CollectionUtils.isEmpty(treeMap)){
  150. String path = (String) treeMap.get(vrId);
  151. String outerHost = outerSceneVrHost.substring(0 , outerSceneVrHost.length() - 1);
  152. String innerHost = innerSceneVrHost.substring(0 , innerSceneVrHost.length() - 1);
  153. resultPage.getRecords().get(i).setInnerVrLink(innerHost + path);
  154. resultPage.getRecords().get(i).setInnerVrLink(outerHost + path);
  155. }
  156. }
  157. }
  158. return resultPage;
  159. }
  160. public int deleteHouseById(String houseId) {
  161. if (StringUtils.isBlank(houseId)) {
  162. return -1;
  163. }
  164. return getBaseMapper().deleteById(houseId);
  165. }
  166. public TmHouse getOneByNameAndEstate(String houseTitle, String estateId, int type) {
  167. LambdaQueryWrapper<TmHouse> lambdaQueryWrapper = new LambdaQueryWrapper<>();
  168. if (StringUtils.isNotBlank(houseTitle)) {
  169. lambdaQueryWrapper.eq(TmHouse::getHouseTitle, houseTitle);
  170. }
  171. if (StringUtils.isNotBlank(estateId)) {
  172. lambdaQueryWrapper.eq(TmHouse::getEstateId, estateId);
  173. }
  174. lambdaQueryWrapper.eq(TmHouse::getType, type);
  175. lambdaQueryWrapper.eq(TmHouse::getIsDelete, DeleteStatus.NOT_DELETE.getCode());
  176. lambdaQueryWrapper.last("limit 1");
  177. return getBaseMapper().selectOne(lambdaQueryWrapper);
  178. }
  179. @Transactional(rollbackFor = Exception.class)
  180. public boolean updateHouse(TmHouse tmHouse) {
  181. if (null == tmHouse) {
  182. return false;
  183. }
  184. if (null == tmHouse.getId()) {
  185. log.info("主键ID为空,无法更房源信息");
  186. return false;
  187. }
  188. tmHouse.setUpdateTime(LocalDateTime.now());
  189. return 1 == getBaseMapper().updateById(tmHouse);
  190. }
  191. public TmHouse selectForUpdate(String id) {
  192. LambdaQueryWrapper<TmHouse> lambdaQueryWrapper = new LambdaQueryWrapper<>();
  193. lambdaQueryWrapper.eq(TmHouse::getId, id);
  194. lambdaQueryWrapper.last("for update");
  195. return getBaseMapper().selectOne(lambdaQueryWrapper);
  196. }
  197. public boolean insertNew(TmHouse tmHouse) {
  198. if (StringUtils.isBlank(tmHouse.getId())) {
  199. tmHouse.setId(SnowFlakeUUidUtils.generaUUid(null, null, UuidPreEnum.HOUSE_ID_PRE.getPre()));
  200. }
  201. tmHouse.setCreateTime(LocalDateTime.now());
  202. tmHouse.setUpdateTime(LocalDateTime.now());
  203. tmHouse.setIsDelete(DeleteStatus.NOT_DELETE.getCode());
  204. return 1 == getBaseMapper().insert(tmHouse);
  205. }
  206. public TmHouse insertNewWithRsp(TmHouse tmHouse) {
  207. if (StringUtils.isBlank(tmHouse.getId())) {
  208. tmHouse.setId(SnowFlakeUUidUtils.generaUUid(null, null, UuidPreEnum.HOUSE_ID_PRE.getPre()));
  209. }
  210. tmHouse.setCreateTime(LocalDateTime.now());
  211. tmHouse.setUpdateTime(LocalDateTime.now());
  212. tmHouse.setIsDelete(DeleteStatus.NOT_DELETE.getCode());
  213. getBaseMapper().insert(tmHouse);
  214. return tmHouse;
  215. }
  216. public TmHouse getBySceneNumAndHouseId(String sceneNum, String projectId, String houseId) {
  217. if (!StringUtils.isNoneBlank(sceneNum, projectId, houseId)) {
  218. return null;
  219. }
  220. LambdaQueryWrapper<TmHouse> lambdaQueryWrapper = new LambdaQueryWrapper<>();
  221. lambdaQueryWrapper.eq(TmHouse::getSceneNum, sceneNum);
  222. lambdaQueryWrapper.eq(TmHouse::getEstateId, projectId);
  223. lambdaQueryWrapper.eq(TmHouse::getFcbHouseId, houseId);
  224. return getBaseMapper().selectOne(lambdaQueryWrapper);
  225. }
  226. }