wuhongshuang 2 роки тому
батько
коміт
a799684f8e

+ 5 - 0
pom.xml

@@ -148,6 +148,11 @@
 			<version>5.7.16</version>
 		</dependency>
 		<dependency>
+			<groupId>cn.hutool</groupId>
+			<artifactId>hutool-http</artifactId>
+			<version>5.7.16</version>
+		</dependency>
+		<dependency>
 			<groupId>commons-beanutils</groupId>
 			<artifactId>commons-beanutils</artifactId>
 			<version>1.8.3</version>

+ 0 - 26
src/main/java/com/szwl/config/CorsConfig.java

@@ -1,26 +0,0 @@
-package com.szwl.config;
-
-import org.springframework.web.filter.CorsFilter;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.cors.CorsConfiguration;
-import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
-
-@Configuration
-public class CorsConfig {
-
-    @Bean
-    public CorsFilter corsFilter() {
-        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
-        CorsConfiguration config = new CorsConfiguration();
-//        config.addAllowedOrigin("*"); // 允许所有域名访问,可以根据需求修改
-        config.addAllowedOrigin("http://localhost:8080");
-        config.addAllowedOrigin("http://szwltest.sunzee.com.cn");
-        config.addAllowedOrigin("https://open.weixin.qq.com");
-        config.addAllowedOrigin("https://api.weixin.qq.com");
-        config.addAllowedHeader("*"); // 允许所有请求头
-        config.addAllowedMethod("*"); // 允许所有请求方法
-        source.registerCorsConfiguration("/**", config);
-        return new CorsFilter(source);
-    }
-}

+ 1 - 11
src/main/java/com/szwl/controller/TAdminController.java

@@ -486,17 +486,7 @@ public class TAdminController {
             tAdmin.setManagerId(managerId);
             tAdminService.getById(tAdmin);
         }
-        UserDetailBO userDetailBO = BeanUtil.copyProperties(tAdmin,UserDetailBO.class);
-
-        String token = IdUtil.simpleUUID();
-        userDetailBO.setCurrentToken(token);
-        // 获取拥有的权限菜单
-        Set<String> menuList = sysRoleService.listAuthMenuByUserId(userDetailBO.getId());
-        userDetailBO.setMenuCodeList(CollUtil.newArrayList(menuList));
-        // 抹除密码
-        userDetailBO.setPassword(null);
-        // 保存到redis
-        tokenManager.saveAuthentication(token,userDetailBO);
+        UserDetailBO userDetailBO = tAdminService.getUserDetailBO(tAdmin);
         return R.ok(userDetailBO);
     }
     @ApiOperation(value = "修改密码")

+ 27 - 61
src/main/java/com/szwl/controller/WxLoginController.java

@@ -1,33 +1,32 @@
 package com.szwl.controller;
 
-import com.rabbitmq.http.client.domain.UserInfo;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import com.alibaba.fastjson.JSON;
+import com.szwl.exception.MyException;
 import com.szwl.model.bo.R;
-import com.szwl.model.bo.ResponseModel;
 import com.szwl.model.bo.UserDetailBO;
 import com.szwl.model.entity.TAdmin;
 import com.szwl.model.entity.TWechat;
-import com.szwl.model.utils.HttpClientUtils;
 import com.szwl.service.TAdminService;
 import com.szwl.service.TWechatService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.json.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import com.alibaba.fastjson.JSONObject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
-import java.security.MessageDigest;
-import java.util.*;
-
+@Slf4j
 @Api(value = "/WxLoginController", tags = {"微信登录接口"})
 @RestController
 @RequestMapping("/wxLogin")
-@CrossOrigin(origins = {"http://szwltest.sunzee.com.cn", "https://szwl.sunzee.com.cn", "https://sz.sunzee.com.cn"}) // 允许来自 http://xxx 的跨域请求
 public class WxLoginController {
 
     @Autowired
@@ -49,7 +48,7 @@ public class WxLoginController {
     @ApiOperation(value = "用户默认授权,获取code")
     @GetMapping("/menuOauth")
     public R<String> getOpenid() {
-        String path = http + "/shenze/#/home";
+        String path = http + "/shenzeVue/wxLogin";
         try {
             String redirectUrl = URLEncoder.encode(path, "UTF-8");
             // 第一步:用户静默授权,获取code
@@ -67,64 +66,31 @@ public class WxLoginController {
         }
     }
 
-    @ApiOperation(value = "微信授权回调,返回openid")
-    @GetMapping("/callback")
-    public void callback(HttpServletRequest request, HttpServletResponse response) throws IOException {
+    public static void main(String[] args) {
+
+    }
+    @ApiOperation(value = "用微信code 获取openid,再获取用户信息")
+    @GetMapping("/getUserDetailByWxCode")
+    public R getUserDetailByWxCode(String code) throws IOException {
         // 第二步:使用code换取access_token和openid
-        String code = request.getParameter("code");
         String url = "https://api.weixin.qq.com/sns/oauth2/access_token?"
                 + "appid=" + appid
                 + "&secret=" + appsecret
                 + "&code=" + code
                 + "&grant_type=authorization_code";
-
-        JSONObject jsonObject = HttpClientUtils.get(url);
-
+        HttpResponse httpResponse = HttpRequest.get(url).execute();
+        JSONObject jsonObject = JSON.parseObject(httpResponse.body());
+        log.info("getUserDetailByWxCode:{}",jsonObject);
         String openid = jsonObject.getString("openid");
-
-        // 返回openid给前端
-        response.setContentType("application/json");
-        response.setCharacterEncoding("UTF-8");
-        response.getWriter().write("{\"openid\":\"" + openid + "\"}");
-    }
-
-    @ApiOperation(value = "微信登录")
-    @GetMapping("/wxLogin")
-    public R<String> wxLogin(@RequestParam("openid") String openid) {
-        // 根据openid获取用户信息
+        // 根据openid 获取绑定的用户信息
         TWechat tWechat = tWechatService.lambdaQuery().eq(TWechat::getOpenId, openid).one();
-        if (tWechat != null) {
-            String adminId = tWechat.getAdminId();
-            if (adminId != null) {
-                // 根据adminId获取用户名和密码
-                TAdmin tAdmin = tAdminService.getById(adminId);
-                if (tAdmin != null) {
-                    String username = tAdmin.getUsername();
-                    String password = tAdmin.getPassword();
-                    // 调用已有的登录接口实现登录,使用用户名和密码
-                    TAdminController tAdminController = new TAdminController();
-                    ResponseModel<UserDetailBO> loginResult = tAdminController.login(username, password);
-                    if (loginResult.getCode().equals("00000")) {
-                        // 登录成功
-                        // 解析重定向url参数,并重定向到home页面
-                        String redirectUrl = "http://szwltest.sunzee.com.cn/shenze/#/home";
-                        return R.ok(redirectUrl);
-                    } else {
-                        // 登录失败
-                        return R.fail("登录失败");
-                    }
-                } else {
-                    // 用户信息不存在
-                    return R.fail("用户信息不存在");
-                }
-            } else {
-                // 当前账户未绑定微信
-                return R.fail("当前账户未绑定微信");
-            }
-        } else {
-            // 获取用户信息失败
-            return R.fail("获取用户信息失败");
+        if(null == tWechat){
+            log.info("没有找到绑定的用户信息,请绑定后再登录,openid:",openid);
+            throw new MyException("没有找到绑定的用户信息,请绑定后再登录");
         }
+        TAdmin tAdmin = tAdminService.getById(tWechat.getAdminId());
+        UserDetailBO userDetailBO = tAdminService.getUserDetailBO(tAdmin);
+        return R.ok(userDetailBO);
     }
 
 }

+ 3 - 0
src/main/java/com/szwl/service/TAdminService.java

@@ -1,6 +1,7 @@
 package com.szwl.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.szwl.model.bo.UserDetailBO;
 import com.szwl.model.entity.TAdmin;
 import com.szwl.model.query.TAdminParam;
 import com.szwl.service.base.MyIService;
@@ -19,4 +20,6 @@ public interface TAdminService extends MyIService<TAdmin> {
     List<TAdmin> listByXml(TAdminParam param);
 
     IPage<TAdmin> pageByXml(IPage page, TAdminParam param);
+
+    UserDetailBO getUserDetailBO(TAdmin tAdmin);
 }

+ 31 - 0
src/main/java/com/szwl/service/impl/TAdminServiceImpl.java

@@ -1,15 +1,24 @@
 package com.szwl.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.IdUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.szwl.manager.TokenManager;
+import com.szwl.model.bo.UserDetailBO;
 import com.szwl.model.entity.TAdmin;
 import com.szwl.mapper.TAdminMapper;
 import com.szwl.model.entity.TArea;
 import com.szwl.model.query.TAdminParam;
+import com.szwl.service.SysRoleService;
+import com.szwl.service.SysUserRoleService;
 import com.szwl.service.TAdminService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.Set;
 
 /**
  * <p>
@@ -21,6 +30,13 @@ import java.util.List;
  */
 @Service
 public class TAdminServiceImpl extends ServiceImpl<TAdminMapper, TAdmin> implements TAdminService {
+    @Autowired
+    SysRoleService sysRoleService;
+    @Autowired
+    SysUserRoleService sysUserRoleService;
+    @Autowired
+    TokenManager tokenManager;
+
     @Override
     public List<TAdmin> listByXml(TAdminParam param){
         return this.baseMapper.queryByXml(param);
@@ -30,4 +46,19 @@ public class TAdminServiceImpl extends ServiceImpl<TAdminMapper, TAdmin> impleme
     public IPage<TAdmin> pageByXml(IPage page, TAdminParam param){
         return this.baseMapper.queryByXml(page, param);
     }
+    @Override
+    public UserDetailBO getUserDetailBO(TAdmin tAdmin){
+        UserDetailBO userDetailBO = BeanUtil.copyProperties(tAdmin,UserDetailBO.class);
+
+        String token = IdUtil.simpleUUID();
+        userDetailBO.setCurrentToken(token);
+        // 获取拥有的权限菜单
+        Set<String> menuList = sysRoleService.listAuthMenuByUserId(userDetailBO.getId());
+        userDetailBO.setMenuCodeList(CollUtil.newArrayList(menuList));
+        // 抹除密码
+        userDetailBO.setPassword(null);
+        // 保存到redis
+        tokenManager.saveAuthentication(token,userDetailBO);
+        return userDetailBO;
+    }
 }

+ 2 - 2
src/main/resources/bootstrap.yml

@@ -72,9 +72,9 @@ eureka:
   client:
     serviceUrl:
       defaultZone: http://120.25.151.99:49001/eureka/
-#    register-with-eureka: true
+    register-with-eureka: true
 #    本地测试的时候改成 false
-    register-with-eureka: false
+#    register-with-eureka: false
 #  instance:
 #    prefer-ip-address: true
 #    ip-address: 112.96.106.247