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 com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import fcb.project.manager.base.dao.TmHouseDao; import fcb.project.manager.base.entity.ContextTokenBean; import fcb.project.manager.base.entity.TmHouse; import fcb.project.manager.base.enums.DeleteStatus; import fcb.project.manager.base.enums.HouseStatus; import fcb.project.manager.base.enums.SysUserRoleEnums; import fcb.project.manager.base.enums.UuidPreEnum; import fcb.project.manager.base.service.ITmHouseService; import fcb.project.manager.base.service.custom.PanoService; import fcb.project.manager.core.feignInterfaces.UserFeign; import fdage.back.sdk.base.uuid.SnowFlakeUUidUtils; import lombok.extern.log4j.Log4j2; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.time.LocalDateTime; import java.util.*; /** *

* 服务实现类 *

* * @author abner * @since 2021-01-07 */ @Service @Log4j2 public class TmHouseServiceImpl extends ServiceImpl implements ITmHouseService { @Autowired private UserFeign userFeign; @Autowired private PanoService panoService; @Autowired private TmAuditServiceImpl tmAuditService; @Value("${inner.vr.scene.host}") private String innerSceneVrHost; @Value("${outer.vr.scene.host}") private String outerSceneVrHost; public IPage getListByNameOrBelong(String houseTitle, Integer status, Integer type, String estateId, ContextTokenBean contextTokenBean, String token, Long pageNum, Long pageSize) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(TmHouse::getEstateId, estateId); lambdaQueryWrapper.eq(TmHouse::getIsShow, 1); if (StringUtils.isNotBlank(houseTitle)) { lambdaQueryWrapper.like(TmHouse::getHouseTitle, houseTitle); } if (null != contextTokenBean) { if (StringUtils.equals(contextTokenBean.getRoleKey(), SysUserRoleEnums.ADMIN.getRoleKey()) || StringUtils.equals(contextTokenBean.getRoleKey(), SysUserRoleEnums.GROUP.getRoleKey())) { //超级管理员和集团管理员可以看到所有数据 } else { //非超级管理员,只能看到自己部门的 Map map = new HashMap<>(); map.put("id" , contextTokenBean.getDepartmentId()); Object userResult = userFeign.getAllChildDeptList(map); log.info("用户模块返回的数据为:{}" , userResult); lambdaQueryWrapper.eq(TmHouse::getBelongCompanyId , contextTokenBean.getDepartmentId()); } } if (null != status) { lambdaQueryWrapper.eq(TmHouse::getStatus, status); } if (null != type) { lambdaQueryWrapper.eq(TmHouse::getType, type); } lambdaQueryWrapper.orderByDesc(TmHouse::getCreateTime); IPage page = new Page<>(pageNum, pageSize, true); IPage resultPage = getBaseMapper().selectPage(page, lambdaQueryWrapper); if(null != resultPage && resultPage.getTotal() > 0){ List getAllHouseIds = new ArrayList<>(); for (int i = 0; i < resultPage.getRecords().size(); i++) { getAllHouseIds.add(resultPage.getRecords().get(i).getId()); } //从720获取最新的预览路径,重新封装给前端展示 TreeMap treeMap = panoService.getHouseVrlinks(getAllHouseIds , token); for (int i = 0; i < resultPage.getRecords().size(); i++) { String vrId = resultPage.getRecords().get(i).getId(); //获取当前房源的审核记录数,用于前端判决是否展示审核历史图标 resultPage.getRecords().get(i).setCountNum(tmAuditService.countAuditNum(vrId)); if(!CollectionUtils.isEmpty(treeMap)){ String path = (String) treeMap.get(vrId); String outerHost = outerSceneVrHost.substring(0 , outerSceneVrHost.length() - 1); String innerHost = innerSceneVrHost.substring(0 , innerSceneVrHost.length() - 1); resultPage.getRecords().get(i).setInnerVrLink(innerHost + path); resultPage.getRecords().get(i).setInnerVrLink(outerHost + path); } } } return resultPage; } public IPage checkEstateCanDelete(String estateId) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(TmHouse::getEstateId, estateId); lambdaQueryWrapper.in(TmHouse::getStatus, HouseStatus.AUDITED.getCode() , HouseStatus.WAITING_AUDIT.getCode()); IPage page = new Page<>(1, 10, true); return getBaseMapper().selectPage(page, lambdaQueryWrapper); } public IPage getAuditHouseList(String houseTitle, Integer status, Integer type, String belongCompany, String estateName, String token, Long pageNum, Long pageSize) { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(TmHouse::getIsShow, 1); if (StringUtils.isNotBlank(houseTitle)) { lambdaQueryWrapper.like(TmHouse::getHouseTitle, houseTitle); } lambdaQueryWrapper.orderByDesc(TmHouse::getSubmitAuditTime); if (null != status) { if (HouseStatus.ALL.getCode().compareTo(status) != 0) { lambdaQueryWrapper.eq(TmHouse::getStatus, status); } else { lambdaQueryWrapper.ne(TmHouse::getStatus, HouseStatus.DRAFT.getCode()); } //捞取所有状态,默认不设置status的过滤条件 } else { lambdaQueryWrapper.eq(TmHouse::getStatus, HouseStatus.WAITING_AUDIT.getCode()); } if (StringUtils.isNotBlank(estateName)) { lambdaQueryWrapper.like(TmHouse::getEstateName, estateName); } if (StringUtils.isNotBlank(belongCompany)) { lambdaQueryWrapper.eq(TmHouse::getBelongCompanyId, belongCompany); } if (null != type) { lambdaQueryWrapper.eq(TmHouse::getType, type); } IPage page = new Page<>(pageNum, pageSize, true); IPage resultPage = getBaseMapper().selectPage(page, lambdaQueryWrapper); if(null != resultPage && resultPage.getTotal() > 0){ List getAllHouseIds = new ArrayList<>(); for (int i = 0; i < resultPage.getRecords().size(); i++) { getAllHouseIds.add(resultPage.getRecords().get(i).getId()); } //从720获取最新的预览路径,重新封装给前端展示 TreeMap treeMap = panoService.getHouseVrlinks(getAllHouseIds , token); for (int i = 0; i < resultPage.getRecords().size(); i++) { String vrId = resultPage.getRecords().get(i).getId(); resultPage.getRecords().get(i).setCountNum(tmAuditService.countAuditNum(vrId)); if(!CollectionUtils.isEmpty(treeMap)){ String path = (String) treeMap.get(vrId); String outerHost = outerSceneVrHost.substring(0 , outerSceneVrHost.length() - 1); String innerHost = innerSceneVrHost.substring(0 , innerSceneVrHost.length() - 1); resultPage.getRecords().get(i).setInnerVrLink(innerHost + path); resultPage.getRecords().get(i).setInnerVrLink(outerHost + path); } } } return resultPage; } public int deleteHouseById(String houseId) { if (StringUtils.isBlank(houseId)) { return -1; } return getBaseMapper().deleteById(houseId); } public TmHouse getOneByNameAndEstate(String houseTitle, String estateId, int type) { LambdaQueryWrapper 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); } @Transactional(rollbackFor = Exception.class) public boolean updateHouse(TmHouse tmHouse) { if (null == tmHouse) { return false; } if (null == tmHouse.getId()) { log.info("主键ID为空,无法更房源信息"); return false; } tmHouse.setUpdateTime(LocalDateTime.now()); return 1 == getBaseMapper().updateById(tmHouse); } public TmHouse selectForUpdate(String id) { LambdaQueryWrapper 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())) { tmHouse.setId(SnowFlakeUUidUtils.generaUUid(null, null, UuidPreEnum.HOUSE_ID_PRE.getPre())); } tmHouse.setCreateTime(LocalDateTime.now()); tmHouse.setUpdateTime(LocalDateTime.now()); tmHouse.setIsDelete(DeleteStatus.NOT_DELETE.getCode()); return 1 == getBaseMapper().insert(tmHouse); } public TmHouse insertNewWithRsp(TmHouse tmHouse) { if (StringUtils.isBlank(tmHouse.getId())) { tmHouse.setId(SnowFlakeUUidUtils.generaUUid(null, null, UuidPreEnum.HOUSE_ID_PRE.getPre())); } tmHouse.setCreateTime(LocalDateTime.now()); tmHouse.setUpdateTime(LocalDateTime.now()); tmHouse.setIsDelete(DeleteStatus.NOT_DELETE.getCode()); getBaseMapper().insert(tmHouse); return tmHouse; } public TmHouse getBySceneNumAndHouseId(String sceneNum, String projectId, String houseId) { if (!StringUtils.isNoneBlank(sceneNum, projectId, houseId)) { return null; } LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); lambdaQueryWrapper.eq(TmHouse::getSceneNum, sceneNum); lambdaQueryWrapper.eq(TmHouse::getEstateId, projectId); lambdaQueryWrapper.eq(TmHouse::getFcbHouseId, houseId); return getBaseMapper().selectOne(lambdaQueryWrapper); } }