瀏覽代碼

mybatisplus配置

785834757 1 年之前
父節點
當前提交
9a329a7621

+ 2 - 1
authentication/src/main/java/com/jzg/config/SecurityConfig.java

@@ -61,7 +61,8 @@ public class SecurityConfig {
     public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
         http.csrf().disable();
         http.authorizeHttpRequests(auth -> auth
-                        .requestMatchers("/swagger-ui/**", "/v3/api-docs/**", "/swagger-resources/**", "/webjars/**", "/favicon.ico","/auth/login","/auth/captchaById").permitAll()
+                        .requestMatchers("/swagger-ui/**", "/v3/api-docs/**", "/swagger-resources/**", "/webjars/**", "/favicon.ico",
+                                "/auth/login","/auth/captchaById","/auth/register").permitAll()
                         .anyRequest().authenticated()  // 其他接口需认证
                 )
 //                .formLogin((form) -> form

+ 19 - 0
authentication/src/main/java/com/jzg/controller/AuthController.java

@@ -1,6 +1,7 @@
 package com.jzg.controller;
 
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jzg.aop.PremissionCheck;
 import com.jzg.config.JzgTokenService;
 import com.jzg.config.JzgUserDetailsService;
@@ -20,6 +21,7 @@ import com.wf.captcha.SpecCaptcha;
 import com.wf.captcha.base.Captcha;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.responses.ApiResponse;
+import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.models.annotations.OpenAPI30;
 import jakarta.servlet.ServletException;
 import jakarta.servlet.ServletOutputStream;
@@ -47,6 +49,7 @@ import java.util.Base64;
 import java.util.Objects;
 import java.util.concurrent.TimeUnit;
 
+@Tag(name="授权接口")
 @RestController
 @RequestMapping("/auth")
 public class AuthController extends BaseController {
@@ -130,4 +133,20 @@ public class AuthController extends BaseController {
         String userName = getUserName();
         return HttpResult.ok("");
     }
+
+    @PostMapping("register")
+    @Operation(summary = "用户注册")
+    public HttpResult register(@RequestBody SysUser sysUser){
+        boolean register = sysUserService.register(sysUser);
+        return HttpResult.ok("");
+    }
+
+    @PostMapping("getUsers")
+    @Operation(summary = "用户列表")
+    public HttpResult getUsers(){
+        Page page = new Page();
+        page.setSize(10);
+        page.setPages(1);
+        return HttpResult.ok(sysUserService.page(page));
+    }
 }

+ 20 - 1
authentication/src/main/java/com/jzg/entity/SysUser.java

@@ -1,13 +1,32 @@
 package com.jzg.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.jzg.core.base.BaseModel;
+import io.swagger.v3.oas.annotations.media.Schema;
 import jdk.jfr.DataAmount;
 import lombok.Data;
 
+@Schema(description = "核心用户表")
 @Data
-public class SysUser {
+public class SysUser extends BaseModel {
+
+    @Schema(description = "用户id")
     private String id;
 
+    @Schema(description = "用户名")
+    private String username;
+
+    @Schema(description = "密码")
     private String password;
 
+    @Schema(description = "盐")
     private String salt;
+
+    @Schema(description = "手机号")
+    private String mobile;
+
+    @Schema(description = "账号状态")
+    private Integer account_status;
+
 }

+ 13 - 3
authentication/src/main/java/com/jzg/filter/TokenAuthenticationFilter.java

@@ -18,6 +18,7 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
+import java.util.regex.Pattern;
 
 public class TokenAuthenticationFilter extends OncePerRequestFilter {
 
@@ -35,10 +36,19 @@ public class TokenAuthenticationFilter extends OncePerRequestFilter {
         List<String> doList = new ArrayList<>();
         doList.add("/auth/login");
         doList.add("/auth/captchaById");
+        doList.add("/auth/register");
+        doList.add("/swagger-resources/");
+        doList.add("/swagger-ui/");
+        doList.add("/v3/api-docs");
+        doList.add("/webjars/");
         String path = request.getRequestURI();
-        if(doList.contains(path)){
-            filterChain.doFilter(request, response);
-            return;
+        for (String pattern : doList) {
+            // 使用正则表达式匹配
+            Pattern p = Pattern.compile(pattern + ".*");  // .* 匹配所有以 pattern 开头的路径
+            if (p.matcher(path).matches() || doList.contains(path)) {
+                filterChain.doFilter(request, response);
+                return;
+            }
         }
         String authorization = jzgTokenService.getToken(request.getHeader("Authorization"));
         if(!Objects.isNull(authorization)){

+ 8 - 0
authentication/src/main/java/com/jzg/service/SysUserService.java

@@ -6,4 +6,12 @@ import org.springframework.stereotype.Service;
 
 
 public interface SysUserService extends IService<SysUser> {
+
+    /**
+     * 用户注册
+     * @param sysUser
+     * @return
+     */
+    public boolean register(SysUser sysUser);
+
 }

+ 6 - 0
authentication/src/main/java/com/jzg/service/impl/SysUserServiceImpl.java

@@ -8,4 +8,10 @@ import org.springframework.stereotype.Service;
 
 @Service
 public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService {
+    @Override
+    public boolean register(SysUser sysUser) {
+        sysUser.setId("1");
+        boolean save = this.save(sysUser);
+        return save;
+    }
 }

+ 1 - 1
authentication/src/main/resources/application.yml

@@ -8,7 +8,7 @@ spring:
       database: 0
 
   datasource:
-      url: jdbc:mysql://39.98.239.48:3366/agent?serverTimezone=Asia/Shanghai&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true
+      url: jdbc:mysql://39.98.239.48:3366/platform?serverTimezone=Asia/Shanghai&allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&rewriteBatchedStatements=true
       username: root
       password: '@RqGHG#KZ*C9ytkQ'
       driverClassName: com.mysql.cj.jdbc.Driver

+ 5 - 0
commons/pom.xml

@@ -22,5 +22,10 @@
             <groupId>org.springdoc</groupId>
             <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
+        </dependency>
     </dependencies>
 </project>

+ 58 - 0
commons/src/main/java/com/jzg/config/DataPermissionInterceptor.java

@@ -0,0 +1,58 @@
+package com.jzg.config;
+
+import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor;
+import org.apache.ibatis.executor.Executor;
+import org.apache.ibatis.executor.statement.StatementHandler;
+import org.apache.ibatis.mapping.MappedStatement;
+import org.apache.ibatis.plugin.*;
+import org.apache.ibatis.mapping.BoundSql;
+import org.apache.ibatis.reflection.MetaObject;
+import org.apache.ibatis.session.ResultHandler;
+import org.apache.ibatis.session.RowBounds;
+import org.redisson.api.RedissonClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.lang.reflect.Field;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.Properties;
+
+/**
+ * 数据权限拦截器
+ */
+@Intercepts({
+        @Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class}),
+//        @Signature(type = Executor.class, method = "update", args = {MappedStatement.class, Object.class})
+})
+public class DataPermissionInterceptor implements InnerInterceptor {
+    private final RedissonClient redissonClient;
+
+    public DataPermissionInterceptor(RedissonClient redissonClient){
+        this.redissonClient = redissonClient;
+    }
+
+    @Override
+    public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException {
+        String currentUserDeptId = "123";
+
+//        // 获取原始 SQL
+//        String sql = boundSql.getSql();
+//
+//        if (sql.toLowerCase().contains("select")) {
+//            sql += " AND dept_id = '" + currentUserDeptId + "'";
+//            Field field = null;
+//            try {
+//                field = BoundSql.class.getDeclaredField("sql");
+//            } catch (NoSuchFieldException e) {
+//                throw new RuntimeException(e);
+//            }
+//            field.setAccessible(true);
+//            try {
+//                field.set(boundSql, sql);
+//            } catch (IllegalAccessException e) {
+//                throw new RuntimeException(e);
+//            }
+//        }
+    }
+}

+ 36 - 0
commons/src/main/java/com/jzg/config/MyBatisMetaObjectHandler.java

@@ -0,0 +1,36 @@
+package com.jzg.config;
+
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import com.jzg.core.base.BaseController;
+import org.apache.ibatis.reflection.MetaObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.time.LocalDateTime;
+
+@Component
+public class MyBatisMetaObjectHandler implements MetaObjectHandler {
+
+    @Autowired
+    BaseController baseController;
+
+    @Override
+    public void insertFill(MetaObject metaObject) {
+        // 填充创建时间
+        this.setFieldValByName("createTime", LocalDateTime.now(), metaObject);
+        // 填充更新时间
+        this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
+        // 填充创建人,假设从线程中获取当前用户的ID
+        this.setFieldValByName("createBy", baseController.getUserName(), metaObject);
+        // 填充更新人
+        this.setFieldValByName("updateBy", baseController.getUserName(), metaObject);
+    }
+
+    @Override
+    public void updateFill(MetaObject metaObject) {
+        // 填充更新时间
+        this.setFieldValByName("updateTime", LocalDateTime.now(), metaObject);
+        // 填充更新人
+        this.setFieldValByName("updateBy", baseController.getUserName(), metaObject);
+    }
+}

+ 36 - 0
commons/src/main/java/com/jzg/config/MyBatisPlusConfig.java

@@ -0,0 +1,36 @@
+package com.jzg.config;
+
+
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.redisson.api.RedissonClient;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MyBatisPlusConfig {
+
+    @Autowired
+    RedissonClient redissonClient;
+
+    @Bean
+    public DataPermissionInterceptor dataPermissionInterceptor() {
+        return new DataPermissionInterceptor(redissonClient);
+    }
+
+    @Bean
+    public PaginationInnerInterceptor paginationInnerInterceptor(){
+        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
+        return paginationInnerInterceptor;
+    }
+
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+        //配置拦截器
+        interceptor.addInnerInterceptor(dataPermissionInterceptor());
+        interceptor.addInnerInterceptor(paginationInnerInterceptor());
+        return interceptor;
+    }
+}

+ 27 - 0
commons/src/main/java/com/jzg/core/base/BaseModel.java

@@ -0,0 +1,27 @@
+package com.jzg.core.base;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.v3.oas.annotations.media.Schema;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+public class BaseModel {
+
+    @Schema(description = "创建人")
+    @TableField(fill = FieldFill.INSERT)
+    private String createBy;
+
+    @Schema(description = "创建时间")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @Schema(description = "修改人")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private String updateBy;
+
+    @Schema(description = "创建时间")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+}

+ 2 - 1
gateway/src/main/java/com/jzg/GateWayApplication.java

@@ -2,8 +2,9 @@ package com.jzg;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 
-@SpringBootApplication
+@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
 public class GateWayApplication {
 
     public static void main(String[] args) {

+ 1 - 1
pom.xml

@@ -102,7 +102,7 @@
       <dependency>
         <groupId>org.springframework.statemachine</groupId>
         <artifactId>spring-statemachine-core</artifactId>
-        <version>4.0.0</version> <!-- 你可以选择适合你的版本 -->
+        <version>3.0.0</version> <!-- 你可以选择适合你的版本 -->
       </dependency>
 
       <!-- 数据库驱动,如 MySQL -->