lwhhszx 3 лет назад
Родитель
Сommit
1b6c127536

+ 1 - 0
PAS/src/main/java/cn/cslg/pas/common/GlobalException.java

@@ -22,6 +22,7 @@ public class GlobalException {
         // 打印堆栈,以供调试
         e.printStackTrace();
         if (e instanceof NotLoginException) {
+            NotLoginException notLoginException = (NotLoginException) e;
             return Response.error(ResponseEnum.UNAUTHORIZED);
         } else if (e instanceof PermissionException) {
             return Response.error(ResponseEnum.NOT_PERMISSION);

+ 24 - 23
PAS/src/main/java/cn/cslg/pas/common/config/SaTokenConfigure.java

@@ -10,26 +10,27 @@ import cn.dev33.satoken.stp.StpUtil;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
-@Configuration
-public class SaTokenConfigure {
-
-    @Bean
-    public SaServletFilter getSaServletFilter() {
-        return new SaServletFilter()
-                .addInclude(Constants.API_VERSION_V2 + "/**")
-                .addExclude("/favicon.ico")
-                .setAuth(obj -> {
-                    SaRouter.match(Constants.API_VERSION_V2 + "/**").notMatch(
-                            Constants.API_VERSION_V2 + "/ws/**",
-                            Constants.API_VERSION_V2 + "/test/**",
-                            Constants.API_VERSION_V2 + "/oauth2/**",
-                            Constants.API_VERSION_V2 + "/admin/**",
-                            Constants.API_VERSION_V2 + "/common/download",
-                            Constants.API_VERSION_V2 + "/common/export"
-                    ).check(StpUtil::checkLogin);
-                    SaRouter.match(Constants.API_VERSION_V2 + "/admin/**", Constants.API_VERSION_V2 + "/admin/login", StpAdminUtil::checkLogin);
-                })
-                .setError(e -> Response.error(ResponseEnum.UNAUTHORIZED));
-    }
-
-}
+//@Configuration
+//public class SaTokenConfigure {
+//
+//    @Bean
+//    public SaServletFilter getSaServletFilter() {
+//        return new SaServletFilter()
+//                .addInclude(Constants.API_VERSION_V2 + "/**")
+//                .addExclude("/favicon.ico")
+//                .setAuth(obj -> {
+//                    SaRouter.match(Constants.API_VERSION_V2 + "/**").notMatch(
+//                            Constants.API_VERSION_V2 + "/ws/**",
+//                            Constants.API_VERSION_V2 + "/test/**",
+//                            Constants.API_VERSION_V2 + "/oauth2/**",
+//                            Constants.API_VERSION_V2 + "/admin/**",
+//                            Constants.API_VERSION_V2 + "/common/download",
+//                            Constants.API_VERSION_V2 + "/common/export",
+//                            Constants.API_VERSION_V2 + "/project/**"
+//                    ).check(StpUtil::checkLogin);
+//                    SaRouter.match(Constants.API_VERSION_V2 + "/admin/**", Constants.API_VERSION_V2 + "/admin/login", StpAdminUtil::checkLogin);
+//                })
+//                .setError(e -> Response.error(ResponseEnum.UNAUTHORIZED));
+//    }
+//
+//}

+ 6 - 3
PAS/src/main/java/cn/cslg/pas/controller/OAuth2Controller.java

@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 
 @Tag(name = "登录与用户信息")
 @RestController
@@ -40,14 +41,16 @@ public class OAuth2Controller {
 
     @PostMapping("token")
     @Operation(summary = "用户登录")
-    public String getTokenByUsername(String username, String password, String code, String uuid) {
-        return oAuth2Service.getTokenByUsername(username, password, code, uuid);
+    public String getTokenByUsername(String username, String password, String code, String uuid) throws IOException {
+       // return oAuth2Service.getTokenByUsername(username, password, code, uuid);
+        return  oAuth2Service.login(username,password,code,uuid);
     }
 
     @GetMapping("verifyCode")
     @Operation(summary = "获取登录验证码")
     public String getVerifyCode(HttpServletRequest request, HttpServletResponse response) throws Exception {
-        return oAuth2Service.getVerifyCode(request, response);
+//        return oAuth2Service.getVerifyCode(request, response);
+        return  oAuth2Service.verifyCode();
     }
 
     @PostMapping("changePwd")

+ 64 - 0
PAS/src/main/java/cn/cslg/pas/service/OAuth2Service.java

@@ -10,18 +10,25 @@ import cn.cslg.pas.domain.Project;
 import cn.cslg.pas.domain.ProjectUser;
 import cn.cslg.pas.domain.User;
 import cn.cslg.pas.common.utils.CacheUtils;
+import cn.dev33.satoken.stp.SaLoginModel;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.captcha.CaptchaUtil;
 import cn.hutool.captcha.CircleCaptcha;
 import cn.hutool.core.img.ImgUtil;
 import cn.hutool.core.lang.UUID;
 import cn.hutool.crypto.SecureUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import lombok.RequiredArgsConstructor;
+import okhttp3.*;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
@@ -35,6 +42,9 @@ public class OAuth2Service {
     private final RedisUtil redisUtil;
     private final ProjectUserService projectUserService;
     private final ProjectService projectService;
+    @Value("${authorUrl}")
+    private  String url;
+    public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8");
 
     public User getUserinfo() {
         Integer userId = StpUtil.getLoginIdAsInt();
@@ -105,6 +115,60 @@ public class OAuth2Service {
         return Response.success(result);
     }
 
+    /**
+     * @return 1.生成验证码的base64转码 2.生成的UUID 与Redis里面的验证码KEY值一致
+     * @author 沈永艺
+     */
+    public String verifyCode() throws Exception {
+        RequestBody requestBody = new FormBody.Builder()
+                .build();
+        OkHttpClient okHttpClient = new OkHttpClient();
+
+        Request request = new Request.Builder()
+                .url(url+"/permission/api/admin/verifyCode")
+                .get()
+                .build();
+        String resBody = okHttpClient.newCall(request).execute().body().string();
+        JSONObject jsonObject = JSONObject.parseObject(resBody);
+        JSONObject data = (JSONObject) jsonObject.get("data");
+        Object captcha =data.get("captcha");
+        Object uuid   = data.get("uuid");
+        Object code = data.get("code");
+        Map<String, String> result = new HashMap<>();
+        result.put("captcha",captcha.toString());
+        result.put("uuid", uuid.toString());
+        result.put("code", code.toString());
+        //将验证码存放到Redis里面并设置
+        //过期时间为 60 单位:秒
+        //KEY值格式为: 验证码:UUID  VALUE值为:验证码生成工具所生成的验证码
+        return Response.success(result);
+    }
+    /**
+     * @param
+     * @return 登录成功的信息
+     * @author 沈永艺
+     */
+    public String login( String username,String password,String code,String uuid) throws IOException {
+        Map<String,Object> map =new HashMap<>();
+   map.put("code",code);
+        map.put("uuid",uuid);
+        map.put("username",username);
+        map.put("password",password);
+     JSONObject json =new JSONObject(map);
+        RequestBody a =  RequestBody.create(JSON, String.valueOf(json));
+        OkHttpClient okHttpClient = new OkHttpClient();
+        Request request = new Request.Builder()
+                .url(url+"/permission/api/admin/login")
+                .post(a)
+                .build();
+        String resBody = okHttpClient.newCall(request).execute().body().string();
+       JSONObject jsonObject =JSONObject.parseObject(resBody);
+        String token =jsonObject.get("data").toString();
+
+
+        return Response.success(true);
+    }
+
     public String changePwd(String oldPassword, String newPassword) {
         Integer userId = StpUtil.getLoginIdAsInt();
         User user = userService.getById(userId);

+ 3 - 3
PAS/src/main/java/cn/cslg/pas/service/PatentFieldService.java

@@ -52,10 +52,10 @@ public class PatentFieldService {
 
     public List<PatentField> getUserSetting(SystemFieldVO params) {
         if (params.getRefresh() != null && params.getRefresh()) {
-            cacheUtils.deleteUserSystemFieldSetting(params.getProjectId(), params.getType(), params.getView(), StpUtil.getLoginIdAsInt());
+            cacheUtils.deleteUserSystemFieldSetting(params.getProjectId(), params.getType(), params.getView(), 3);
         }
         List<PatentField> dataList = this.getUserFieldDataList(params.getProjectId(), params.getType());
-        List<PatentField> userSetting = cacheUtils.getUserSystemFieldSetting(params.getProjectId(), params.getType(), params.getView(), StpUtil.getLoginIdAsInt());
+        List<PatentField> userSetting = cacheUtils.getUserSystemFieldSetting(params.getProjectId(), params.getType(), params.getView(), 3);
         if (userSetting == null || userSetting.size() == 0) {
             List<PatentField> defaultList = new ArrayList<>();
             List<PatentField> patentFieldList = this.getList(params.getType());
@@ -70,7 +70,7 @@ public class PatentFieldService {
                     defaultList = patentFieldList.stream().filter(item -> finalProjectField.contains(item.getKey())).collect(Collectors.toList());
                     break;
             }
-            cacheUtils.setUserSystemFieldSetting(params.getProjectId(), params.getType(), params.getView(), StpUtil.getLoginIdAsInt(), defaultList);
+            cacheUtils.setUserSystemFieldSetting(params.getProjectId(), params.getType(), params.getView(), 3, defaultList);
             userSetting = defaultList;
         }
         List<PatentField> finalUserSetting = userSetting;

+ 3 - 3
PAS/src/main/java/cn/cslg/pas/service/ProjectService.java

@@ -108,18 +108,18 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
     }
 
     public IPage<Project> getPageList(ProjectVO params) {
-        User user = cacheUtils.getLoginUser(StpUtil.getLoginIdAsInt());
+        User user = cacheUtils.getLoginUser(3);
         List<Integer> projectIds = new ArrayList<Integer>() {{
             add(-1);
         }};
         if (params.getMyself()) {
-            projectIds.addAll(projectUserService.getProIdByUserId(StpUtil.getLoginIdAsInt()));
+            projectIds.addAll(projectUserService.getProIdByUserId(3));
         }
         if (user.getUsername().equals(Constants.ADMIN_USERNAME)) {
             projectIds.addAll(projectService.list().stream().map(Project::getId).collect(Collectors.toList()));
         }
         params.setProIds(projectIds);
-        params.setCreateBy(StpUtil.getLoginIdAsInt());
+      params.setCreateBy(3);
         IPage<Project> pageList = baseMapper.getPageList(new Page<>(params.getCurrent(), params.getSize()), params);
         List<Project> dataList = pageList.getRecords();
         this.setDataList(dataList);

+ 3 - 3
PAS/src/main/resources/application-dev.yml

@@ -2,12 +2,12 @@ spring:
   redis:
     host: 192.168.0.57
     port: 6379
-    database: 2
+    database: 8
     timeout: 1000
   datasource:
-    url: jdbc:mysql://192.168.0.57:3306/pas?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
+    url: jdbc:mysql://47.101.137.223:3306/pas?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=GMT%2B8
     username: root
-    password: 123456
+    password: TU5x6IeBi7rl
     driver-class-name: com.mysql.cj.jdbc.Driver
     type: com.alibaba.druid.pool.DruidDataSource
     druid:

+ 7 - 6
PAS/src/main/resources/application.yml

@@ -2,10 +2,10 @@ server:
   servlet:
     context-path: /
   port: 8879
-sa-token:
-  activity-timeout: 18000
-  token-name: token
-  token-style: tik
+#sa-token:
+#  activity-timeout: 18000
+#  token-name: token
+#  token-style: tik
 spring:
   thymeleaf:
     cache: false
@@ -20,7 +20,7 @@ spring:
       max-file-size: 1000MB
       max-request-size: 1000MB
   profiles:
-    active: test
+    active: dev
   jackson:
     default-property-inclusion: non_null
     serialization:
@@ -43,4 +43,5 @@ mybatis-plus:
     #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
     map-underscore-to-camel-case: true
     cache-enabled: false
-  mapper-locations: classpath:mapper/*.xml
+  mapper-locations: classpath:mapper/*.xml
+authorUrl: http://192.168.0.56:8880