123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
- 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.*;
- /**
- * <p>
- * 服务实现类
- * </p>
- *
- * @author abner
- * @since 2021-01-07
- */
- @Service
- @Log4j2
- public class TmHouseServiceImpl extends ServiceImpl<TmHouseDao, TmHouse> 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<TmHouse> getListByNameOrBelong(String houseTitle,
- Integer status, Integer type,
- String estateId, ContextTokenBean contextTokenBean,
- String token,
- Long pageNum, Long pageSize) {
- LambdaQueryWrapper<TmHouse> 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<String , Object> 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<TmHouse> page = new Page<>(pageNum, pageSize, true);
- IPage<TmHouse> resultPage = getBaseMapper().selectPage(page, lambdaQueryWrapper);
- if(null != resultPage && resultPage.getTotal() > 0){
- List<String> getAllHouseIds = new ArrayList<>();
- for (int i = 0; i < resultPage.getRecords().size(); i++) {
- getAllHouseIds.add(resultPage.getRecords().get(i).getId());
- }
- //从720获取最新的预览路径,重新封装给前端展示
- TreeMap<String , Object> 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<TmHouse> checkEstateCanDelete(String estateId) {
- LambdaQueryWrapper<TmHouse> lambdaQueryWrapper = new LambdaQueryWrapper<>();
- lambdaQueryWrapper.eq(TmHouse::getEstateId, estateId);
- lambdaQueryWrapper.in(TmHouse::getStatus, HouseStatus.AUDITED.getCode() , HouseStatus.WAITING_AUDIT.getCode());
- IPage<TmHouse> page = new Page<>(1, 10, true);
- return getBaseMapper().selectPage(page, lambdaQueryWrapper);
- }
- public IPage<TmHouse> getAuditHouseList(String houseTitle, Integer status, Integer type,
- String belongCompany, String estateName, String token,
- Long pageNum, Long pageSize) {
- LambdaQueryWrapper<TmHouse> 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<TmHouse> page = new Page<>(pageNum, pageSize, true);
- IPage<TmHouse> resultPage = getBaseMapper().selectPage(page, lambdaQueryWrapper);
- if(null != resultPage && resultPage.getTotal() > 0){
- List<String> getAllHouseIds = new ArrayList<>();
- for (int i = 0; i < resultPage.getRecords().size(); i++) {
- getAllHouseIds.add(resultPage.getRecords().get(i).getId());
- }
- //从720获取最新的预览路径,重新封装给前端展示
- TreeMap<String , Object> 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<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);
- }
- @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<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())) {
- 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<TmHouse> lambdaQueryWrapper = new LambdaQueryWrapper<>();
- lambdaQueryWrapper.eq(TmHouse::getSceneNum, sceneNum);
- lambdaQueryWrapper.eq(TmHouse::getEstateId, projectId);
- lambdaQueryWrapper.eq(TmHouse::getFcbHouseId, houseId);
- return getBaseMapper().selectOne(lambdaQueryWrapper);
- }
- }
|