ソースを参照

Merge branch 'master' of http://114.55.67.98:8070/songxy/AI_Engineering

songxy 1 ヶ月 前
コミット
996fe80ceb

+ 9 - 1
ais_knowledge/knowledge/pom.xml

@@ -164,7 +164,15 @@
 					</execution>
 				</executions>
 			</plugin>
-		</plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>16</source>
+                    <target>16</target>
+                </configuration>
+            </plugin>
+        </plugins>
 	</build>
 
 </project>

+ 10 - 1
ais_knowledge/knowledge/sql/knowledge.sql

@@ -290,4 +290,13 @@ COMMENT ON COLUMN "public"."ai_knowledge_oa_file"."is_vectorized" IS '是否向
 -- ----------------------------
 -- Primary Key structure for table ai_knowledge_oa_file
 -- ----------------------------
-ALTER TABLE "public"."ai_knowledge_oa_file" ADD CONSTRAINT "ai_knowledge_oa_file_pkey" PRIMARY KEY ("id");
+ALTER TABLE "public"."ai_knowledge_oa_file" ADD CONSTRAINT "ai_knowledge_oa_file_pkey" PRIMARY KEY ("id");
+
+----- 20250519问答收集增加字段
+ALTER TABLE "public"."ai_question"
+    ADD COLUMN "user_name" varchar(255),
+  ADD COLUMN "dept_name" varchar(255);
+
+COMMENT ON COLUMN "public"."ai_question"."user_name" IS '用户名称';
+
+COMMENT ON COLUMN "public"."ai_question"."dept_name" IS '部门名称';

+ 3 - 3
ais_knowledge/knowledge/sql/user.sql

@@ -108,8 +108,8 @@ CREATE TABLE "system_login_log"
     "id"          int8                                        NOT NULL,
     "log_type"    int8                                        NOT NULL,
     "trace_id"    varchar(64) COLLATE "pg_catalog"."default"  NOT NULL,
-    "user_id"     int8                                        NOT NULL DEFAULT 0,
-    "user_type"   int2                                        NOT NULL,
+    "user_id"     varchar(64) COLLATE "pg_catalog"."default"  NOT NULL,
+    "user_type"   int2                                        ,
     "username"    varchar(50) COLLATE "pg_catalog"."default"  NOT NULL,
     "result"      int2                                        NOT NULL,
     "user_ip"     varchar(50) COLLATE "pg_catalog"."default"  NOT NULL,
@@ -172,7 +172,7 @@ CREATE TABLE "system_operate_log"
 (
     "id"               int8                                         NOT NULL,
     "trace_id"         varchar(64) COLLATE "pg_catalog"."default"   NOT NULL,
-    "user_id"          int8                                         NOT NULL,
+    "user_id"          varchar(64) COLLATE "pg_catalog"."default"   NOT NULL,
     "user_type"        int2                                         NOT NULL,
     "module"           varchar(50) COLLATE "pg_catalog"."default"   NOT NULL,
     "name"             varchar(50) COLLATE "pg_catalog"."default"   NOT NULL,

+ 12 - 0
ais_knowledge/knowledge/src/main/java/com/zjugis/ai/knowledge/config/ZjugisSecurityAutoConfiguration.java

@@ -2,8 +2,10 @@ package com.zjugis.ai.knowledge.config;
 
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.security.web.SecurityFilterChain;
 
 /**
  * Spring Security 自动配置类,主要用于相关组件的配置
@@ -27,4 +29,14 @@ public class ZjugisSecurityAutoConfiguration {
         return new BCryptPasswordEncoder(4);
     }
 
+    @Bean
+    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
+        http
+                .authorizeHttpRequests(auth -> auth
+                        .anyRequest().permitAll() // 允许所有请求
+                )
+                .csrf(csrf -> csrf.disable()); // 禁用 CSRF(如果是 API 服务)
+        return http.build();
+    }
+
 }

+ 25 - 0
ais_knowledge/knowledge/src/main/java/com/zjugis/ai/knowledge/controller/auth/AuthController.java

@@ -4,8 +4,12 @@ import com.alibaba.fastjson.JSONObject;
 import com.zjugis.ai.knowledge.common.pojo.CommonResult;
 import com.zjugis.ai.knowledge.controller.auth.vo.AuthLoginReqVO;
 import com.zjugis.ai.knowledge.controller.auth.vo.AuthLoginRespVO;
+import com.zjugis.ai.knowledge.controller.auth.vo.AuthPermissionInfoRespVO;
+import com.zjugis.ai.knowledge.dal.dataobject.user.AdminUserDO;
 import com.zjugis.ai.knowledge.enums.logger.LoginLogTypeEnum;
 import com.zjugis.ai.knowledge.service.auth.AdminAuthService;
+import com.zjugis.ai.knowledge.service.user.AdminUserService;
+import com.zjugis.ai.knowledge.util.object.BeanUtils;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import jakarta.annotation.Resource;
@@ -17,9 +21,12 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import static com.zjugis.ai.knowledge.common.pojo.CommonResult.success;
+import static com.zjugis.ai.knowledge.util.security.SecurityFrameworkUtils.getLoginUserId;
 import static com.zjugis.ai.knowledge.util.security.SecurityFrameworkUtils.obtainAuthorization;
 
 /**
@@ -36,6 +43,8 @@ public class AuthController {
     private String syUrl;
     @Resource
     private AdminAuthService authService;
+    @Resource
+    private AdminUserService userService;
 
     /**
      * 通过携带ticket的url获取用户信息
@@ -97,4 +106,20 @@ public class AuthController {
         return success(authService.refreshToken(refreshToken));
     }
 
+    @GetMapping("/get-permission-info")
+    @Operation(summary = "获取登录用户的权限信息")
+    public CommonResult<AuthPermissionInfoRespVO> getPermissionInfo() {
+        // 1.1 获得用户信息
+        AdminUserDO user = userService.getUser(getLoginUserId());
+        if (user == null) {
+            return null;
+        }
+
+        // 2. 拼接结果返回
+        AuthPermissionInfoRespVO.UserVO userVO = BeanUtils.toBean(user, AuthPermissionInfoRespVO.UserVO.class);
+        AuthPermissionInfoRespVO result = new AuthPermissionInfoRespVO();
+        result.setUser(userVO);
+        return success(result);
+    }
+
 }

+ 53 - 0
ais_knowledge/knowledge/src/main/java/com/zjugis/ai/knowledge/controller/auth/vo/AuthPermissionInfoRespVO.java

@@ -0,0 +1,53 @@
+package com.zjugis.ai.knowledge.controller.auth.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+import java.util.Set;
+
+@Schema(description = "管理后台 - 登录用户的权限信息 Response VO,额外包括用户信息和角色列表")
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+public class AuthPermissionInfoRespVO {
+
+    @Schema(description = "用户信息", requiredMode = Schema.RequiredMode.REQUIRED)
+    private UserVO user;
+
+    @Schema(description = "用户信息 VO")
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @Builder
+    public static class UserVO {
+
+        @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+        private String id;
+
+        @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道源码")
+        private String nickname;
+
+        @Schema(description = "用户头像", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/xx.jpg")
+        private String avatar;
+
+        @Schema(description = "电子签名", example = "https://10.10.10.7:18080/xxx.png")
+        private String signatureUrl;
+
+        @Schema(description = "部门名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "")
+        private String deptId;
+
+        @Schema(description = "部门名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "自然资源产品部")
+        private String deptName;
+
+        @Schema(description = "用户性别,参见 SexEnum 枚举类", example = "1")
+        private Integer sex;
+
+    }
+
+
+}

+ 0 - 1
ais_knowledge/knowledge/src/main/java/com/zjugis/ai/knowledge/controller/logger/dto/LoginLogCreateReqDTO.java

@@ -26,7 +26,6 @@ public class LoginLogCreateReqDTO {
     @Schema(description = "用户编号", example = "666")
     private String userId;
     @Schema(description = "用户类型,参见 UserTypeEnum 枚举", required = true, example = "2" )
-    @NotNull(message = "用户类型不能为空")
     private Integer userType;
     @Schema(description = "用户账号", required = true, example = "zjugis")
     @NotBlank(message = "用户账号不能为空")

+ 4 - 0
ais_knowledge/knowledge/src/main/java/com/zjugis/ai/knowledge/controller/question/vo/QuestionCreateReqVO.java

@@ -29,4 +29,8 @@ public class QuestionCreateReqVO {
     private String chatId;
 
     private Integer thinkTime;
+
+    private String userName;
+
+    private String deptName;
 }

+ 4 - 0
ais_knowledge/knowledge/src/main/java/com/zjugis/ai/knowledge/controller/question/vo/QuestionRespVO.java

@@ -34,6 +34,10 @@ public class QuestionRespVO {
 
     private Integer thinkTime;
 
+    private String userName;
+
+    private String deptName;
+
     /**
      * 创建时间
      */

+ 4 - 4
ais_knowledge/knowledge/src/main/java/com/zjugis/ai/knowledge/controller/user/UserController.java

@@ -37,7 +37,7 @@ public class UserController {
         return success(id);
     }
 
-    @PutMapping("update")
+    @PostMapping("/update")
     @Operation(summary = "修改用户")
     public CommonResult<Boolean> updateUser(@Valid @RequestBody UserUpdateReqVO reqVO) {
         userService.updateUser(reqVO);
@@ -45,7 +45,7 @@ public class UserController {
     }
 
 
-    @DeleteMapping("/delete")
+    @GetMapping("/delete")
     @Operation(summary = "删除用户")
     @Parameter(name = "id", description = "编号", required = true, example = "1024")
     public CommonResult<Boolean> deleteUser(@RequestParam("id") String id) {
@@ -53,14 +53,14 @@ public class UserController {
         return success(true);
     }
 
-    @PutMapping("/update-password")
+    @PostMapping("/update-password")
     @Operation(summary = "重置用户密码")
     public CommonResult<Boolean> updateUserPassword(@Valid @RequestBody UserUpdatePasswordReqVO reqVO) {
         userService.updateUserPassword(reqVO.getId(), reqVO.getPassword());
         return success(true);
     }
 
-    @PutMapping("/update-status")
+    @PostMapping("/update-status")
     @Operation(summary = "修改用户状态")
     public CommonResult<Boolean> updateUserStatus(@Valid @RequestBody UserUpdateStatusReqVO reqVO) {
         userService.updateUserStatus(reqVO.getId(), reqVO.getStatus());

+ 4 - 0
ais_knowledge/knowledge/src/main/java/com/zjugis/ai/knowledge/dal/dataobject/question/QuestionDO.java

@@ -37,4 +37,8 @@ public class QuestionDO extends BaseDO {
     private String chatId;
 
     private Integer thinkTime;
+
+    private String userName;
+
+    private String deptName;
 }

+ 1 - 12
ais_knowledge/knowledge/src/main/java/com/zjugis/ai/knowledge/dal/dataobject/user/AdminUserDO.java

@@ -52,10 +52,7 @@ public class AdminUserDO extends BaseDO {
      * 部门 ID
      */
     private String deptId;
-    /**
-     * 部门 名称
-     */
-    private String deptName;
+
     /**
      * 用户邮箱
      */
@@ -88,14 +85,6 @@ public class AdminUserDO extends BaseDO {
      * 最后登录时间
      */
     private LocalDateTime loginDate;
-    /**
-     * 电子签名
-     */
-    private String signatureUrl;
 
-    /**
-     * 是否参与考勤(0:不参与;1:参与)
-     */
-    private Boolean attendanceFlag;
 
 }