| | |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.math.BigDecimal; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | | import java.time.ZoneId; |
| | | import java.util.*; |
| | |
| | | private CollectionHouseResourceServiceImpl collectionHouseResourceService; |
| | | @Autowired |
| | | private ICollectionHousingDemandService collectionHousingDemandService; |
| | | |
| | | |
| | | |
| | | @Autowired |
| | | private IHouseTypeService houseTypeService; |
| | | |
| | | /** |
| | | * 通过token获取用户信息 |
| | |
| | | return null; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | /** |
| | | * 小程序登录 |
| | | * @return |
| | |
| | | return ResultUtil.error("获取微信身份信息失败"); |
| | | } |
| | | String openid = map.get("openid").toString(); |
| | | String sessionKey = map.get("sessionKey").toString(); |
| | | //解密手机号 |
| | | String phone = WXCore.decrypt(req.getEncryptedPhoneData(), sessionKey, req.getPhone_iv()); |
| | | JSONObject jsonObject = JSONObject.parseObject(phone); |
| | | String phone1 = jsonObject.getString("phoneNumber"); |
| | | AppUser appUser = this.selectOne(new EntityWrapper<AppUser>() |
| | | .eq("wechat_openid", openid)); |
| | | if(null != appUser && appUser.getStatus() == 2){ |
| | | return ResultUtil.error("账号冻结"); |
| | | .eq("wechat_openid", openid) |
| | | .eq("phone",phone1) |
| | | .ne("status",3)); |
| | | if(null != appUser && (appUser.getStatus() == 2|| appUser.getStatus() == 3)){ |
| | | return ResultUtil.errorLogin("当前账号已被冻结或删除"); |
| | | } |
| | | AppletLoginRes appletLoginRes = new AppletLoginRes(); |
| | | // 当前微信号没有注册过 |
| | | if(null == appUser){ |
| | | System.err.println("新增"); |
| | | String sessionKey = map.get("sessionKey").toString(); |
| | | //解密手机号 |
| | | String phone = WXCore.decrypt(req.getEncryptedPhoneData(), sessionKey, req.getPhone_iv()); |
| | | appUser = this.selectOne(new EntityWrapper<AppUser>() |
| | | .eq("phone", phone) |
| | | .eq("status", 1)); |
| | | JSONObject jsonObject = JSONObject.parseObject(phone); |
| | | String phone1 = jsonObject.getString("phoneNumber"); |
| | | System.err.println("看看json"); |
| | | System.err.println(jsonObject); |
| | | System.err.println(phone1); |
| | | //注册新账号 |
| | | appUser = addNewAppUser(openid, phone1); |
| | | }else{ |
| | | String sessionKey = map.get("sessionKey").toString(); |
| | | String phone = WXCore.decrypt(req.getEncryptedPhoneData(), sessionKey, req.getPhone_iv()); |
| | | JSONObject jsonObject = JSONObject.parseObject(phone); |
| | | String phone1 = jsonObject.getString("phoneNumber"); |
| | | appUser.setWechatOpenid(openid); |
| | | appUser.setPhone(phone1); |
| | | this.updateById(appUser); |
| | | } |
| | | if(null == appUser){ |
| | | //注册新账号 |
| | | appUser = addNewAppUser(openid, phone1); |
| | | } |
| | | //生成token |
| | | String token = JwtTokenUtil.generateToken(appUser.getPhone()); |
| | | |
| | | System.err.println("token1111--->" + token); |
| | | appletLoginRes.setState(appUser.getAuth()); |
| | | appletLoginRes.setToken(token); |
| | |
| | | } |
| | | SearchIntermediaryRes searchIntermediaryRes = new SearchIntermediaryRes(); |
| | | List<SearchIntermediaryListRes> res =this.baseMapper.searchIntermediaryList(req,districtIds,cityIds); |
| | | List<SearchIntermediaryListRes> res1 =this.baseMapper.searchIntermediaryList1(req,districtIds,cityIds); |
| | | searchIntermediaryRes.setList(res); |
| | | searchIntermediaryRes.setTotal(res.size()); |
| | | searchIntermediaryRes.setTotal(res1.size()); |
| | | return searchIntermediaryRes; |
| | | } |
| | | |
| | |
| | | public ResultUtil<AppUser> userInfo() { |
| | | // 获取当前登录用户 |
| | | AppUser appUser = appUserService.getAppUser(); |
| | | if (!StringUtils.hasLength(appUser.getProfilePhoto())){ |
| | | appUser.setProfilePhoto("https://bizuphk.oss-cn-hongkong.aliyuncs.com/1703841554373"); |
| | | } |
| | | if(null != appUser && (appUser.getStatus() == 2|| appUser.getStatus() == 3)){ |
| | | return ResultUtil.errorLogin("当前账号已被冻结或删除"); |
| | | } |
| | | return ResultUtil.success(appUser); |
| | | |
| | | } |
| | |
| | | } |
| | | @Override |
| | | public ResultUtil<CollectRes> collect(UserInfoQuery query) { |
| | | AppUser appUser = appUserService.getAppUser(); |
| | | SearchHousingDemandRes searchHousingDemandRes = housingDemandService |
| | | .searchHousingDemand1(appUserService.getAppUser().getId()); |
| | | .searchHousingDemand1(appUser.getId()); |
| | | if(null != appUser && (appUser.getStatus() == 2|| appUser.getStatus() == 3)){ |
| | | return ResultUtil.errorLogin("当前账号已被冻结或删除"); |
| | | } |
| | | List<SearchHousingDemandListRes> list1 = searchHousingDemandRes.getList(); |
| | | for (SearchHousingDemandListRes searchHousingDemandListRes : list1) { |
| | | if (StringUtils.hasLength(searchHousingDemandListRes.getHouseTypeId())){ |
| | | String[] split = searchHousingDemandListRes.getHouseTypeId().split(","); |
| | | if (split.length>0){ |
| | | HouseType houseType = houseTypeService.selectById(split[0]); |
| | | if (houseType!=null)searchHousingDemandListRes.setHouseTypeName(houseType.getName()); |
| | | |
| | | } |
| | | } |
| | | } |
| | | CollectRes searchIntermediaryRes = new CollectRes(); |
| | | List<CollectListRes> list = houseResourceService.collect(appUserService.getAppUser().getId()); |
| | | for (SearchHousingDemandListRes temp : list1) { |
| | |
| | | CollectListRes collectListRes = new CollectListRes(); |
| | | collectListRes.setSaleAmount(temp.getSaleAmount()); |
| | | collectListRes.setData(1); |
| | | collectListRes.setAuthStatus(2); |
| | | BeanUtils.copyProperties(temp,collectListRes); |
| | | StringBuilder stringBuilder = new StringBuilder(""); |
| | | if (temp.getAddress()!=null){ |
| | |
| | | |
| | | } |
| | | collect1.addAll(collect2); |
| | | // 使用 Collections.sort() 方法排序 |
| | | Collections.sort(collect1, Comparator.comparing(CollectListRes::getInsertTime).reversed()); |
| | | List<CollectListRes> testing = testing(collect1.size(), query.getPageNum(), query.getPageSize(), collect1); |
| | | List<CollectListRes> collect = testing.stream().filter(t -> t.getData() == 2).distinct().collect(Collectors.toList()); |
| | | List<CollectListRes> collectt = testing.stream().filter(t -> t.getData() == 1).distinct().collect(Collectors.toList()); |
| | | |
| | | long count = collect.stream().filter(t -> t.getType() == 1).count(); |
| | | long count1 = collectt.stream().filter(t -> t.getType() == 1).count(); |
| | | // 草稿数量 |
| | | searchIntermediaryRes.setDraft(Integer.parseInt(String.valueOf(count))+Integer.parseInt(String.valueOf(count1))); |
| | | // 上架房源数 |
| | | int size = collect.stream().filter(t -> t.getStatus() == 1 && t.getType()==2).collect(Collectors.toList()).size(); |
| | | int size2 = collectt.stream().filter(t -> t.getStatus() == 1 && t.getType()==2).collect(Collectors.toList()).size(); |
| | | searchIntermediaryRes.setOn(size+size2); |
| | | // 下架房源数 |
| | | int size1 = collect.stream().filter(t -> t.getStatus() == 0 && t.getType()==2).collect(Collectors.toList()).size(); |
| | | int size3 = collectt.stream().filter(t -> t.getStatus() == 0 && t.getType()==2).collect(Collectors.toList()).size(); |
| | | searchIntermediaryRes.setOff(size1+size3); |
| | | long count1 = collect1.stream().filter(t -> t.getType() == 1).count(); |
| | | // 上架数量 |
| | | long count2 = collect1.stream().filter(t -> t.getType() == 2 && t.getStatus()==1).count(); |
| | | // 下架数量 |
| | | long count3 = collect1.stream().filter(t -> t.getType() == 2 && t.getStatus()==0).count(); |
| | | searchIntermediaryRes.setDraft(Integer.parseInt(String.valueOf(count1))); |
| | | searchIntermediaryRes.setOff(Integer.parseInt(String.valueOf(count3))); |
| | | searchIntermediaryRes.setOn(Integer.parseInt(String.valueOf(count2))); |
| | | // @ApiModelProperty("是否有电梯(0=否,1=是)") |
| | | // private Integer elevator; |
| | | // @ApiModelProperty("是否有晾晒区(0=否,1=是)") |
| | |
| | | // private Integer keepPet; |
| | | |
| | | for (CollectListRes t : testing) { |
| | | int a =0; |
| | | // 将时间转化为指定格式 |
| | | // 创建一个日期格式化对象,指定要转换的格式 |
| | | SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日"); |
| | | String format = formatter.format(t.getInsertTime()); |
| | | t.setTime(format); |
| | | StringBuilder temp = new StringBuilder(""); |
| | | if (t.getElevator()==null){ |
| | | temp.append("电梯,"); |
| | | }else if (t.getElevator()==1){ |
| | | temp.append("电梯,"); |
| | | if (StringUtils.hasLength(t.getHouseTypeName())){ |
| | | if (a<4){ |
| | | temp.append(t.getHouseTypeName()+","); |
| | | a++; |
| | | } |
| | | } |
| | | if (t.getDryingArea()==null){ |
| | | temp.append("晾晒区,"); |
| | | }else if (t.getDryingArea()==1){ |
| | | temp.append("晾晒区,"); |
| | | if (t.getElevator()!=null&&t.getElevator()==1){ |
| | | if (a<4) { |
| | | temp.append("有电梯,"); |
| | | a++; |
| | | } |
| | | } |
| | | if (t.getGarden()==null){ |
| | | temp.append("花园,"); |
| | | }else if (t.getGarden()==1){ |
| | | temp.append("花园,"); |
| | | if (t.getBalcony()!=null&&t.getBalcony()==1){ |
| | | if (a<4) { |
| | | temp.append("有阳台,"); |
| | | a++; |
| | | } |
| | | } |
| | | if (t.getCarport()==null){ |
| | | temp.append("车位,"); |
| | | }else if (t.getCarport()==1){ |
| | | temp.append("车位,"); |
| | | if (t.getDryingArea()!=null&&t.getDryingArea()==1){ |
| | | if (a<4) { |
| | | temp.append("有天台,"); |
| | | a++; |
| | | } |
| | | } |
| | | if (t.getBalcony()==null){ |
| | | temp.append("平台,"); |
| | | }else if (t.getBalcony()==1){ |
| | | temp.append("平台,"); |
| | | if (t.getGarden()!=null&&t.getGarden()==1){ |
| | | if (a<4) { |
| | | temp.append("有花园,"); |
| | | a++; |
| | | } |
| | | } |
| | | if (t.getKeepPet()==null){ |
| | | temp.append("宠物,"); |
| | | }else if (t.getKeepPet()==1){ |
| | | temp.append("宠物,"); |
| | | if (t.getCarport()!=null&&t.getCarport()==1){ |
| | | if (a<4) { |
| | | temp.append("有车位,"); |
| | | a++; |
| | | } |
| | | } |
| | | if (t.getKeepPet()!=null&&t.getKeepPet()==1){ |
| | | if (a<4) { |
| | | temp.append("可养宠物,"); |
| | | a++; |
| | | } |
| | | } |
| | | String string = temp.toString(); |
| | | if (StringUtils.hasLength(string)){ |
| | |
| | | }else{ |
| | | t.setHead(""); |
| | | } |
| | | |
| | | } |
| | | |
| | | searchIntermediaryRes.setList(testing); |
| | | |
| | | searchIntermediaryRes.setTotal(testing.size()); |
| | | |
| | | searchIntermediaryRes.setTotal(collect1.size()); |
| | | return ResultUtil.success(searchIntermediaryRes); |
| | | } |
| | | |
| | | |
| | | public static List<CollectListRes> testing(long total, long current, long size, List<CollectListRes> str){ |
| | | List<CollectListRes> result = new ArrayList<>(); |
| | |
| | | long startIndex = page.getStartIndex(); |
| | | //获取集合下标结束值 |
| | | long endInddex = 0; |
| | | /** |
| | | * 如果初始值startIndex(size * current)超过总记录数 或者 入参size(一页显示多少条)大于总记录树, |
| | | * 则下标结束值均设置为集合大小 |
| | | */ |
| | | if(startIndex + page.getCurrent() >= total || size > total){ |
| | | endInddex = total; |
| | | }else { |
| | | /**当最后一页,开始下标加上要取值的size 大于总条数,则最终索引改为集合大小-1=》为 |
| | | *集合的最后下标值,防止下标溢出 |
| | | **/ |
| | | if(total < startIndex + page.getSize()){ |
| | | endInddex = total - 1 ; |
| | | }else { |
| | | //否则为startIndex(size * current 从哪里开始取)加上一页显示多少条得到结束值 |
| | | endInddex = startIndex + page.getSize(); |
| | | } |
| | | endInddex = Math.min(startIndex + page.getSize(), total); |
| | | } |
| | | //如果输入的开始查询下标大于集合大小,则查询为空值 |
| | | if(startIndex > total){ |
| | |
| | | }else{ |
| | | result = str.subList((int)startIndex,(int)endInddex); |
| | | } |
| | | /** |
| | | * 此处返回结果可以改为Page<T> T为对应业务的实体类型,最终把分页结果再塞入page的records再返回则得到与 |
| | | * mybatisplus一样的结构 |
| | | * page.setRecords(list); |
| | | * return page; |
| | | */ |
| | | return result; |
| | | } |
| | | @Override |
| | | public ResultUtil<CollectRes> release(UserInfoQuery query) { |
| | | AppUser appUser = appUserService.getAppUser(); |
| | | if(null != appUser && (appUser.getStatus() == 2|| appUser.getStatus() == 3)){ |
| | | return ResultUtil.errorLogin("当前账号已被冻结或删除"); |
| | | } |
| | | // 房源ids |
| | | List<Integer> ids = collectionHouseResourceService.selectList(new EntityWrapper<CollectionHouseResource>() |
| | | .eq("app_user_id", appUserService.getAppUser().getId())) |
| | | .eq("app_user_id", appUser.getId())) |
| | | .stream().map(CollectionHouseResource::getHouseResourceId).collect(Collectors.toList()); |
| | | List<Integer> collect = houseResourceService.selectList(new EntityWrapper<HouseResource>() |
| | | .eq("is_delete", 0) |
| | |
| | | collect1 = new ArrayList<>(); |
| | | } |
| | | for (CollectListRes collectListRes : collect1) { |
| | | // 查询房源的收藏量 |
| | | int house_resource_id = collectionHouseResourceService.selectList(new EntityWrapper<CollectionHouseResource>() |
| | | .eq("house_resource_id", collectListRes.getId())).size(); |
| | | collectListRes.setCollect(house_resource_id); |
| | | // 根据区id 查询下级 |
| | | Region city = regionService.selectById(collectListRes.getCityId()); |
| | | StringBuilder stringBuilder = new StringBuilder(""); |
| | |
| | | SearchHousingDemandRes searchHousingDemandRes = housingDemandService.searchHousingDemand2(demand); |
| | | List<SearchHousingDemandListRes> list1 = searchHousingDemandRes.getList(); |
| | | for (SearchHousingDemandListRes temp : list1) { |
| | | if (StringUtils.hasLength(temp.getHouseTypeId())){ |
| | | String[] split = temp.getHouseTypeId().split(","); |
| | | if (split.length>0){ |
| | | HouseType houseType = houseTypeService.selectById(split[0]); |
| | | if (houseType!=null)temp.setHouseTypeName(houseType.getName()); |
| | | |
| | | } |
| | | } |
| | | CollectListRes collectListRes = new CollectListRes(); |
| | | // 求房源的收藏数量 |
| | | int housing_demand_id = collectionHousingDemandService.selectList(new EntityWrapper<CollectionHousingDemand>() |
| | | .eq("housing_demand_id", temp.getId())).size(); |
| | | collectListRes.setSaleAmount(temp.getSaleAmount()); |
| | | collectListRes.setData(1); |
| | | |
| | | BeanUtils.copyProperties(temp,collectListRes); |
| | | collectListRes.setCollect(housing_demand_id); |
| | | StringBuilder stringBuilder = new StringBuilder(""); |
| | | if (temp.getAddress()!=null){ |
| | | for (String address : temp.getAddress()) { |
| | |
| | | String substring = string.substring(0, string.length() - 1); |
| | | collectListRes.setAddress(substring); |
| | | } |
| | | if (temp.getRentalDuration()!=null){ |
| | | Integer rentalDuration = temp.getRentalDuration(); |
| | | // 计算年数和剩余月数 |
| | | int years = rentalDuration / 12; |
| | | int remainingMonths = rentalDuration % 12; |
| | | if (years==0){ |
| | | collectListRes.setLeaseTime(remainingMonths+"月"); |
| | | }else{ |
| | | if (remainingMonths==0){ |
| | | collectListRes.setLeaseTime(years+"年"); |
| | | }else{ |
| | | collectListRes.setLeaseTime(years+"年"+remainingMonths+"月"); |
| | | } |
| | | } |
| | | } |
| | | collect1.add(collectListRes); |
| | | } |
| | | } |
| | | |
| | | |
| | | CollectRes searchIntermediaryRes = new CollectRes(); |
| | | Collections.sort(collect1, Comparator.comparing(CollectListRes::getInsertTime).reversed()); |
| | | List<CollectListRes> testing = testing(collect1.size(), query.getPageNum(), query.getPageSize(), collect1); |
| | | for (CollectListRes t : testing) { |
| | | // 将时间转化为指定格式 |
| | | // 创建一个日期格式化对象,指定要转换的格式 |
| | | SimpleDateFormat formatter = new SimpleDateFormat("yyyy年MM月dd日"); |
| | | String format = formatter.format(t.getInsertTime()); |
| | | t.setTime(format); |
| | | StringBuilder temp = new StringBuilder(""); |
| | | if (StringUtils.hasLength(t.getHouseTypeName())){ |
| | | temp.append(t.getHouseTypeName()+","); |
| | | } |
| | | if (t.getElevator()!=null&&t.getElevator()==1){ |
| | | temp.append("有电梯,"); |
| | | } |
| | | if (t.getBalcony()!=null&&t.getBalcony()==1){ |
| | | temp.append("有阳台,"); |
| | | } |
| | | if (t.getDryingArea()!=null&&t.getDryingArea()==1){ |
| | | temp.append("有天台,"); |
| | | } |
| | | if (t.getGarden()!=null&&t.getGarden()==1){ |
| | | temp.append("有花园,"); |
| | | } |
| | | if (t.getCarport()!=null&&t.getCarport()==1){ |
| | | temp.append("有车位,"); |
| | | } |
| | | |
| | | if (t.getKeepPet()!=null&&t.getKeepPet()==1){ |
| | | temp.append("可养宠物,"); |
| | | } |
| | | String string = temp.toString(); |
| | | if (StringUtils.hasLength(string)){ |
| | | String substring = string.substring(0, string.length() - 1); |
| | | t.setHead(substring); |
| | | }else{ |
| | | t.setHead(""); |
| | | } |
| | | } |
| | | |
| | | searchIntermediaryRes.setList(testing); |
| | | searchIntermediaryRes.setTotal(testing.size()); |
| | | searchIntermediaryRes.setTotal(collect1.size()); |
| | | return ResultUtil.success(searchIntermediaryRes); |
| | | } |
| | | |
| | |
| | | appUser.setStatus(1); |
| | | appUser.setAuth(0); |
| | | appUser.setInsertTime(new Date()); |
| | | appUser.setProfilePhoto("https://bizuphk.oss-cn-hongkong.aliyuncs.com/1703841554373"); |
| | | this.insert(appUser); |
| | | return appUser; |
| | | } |
| | |
| | | * @return |
| | | */ |
| | | private Integer getAppUserIdFromToken(String token){ |
| | | System.err.println("token--->" + token); |
| | | String key = token; |
| | | int length = token.length(); |
| | | if(length > 32){ |