| | |
| | | import static java.util.Objects.nonNull; |
| | | import static org.apache.commons.lang3.StringUtils.isNotBlank; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.ArrayList; |
| | | import java.util.Comparator; |
| | | import java.util.Date; |
| | |
| | | import java.util.stream.Collectors; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.validation.constraints.NotNull; |
| | | |
| | | import com.panzhihua.common.exceptions.ServiceException; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | |
| | | import com.panzhihua.service_community.service.RentingHourseFileService; |
| | | import com.panzhihua.service_community.service.RentingHourseRegisterService; |
| | | import com.panzhihua.service_community.util.NearbyUtil; |
| | | import com.panzhihua.service_community.util.QRCodeUtil; |
| | | import com.panzhihua.service_community.util.WxMaConfiguration; |
| | | import com.spatial4j.core.shape.Rectangle; |
| | | |
| | |
| | | @Service |
| | | public class RentingHourseRegisterServiceImpl extends ServiceImpl<RentingHourseRegisterDao, RentingHourseRegister> implements RentingHourseRegisterService { |
| | | |
| | | private static final String HOUSE_DETAIL_PAGE = "packageB/pages/house/houseDetails/houseDetails"; |
| | | |
| | | @Resource |
| | | private ComActVillageDAO comActVillageDAO; |
| | | @Resource |
| | |
| | | @Resource |
| | | private WxMaConfiguration wxMaConfiguration; |
| | | |
| | | @Value("${rentinghouse.min-app.jump-page}") |
| | | private String minAppJumpPage; |
| | | |
| | | /** |
| | | * 新增房源信息 |
| | | * @param registerDTO |
| | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R registerRentingHouse(RentingHouseRegisterDTO registerDTO) { |
| | | checkDepositMoney(registerDTO); |
| | | Long communityId = registerDTO.getCommunityId(); |
| | | Long userId = registerDTO.getUserId(); |
| | | RentingHourseRegister houseRegister = new RentingHourseRegister(); |
| | |
| | | try { |
| | | WxMaQrcodeService qrCodeService = wxMaConfiguration.getMaService().getQrcodeService(); |
| | | byte[] bytes = qrCodeService.createWxaCodeUnlimitBytes("id=" + houseRegister.getId() + "&type=6", |
| | | HOUSE_DETAIL_PAGE, 30, true, null, false); |
| | | minAppJumpPage, 30, true, null, false); |
| | | String authCode = String.format("data:image/png;base64,%s", Base64.encode(bytes)); |
| | | houseRegister.setAuthCode(authCode); |
| | | } catch (WxErrorException e) { |
| | |
| | | List<String> housePictures = registerDTO.getHousePictures(); |
| | | if (!housePictures.isEmpty()) { |
| | | housePictures.forEach(e -> { |
| | | RentingHourseFile file = new RentingHourseFile(); |
| | | file.setId(Snowflake.getId()); |
| | | file.setClassification(RentingHourseFile.Classification.fytp); |
| | | file.setRefId(registerId); |
| | | file.setType(RentingHourseFile.Type.picture); |
| | | file.setUrl(e); |
| | | file.setCreateBy(userId); |
| | | file.setCreateAt(nowDate); |
| | | files.add(file); |
| | | if (StringUtils.isNotBlank(e)) { |
| | | RentingHourseFile file = new RentingHourseFile(); |
| | | file.setId(Snowflake.getId()); |
| | | file.setClassification(RentingHourseFile.Classification.fytp); |
| | | file.setRefId(registerId); |
| | | file.setType(RentingHourseFile.Type.picture); |
| | | file.setUrl(e); |
| | | file.setCreateBy(userId); |
| | | file.setCreateAt(nowDate); |
| | | files.add(file); |
| | | } |
| | | }); |
| | | } |
| | | List<String> propertyPictures = registerDTO.getPropertyPictures(); |
| | | if (!propertyPictures.isEmpty()) { |
| | | propertyPictures.forEach(e -> { |
| | | RentingHourseFile file = new RentingHourseFile(); |
| | | file.setId(Snowflake.getId()); |
| | | file.setClassification(RentingHourseFile.Classification.cqtp); |
| | | file.setRefId(registerId); |
| | | file.setType(RentingHourseFile.Type.picture); |
| | | file.setUrl(e); |
| | | file.setCreateBy(userId); |
| | | file.setCreateAt(nowDate); |
| | | files.add(file); |
| | | if (StringUtils.isNotBlank(e)) { |
| | | RentingHourseFile file = new RentingHourseFile(); |
| | | file.setId(Snowflake.getId()); |
| | | file.setClassification(RentingHourseFile.Classification.cqtp); |
| | | file.setRefId(registerId); |
| | | file.setType(RentingHourseFile.Type.picture); |
| | | file.setUrl(e); |
| | | file.setCreateBy(userId); |
| | | file.setCreateAt(nowDate); |
| | | files.add(file); |
| | | } |
| | | }); |
| | | } |
| | | List<String> credentialsPictures = registerDTO.getCredentialsPictures(); |
| | | if (!credentialsPictures.isEmpty()) { |
| | | credentialsPictures.forEach(e -> { |
| | | RentingHourseFile file = new RentingHourseFile(); |
| | | file.setId(Snowflake.getId()); |
| | | file.setClassification(RentingHourseFile.Classification.zjzq); |
| | | file.setRefId(registerId); |
| | | file.setType(RentingHourseFile.Type.picture); |
| | | file.setUrl(e); |
| | | file.setCreateBy(userId); |
| | | file.setCreateAt(nowDate); |
| | | files.add(file); |
| | | if (StringUtils.isNotBlank(e)) { |
| | | RentingHourseFile file = new RentingHourseFile(); |
| | | file.setId(Snowflake.getId()); |
| | | file.setClassification(RentingHourseFile.Classification.zjzq); |
| | | file.setRefId(registerId); |
| | | file.setType(RentingHourseFile.Type.picture); |
| | | file.setUrl(e); |
| | | file.setCreateBy(userId); |
| | | file.setCreateAt(nowDate); |
| | | files.add(file); |
| | | } |
| | | }); |
| | | } |
| | | rentingHourseFileService.saveBatch(files); |
| | | return R.ok(); |
| | | } |
| | | return R.fail("新增房源失败"); |
| | | } |
| | | |
| | | private void checkDepositMoney(RentingHouseRegisterDTO registerDTO) { |
| | | BigDecimal dingMoney = registerDTO.getDingMoney(); |
| | | BigDecimal monthlyRentMoney = registerDTO.getMonthlyRentMoney(); |
| | | if (nonNull(dingMoney) && nonNull(monthlyRentMoney) && dingMoney.compareTo(monthlyRentMoney) == 1) { |
| | | throw new ServiceException("500", "定金不能超过月租金"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R updateRentingHouse(RentingHouseRegisterDTO registerDTO) { |
| | | checkDepositMoney(registerDTO); |
| | | Long id = registerDTO.getId(); |
| | | Long userId = registerDTO.getUserId(); |
| | | RentingHourseRegister houseRegister = this.baseMapper.selectById(id); |
| | |
| | | .eq(RentingHourseFile::getClassification, RentingHourseFile.Classification.fytp) |
| | | .eq(RentingHourseFile::getType, RentingHourseFile.Type.picture)); |
| | | housePictures.forEach(e -> { |
| | | RentingHourseFile file = new RentingHourseFile(); |
| | | file.setId(Snowflake.getId()); |
| | | file.setClassification(RentingHourseFile.Classification.fytp); |
| | | file.setRefId(id); |
| | | file.setType(RentingHourseFile.Type.picture); |
| | | file.setUrl(e); |
| | | file.setCreateBy(userId); |
| | | file.setCreateAt(nowDate); |
| | | files.add(file); |
| | | if (StringUtils.isNotBlank(e)) { |
| | | RentingHourseFile file = new RentingHourseFile(); |
| | | file.setId(Snowflake.getId()); |
| | | file.setClassification(RentingHourseFile.Classification.fytp); |
| | | file.setRefId(id); |
| | | file.setType(RentingHourseFile.Type.picture); |
| | | file.setUrl(e); |
| | | file.setCreateBy(userId); |
| | | file.setCreateAt(nowDate); |
| | | files.add(file); |
| | | } |
| | | }); |
| | | } |
| | | List<String> propertyPictures = registerDTO.getPropertyPictures(); |
| | |
| | | .eq(RentingHourseFile::getClassification, RentingHourseFile.Classification.cqtp) |
| | | .eq(RentingHourseFile::getType, RentingHourseFile.Type.picture)); |
| | | propertyPictures.forEach(e -> { |
| | | RentingHourseFile file = new RentingHourseFile(); |
| | | file.setId(Snowflake.getId()); |
| | | file.setClassification(RentingHourseFile.Classification.cqtp); |
| | | file.setRefId(id); |
| | | file.setType(RentingHourseFile.Type.picture); |
| | | file.setUrl(e); |
| | | file.setCreateBy(userId); |
| | | file.setCreateAt(nowDate); |
| | | files.add(file); |
| | | if (StringUtils.isNotBlank(e)) { |
| | | RentingHourseFile file = new RentingHourseFile(); |
| | | file.setId(Snowflake.getId()); |
| | | file.setClassification(RentingHourseFile.Classification.cqtp); |
| | | file.setRefId(id); |
| | | file.setType(RentingHourseFile.Type.picture); |
| | | file.setUrl(e); |
| | | file.setCreateBy(userId); |
| | | file.setCreateAt(nowDate); |
| | | files.add(file); |
| | | } |
| | | }); |
| | | } |
| | | List<String> credentialsPictures = registerDTO.getCredentialsPictures(); |
| | |
| | | .eq(RentingHourseFile::getClassification, RentingHourseFile.Classification.zjzq) |
| | | .eq(RentingHourseFile::getType, RentingHourseFile.Type.picture)); |
| | | credentialsPictures.forEach(e -> { |
| | | RentingHourseFile file = new RentingHourseFile(); |
| | | file.setId(Snowflake.getId()); |
| | | file.setClassification(RentingHourseFile.Classification.zjzq); |
| | | file.setRefId(id); |
| | | file.setType(RentingHourseFile.Type.picture); |
| | | file.setUrl(e); |
| | | file.setCreateBy(userId); |
| | | file.setCreateAt(nowDate); |
| | | files.add(file); |
| | | if (StringUtils.isNotBlank(e)) { |
| | | RentingHourseFile file = new RentingHourseFile(); |
| | | file.setId(Snowflake.getId()); |
| | | file.setClassification(RentingHourseFile.Classification.zjzq); |
| | | file.setRefId(id); |
| | | file.setType(RentingHourseFile.Type.picture); |
| | | file.setUrl(e); |
| | | file.setCreateBy(userId); |
| | | file.setCreateAt(nowDate); |
| | | files.add(file); |
| | | } |
| | | }); |
| | | } |
| | | rentingHourseFileService.saveBatch(files); |
| | |
| | | houseRegister.setDetailStatus(RentingHourseRegister.DetailStatus.drz); |
| | | } |
| | | } |
| | | houseRegister.setUpdateAt(new Date()); |
| | | int result = this.baseMapper.updateById(houseRegister); |
| | | if (result > 0) { |
| | | return R.ok(); |
| | |
| | | if (status.intValue() != RentingHourseRegister.Status.dfb) { |
| | | return R.fail("已发布房源不支持删除"); |
| | | } |
| | | rentingHourseFileService.remove(new QueryWrapper<RentingHourseFile>().lambda() |
| | | .eq(RentingHourseFile::getRefId, registerId)); |
| | | int result = this.baseMapper.deleteById(registerId); |
| | | if (result > 0) { |
| | | return R.ok(); |
| | |
| | | @Override |
| | | public R nearby(NearbyDTO nearbyDTO) { |
| | | Rectangle rectangle =new NearbyUtil().getRectangle(nearbyDTO.getDistance(), Double.parseDouble(nearbyDTO.getLongitude()), Double.parseDouble(nearbyDTO.getLatitude())); |
| | | return R.ok(this.baseMapper.nearby(rectangle.getMinX(),rectangle.getMaxX(),rectangle.getMinY(),rectangle.getMaxY(),nearbyDTO.getKeyword())); |
| | | return R.ok(this.baseMapper.nearby(rectangle.getMinX(),rectangle.getMaxX(), |
| | | rectangle.getMinY(),rectangle.getMaxY(), nearbyDTO)); |
| | | } |
| | | |
| | | @Override |
| | |
| | | try { |
| | | WxMaQrcodeService qrCodeService = wxMaConfiguration.getMaService().getQrcodeService(); |
| | | byte[] bytes = qrCodeService.createWxaCodeUnlimitBytes("id=" + houseRegister.getId() + "&type=6", |
| | | HOUSE_DETAIL_PAGE, 30, true, null, false); |
| | | minAppJumpPage, 30, true, null, false); |
| | | String authCode = String.format("data:image/png;base64,%s", Base64.encode(bytes)); |
| | | houseRegister.setAuthCode(authCode); |
| | | } catch (WxErrorException e) { |