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