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.enums.UuidPreEnum;
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 org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
/**
*
* 服务实现类
*
*
* @author abner
* @since 2021-01-07
*/
@Service
@Log4j2
public class TmHouseServiceImpl extends ServiceImpl implements ITmHouseService {
public IPage getListByNameOrBelong(String houseTitle , Integer status, int type,
String estateId , Long pageNum , Long pageSize){
LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(TmHouse::getEstateId , estateId);
if(StringUtils.isNotBlank(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());
IPage page = new Page<>(pageNum , pageSize);
return getBaseMapper().selectPage(page , lambdaQueryWrapper);
}
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 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);
}
}