From fd83395529437e0c02b8d69b039fe52d40a4ec62 Mon Sep 17 00:00:00 2001 From: 44323 <443237572@qq.com> Date: 星期一, 04 十二月 2023 12:07:36 +0800 Subject: [PATCH] 小程序接口 --- guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/AppUserServiceImpl.java | 212 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 203 insertions(+), 9 deletions(-) diff --git a/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/AppUserServiceImpl.java b/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/AppUserServiceImpl.java index 0eed1d8..6acf120 100644 --- a/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/AppUserServiceImpl.java +++ b/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/AppUserServiceImpl.java @@ -1,27 +1,41 @@ package com.stylefeng.guns.modular.system.service.impl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.stylefeng.guns.core.util.JwtTokenUtil; import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.system.dao.AppUserMapper; import com.stylefeng.guns.modular.system.model.AppUser; +import com.stylefeng.guns.modular.system.model.CollectionHouseResource; +import com.stylefeng.guns.modular.system.model.HouseResource; +import com.stylefeng.guns.modular.system.model.Region; import com.stylefeng.guns.modular.system.service.IAppUserService; +import com.stylefeng.guns.modular.system.service.ICollectionHouseResourceService; +import com.stylefeng.guns.modular.system.service.IHousingDemandService; +import com.stylefeng.guns.modular.system.service.IRegionService; import com.stylefeng.guns.modular.system.util.RedisUtil; import com.stylefeng.guns.modular.system.util.ResultUtil; import com.stylefeng.guns.modular.system.util.UUIDUtil; import com.stylefeng.guns.modular.system.util.weChat.WXCore; import com.stylefeng.guns.modular.system.util.weChat.WeChatUtil; -import com.stylefeng.guns.modular.system.warpper.req.RegisterAccountReq; -import com.stylefeng.guns.modular.system.warpper.res.AppletLoginRes; +import com.stylefeng.guns.modular.system.warpper.req.*; +import com.stylefeng.guns.modular.system.warpper.res.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; +import sun.rmi.runtime.Log; import javax.servlet.http.HttpServletRequest; +import java.util.ArrayList; import java.util.Date; +import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * @author zhibing.pu @@ -34,6 +48,16 @@ private WeChatUtil weChatUtil; @Autowired private RedisUtil redisUtil; + @Autowired + private IRegionService regionService; + @Autowired + private IAppUserService appUserService; + @Autowired + private HouseResourceService houseResourceService; + @Autowired + private CollectionHouseResourceServiceImpl collectionHouseResourceService; + + /** @@ -45,7 +69,9 @@ ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = servletRequestAttributes.getRequest(); String authorization = request.getHeader("Authorization"); - if(ToolUtil.isNotEmpty(authorization) && authorization.contains("Bearer")){ + // todo 这里注释了一段代码 + // && authorization.contains("Bearer") + if(ToolUtil.isNotEmpty(authorization) && authorization.contains("Bearer") ){ String token = authorization.substring(7); //通过token获取用户id Integer appUserId = getAppUserIdFromToken(token); @@ -61,14 +87,13 @@ /** * 小程序登录 - * @param jscode * @return */ @Override - public ResultUtil<AppletLoginRes> appletLogin(String jscode) { + public ResultUtil<AppletLoginRes> appletLogin(RegisterAccountReq req) { try { //调用微信获取用户小程序openid - Map<String, Object> map = weChatUtil.code2Session(jscode); + Map<String, Object> map = weChatUtil.code2Session(req.getJscode()); if(null == map){ return ResultUtil.error("获取微信身份信息失败"); } @@ -81,7 +106,40 @@ if(null != appUser){ String token = JwtTokenUtil.generateToken(appUser.getPhone()); appletLoginRes.setToken(token); + appletLoginRes.setUserType(appUser.getUserType()); + }else{ + 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("audit_status", 2) + .eq("status", 1)); + if(null == appUser){ + JSONObject jsonObject = JSONObject.parseObject(phone); + String phone1 = jsonObject.getString("phoneNumber"); + System.err.println("看看json"); + System.err.println(jsonObject); + System.err.println(phone1); + //注册新账号 + addNewAppUser(openid, phone1); + }else{ + appUser.setWechatOpenid(openid); + this.updateById(appUser); + } } + AppUser appUser1 = this.selectOne(new EntityWrapper<AppUser>() + .eq("wechat_openid", openid) + .eq("audit_status", 2) + .eq("status", 1)); + //生成token + String token = JwtTokenUtil.generateToken(appUser1.getPhone()); + appletLoginRes.setToken(token); + appletLoginRes.setUserType(appUser1.getUserType()); + System.err.println("看看TOKEN:"+token); + //存入缓存中 + addTokenToRedis(token, appUser1.getId()); return ResultUtil.success(appletLoginRes); }catch (Exception e){ e.printStackTrace(); @@ -103,6 +161,8 @@ if(null == map){ return ResultUtil.error("获取微信身份信息失败"); } + System.err.println("看看返回结果map"); + System.err.println(map); String openid = map.get("openid").toString(); AppUser appUser = this.selectOne(new EntityWrapper<AppUser>() .eq("wechat_openid", openid) @@ -118,18 +178,28 @@ .eq("audit_status", 2) .eq("status", 1)); if(null == appUser){ + JSONObject jsonObject = JSONObject.parseObject(phone); + String phone1 = jsonObject.getString("phoneNumber"); + System.err.println("看看json"); + System.err.println(jsonObject); + System.err.println(phone1); //注册新账号 - addNewAppUser(openid, phone); + addNewAppUser(openid, phone1); }else{ appUser.setWechatOpenid(openid); this.updateById(appUser); } } + AppUser appUser1 = this.selectOne(new EntityWrapper<AppUser>() + .eq("wechat_openid", openid) + .eq("audit_status", 2) + .eq("status", 1)); //生成token - String token = JwtTokenUtil.generateToken(appUser.getPhone()); + String token = JwtTokenUtil.generateToken(appUser1.getPhone()); appletLoginRes.setToken(token); + appletLoginRes.setUserType(appUser1.getUserType()); //存入缓存中 - addTokenToRedis(token, appUser.getId()); + addTokenToRedis(token, appUser1.getId()); return ResultUtil.success(appletLoginRes); }catch (Exception e){ e.printStackTrace(); @@ -137,6 +207,130 @@ } } + @Override + public SearchIntermediaryRes searchIntermediaryList(SearchIntermediaryReq req) { + req.setPageNum((req.getPageNum() - 1) * req.getPageSize()); + //区域 + List<Integer> districtIds = new ArrayList<>(); + List<Integer> cityIds = new ArrayList<>(); + if (req.getDistrict() != null &&(!req.getDistrict().equals("")) ){ + // 一级id + Integer integer = Integer.valueOf(req.getDistrict()); + districtIds.add(integer); + if (req.getArea()!=null && (!req.getArea().equals(""))){ + String[] split = req.getArea().split(","); + for (String s : split) { + cityIds.add(Integer.valueOf(s)); + } + } + } + SearchIntermediaryRes searchIntermediaryRes = new SearchIntermediaryRes(); + List<SearchIntermediaryListRes> res =this.baseMapper.searchIntermediaryList(req,districtIds,cityIds); + searchIntermediaryRes.setList(res); + searchIntermediaryRes.setTotal(res.size()); + return searchIntermediaryRes; + } + + @Override + public ResultUtil<AppUser> userInfo() { + // 获取当前登录用户 + AppUser appUser = appUserService.getAppUser(); + return ResultUtil.success(appUser); + + } + @Autowired + private IHousingDemandService housingDemandService; + @Override + public ResultUtil<CollectRes> collect() { + // 查询发布的求房源信息 + SearchHousingDemandReq req = new SearchHousingDemandReq(); + SearchHousingDemandRes searchHousingDemandRes = housingDemandService.searchHousingDemand(req); + List<SearchHousingDemandListRes> list1 = searchHousingDemandRes.getList(); + List<SearchHousingDemandListRes> collect1 = list1.stream().filter(t -> t.getAppuserId() == appUserService.getAppUser().getId()). + collect(Collectors.toList()); + // 拿到收藏的房源ids + List<Integer> ids = new ArrayList<>(); + CollectRes searchIntermediaryRes = new CollectRes(); + searchIntermediaryRes.setList1(collect1); + List<CollectListRes> list = houseResourceService.collect(ids); + long count1 = collect1.stream().filter(t -> t.getType() == 1).count(); + long count = list.stream().filter(t -> t.getType() == 1).count(); + // 草稿数量 + searchIntermediaryRes.setDraft(Integer.parseInt(String.valueOf(count))+Integer.parseInt(String.valueOf(count1))); + // 上架房源数 + int size = list.stream().filter(t -> t.getStatus() == 1 && t.getType()==2).collect(Collectors.toList()).size(); + searchIntermediaryRes.setOn(size); + // 下架房源数 + int size1 = list.stream().filter(t -> t.getStatus() == 0 && t.getType()==2).collect(Collectors.toList()).size(); + searchIntermediaryRes.setOff(size1); + for (CollectListRes collectListRes : list) { + // 查询这个房源的收藏 + int collect = collectionHouseResourceService.selectList(new EntityWrapper<CollectionHouseResource>() + .eq("house_resource_id", collectListRes.getId())).size(); + collectListRes.setCollect(collect); + // 根据区id 查询下级 + Region city = regionService.selectById(collectListRes.getCityId()); + Region dis = regionService.selectById(collectListRes.getDistrictId()); + Region region = regionService.selectOne(new EntityWrapper<Region>().eq("parent_id",dis.getId())); + StringBuilder stringBuilder = new StringBuilder(""); + stringBuilder.append(dis.getName()); + if (region!=null){ + stringBuilder.append("/"+region.getName()); + Region region1 = regionService.selectOne(new EntityWrapper<Region>().eq("parent_id",region.getId())); + if (region!=null){ + stringBuilder.append(region1.getName()); + Region region2 = regionService.selectOne(new EntityWrapper<Region>().eq("parent_id",region1.getId())); + if (region2!=null){ + stringBuilder.append("/"+region2.getName()); + } + } + } + collectListRes.setAddress(city.getName()+">"+stringBuilder.toString()); + } + searchIntermediaryRes.setList(list); + searchIntermediaryRes.setTotal(list.size()); + return ResultUtil.success(searchIntermediaryRes); + } + + @Override + public ResultUtil<CollectRes> release(UserInfoQuery query) { + query.setPageNum((query.getPageNum() - 1) * query.getPageSize()); + // 房源ids + List<Integer> ids = collectionHouseResourceService.selectList(new EntityWrapper<CollectionHouseResource>() + .eq("app_user_id", appUserService.getAppUser().getId())) + .stream().map(CollectionHouseResource::getHouseResourceId).collect(Collectors.toList()); + List<Integer> collect = houseResourceService.selectList(new EntityWrapper<HouseResource>() + .eq("is_delete", 0) + .eq("status", 1) + .eq("auth_status", 2) + .in("id", ids)).stream().map(HouseResource::getId).collect(Collectors.toList()); + List<CollectListRes> list = houseResourceService.release(query,collect); + for (CollectListRes collectListRes : list) { + // 根据区id 查询下级 + Region city = regionService.selectById(collectListRes.getCityId()); + Region dis = regionService.selectById(collectListRes.getDistrictId()); + Region region = regionService.selectOne(new EntityWrapper<Region>().eq("parent_id",dis.getId())); + StringBuilder stringBuilder = new StringBuilder(""); + stringBuilder.append(dis.getName()); + if (region!=null){ + stringBuilder.append("/"+region.getName()); + Region region1 = regionService.selectOne(new EntityWrapper<Region>().eq("parent_id",region.getId())); + if (region!=null){ + stringBuilder.append(region1.getName()); + Region region2 = regionService.selectOne(new EntityWrapper<Region>().eq("parent_id",region1.getId())); + if (region2!=null){ + stringBuilder.append("/"+region2.getName()); + } + } + } + collectListRes.setAddress(city.getName()+">"+stringBuilder.toString()); + } + CollectRes searchIntermediaryRes = new CollectRes(); + searchIntermediaryRes.setList(list); + searchIntermediaryRes.setTotal(list.size()); + return ResultUtil.success(); + } + /** * 添加新用户到数据库 -- Gitblit v1.7.1