张天森
2022-11-10 d99a56e37cf9109b46ee68d34a06594ef5615ed3
springcloud_k8s_panzhihuazhihuishequ/service_community/src/main/java/com/panzhihua/service_community/service/impl/RentingHourseRegisterServiceImpl.java
@@ -4,6 +4,7 @@
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;
@@ -12,8 +13,12 @@
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;
@@ -37,7 +42,6 @@
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;
@@ -56,8 +60,6 @@
@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
@@ -67,6 +69,9 @@
    @Resource
    private WxMaConfiguration wxMaConfiguration;
    @Value("${rentinghouse.min-app.jump-page}")
    private String minAppJumpPage;
    /**
     * 新增房源信息
     * @param registerDTO
@@ -75,6 +80,7 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R registerRentingHouse(RentingHouseRegisterDTO registerDTO) {
        checkDepositMoney(registerDTO);
        Long communityId = registerDTO.getCommunityId();
        Long userId = registerDTO.getUserId();
        RentingHourseRegister houseRegister = new RentingHourseRegister();
@@ -90,7 +96,7 @@
        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) {
@@ -123,49 +129,63 @@
            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", "定金不能超过月租金");
        }
    }
    /**
@@ -176,6 +196,7 @@
    @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);
@@ -217,15 +238,17 @@
                        .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();
@@ -235,15 +258,17 @@
                        .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();
@@ -253,15 +278,17 @@
                        .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);
@@ -319,6 +346,7 @@
                houseRegister.setDetailStatus(RentingHourseRegister.DetailStatus.drz);
            }
        }
        houseRegister.setUpdateAt(new Date());
        int result = this.baseMapper.updateById(houseRegister);
        if (result > 0) {
            return R.ok();
@@ -341,6 +369,8 @@
        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();
@@ -396,7 +426,8 @@
    @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
@@ -408,14 +439,14 @@
    }
    @Override
    public void updateAllHouseUnionAppCode() {
    public void updateAllHouseUnionAppCode(String areaCode) {
        List<RentingHourseRegister> list = this.baseMapper.selectList(null);
        if (!list.isEmpty()) {
            list.stream().forEach(houseRegister -> {
                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) {