From 59f63a8ef0078b06f010d25abfef2772c944a56f Mon Sep 17 00:00:00 2001 From: luo <2855143437@qq.com> Date: 星期二, 02 一月 2024 15:11:52 +0800 Subject: [PATCH] 1.2 --- guns-management/src/main/java/com/stylefeng/guns/modular/system/service/impl/HouseResourceService.java | 221 ++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 179 insertions(+), 42 deletions(-) diff --git a/guns-management/src/main/java/com/stylefeng/guns/modular/system/service/impl/HouseResourceService.java b/guns-management/src/main/java/com/stylefeng/guns/modular/system/service/impl/HouseResourceService.java index 87ef518..c90e436 100644 --- a/guns-management/src/main/java/com/stylefeng/guns/modular/system/service/impl/HouseResourceService.java +++ b/guns-management/src/main/java/com/stylefeng/guns/modular/system/service/impl/HouseResourceService.java @@ -3,13 +3,19 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.alipay.api.internal.util.codec.Base64; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.mongodb.client.result.UpdateResult; +import com.stylefeng.guns.config.OSSService; +import com.stylefeng.guns.core.shiro.ShiroKit; import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.system.dao.HouseResourceMapper; +import com.stylefeng.guns.modular.system.dto.THouseResource; import com.stylefeng.guns.modular.system.model.*; import com.stylefeng.guns.modular.system.service.*; import com.stylefeng.guns.modular.system.util.ResultUtil; +import com.stylefeng.guns.modular.system.util.WxAppletTools; import com.stylefeng.guns.modular.system.warpper.PointLocation; import com.stylefeng.guns.modular.system.warpper.req.AddHouseReq; import com.stylefeng.guns.modular.system.warpper.req.HouseQuery; @@ -23,17 +29,27 @@ import org.springframework.data.geo.Metrics; import org.springframework.data.geo.Point; import org.springframework.data.mongodb.core.MongoTemplate; +import org.springframework.data.mongodb.core.geo.GeoJsonPoint; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; +import org.springframework.data.mongodb.core.query.Update; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; import org.springframework.util.StringUtils; +import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.security.SecureRandom; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; /** @@ -57,6 +73,12 @@ private MongoTemplate mongoTemplate; @Autowired private IHousingDemandService housingDemandService; + @Autowired + private OSSService ossService; + @Autowired + private RestTemplate restTemplate; + @Autowired + private WxAppletTools wxAppletTools; @@ -331,55 +353,170 @@ @Override public ResultUtil addHouse(AddHouseReq req) { - Integer appUserId = appUserService.getAppUser().getId(); - AppUser appUser = appUserService.selectOne(new EntityWrapper<AppUser>() - .eq("id", appUserId) - .eq("audit_status", 2) - .eq("status", 1)); - if (appUser!=null){ - - if (appUser.getAgentLicenceCode()==null){ - // 未认证 只能能发布三条房源信息 - List<HouseResource> houseResources = this.selectList(new EntityWrapper<HouseResource>() - .eq("app_user_id", appUserId) - .eq("is_delete", 1) - .eq("status", 1) - ); - if (houseResources.size()>=3){ - return ResultUtil.error("中介账号未认证,只能同时上架3条房源信息"); - } - }else{ - // 已经认证 只能能发布20条房源信息 - List<HouseResource> houseResources = this.selectList(new EntityWrapper<HouseResource>() - .eq("app_user_id", appUserId) - .eq("is_delete", 1) - .eq("status", 1) - ); - if (houseResources.size()>=20){ - return ResultUtil.error("当前中介账号只能同时上架20条房源信息"); - } - } - HouseResource houseResource = new HouseResource(); BeanUtils.copyProperties(req,houseResource); System.err.println(houseResource); houseResource.setInsertTime(new Date()); - houseResource.setAuthStatus(1); + houseResource.setAuthStatus(2); houseResource.setIsDelete(0); - houseResource.setInsertUserId(appUserId); + houseResource.setInsertUserId(null); houseResource.setViewsNumber(0); - houseResource.setStatus(0); - houseResource.setLeaseTime(req.getTime()); + houseResource.setStatus(1); + houseResource.setLeaseTime(req.getLeaseTime()); houseResource.setFirmHouse(req.getFirmHouse()); - if (req.getTime().contains("年")){ + houseResource.setAuthTime(new Date()); + if (req.getDataType()==1) { + if (req.getLeaseTime().contains("年")) { + houseResource.setRentalDuration(2); + } else { + houseResource.setRentalDuration(1); + } + } + houseResource.setIsManage(1); + houseResource.setType(2); + houseResource.setAppUserId(Objects.requireNonNull(ShiroKit.getUser()).id); + houseResource.setInsertUserId(Objects.requireNonNull(ShiroKit.getUser()).id); + + + + PointLocation pointLocation = new PointLocation(); + GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.valueOf(req.getLongitude()),Double.valueOf(req.getLatitude())); + pointLocation.setGeoJsonPoint(geoJsonPoint); + pointLocation.setHouseId(houseResource.getId()); + mongoTemplate.insert(pointLocation); + + houseResource.setCode(pointLocation.getId()); + this.baseMapper.updateById(houseResource); + + InputStream inputStream = null; + OutputStream outputStream = null; + String accessToken = wxAppletTools.getAccessToken(); + try { + String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken; + Map<String, Object> param = new HashMap<>(); + param.put("scene","id="+houseResource.getId()); + param.put("page", "pageA/houseDetail"); + param.put("check_path", false); + param.put("env_version", "trial"); + param.put("width", 200); //二维码尺寸 + param.put("is_hyaline", true); // 是否需要透明底色, is_hyaline 为true时,生成透明底色的小程序码 参数仅对小程序码生效 + param.put("auto_color", true); // 自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调 参数仅对小程序码生效 + Map<String, Object> line_color = new HashMap<>(); + line_color.put("r", 0); + line_color.put("g", 0); + line_color.put("b", 0); + param.put("line_color", line_color); + System.err.println("调用生成微信URL接口传参:" + param); + MultiValueMap<String, String> headers = new LinkedMultiValueMap<>(); + HttpEntity requestEntity = new HttpEntity(param, headers); + ResponseEntity<byte[]> entity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, byte[].class, new Object[0]); + System.err.println("调用小程序生成微信永久小程序码URL接口返回结果:" + entity.getBody()); + byte[] result = entity.getBody(); + System.err.println(Base64.encodeBase64String(result)); + inputStream = new ByteArrayInputStream(result); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + // 最后上传生成的文件名 + String finalFileName = System.currentTimeMillis() + "" + new SecureRandom().nextInt(0x0400) + ".jpg"; + // oss中的文件夹名 + String objectName = sdf.format(new Date()) + "/" + finalFileName; + // 上传oss + ossService.uploadFile2OSS(inputStream, objectName); + //获取文件的URl地址 + String imgUrl = ossService.getImgUrl(objectName); + houseResource.setQrCode(imgUrl); + this.baseMapper.updateById(houseResource); + System.err.println("看看文件路径" + imgUrl); + } catch (Exception e) { + System.err.println("调用小程序生成微信永久小程序码URL接口异常" + e); + } finally { + if (inputStream != null) { + try { + inputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (outputStream != null) { + try { + outputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + } + + + return ResultUtil.success("添加成功"); + + } + + @Override + public ResultUtil editHouse(AddHouseReq req) { + HouseResource houseResource = new HouseResource(); + BeanUtils.copyProperties(req,houseResource); + if (req.getDataType()==1) { + + if (req.getLeaseTime().contains("年")) { houseResource.setRentalDuration(2); - }else{ + } else { houseResource.setRentalDuration(1); } - this.baseMapper.insert(houseResource); - return ResultUtil.success(); } - return ResultUtil.success(); + houseResource.setUpdateTime(new Date()); + this.baseMapper.updateById(houseResource); + + HouseResource houseResource1 = this.baseMapper.selectById(req.getId()); + Query query = Query.query(Criteria.where("_id").is(houseResource1.getCode())); + PointLocation pointLocation = new PointLocation(); + pointLocation.setId(houseResource1.getCode()); + pointLocation.setHouseId(houseResource.getId()); + GeoJsonPoint geoJsonPoint = new GeoJsonPoint(Double.valueOf(req.getLongitude()),Double.valueOf(req.getLatitude())); + pointLocation.setGeoJsonPoint(geoJsonPoint); + org.bson.Document document = (org.bson.Document)mongoTemplate.getConverter() .convertToMongoType(pointLocation); + Update update = Update.fromDocument (document); + UpdateResult updateResult = mongoTemplate.updateFirst(query, update, PointLocation.class); + + return ResultUtil.success("编辑成功"); + + } + + @Override + public List<THouseResource> list(String cellName, Integer dataType, Integer isManage, String name, String saleAmount, Integer status) { + + if (saleAmount!=null) { + String [] split = saleAmount.split("-"); + return this.baseMapper.list(cellName,dataType,isManage,name,split[0],split[1],status); + + } + + return this.baseMapper.list(cellName,dataType,isManage,name,null,null,status); + + } + + @Override + public List<THouseResource> aulist(Integer id ,String cellName, Integer dataType, Integer isManage, String name, String saleAmount, String size) { + + if (saleAmount!=null) { + String [] split = saleAmount.split("-"); + return this.baseMapper.aulist(id,cellName,dataType,isManage,name,split[0],split[1],size); + + } + + return this.baseMapper.aulist(id,cellName,dataType,isManage,name,null,null,size); + + } + @Override + public List<THouseResource> reprotList(Integer id ,String cellName, Integer dataType, Integer isManage, String name, String saleAmount, String size) { + + if (saleAmount!=null) { + String [] split = saleAmount.split("-"); + return this.baseMapper.reprotList(id,cellName,dataType,isManage,name,split[0],split[1],size); + + } + + return this.baseMapper.reprotList(id,cellName,dataType,isManage,name,null,null,size); + } @Override -- Gitblit v1.7.1