yuanhao 3 роки тому
батько
коміт
53bc059084

+ 29 - 1
in-cloud/pom.xml

@@ -14,10 +14,18 @@
     <properties>
         <maven.compiler.source>8</maven.compiler.source>
         <maven.compiler.target>8</maven.compiler.target>
-        <mybatis.plus.version>3.5.1</mybatis.plus.version>
+
     </properties>
 
+
     <dependencies>
+
+        <dependency>
+            <groupId>com.jiayue</groupId>
+            <artifactId>in-common-core</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
@@ -61,6 +69,26 @@
             <artifactId>mybatis-plus-boot-starter</artifactId>
             <version>${mybatis.plus.version}</version>
         </dependency>
+
+
+        <!-- Sa-Token 权限认证, 在线文档:http://sa-token.dev33.cn/ -->
+        <dependency>
+            <groupId>cn.dev33</groupId>
+            <artifactId>sa-token-spring-boot-starter</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>cn.dev33</groupId>
+            <artifactId>sa-token-dao-redis</artifactId>
+        </dependency>
+
+
+        <!-- 配置使用 redis 启动器 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-redis</artifactId>
+        </dependency>
+
     </dependencies>
 
     <build>

+ 44 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/config/RedisConfig.java

@@ -0,0 +1,44 @@
+package com.jiayue.insu.incloud.config;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+@Configuration
+public class RedisConfig {
+    @Bean
+    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
+        RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
+        redisTemplate.setConnectionFactory(redisConnectionFactory);
+        // 使用 GenericFastJsonRedisSerializer 替换默认序列化
+        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
+
+        //取objectmapper做转译器
+        ObjectMapper om = new ObjectMapper();
+        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
+        om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL);
+        jackson2JsonRedisSerializer.setObjectMapper(om);
+        //string序列化配置
+        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
+        //key采用string序列化配制
+        redisTemplate.setKeySerializer(stringRedisSerializer);
+        //hash的key采用string序列化配制
+        redisTemplate.setHashKeySerializer(stringRedisSerializer);
+        //value采用jackson序列化
+        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
+        //hash的value采用jackson序列化配置
+        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
+
+        // 设置支持事物
+        redisTemplate.setEnableTransactionSupport(true);
+        redisTemplate.afterPropertiesSet();
+        return redisTemplate;
+    }
+}

+ 0 - 4
in-cloud/src/main/java/com/jiayue/insu/incloud/controller/TestController.java

@@ -1,4 +0,0 @@
-package com.jiayue.insu.incloud.controller;
-
-public class TestController {
-}

+ 22 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/controller/UserController.java

@@ -0,0 +1,22 @@
+package com.jiayue.insu.incloud.controller;
+
+import com.jiayue.insu.incloud.entity.User;
+import com.jiayue.insu.incloud.service.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/user")
+public class UserController {
+    @Autowired
+    private UserService userService;
+
+    @GetMapping("/info")
+    public String  info(){
+        User byId = userService.getById(1);
+        System.out.println(byId);
+        return  "ok";
+    }
+}

+ 37 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/entity/User.java

@@ -0,0 +1,37 @@
+package com.jiayue.insu.incloud.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@TableName(value = "user")
+@Data
+public class User implements Serializable {
+    /**
+     * Id
+     */
+    @TableId(type = IdType.AUTO)
+    Long id;
+
+    String name;
+
+    String pwd;
+
+    Integer age;
+
+    String email;
+
+    @Override
+    public String toString() {
+        return "User{" +
+                "id=" + id +
+                ", name='" + name + '\'' +
+                ", pwd='" + pwd + '\'' +
+                ", age=" + age +
+                ", email='" + email + '\'' +
+                '}';
+    }
+}

+ 9 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/mapper/UserMapper.java

@@ -0,0 +1,9 @@
+package com.jiayue.insu.incloud.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jiayue.insu.incloud.entity.User;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface UserMapper extends BaseMapper<User> {
+}

+ 39 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/permisson/Login.java

@@ -0,0 +1,39 @@
+package com.jiayue.insu.incloud.permisson;
+
+import cn.dev33.satoken.stp.StpUtil;
+import com.jiayue.insu.common.core.util.R;
+import com.jiayue.insu.incloud.entity.User;
+import com.jiayue.insu.incloud.service.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/login")
+public class Login {
+
+    @Autowired
+    private UserService userService;
+
+    @GetMapping("/doLogin")
+    public R doLogin(String name,String pwd){
+        User user = userService.findByNameAndPwd(name, pwd);
+        if(user!=null){
+            StpUtil.login(user.getName());
+            return R.ok();
+        }else{
+            return R.failed();
+        }
+    }
+
+    // 查询登录状态,浏览器访问: http://localhost:8081/user/isLogin
+    @GetMapping("/isLogin")
+    public R isLogin() {
+        return R.ok( StpUtil.isLogin());
+
+    }
+
+
+
+}

+ 9 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/service/UserService.java

@@ -0,0 +1,9 @@
+package com.jiayue.insu.incloud.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.jiayue.insu.incloud.entity.User;
+
+public interface UserService extends IService<User> {
+
+    User findByNameAndPwd(String name,String pwd);
+}

+ 23 - 0
in-cloud/src/main/java/com/jiayue/insu/incloud/service/impl/UserServiceImpl.java

@@ -0,0 +1,23 @@
+package com.jiayue.insu.incloud.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jiayue.insu.incloud.entity.User;
+import com.jiayue.insu.incloud.mapper.UserMapper;
+import com.jiayue.insu.incloud.service.UserService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
+
+
+
+    @Override
+    public User findByNameAndPwd(String name, String pwd) {
+        LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.eq(User::getName,name);
+        lambdaQueryWrapper.eq(User::getPwd,pwd);
+        User user = this.getOne(lambdaQueryWrapper);
+        return user;
+    }
+}

+ 1 - 1
in-cloud/src/main/resources/bootstrap.yml

@@ -5,7 +5,7 @@ spring:
     active: local
 
 server:
-  port: 8800
+  port: 8801
 ---
 spring:
 

+ 20 - 0
in-common/in-common-core/pom.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>in-common</artifactId>
+        <groupId>com.jiayue</groupId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>in-common-core</artifactId>
+    <packaging>jar</packaging>
+
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+
+</project>

+ 79 - 0
in-common/in-common-core/src/main/java/com/jiayue/insu/common/core/constant/CommonConstants.java

@@ -0,0 +1,79 @@
+package com.jiayue.insu.common.core.constant;
+
+/**
+ * @author lengleng
+ * @date 2019/2/1
+ */
+public interface CommonConstants {
+
+	/**
+	 * 删除
+	 */
+	String STATUS_DEL = "1";
+
+	/**
+	 * 正常
+	 */
+	String STATUS_NORMAL = "0";
+
+	/**
+	 * 锁定
+	 */
+	String STATUS_LOCK = "9";
+
+	/**
+	 * 菜单树根节点
+	 */
+	Integer MENU_TREE_ROOT_ID = -1;
+
+	/**
+	 * 菜单
+	 */
+	String MENU = "0";
+
+	/**
+	 * 编码
+	 */
+	String UTF8 = "UTF-8";
+
+	/**
+	 * JSON 资源
+	 */
+	String CONTENT_TYPE = "application/json; charset=utf-8";
+
+	/**
+	 * 前端工程名
+	 */
+	String FRONT_END_PROJECT = "csc-ui";
+
+	/**
+	 * 后端工程名
+	 */
+	String BACK_END_PROJECT = "csc";
+
+	/**
+	 * 成功标记
+	 */
+	Integer SUCCESS = 0;
+
+	/**
+	 * 失败标记
+	 */
+	Integer FAIL = 1;
+
+	/**
+	 * 验证码前缀
+	 */
+	String DEFAULT_CODE_KEY = "DEFAULT_CODE_KEY_";
+
+	/**
+	 * 当前页
+	 */
+	String CURRENT = "current";
+
+	/**
+	 * size
+	 */
+	String SIZE = "size";
+
+}

+ 71 - 0
in-common/in-common-core/src/main/java/com/jiayue/insu/common/core/util/R.java

@@ -0,0 +1,71 @@
+package com.jiayue.insu.common.core.util;
+
+import com.jiayue.insu.common.core.constant.CommonConstants;
+import lombok.*;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+/**
+ * 响应信息主体
+ *
+ * @param <T>
+ * @author lengleng
+ */
+@ToString
+@NoArgsConstructor
+@AllArgsConstructor
+@Accessors(chain = true)
+public class R<T> implements Serializable {
+
+	private static final long serialVersionUID = 1L;
+
+	@Getter
+	@Setter
+	private int code;
+
+	@Getter
+	@Setter
+	private String msg;
+
+	@Getter
+	@Setter
+	private T data;
+
+	public static <T> R<T> ok() {
+		return restResult(null, CommonConstants.SUCCESS, null);
+	}
+
+	public static <T> R<T> ok(T data) {
+		return restResult(data, CommonConstants.SUCCESS, null);
+	}
+
+	public static <T> R<T> ok(T data, String msg) {
+		return restResult(data, CommonConstants.SUCCESS, msg);
+	}
+
+	public static <T> R<T> failed() {
+		return restResult(null, CommonConstants.FAIL, null);
+	}
+
+	public static <T> R<T> failed(String msg) {
+		return restResult(null, CommonConstants.FAIL, msg);
+	}
+
+	public static <T> R<T> failed(T data) {
+		return restResult(data, CommonConstants.FAIL, null);
+	}
+
+	public static <T> R<T> failed(T data, String msg) {
+		return restResult(data, CommonConstants.FAIL, msg);
+	}
+
+	private static <T> R<T> restResult(T data, int code, String msg) {
+		R<T> apiResult = new R<>();
+		apiResult.setCode(code);
+		apiResult.setData(data);
+		apiResult.setMsg(msg);
+		return apiResult;
+	}
+
+}

+ 83 - 0
in-common/in-common-core/src/main/java/com/jiayue/insu/common/core/util/SpringContextHolder.java

@@ -0,0 +1,83 @@
+package com.jiayue.insu.common.core.util;
+
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.DisposableBean;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.context.ApplicationEvent;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author lengleng
+ * @date 2019/2/1 Spring 工具类
+ */
+@Slf4j
+@Service
+@Lazy(false)
+public class SpringContextHolder implements ApplicationContextAware, DisposableBean {
+
+	private static ApplicationContext applicationContext = null;
+
+	/**
+	 * 取得存储在静态变量中的ApplicationContext.
+	 */
+	public static ApplicationContext getApplicationContext() {
+		return applicationContext;
+	}
+
+	/**
+	 * 实现ApplicationContextAware接口, 注入Context到静态变量中.
+	 */
+	@Override
+	public void setApplicationContext(ApplicationContext applicationContext) {
+		SpringContextHolder.applicationContext = applicationContext;
+	}
+
+	/**
+	 * 从静态变量applicationContext中取得Bean, 自动转型为所赋值对象的类型.
+	 */
+	@SuppressWarnings("unchecked")
+	public static <T> T getBean(String name) {
+		return (T) applicationContext.getBean(name);
+	}
+
+	/**
+	 * 从静态变量applicationContext中取得Bean, 自动转型为所赋值对象的类型.
+	 */
+	public static <T> T getBean(Class<T> requiredType) {
+		return applicationContext.getBean(requiredType);
+	}
+
+	/**
+	 * 清除SpringContextHolder中的ApplicationContext为Null.
+	 */
+	public static void clearHolder() {
+		if (log.isDebugEnabled()) {
+			log.debug("清除SpringContextHolder中的ApplicationContext:" + applicationContext);
+		}
+		applicationContext = null;
+	}
+
+	/**
+	 * 发布事件
+	 * @param event
+	 */
+	public static void publishEvent(ApplicationEvent event) {
+		if (applicationContext == null) {
+			return;
+		}
+		applicationContext.publishEvent(event);
+	}
+
+	/**
+	 * 实现DisposableBean接口, 在Context关闭时清理静态变量.
+	 */
+	@Override
+	@SneakyThrows
+	public void destroy() {
+		SpringContextHolder.clearHolder();
+	}
+
+}

+ 3 - 0
in-common/in-common-core/src/main/resources/META-INF/spring.factories

@@ -0,0 +1,3 @@
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+  com.jiayue.insu.common.core.util.SpringContextHolder
+

+ 22 - 0
in-common/pom.xml

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>insu</artifactId>
+        <groupId>com.jiayue</groupId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>in-common</artifactId>
+    <packaging>pom</packaging>
+    <modules>
+        <module>in-common-core</module>
+    </modules>
+    <properties>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
+    </properties>
+
+</project>

+ 20 - 0
pom.xml

@@ -13,6 +13,7 @@
         <module>in-cloud</module>
         <module>in-client</module>
         <module>in-passback</module>
+        <module>in-common</module>
     </modules>
 
     <properties>
@@ -25,6 +26,8 @@
         <spring.boot.version>2.6.3</spring.boot.version>
 
         <jasypt.version>3.0.3</jasypt.version>
+        <mybatis.plus.version>3.5.1</mybatis.plus.version>
+        <sa.token.version>1.30.0</sa.token.version>
     </properties>
     <dependencies>
         <dependency>
@@ -98,6 +101,23 @@
                 </exclusions>
             </dependency>
 
+            <dependency>
+                <groupId>cn.dev33</groupId>
+                <artifactId>sa-token-spring-boot-starter</artifactId>
+                <version>${sa.token.version}</version>
+            </dependency>
+            <!-- Sa-Token 整合 Redis (使用jdk默认序列化方式) -->
+            <dependency>
+                <groupId>cn.dev33</groupId>
+                <artifactId>sa-token-dao-redis</artifactId>
+                <version>${sa.token.version}</version>
+            </dependency>
+
+            <dependency>
+                <groupId>com.baomidou</groupId>
+                <artifactId>mybatis-plus-boot-starter</artifactId>
+                <version>${mybatis.plus.version}</version>
+            </dependency>
 
         </dependencies>
     </dependencyManagement>