diff --git a/.gitignore b/.gitignore
index 9154f4c..66eadb2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,6 @@
# ---> Java
+# IDEA
+.idea
# Compiled class file
*.class
diff --git a/sms-auth/pom.xml b/sms-auth/pom.xml
new file mode 100644
index 0000000..78667ad
--- /dev/null
+++ b/sms-auth/pom.xml
@@ -0,0 +1,55 @@
+
+ 4.0.0
+
+ com.landaiqing
+ sms-auth
+ 1.0-SNAPSHOT
+ pom
+
+ sms-auth
+ http://maven.apache.org
+
+ sms-auth-start
+ sms-auth-infra
+ sms-auth-domain
+ sms-auth-common
+ sms-auth-controller
+
+
+
+ 8
+ 8
+ 1.8
+ UTF-8
+ UTF-8
+ 2.4.2
+ 2021.1
+ 2020.0.6
+
+
+
+
+ org.springframework.boot
+ spring-boot-dependencies
+ 2.4.2
+ pom
+ import
+
+
+
+
+
+ central
+ aliyun maven
+ http://maven.aliyun.com/nexus/content/groups/public/
+ default
+
+ true
+
+
+ true
+
+
+
+
diff --git a/sms-auth/sms-auth-common/pom.xml b/sms-auth/sms-auth-common/pom.xml
new file mode 100644
index 0000000..19ce417
--- /dev/null
+++ b/sms-auth/sms-auth-common/pom.xml
@@ -0,0 +1,92 @@
+
+ 4.0.0
+
+ com.landaiqing
+ sms-auth
+ 1.0-SNAPSHOT
+
+
+ sms-auth-common
+ jar
+
+ sms-auth-common
+ http://maven.apache.org
+
+
+ 8
+ 8
+ 1.8
+ UTF-8
+ UTF-8
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.2
+
+
+ spring-boot-starter-logging
+ org.springframework.boot
+
+
+
+
+ org.projectlombok
+ lombok
+ 1.18.28
+
+
+ org.mapstruct
+ mapstruct
+ 1.4.2.Final
+
+
+ org.mapstruct
+ mapstruct-processor
+ 1.4.2.Final
+
+
+
+ org.springframework.boot
+ spring-boot-starter-log4j2
+ 2.4.2
+
+
+ com.alibaba
+ fastjson
+ 1.2.79
+
+
+ com.google.guava
+ guava
+ 19.0
+
+
+ org.apache.commons
+ commons-lang3
+ 3.11
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/config/LocaleConfig.java b/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/config/LocaleConfig.java
new file mode 100644
index 0000000..d8db9c9
--- /dev/null
+++ b/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/config/LocaleConfig.java
@@ -0,0 +1,25 @@
+package com.landaiqing.auth.common.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.support.ResourceBundleMessageSource;
+
+import java.util.Locale;
+
+@Configuration
+public class LocaleConfig {
+
+ @Bean
+ public ResourceBundleMessageSource messageSource() {
+ Locale.setDefault(Locale.CHINA);
+ ResourceBundleMessageSource source = new ResourceBundleMessageSource();
+ //设置国际化文件存储路径和名称 i18n目录,messages文件名
+ source.setBasenames("i18n/messages");
+ //设置根据key如果没有获取到对应的文本信息,则返回key作为信息
+ source.setUseCodeAsDefaultMessage(true);
+ //设置字符编码
+ source.setDefaultEncoding("UTF-8");
+ return source;
+ }
+
+}
diff --git a/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/entity/PageInfo.java b/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/entity/PageInfo.java
new file mode 100644
index 0000000..5a1af9b
--- /dev/null
+++ b/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/entity/PageInfo.java
@@ -0,0 +1,32 @@
+package com.landaiqing.auth.common.entity;
+
+import lombok.Data;
+
+/**
+ * 分页请求实体
+ *
+ * @author: landaiqing
+ */
+@Data
+public class PageInfo {
+
+ private Integer pageNo = 1;
+
+ private Integer pageSize = 20;
+
+ public Integer getPageNo() {
+ if (pageNo == null || pageNo < 1) {
+ return 1;
+ }
+ return pageNo;
+ }
+
+ public Integer getPageSize() {
+ if (pageSize == null || pageSize < 1 || pageSize > Integer.MAX_VALUE) {
+ return 20;
+ }
+ return pageSize;
+ }
+
+
+}
diff --git a/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/entity/PageResult.java b/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/entity/PageResult.java
new file mode 100644
index 0000000..9f43aa6
--- /dev/null
+++ b/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/entity/PageResult.java
@@ -0,0 +1,57 @@
+package com.landaiqing.auth.common.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * 分页返回实体
+ *
+ * @author: landaiqing
+ */
+@Data
+public class PageResult implements Serializable {
+
+ private Integer pageNo = 1;
+
+ private Integer pageSize = 20;
+
+ private Integer total = 0;
+
+ private Integer totalPages = 0;
+
+ private List result = Collections.emptyList();
+
+ private Integer start = 1;
+
+ private Integer end = 0;
+
+ public void setRecords(List result) {
+ this.result = result;
+ if (result != null && result.size() > 0) {
+ setTotal(result.size());
+ }
+ }
+
+ public void setTotal(Integer total) {
+ this.total = total;
+ if (this.pageSize > 0) {
+ this.totalPages = (total / this.pageSize) + (total % this.pageSize == 0 ? 0 : 1);
+ } else {
+ this.totalPages = 0;
+ }
+ this.start = (this.pageSize > 0 ? (this.pageNo - 1) * this.pageSize : 0) + 1;
+ this.end = (this.start - 1 + this.pageSize * (this.pageNo > 0 ? 1 : 0));
+ }
+
+ public void setPageSize(Integer pageSize) {
+ this.pageSize = pageSize;
+ }
+
+ public void setPageNo(Integer pageNo) {
+ this.pageNo = pageNo;
+ }
+
+}
diff --git a/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/entity/Result.java b/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/entity/Result.java
new file mode 100644
index 0000000..7abf6ee
--- /dev/null
+++ b/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/entity/Result.java
@@ -0,0 +1,51 @@
+package com.landaiqing.auth.common.entity;
+
+import com.landaiqing.auth.common.enums.ResultCodeEnum;
+import lombok.Data;
+
+@Data
+public class Result {
+
+ private Boolean success;
+
+ private Integer code;
+
+ private String message;
+
+ private T data;
+
+ public static Result ok(){
+ Result result = new Result();
+ result.setSuccess(true);
+ result.setCode(ResultCodeEnum.SUCCESS.getCode());
+ result.setMessage(ResultCodeEnum.SUCCESS.getDesc());
+ return result;
+ }
+
+ public static Result ok(T data){
+ Result result = new Result();
+ result.setSuccess(true);
+ result.setCode(ResultCodeEnum.SUCCESS.getCode());
+ result.setMessage(ResultCodeEnum.SUCCESS.getDesc());
+ result.setData(data);
+ return result;
+ }
+
+ public static Result fail(){
+ Result result = new Result();
+ result.setSuccess(false);
+ result.setCode(ResultCodeEnum.FAIL.getCode());
+ result.setMessage(ResultCodeEnum.FAIL.getDesc());
+ return result;
+ }
+
+ public static Result fail(T data){
+ Result result = new Result();
+ result.setSuccess(false);
+ result.setCode(ResultCodeEnum.FAIL.getCode());
+ result.setMessage(ResultCodeEnum.FAIL.getDesc());
+ result.setData(data);
+ return result;
+ }
+
+}
diff --git a/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/enums/AuthUserStatusEnum.java b/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/enums/AuthUserStatusEnum.java
new file mode 100644
index 0000000..02539a1
--- /dev/null
+++ b/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/enums/AuthUserStatusEnum.java
@@ -0,0 +1,34 @@
+package com.landaiqing.auth.common.enums;
+
+import lombok.Getter;
+
+/**
+ * 用户状态枚举
+ *
+ * @author: landaiqing
+ */
+@Getter
+public enum AuthUserStatusEnum {
+
+ OPEN(0,"启用"),
+ CLOSE(1,"禁用");
+
+ public int code;
+
+ public String desc;
+
+ AuthUserStatusEnum(int code, String desc){
+ this.code = code;
+ this.desc = desc;
+ }
+
+ public static AuthUserStatusEnum getByCode(int codeVal){
+ for(AuthUserStatusEnum resultCodeEnum : AuthUserStatusEnum.values()){
+ if(resultCodeEnum.code == codeVal){
+ return resultCodeEnum;
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/enums/IsDeletedFlagEnum.java b/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/enums/IsDeletedFlagEnum.java
new file mode 100644
index 0000000..5664864
--- /dev/null
+++ b/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/enums/IsDeletedFlagEnum.java
@@ -0,0 +1,34 @@
+package com.landaiqing.auth.common.enums;
+
+import lombok.Getter;
+
+/**
+ * 删除状态枚举
+ *
+ * @author: landaiqing
+ */
+@Getter
+public enum IsDeletedFlagEnum {
+
+ DELETED(1,"已删除"),
+ UN_DELETED(0,"未删除");
+
+ public int code;
+
+ public String desc;
+
+ IsDeletedFlagEnum(int code, String desc){
+ this.code = code;
+ this.desc = desc;
+ }
+
+ public static IsDeletedFlagEnum getByCode(int codeVal){
+ for(IsDeletedFlagEnum resultCodeEnum : IsDeletedFlagEnum.values()){
+ if(resultCodeEnum.code == codeVal){
+ return resultCodeEnum;
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/enums/LanguageEnum.java b/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/enums/LanguageEnum.java
new file mode 100644
index 0000000..adb963a
--- /dev/null
+++ b/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/enums/LanguageEnum.java
@@ -0,0 +1,24 @@
+package com.landaiqing.auth.common.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@Getter
+@AllArgsConstructor
+public enum LanguageEnum {
+
+ ZH_CN("zh_CN", "中文/中国"),
+ EN_US( "en_US", "英语/美国"),
+ ;
+
+ /**
+ * 语言_国家缩写
+ */
+ private String name;
+
+ /**
+ * 描述
+ */
+ private String desc;
+
+}
diff --git a/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/enums/ResultCodeEnum.java b/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/enums/ResultCodeEnum.java
new file mode 100644
index 0000000..1978ee0
--- /dev/null
+++ b/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/enums/ResultCodeEnum.java
@@ -0,0 +1,24 @@
+package com.landaiqing.auth.common.enums;
+
+import lombok.Getter;
+
+@Getter
+public enum ResultCodeEnum {
+ SUCCESS(200,"成功"),
+ FAIL(500,"失败");
+ private int code;
+ private String desc;
+
+ ResultCodeEnum(int code, String desc){
+ this.code=code;
+ this.desc=desc;
+ }
+ public static ResultCodeEnum getByCode(int codeVal){
+ for(ResultCodeEnum resultCodeEnum:ResultCodeEnum.values()){
+ if(resultCodeEnum.code==codeVal){
+ return resultCodeEnum;
+ }
+ }
+ return null;
+ }
+}
diff --git a/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/util/MessageUtil.java b/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/util/MessageUtil.java
new file mode 100644
index 0000000..20b8e34
--- /dev/null
+++ b/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/util/MessageUtil.java
@@ -0,0 +1,69 @@
+package com.landaiqing.auth.common.util;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.context.MessageSource;
+
+import java.util.Locale;
+
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public class MessageUtil {
+
+
+ /**
+ * 根据key信息获取对应语言的内容
+ *
+ * @param key 消息key值
+ * @param language 语言_国家
+ * @return
+ */
+ public static String get(String key, String language) {
+ if (!StringUtils.isEmpty(language)) {
+ String[] arrs = language.split("_");
+ if (arrs.length == 2) {
+ return get(key, new Locale(arrs[0], arrs[1]));
+ }
+ }
+ //使用默认的国际化语言
+ return get(key, Locale.getDefault());
+ }
+
+ /**
+ * 根据key信息获取对应语言的内容
+ *
+ * @param key 消息key值
+ * @param params 需要替换到占位符中的参数 占位符下标重0开始 格式如: {0} {1}
+ * @param language 语言_国家
+ * @return
+ */
+ public static String get(String key, Object[] params, String language) {
+ if (!StringUtils.isEmpty(language)) {
+ String arrs[] = language.split("_");
+ if (arrs.length == 2) {
+ return get(key, params, new Locale(arrs[0], arrs[1]));
+ }
+ }
+ return get(key, params, Locale.getDefault());
+ }
+
+ private static String get(String key, Locale language) {
+ return get(key, new String[0], language);
+ }
+
+ private static String get(String key, Object[] params, Locale language) {
+ return getInstance().getMessage(key, params, language);
+ }
+
+ private static MessageSource getInstance() {
+ return Lazy.messageSource;
+ }
+
+ /**
+ * 使用懒加载方式实例化messageSource国际化工具
+ */
+ private static class Lazy {
+ private static final MessageSource messageSource = SpringUtil.getBean(MessageSource.class);
+ }
+
+}
diff --git a/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/util/SpringUtil.java b/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/util/SpringUtil.java
new file mode 100644
index 0000000..4600c2d
--- /dev/null
+++ b/sms-auth/sms-auth-common/src/main/java/com/landaiqing/auth/common/util/SpringUtil.java
@@ -0,0 +1,34 @@
+package com.landaiqing.auth.common.util;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author Dominick Li
+ * @description 普通类调用Spring bean对象使用的工具栏
+ **/
+@Component
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public class SpringUtil implements ApplicationContextAware {
+
+ private static ApplicationContext applicationContext = null;
+
+ @Override
+ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+ if (SpringUtil.applicationContext == null) {
+ SpringUtil.applicationContext = applicationContext;
+ }
+ }
+
+ /**
+ * 通过class获取Bean.
+ */
+ public static T getBean(Class clazz) {
+ return applicationContext.getBean(clazz);
+ }
+
+}
diff --git a/sms-auth/sms-auth-common/src/main/resources/i18n/messages.properties b/sms-auth/sms-auth-common/src/main/resources/i18n/messages.properties
new file mode 100644
index 0000000..345496f
--- /dev/null
+++ b/sms-auth/sms-auth-common/src/main/resources/i18n/messages.properties
@@ -0,0 +1,2 @@
+student_management=????
+sutdent_center=????
\ No newline at end of file
diff --git a/sms-auth/sms-auth-common/src/main/resources/i18n/messages_en_US.properties b/sms-auth/sms-auth-common/src/main/resources/i18n/messages_en_US.properties
new file mode 100644
index 0000000..94e2d81
--- /dev/null
+++ b/sms-auth/sms-auth-common/src/main/resources/i18n/messages_en_US.properties
@@ -0,0 +1,2 @@
+student_management=student_management
+sutdent_center=sutdent_center
\ No newline at end of file
diff --git a/sms-auth/sms-auth-common/src/main/resources/i18n/messages_zh_CN.properties b/sms-auth/sms-auth-common/src/main/resources/i18n/messages_zh_CN.properties
new file mode 100644
index 0000000..345496f
--- /dev/null
+++ b/sms-auth/sms-auth-common/src/main/resources/i18n/messages_zh_CN.properties
@@ -0,0 +1,2 @@
+student_management=????
+sutdent_center=????
\ No newline at end of file
diff --git a/sms-auth/sms-auth-controller/pom.xml b/sms-auth/sms-auth-controller/pom.xml
new file mode 100644
index 0000000..286f429
--- /dev/null
+++ b/sms-auth/sms-auth-controller/pom.xml
@@ -0,0 +1,37 @@
+
+ 4.0.0
+
+ com.landaiqing
+ sms-auth
+ 1.0-SNAPSHOT
+
+
+ sms-auth-controller
+ jar
+
+ sms-auth-controller
+ http://maven.apache.org
+
+
+ UTF-8
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.2
+
+
+ com.landaiqing
+ sms-auth-domain
+ 1.0-SNAPSHOT
+
+
+ com.landaiqing
+ sms-auth-infra
+ 1.0-SNAPSHOT
+
+
+
diff --git a/sms-auth/sms-auth-controller/src/main/java/com/landaiqing/config/GlobalConfig.java b/sms-auth/sms-auth-controller/src/main/java/com/landaiqing/config/GlobalConfig.java
new file mode 100644
index 0000000..87871b4
--- /dev/null
+++ b/sms-auth/sms-auth-controller/src/main/java/com/landaiqing/config/GlobalConfig.java
@@ -0,0 +1,38 @@
+package com.landaiqing.config;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.converter.HttpMessageConverter;
+import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
+
+import java.util.List;
+
+/**
+ * @Classname GlobalConfig
+ * @BelongsProject: qing-yu-club
+ * @BelongsPackage: com.landaiqing.subject.application.config
+ * @Author: landaiqing
+ * @CreateTime: 2024-02-16 15:57
+ * @Description: MVC全局处理
+ * @Version: 1.0
+ */
+@Configuration
+public class GlobalConfig extends WebMvcConfigurationSupport {
+ @Override
+ protected void configureMessageConverters(List> converters) {
+ super.configureMessageConverters(converters);
+ converters.add(mappingJackson2HttpMessageConverter());
+ }
+ private MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(){
+ ObjectMapper objectMapper=new ObjectMapper();
+ objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS,false);
+ objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
+ MappingJackson2HttpMessageConverter converter=new MappingJackson2HttpMessageConverter(objectMapper);
+ return converter;
+ }
+
+}
diff --git a/sms-auth/sms-auth-controller/src/main/java/com/landaiqing/controller/StudentController.java b/sms-auth/sms-auth-controller/src/main/java/com/landaiqing/controller/StudentController.java
new file mode 100644
index 0000000..3b01fea
--- /dev/null
+++ b/sms-auth/sms-auth-controller/src/main/java/com/landaiqing/controller/StudentController.java
@@ -0,0 +1,150 @@
+package com.landaiqing.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.common.base.Preconditions;
+import com.landaiqing.auth.common.entity.PageInfo;
+import com.landaiqing.auth.common.entity.PageResult;
+import com.landaiqing.auth.common.entity.Result;
+import com.landaiqing.auth.common.util.MessageUtil;
+import com.landaiqing.convert.PermissionDTOConvert;
+import com.landaiqing.convert.StudentInfoDtoConvert;
+import com.landaiqing.domain.bo.PermissionBO;
+import com.landaiqing.domain.bo.StudentBO;
+import com.landaiqing.domain.service.StudentDomainService;
+import com.landaiqing.domain.service.StudentPermissionDomainService;
+import com.landaiqing.dto.PermissionDTO;
+import com.landaiqing.dto.StudentDTO;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Classname StudentController
+ * @BelongsProject: student-Management-system
+ * @BelongsPackage: com.landaiqing.controller
+ * @Author: landaiqing
+ * @CreateTime: 2024-03-04 23:17
+ * @Description: TODO
+ * @Version: 1.0
+ */
+@RestController
+@RequestMapping("/student/")
+@Slf4j
+public class StudentController {
+ @Resource
+ private StudentDomainService studentDomainService;
+ @Resource
+ private StudentPermissionDomainService studentPermissionDomainService;
+
+
+ /**
+ * @description: 头像上传
+ * @param: [studentDTO]
+ * @return: com.landaiqing.auth.common.entity.Result
+ * @author landaiqing
+ * @date: 2024/3/4 23:47
+ */
+ @PostMapping("upload")
+ public Result uploadAvatar(@RequestBody StudentDTO studentDTO) {
+ try {
+ if (log.isInfoEnabled()) {
+ log.info("StudentController.uploadAvatar.dto:{}", JSON.toJSONString(studentDTO));
+ }
+ Preconditions.checkArgument(!StringUtils.isBlank(studentDTO.getUrl()), "url不能为空!");
+ Preconditions.checkNotNull(studentDTO.getId(), "id不能为空!");
+ StudentBO studentBO = StudentInfoDtoConvert.INSTANCE.convertDtoToBO(studentDTO);
+ return Result.ok(studentDomainService.uploadAvatar(studentBO));
+ } catch (Exception e) {
+ log.error("StudentController.uploadAvatar.error:{}", e.getMessage(), e);
+ return Result.fail("上传头像失败!");
+ }
+ }
+
+ /**
+ * @description: 分页查询所有学生信息
+ * @param: [studentDTO]
+ * @return: com.landaiqing.auth.common.entity.Result>
+ * @author landaiqing
+ * @date: 2024/3/5 12:03
+ */
+ @RequestMapping("queryAllStudent")
+ public Result> queryAllStudent(@RequestBody StudentDTO studentDTO) {
+ try {
+ if (log.isInfoEnabled()) {
+ log.info("StudentController.queryAllStudent.dto:{}", JSON.toJSONString(studentDTO));
+ }
+ StudentBO studentBO = StudentInfoDtoConvert.INSTANCE.convertDtoToBO(studentDTO);
+ studentBO.getPageNo();
+ studentBO.getPageSize();
+ PageResult pageResult = studentDomainService.queryAllStudentByPage(studentBO);
+ return Result.ok(pageResult);
+ } catch (Exception e) {
+ log.error("StudentController.queryAllStudent.error:{}", e.getMessage(), e);
+ return Result.fail("查询失败失败!");
+ }
+ }
+
+ /**
+ * @description: 查询指定学生的权限
+ * @param: [studentDTO]
+ * @return: com.landaiqing.auth.common.entity.Result>
+ * @author landaiqing
+ * @date: 2024/3/5 12:03
+ */
+ @RequestMapping("queryPermission")
+ public Result> queryStudentPermission(@RequestBody StudentDTO studentDTO) {
+ try {
+ if (log.isInfoEnabled()) {
+ log.info("StudentController.queryStudentPermission.dto:{}", JSON.toJSONString(studentDTO));
+ }
+ StudentBO studentBO = StudentInfoDtoConvert.INSTANCE.convertDtoToBO(studentDTO);
+ List permissionBOS = studentPermissionDomainService.queryStudentPermission(studentBO);
+ List permissionDTOS = PermissionDTOConvert.INSTANCE.convertBoToDtoList(permissionBOS);
+ return Result.ok(permissionDTOS);
+ } catch (Exception e) {
+ log.error("StudentController.queryStudentPermission.error:{}", e.getMessage(), e);
+ return Result.fail("查询失败失败!");
+ }
+ }
+
+ /**
+ * 测试国际化
+ * en_US 英文 http://127.0.0.1:3001/en_US
+ * zh_CN 中文 http://127.0.0.1:3001/zh_CN
+ */
+ @GetMapping("/{language}")
+ public String test(@PathVariable String language) {
+
+ String text2 = MessageUtil.get("sutdent_center", language);
+ return text2;
+ }
+
+ /**
+ * @description: 登录
+ * @param: [studentDTO]
+ * @return: com.landaiqing.auth.common.entity.Result
+ * @author landaiqing
+ * @date: 2024/3/5 17:28
+ */
+ @RequestMapping("login")
+ public Result login(@RequestBody StudentDTO studentDTO) {
+ try {
+ if (log.isInfoEnabled()) {
+ log.info("StudentController.queryStudentPermission.dto:{}", JSON.toJSONString(studentDTO));
+ }
+ Preconditions.checkArgument(!StringUtils.isBlank(studentDTO.getUsername()), "用户名不能为空!");
+ Preconditions.checkArgument(!StringUtils.isBlank(studentDTO.getPassword()), "密码不能为空!");
+ StudentBO studentBO = StudentInfoDtoConvert.INSTANCE.convertDtoToBO(studentDTO);
+ Boolean result = studentDomainService.login(studentBO);
+ return Result.ok(result);
+ } catch (Exception e) {
+ log.error("StudentController.queryStudentPermission.error:{}", e.getMessage(), e);
+ return Result.fail("查询失败失败!");
+ }
+ }
+}
diff --git a/sms-auth/sms-auth-controller/src/main/java/com/landaiqing/convert/PermissionDTOConvert.java b/sms-auth/sms-auth-controller/src/main/java/com/landaiqing/convert/PermissionDTOConvert.java
new file mode 100644
index 0000000..9a792ae
--- /dev/null
+++ b/sms-auth/sms-auth-controller/src/main/java/com/landaiqing/convert/PermissionDTOConvert.java
@@ -0,0 +1,27 @@
+package com.landaiqing.convert;
+
+import com.landaiqing.domain.bo.PermissionBO;
+import com.landaiqing.domain.bo.StudentBO;
+import com.landaiqing.dto.PermissionDTO;
+import com.landaiqing.dto.StudentDTO;
+import com.landaiqing.infra.basic.entity.Permission;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * @Classname PermissionDTOConvert
+ * @BelongsProject: student-Management-system
+ * @BelongsPackage: com.landaiqing.convert
+ * @Author: landaiqing
+ * @CreateTime: 2024-03-05 11:55
+ * @Description: TODO
+ * @Version: 1.0
+ */
+@Mapper
+public interface PermissionDTOConvert {
+ PermissionDTOConvert INSTANCE= Mappers.getMapper(PermissionDTOConvert.class);
+ PermissionBO convertDtoToBO(PermissionDTO permissionDTO);
+ List convertBoToDtoList(List permissionBOList);
+}
diff --git a/sms-auth/sms-auth-controller/src/main/java/com/landaiqing/convert/StudentInfoDtoConvert.java b/sms-auth/sms-auth-controller/src/main/java/com/landaiqing/convert/StudentInfoDtoConvert.java
new file mode 100644
index 0000000..310f5f4
--- /dev/null
+++ b/sms-auth/sms-auth-controller/src/main/java/com/landaiqing/convert/StudentInfoDtoConvert.java
@@ -0,0 +1,26 @@
+package com.landaiqing.convert;
+
+import com.landaiqing.domain.bo.StudentBO;
+import com.landaiqing.dto.StudentDTO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * @Classname StudentInfoDtoConvert
+ * @BelongsProject: student-Management-system
+ * @BelongsPackage: com.landaiqing.convert
+ * @Author: landaiqing
+ * @CreateTime: 2024-03-04 23:22
+ * @Description: TODO
+ * @Version: 1.0
+ */
+@Mapper
+public interface StudentInfoDtoConvert {
+ StudentInfoDtoConvert INSTANCE= Mappers.getMapper(StudentInfoDtoConvert.class);
+
+ StudentBO convertDtoToBO(StudentDTO studentDTO);
+ List convertBOToDTOList(List studentBOList);
+
+}
diff --git a/sms-auth/sms-auth-controller/src/main/java/com/landaiqing/dto/PermissionDTO.java b/sms-auth/sms-auth-controller/src/main/java/com/landaiqing/dto/PermissionDTO.java
new file mode 100644
index 0000000..3c81406
--- /dev/null
+++ b/sms-auth/sms-auth-controller/src/main/java/com/landaiqing/dto/PermissionDTO.java
@@ -0,0 +1,38 @@
+package com.landaiqing.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * (PermissionBO)实体类
+ *
+ * @author makejava
+ * @since 2024-03-04 22:29:35
+ */
+@Data
+public class PermissionDTO implements Serializable {
+
+ private Long id;
+
+ private String name;
+
+ private Long parentId;
+
+ private Integer type;
+
+ private String menuUrl;
+
+ private Integer status;
+
+ private Integer show;
+
+ private String icon;
+
+ private String permissionKey;
+
+
+
+}
+
diff --git a/sms-auth/sms-auth-controller/src/main/java/com/landaiqing/dto/StudentDTO.java b/sms-auth/sms-auth-controller/src/main/java/com/landaiqing/dto/StudentDTO.java
new file mode 100644
index 0000000..7311cd8
--- /dev/null
+++ b/sms-auth/sms-auth-controller/src/main/java/com/landaiqing/dto/StudentDTO.java
@@ -0,0 +1,85 @@
+package com.landaiqing.dto;
+
+import com.landaiqing.auth.common.entity.PageInfo;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * (StudentDTO)实体类
+ *
+ * @author makejava
+ * @since 2024-03-04 22:25:32
+ */
+@Data
+public class StudentDTO extends PageInfo implements Serializable {
+
+ /**
+ * id
+ */
+ private Long id;
+ /**
+ * 学号
+ */
+ private String sno;
+ /**
+ * 密码
+ */
+ private String password;
+ /**
+ * 姓名
+ */
+ private String username;
+ /**
+ * 班级
+ */
+ private Integer className;
+ /**
+ * 年级
+ */
+ private Integer grade;
+ /**
+ * 年龄
+ */
+ private Integer age;
+ /**
+ * 性别
+ */
+ private Integer sex;
+ /**
+ * 头像链接
+ */
+ private String avatar;
+ /**
+ * 出生日期
+ */
+ private Date dateOfBirth;
+ /**
+ * email
+ */
+ private String email;
+ /**
+ * 电话
+ */
+ private String phoneNumber;
+ /**
+ * 班级id
+ */
+ private Long classId;
+ /**
+ * 年级id
+ */
+ private Long gradeId;
+ /**
+ * 角色id
+ */
+ private Integer roleId;
+
+ private Integer isDeleted;
+
+ private String url;
+
+
+}
+
diff --git a/sms-auth/sms-auth-domain/pom.xml b/sms-auth/sms-auth-domain/pom.xml
new file mode 100644
index 0000000..c862559
--- /dev/null
+++ b/sms-auth/sms-auth-domain/pom.xml
@@ -0,0 +1,32 @@
+
+ 4.0.0
+
+ com.landaiqing
+ sms-auth
+ 1.0-SNAPSHOT
+
+
+ sms-auth-domain
+ jar
+
+ sms-auth-domain
+ http://maven.apache.org
+
+
+ UTF-8
+
+
+
+
+ com.landaiqing
+ sms-auth-infra
+ 1.0-SNAPSHOT
+
+
+ com.landaiqing
+ sms-auth-common
+ 1.0-SNAPSHOT
+
+
+
diff --git a/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/bo/AdminBO.java b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/bo/AdminBO.java
new file mode 100644
index 0000000..eecc641
--- /dev/null
+++ b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/bo/AdminBO.java
@@ -0,0 +1,43 @@
+package com.landaiqing.domain.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * (AdminBO)实体类
+ *
+ * @author makejava
+ * @since 2024-03-04 22:28:30
+ */
+@Data
+public class AdminBO implements Serializable {
+
+ private Long id;
+
+ private String username;
+
+ private String password;
+ /**
+ * 角色id
+ */
+ private Integer roleId;
+
+ private Integer isDeleted;
+ /**
+ * 创建人
+ */
+ private String createdBy;
+ /**
+ * 创建时间
+ */
+ private Date createdTime;
+ /**
+ * 更新人
+ */
+ private String updateBy;
+
+
+}
+
diff --git a/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/bo/ClazzBO.java b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/bo/ClazzBO.java
new file mode 100644
index 0000000..72a2696
--- /dev/null
+++ b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/bo/ClazzBO.java
@@ -0,0 +1,50 @@
+package com.landaiqing.domain.bo;
+
+import java.io.Serializable;
+
+/**
+ * (ClazzBO)实体类
+ *
+ * @author makejava
+ * @since 2024-03-04 22:44:00
+ */
+public class ClazzBO implements Serializable {
+ private static final long serialVersionUID = -14659318323663338L;
+
+ private Integer id;
+/**
+ * 班级名称
+ */
+ private String className;
+/**
+ * 班级人数
+ */
+ private Integer num;
+
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getClassName() {
+ return className;
+ }
+
+ public void setClassName(String className) {
+ this.className = className;
+ }
+
+ public Integer getNum() {
+ return num;
+ }
+
+ public void setNum(Integer num) {
+ this.num = num;
+ }
+
+}
+
diff --git a/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/bo/CounselorBO.java b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/bo/CounselorBO.java
new file mode 100644
index 0000000..f4aa805
--- /dev/null
+++ b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/bo/CounselorBO.java
@@ -0,0 +1,43 @@
+package com.landaiqing.domain.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * (CounselorBO)实体类
+ *
+ * @author makejava
+ * @since 2024-03-04 22:29:04
+ */
+@Data
+public class CounselorBO implements Serializable {
+
+ private Long id;
+
+ private String username;
+
+ private String password;
+ /**
+ * 角色id
+ */
+ private Integer roleId;
+
+ private Integer isDeleted;
+ /**
+ * 创建人
+ */
+ private String createdBy;
+ /**
+ * 创建时间
+ */
+ private Date createdTime;
+ /**
+ * 更新人
+ */
+ private String updateBy;
+
+
+}
+
diff --git a/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/bo/GradeBO.java b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/bo/GradeBO.java
new file mode 100644
index 0000000..d22126f
--- /dev/null
+++ b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/bo/GradeBO.java
@@ -0,0 +1,28 @@
+package com.landaiqing.domain.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * (GradeBO)实体类
+ *
+ * @author makejava
+ * @since 2024-03-04 22:29:20
+ */
+@Data
+public class GradeBO implements Serializable {
+
+ private Long id;
+ /**
+ * 年级
+ */
+ private String gradeName;
+ /**
+ * 年级人数
+ */
+ private Long num;
+
+
+}
+
diff --git a/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/bo/PermissionBO.java b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/bo/PermissionBO.java
new file mode 100644
index 0000000..923c984
--- /dev/null
+++ b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/bo/PermissionBO.java
@@ -0,0 +1,54 @@
+package com.landaiqing.domain.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * (PermissionBO)实体类
+ *
+ * @author makejava
+ * @since 2024-03-04 22:29:35
+ */
+@Data
+public class PermissionBO implements Serializable {
+
+ private Long id;
+
+ private String name;
+
+ private Long parentId;
+
+ private Integer type;
+
+ private String menuUrl;
+
+ private Integer status;
+
+ private Integer show;
+
+ private String icon;
+
+ private String permissionKey;
+ /**
+ * 创建人
+ */
+ private String createdBy;
+ /**
+ * 创建时间
+ */
+ private Date createdTime;
+ /**
+ * 更新人
+ */
+ private String updateBy;
+ /**
+ * 更新时间
+ */
+ private Date updateTime;
+
+ private Integer isDeleted;
+
+}
+
diff --git a/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/bo/RoleBO.java b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/bo/RoleBO.java
new file mode 100644
index 0000000..da9fa6f
--- /dev/null
+++ b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/bo/RoleBO.java
@@ -0,0 +1,43 @@
+package com.landaiqing.domain.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * (RoleBO)实体类
+ *
+ * @author makejava
+ * @since 2024-03-04 22:29:56
+ */
+@Data
+public class RoleBO implements Serializable {
+
+ private Long id;
+
+ private String roleName;
+
+ private String roleKey;
+ /**
+ * 创建人
+ */
+ private String createdBy;
+ /**
+ * 创建时间
+ */
+ private Date createdTime;
+ /**
+ * 更新人
+ */
+ private String updateBy;
+ /**
+ * 更新时间
+ */
+ private Date updateTime;
+
+ private Integer isDeleted;
+
+
+}
+
diff --git a/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/bo/RolePermissionBO.java b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/bo/RolePermissionBO.java
new file mode 100644
index 0000000..b1827ef
--- /dev/null
+++ b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/bo/RolePermissionBO.java
@@ -0,0 +1,43 @@
+package com.landaiqing.domain.bo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * (RolePermissionBO)实体类
+ *
+ * @author makejava
+ * @since 2024-03-04 22:30:14
+ */
+@Data
+public class RolePermissionBO implements Serializable {
+
+ private Long id;
+
+ private Long roleId;
+
+ private Long permissionId;
+ /**
+ * 创建人
+ */
+ private String createdBy;
+ /**
+ * 创建时间
+ */
+ private Date createdTime;
+ /**
+ * 更新人
+ */
+ private String updateBy;
+ /**
+ * 更新时间
+ */
+ private Date updateTime;
+
+ private Integer isDeleted;
+
+
+}
+
diff --git a/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/bo/StudentBO.java b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/bo/StudentBO.java
new file mode 100644
index 0000000..13ffbf9
--- /dev/null
+++ b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/bo/StudentBO.java
@@ -0,0 +1,85 @@
+package com.landaiqing.domain.bo;
+
+import com.landaiqing.auth.common.entity.PageInfo;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * (StudentBO)实体类
+ *
+ * @author makejava
+ * @since 2024-03-04 22:25:32
+ */
+@Data
+public class StudentBO extends PageInfo implements Serializable {
+
+ /**
+ * id
+ */
+ private Long id;
+ /**
+ * 学号
+ */
+ private String sno;
+ /**
+ * 密码
+ */
+ private String password;
+ /**
+ * 姓名
+ */
+ private String username;
+ /**
+ * 班级
+ */
+ private Integer className;
+ /**
+ * 年级
+ */
+ private Integer grade;
+ /**
+ * 年龄
+ */
+ private Integer age;
+ /**
+ * 性别
+ */
+ private Integer sex;
+ /**
+ * 头像链接
+ */
+ private String avatar;
+ /**
+ * 出生日期
+ */
+ private Date dateOfBirth;
+ /**
+ * email
+ */
+ private String email;
+ /**
+ * 电话
+ */
+ private String phoneNumber;
+ /**
+ * 班级id
+ */
+ private Long classId;
+ /**
+ * 年级id
+ */
+ private Long gradeId;
+ /**
+ * 角色id
+ */
+ private Integer roleId;
+
+ private Integer isDeleted;
+
+ private String url;
+
+
+}
+
diff --git a/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/constants/AuthConstant.java b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/constants/AuthConstant.java
new file mode 100644
index 0000000..40baf39
--- /dev/null
+++ b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/constants/AuthConstant.java
@@ -0,0 +1,15 @@
+package com.landaiqing.domain.constants;
+
+/**
+ * auth服务常量
+ *
+ * @author: landaiqing
+ * @date: 2024/2/19
+ */
+public class AuthConstant {
+
+ public static final String STUDENT = "student";
+ public static final String ADMIN = "admin";
+ public static final String COUNSELOR = "counselor";
+
+}
diff --git a/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/convert/PermissionBOConvert.java b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/convert/PermissionBOConvert.java
new file mode 100644
index 0000000..f699add
--- /dev/null
+++ b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/convert/PermissionBOConvert.java
@@ -0,0 +1,17 @@
+package com.landaiqing.domain.convert;
+
+import com.landaiqing.domain.bo.PermissionBO;
+import com.landaiqing.domain.bo.StudentBO;
+import com.landaiqing.infra.basic.entity.Permission;
+import com.landaiqing.infra.basic.entity.Student;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+@Mapper
+public interface PermissionBOConvert {
+ PermissionBOConvert INSTANCE= Mappers.getMapper(PermissionBOConvert.class);
+
+ List convertToboList(List permissions);
+}
diff --git a/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/convert/StudentBOConvert.java b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/convert/StudentBOConvert.java
new file mode 100644
index 0000000..a3d0a8b
--- /dev/null
+++ b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/convert/StudentBOConvert.java
@@ -0,0 +1,15 @@
+package com.landaiqing.domain.convert;
+
+import com.landaiqing.domain.bo.StudentBO;
+import com.landaiqing.infra.basic.entity.Student;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+@Mapper
+public interface StudentBOConvert {
+ StudentBOConvert INSTANCE= Mappers.getMapper(StudentBOConvert.class);
+ Student convertBOToEntity(StudentBO studentBO);
+ List convertBOToDTOList(List students);
+}
diff --git a/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/PermissionDomainService.java b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/PermissionDomainService.java
new file mode 100644
index 0000000..a4d94f0
--- /dev/null
+++ b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/PermissionDomainService.java
@@ -0,0 +1,11 @@
+package com.landaiqing.domain.service;
+
+import com.landaiqing.domain.bo.PermissionBO;
+import com.landaiqing.domain.bo.StudentBO;
+
+import java.util.List;
+
+public interface PermissionDomainService {
+
+ List queryPermission(List permissionList);
+}
diff --git a/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/RolePermissionDomainService.java b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/RolePermissionDomainService.java
new file mode 100644
index 0000000..cc287cd
--- /dev/null
+++ b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/RolePermissionDomainService.java
@@ -0,0 +1,10 @@
+package com.landaiqing.domain.service;
+
+import com.landaiqing.domain.bo.StudentBO;
+
+import java.util.List;
+
+public interface RolePermissionDomainService {
+
+ List queryPermissionByRoleId(Integer roleId);
+}
diff --git a/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/StudentDomainService.java b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/StudentDomainService.java
new file mode 100644
index 0000000..e519a27
--- /dev/null
+++ b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/StudentDomainService.java
@@ -0,0 +1,15 @@
+package com.landaiqing.domain.service;
+
+import com.landaiqing.auth.common.entity.PageResult;
+import com.landaiqing.domain.bo.StudentBO;
+
+import java.util.List;
+
+public interface StudentDomainService {
+
+ Boolean uploadAvatar(StudentBO studentBO);
+
+ PageResult queryAllStudentByPage(StudentBO studentBO);
+
+ Boolean login(StudentBO studentBO);
+}
diff --git a/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/StudentPermissionDomainService.java b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/StudentPermissionDomainService.java
new file mode 100644
index 0000000..1dfeb69
--- /dev/null
+++ b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/StudentPermissionDomainService.java
@@ -0,0 +1,10 @@
+package com.landaiqing.domain.service;
+
+import com.landaiqing.domain.bo.PermissionBO;
+import com.landaiqing.domain.bo.StudentBO;
+
+import java.util.List;
+
+public interface StudentPermissionDomainService {
+ List queryStudentPermission(StudentBO studentBO);
+}
diff --git a/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/StudentRoleDomainService.java b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/StudentRoleDomainService.java
new file mode 100644
index 0000000..af276b6
--- /dev/null
+++ b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/StudentRoleDomainService.java
@@ -0,0 +1,11 @@
+package com.landaiqing.domain.service;
+
+import com.landaiqing.domain.bo.PermissionBO;
+import com.landaiqing.domain.bo.StudentBO;
+import com.landaiqing.infra.basic.entity.Student;
+
+import java.util.List;
+
+public interface StudentRoleDomainService {
+ Integer queryStudentRole(StudentBO studentBO);
+}
diff --git a/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/impl/PermissionDomainServiceImpl.java b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/impl/PermissionDomainServiceImpl.java
new file mode 100644
index 0000000..fb431a0
--- /dev/null
+++ b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/impl/PermissionDomainServiceImpl.java
@@ -0,0 +1,34 @@
+package com.landaiqing.domain.service.impl;
+
+import com.landaiqing.domain.bo.PermissionBO;
+import com.landaiqing.domain.bo.StudentBO;
+import com.landaiqing.domain.convert.PermissionBOConvert;
+import com.landaiqing.domain.service.*;
+import com.landaiqing.infra.basic.entity.Permission;
+import com.landaiqing.infra.basic.service.PermissionService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Classname StudentPermissionDomainServiceImpl
+ * @BelongsProject: student-Management-system
+ * @BelongsPackage: com.landaiqing.domain.service.impl
+ * @Author: landaiqing
+ * @CreateTime: 2024-03-05 11:59
+ * @Description: TODO
+ * @Version: 1.0
+ */
+@Service
+public class PermissionDomainServiceImpl implements PermissionDomainService {
+ @Resource
+ private PermissionService permissionService;
+
+ @Override
+ public List queryPermission(List permissionList) {
+ List permission= permissionService.queryPermission(permissionList);
+ List permissionBOList = PermissionBOConvert.INSTANCE.convertToboList(permission);
+ return permissionBOList;
+ }
+}
diff --git a/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/impl/RolePermissionDomainServiceImpl.java b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/impl/RolePermissionDomainServiceImpl.java
new file mode 100644
index 0000000..94c5498
--- /dev/null
+++ b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/impl/RolePermissionDomainServiceImpl.java
@@ -0,0 +1,33 @@
+package com.landaiqing.domain.service.impl;
+
+import com.landaiqing.domain.bo.StudentBO;
+import com.landaiqing.domain.convert.StudentBOConvert;
+import com.landaiqing.domain.service.RolePermissionDomainService;
+import com.landaiqing.domain.service.StudentRoleDomainService;
+import com.landaiqing.infra.basic.entity.Student;
+import com.landaiqing.infra.basic.service.RolePermissionService;
+import com.landaiqing.infra.basic.service.StudentRoleService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Classname StudentPermissionDomainServiceImpl
+ * @BelongsProject: student-Management-system
+ * @BelongsPackage: com.landaiqing.domain.service.impl
+ * @Author: landaiqing
+ * @CreateTime: 2024-03-05 11:59
+ * @Description: TODO
+ * @Version: 1.0
+ */
+@Service
+public class RolePermissionDomainServiceImpl implements RolePermissionDomainService {
+ @Resource
+ private RolePermissionService rolePermissionService;
+ @Override
+ public List queryPermissionByRoleId(Integer roleId) {
+ List permissionList = rolePermissionService.queryPermissionById(roleId);
+ return permissionList;
+ }
+}
diff --git a/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/impl/StudentDomainServiceImpl.java b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/impl/StudentDomainServiceImpl.java
new file mode 100644
index 0000000..640f166
--- /dev/null
+++ b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/impl/StudentDomainServiceImpl.java
@@ -0,0 +1,68 @@
+package com.landaiqing.domain.service.impl;
+
+import com.landaiqing.auth.common.entity.PageResult;
+import com.landaiqing.auth.common.enums.IsDeletedFlagEnum;
+import com.landaiqing.domain.bo.StudentBO;
+import com.landaiqing.domain.convert.StudentBOConvert;
+import com.landaiqing.domain.service.StudentDomainService;
+import com.landaiqing.infra.basic.entity.Student;
+import com.landaiqing.infra.basic.service.StudentService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+
+/**
+ * @Classname StudentDomainServiceImpl
+ * @BelongsProject: student-Management-system
+ * @BelongsPackage: com.landaiqing.domain.service.impl
+ * @Author: landaiqing
+ * @CreateTime: 2024-03-04 23:14
+ * @Description: TODO
+ * @Version: 1.0
+ */
+@Service
+@Slf4j
+public class StudentDomainServiceImpl implements StudentDomainService {
+ @Resource
+ private StudentService studentService;
+
+ @Override
+ public Boolean uploadAvatar(StudentBO studentBO) {
+ Student student = new Student();
+ student.setId(studentBO.getId());
+ student.setAvatar(studentBO.getUrl());
+ student.setIsDeleted(IsDeletedFlagEnum.UN_DELETED.getCode());
+ Integer count = studentService.update(student);
+ return count > 0;
+ }
+
+ @Override
+ public PageResult queryAllStudentByPage(StudentBO studentBO) {
+ PageResult pageResult = new PageResult<>();
+ pageResult.setPageNo(studentBO.getPageNo());
+ pageResult.setPageSize(studentBO.getPageSize());
+ int start = (studentBO.getPageNo() - 1) * studentBO.getPageSize();
+ Student student = StudentBOConvert.INSTANCE.convertBOToEntity(studentBO);
+ Integer total = studentService.selectCount();
+ if (total == 0) {
+ return pageResult;
+ }
+ List studentList = studentService.queryPage(student, start, studentBO.getPageSize());
+ List studentBOS = StudentBOConvert.INSTANCE.convertBOToDTOList(studentList);
+ pageResult.setRecords(studentBOS);
+ pageResult.setTotal(total);
+ return pageResult;
+ }
+
+ @Override
+ public Boolean login(StudentBO studentBO) {
+ Student student = StudentBOConvert.INSTANCE.convertBOToEntity(studentBO);
+ Integer count= studentService.login(student);
+ return count>0;
+ }
+
+
+}
diff --git a/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/impl/StudentPermissionDomainServiceImpl.java b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/impl/StudentPermissionDomainServiceImpl.java
new file mode 100644
index 0000000..37d8f95
--- /dev/null
+++ b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/impl/StudentPermissionDomainServiceImpl.java
@@ -0,0 +1,43 @@
+package com.landaiqing.domain.service.impl;
+
+import com.landaiqing.domain.bo.PermissionBO;
+import com.landaiqing.domain.bo.StudentBO;
+import com.landaiqing.domain.service.*;
+import com.landaiqing.infra.basic.entity.Student;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Classname StudentPermissionDomainServiceImpl
+ * @BelongsProject: student-Management-system
+ * @BelongsPackage: com.landaiqing.domain.service.impl
+ * @Author: landaiqing
+ * @CreateTime: 2024-03-05 11:59
+ * @Description: TODO
+ * @Version: 1.0
+ */
+@Service
+public class StudentPermissionDomainServiceImpl implements StudentPermissionDomainService {
+ @Resource
+ private StudentPermissionDomainService studentPermissionDomainService;
+
+ @Resource
+ private StudentRoleDomainService studentRoleDomainService;
+
+ @Resource
+ private StudentDomainService studentDomainService;
+
+ @Resource
+ private RolePermissionDomainService rolePermissionDomainService;
+ @Resource
+ private PermissionDomainService permissionDomainService;
+ @Override
+ public List queryStudentPermission(StudentBO studentBO) {
+ Integer roleId = studentRoleDomainService.queryStudentRole(studentBO);
+ List permissionList= rolePermissionDomainService.queryPermissionByRoleId(roleId);
+ List permissionBOList= permissionDomainService.queryPermission(permissionList);
+ return permissionBOList;
+ }
+}
diff --git a/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/impl/StudentRoleDomainServiceImpl.java b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/impl/StudentRoleDomainServiceImpl.java
new file mode 100644
index 0000000..c399948
--- /dev/null
+++ b/sms-auth/sms-auth-domain/src/main/java/com/landaiqing/domain/service/impl/StudentRoleDomainServiceImpl.java
@@ -0,0 +1,38 @@
+package com.landaiqing.domain.service.impl;
+
+import com.landaiqing.domain.bo.PermissionBO;
+import com.landaiqing.domain.bo.StudentBO;
+import com.landaiqing.domain.convert.StudentBOConvert;
+import com.landaiqing.domain.service.StudentDomainService;
+import com.landaiqing.domain.service.StudentPermissionDomainService;
+import com.landaiqing.domain.service.StudentRoleDomainService;
+import com.landaiqing.infra.basic.entity.Student;
+import com.landaiqing.infra.basic.service.StudentRoleService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Classname StudentPermissionDomainServiceImpl
+ * @BelongsProject: student-Management-system
+ * @BelongsPackage: com.landaiqing.domain.service.impl
+ * @Author: landaiqing
+ * @CreateTime: 2024-03-05 11:59
+ * @Description: TODO
+ * @Version: 1.0
+ */
+@Service
+public class StudentRoleDomainServiceImpl implements StudentRoleDomainService {
+ @Resource
+ private StudentRoleService studentRoleService;
+
+
+ @Override
+ public Integer queryStudentRole(StudentBO studentBO) {
+
+ Student student = StudentBOConvert.INSTANCE.convertBOToEntity(studentBO);
+ Integer roleId = studentRoleService.queryRoleById(student);
+ return roleId;
+ }
+}
diff --git a/sms-auth/sms-auth-infra/pom.xml b/sms-auth/sms-auth-infra/pom.xml
new file mode 100644
index 0000000..f902aed
--- /dev/null
+++ b/sms-auth/sms-auth-infra/pom.xml
@@ -0,0 +1,47 @@
+
+ 4.0.0
+
+ com.landaiqing
+ sms-auth
+ 1.0-SNAPSHOT
+
+
+ sms-auth-infra
+ jar
+
+ sms-auth-infra
+ http://maven.apache.org
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+ 2.4.2
+
+
+
+ com.alibaba
+ druid-spring-boot-starter
+ 1.1.21
+
+
+
+ mysql
+ mysql-connector-java
+ 8.0.33
+
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ 3.4.0
+
+
+ com.landaiqing
+ sms-auth-common
+ 1.0-SNAPSHOT
+
+
+
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/config/MybatisConfiguration.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/config/MybatisConfiguration.java
new file mode 100644
index 0000000..2863ee2
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/config/MybatisConfiguration.java
@@ -0,0 +1,17 @@
+package com.landaiqing.infra.basic.config;
+
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class MybatisConfiguration {
+
+ @Bean
+ public MybatisPlusInterceptor mybatisPlusInterceptor(){
+ MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
+ mybatisPlusInterceptor.addInnerInterceptor(new MybatisPlusAllSqlLog());
+ return mybatisPlusInterceptor;
+ }
+
+}
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/config/MybatisPlusAllSqlLog.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/config/MybatisPlusAllSqlLog.java
new file mode 100644
index 0000000..f42ff81
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/config/MybatisPlusAllSqlLog.java
@@ -0,0 +1,116 @@
+package com.landaiqing.infra.basic.config;
+
+import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor;
+import org.apache.ibatis.executor.Executor;
+import org.apache.ibatis.mapping.BoundSql;
+import org.apache.ibatis.mapping.MappedStatement;
+import org.apache.ibatis.mapping.ParameterMapping;
+import org.apache.ibatis.reflection.MetaObject;
+import org.apache.ibatis.session.Configuration;
+import org.apache.ibatis.session.ResultHandler;
+import org.apache.ibatis.session.RowBounds;
+import org.apache.ibatis.type.TypeHandlerRegistry;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.util.CollectionUtils;
+
+import java.sql.SQLException;
+import java.text.DateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+import java.util.regex.Matcher;
+
+public class MybatisPlusAllSqlLog implements InnerInterceptor {
+ public static final Logger log = LoggerFactory.getLogger("sys-sql");
+
+ @Override
+ public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException {
+ logInfo(boundSql, ms, parameter);
+ }
+
+ @Override
+ public void beforeUpdate(Executor executor, MappedStatement ms, Object parameter) throws SQLException {
+ BoundSql boundSql = ms.getBoundSql(parameter);
+ logInfo(boundSql, ms, parameter);
+ }
+
+ private static void logInfo(BoundSql boundSql, MappedStatement ms, Object parameter) {
+ try {
+ log.info("parameter = " + parameter);
+ // 获取到节点的id,即sql语句的id
+ String sqlId = ms.getId();
+ log.info("sqlId = " + sqlId);
+ // 获取节点的配置
+ Configuration configuration = ms.getConfiguration();
+ // 获取到最终的sql语句
+ String sql = getSql(configuration, boundSql, sqlId);
+ log.info("完整的sql:{}", sql);
+ } catch (Exception e) {
+ log.error("异常:{}", e.getLocalizedMessage(), e);
+ }
+ }
+
+ // 封装了一下sql语句,使得结果返回完整xml路径下的sql语句节点id + sql语句
+ public static String getSql(Configuration configuration, BoundSql boundSql, String sqlId) {
+ return sqlId + ":" + showSql(configuration, boundSql);
+ }
+
+ // 进行?的替换
+ public static String showSql(Configuration configuration, BoundSql boundSql) {
+ // 获取参数
+ Object parameterObject = boundSql.getParameterObject();
+ List parameterMappings = boundSql.getParameterMappings();
+ // sql语句中多个空格都用一个空格代替
+ String sql = boundSql.getSql().replaceAll("[\\s]+", " ");
+ if (!CollectionUtils.isEmpty(parameterMappings) && parameterObject != null) {
+ // 获取类型处理器注册器,类型处理器的功能是进行java类型和数据库类型的转换
+ TypeHandlerRegistry typeHandlerRegistry = configuration.getTypeHandlerRegistry();
+ // 如果根据parameterObject.getClass()可以找到对应的类型,则替换
+ if (typeHandlerRegistry.hasTypeHandler(parameterObject.getClass())) {
+ sql = sql.replaceFirst("\\?",
+ Matcher.quoteReplacement(getParameterValue(parameterObject)));
+ } else {
+ // MetaObject主要是封装了originalObject对象,提供了get和set的方法用于获取和设置originalObject的属性值,主要支持对JavaBean、Collection、Map三种类型对象的操作
+ MetaObject metaObject = configuration.newMetaObject(parameterObject);
+ for (ParameterMapping parameterMapping : parameterMappings) {
+ String propertyName = parameterMapping.getProperty();
+ if (metaObject.hasGetter(propertyName)) {
+ Object obj = metaObject.getValue(propertyName);
+ sql = sql.replaceFirst("\\?",
+ Matcher.quoteReplacement(getParameterValue(obj)));
+ } else if (boundSql.hasAdditionalParameter(propertyName)) {
+ // 该分支是动态sql
+ Object obj = boundSql.getAdditionalParameter(propertyName);
+ sql = sql.replaceFirst("\\?",
+ Matcher.quoteReplacement(getParameterValue(obj)));
+ } else {
+ // 打印出缺失,提醒该参数缺失并防止错位
+ sql = sql.replaceFirst("\\?", "缺失");
+ }
+ }
+ }
+ }
+ return sql;
+ }
+
+ // 如果参数是String,则添加单引号, 如果是日期,则转换为时间格式器并加单引号; 对参数是null和不是null的情况作了处理
+ private static String getParameterValue(Object obj) {
+ String value;
+ if (obj instanceof String) {
+ value = "'" + obj.toString() + "'";
+ } else if (obj instanceof Date) {
+ DateFormat formatter = DateFormat.getDateTimeInstance(DateFormat.DEFAULT,
+ DateFormat.DEFAULT, Locale.CHINA);
+ value = "'" + formatter.format(new Date()) + "'";
+ } else {
+ if (obj != null) {
+ value = obj.toString();
+ } else {
+ value = "";
+ }
+ }
+ return value;
+ }
+
+}
\ No newline at end of file
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/config/SqlStatementInterceptor.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/config/SqlStatementInterceptor.java
new file mode 100644
index 0000000..4b20619
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/config/SqlStatementInterceptor.java
@@ -0,0 +1,52 @@
+package com.landaiqing.infra.basic.config;
+
+import org.apache.ibatis.cache.CacheKey;
+import org.apache.ibatis.executor.Executor;
+import org.apache.ibatis.mapping.BoundSql;
+import org.apache.ibatis.mapping.MappedStatement;
+import org.apache.ibatis.plugin.*;
+import org.apache.ibatis.session.ResultHandler;
+import org.apache.ibatis.session.RowBounds;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.Properties;
+
+
+@Intercepts({
+ @Signature(type = Executor.class, method = "update", args = {MappedStatement.class,
+ Object.class}),
+ @Signature(type = Executor.class, method = "query", args = {MappedStatement.class,
+ Object.class, RowBounds.class, ResultHandler.class, CacheKey.class, BoundSql.class})})
+public class SqlStatementInterceptor implements Interceptor {
+
+ public static final Logger log = LoggerFactory.getLogger("sys-sql");
+
+ @Override
+ public Object intercept(Invocation invocation) throws Throwable {
+ long startTime = System.currentTimeMillis();
+ try {
+ return invocation.proceed();
+ } finally {
+ long timeConsuming = System.currentTimeMillis() - startTime;
+ log.info("执行SQL:{}ms", timeConsuming);
+ if (timeConsuming > 999 && timeConsuming < 5000) {
+ log.info("执行SQL大于1s:{}ms", timeConsuming);
+ } else if (timeConsuming >= 5000 && timeConsuming < 10000) {
+ log.info("执行SQL大于5s:{}ms", timeConsuming);
+ } else if (timeConsuming >= 10000) {
+ log.info("执行SQL大于10s:{}ms", timeConsuming);
+ }
+ }
+ }
+
+ @Override
+ public Object plugin(Object target) {
+ return Plugin.wrap(target, this);
+ }
+
+ @Override
+ public void setProperties(Properties properties) {
+
+ }
+}
\ No newline at end of file
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/ClazzDao.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/ClazzDao.java
new file mode 100644
index 0000000..d2fb615
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/ClazzDao.java
@@ -0,0 +1,83 @@
+package com.landaiqing.infra.basic.dao;
+
+import com.landaiqing.infra.basic.entity.Clazz;
+import org.apache.ibatis.annotations.Param;
+
+import java.awt.print.Pageable;
+import java.util.List;
+
+/**
+ * (Clazz)表数据库访问层
+ *
+ * @author makejava
+ * @since 2024-03-04 22:43:59
+ */
+public interface ClazzDao {
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ Clazz queryById(Integer id);
+
+ /**
+ * 查询指定行数据
+ *
+ * @param clazz 查询条件
+ * @return 对象列表
+ */
+ List queryAllByLimit(Clazz clazz);
+
+ /**
+ * 统计总行数
+ *
+ * @param clazz 查询条件
+ * @return 总行数
+ */
+ long count(Clazz clazz);
+
+ /**
+ * 新增数据
+ *
+ * @param clazz 实例对象
+ * @return 影响行数
+ */
+ int insert(Clazz clazz);
+
+ /**
+ * 批量新增数据(MyBatis原生foreach方法)
+ *
+ * @param entities List 实例对象列表
+ * @return 影响行数
+ */
+ int insertBatch(@Param("entities") List entities);
+
+ /**
+ * 批量新增或按主键更新数据(MyBatis原生foreach方法)
+ *
+ * @param entities List 实例对象列表
+ * @return 影响行数
+ * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参
+ */
+ int insertOrUpdateBatch(@Param("entities") List entities);
+
+ /**
+ * 修改数据
+ *
+ * @param clazz 实例对象
+ * @return 影响行数
+ */
+ int update(Clazz clazz);
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 影响行数
+ */
+ int deleteById(Integer id);
+
+}
+
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/GradeDao.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/GradeDao.java
new file mode 100644
index 0000000..a179a2d
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/GradeDao.java
@@ -0,0 +1,83 @@
+package com.landaiqing.infra.basic.dao;
+
+import com.landaiqing.infra.basic.entity.Grade;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * (Grade)表数据库访问层
+ *
+ * @author makejava
+ * @since 2024-03-04 22:29:20
+ */
+public interface GradeDao {
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ Grade queryById(Long id);
+
+ /**
+ * 查询指定行数据
+ *
+ * @param grade 查询条件
+ * @param pageable 分页对象
+ * @return 对象列表
+ */
+ List queryAllByLimit(Grade grade);
+
+ /**
+ * 统计总行数
+ *
+ * @param grade 查询条件
+ * @return 总行数
+ */
+ long count(Grade grade);
+
+ /**
+ * 新增数据
+ *
+ * @param grade 实例对象
+ * @return 影响行数
+ */
+ int insert(Grade grade);
+
+ /**
+ * 批量新增数据(MyBatis原生foreach方法)
+ *
+ * @param entities List 实例对象列表
+ * @return 影响行数
+ */
+ int insertBatch(@Param("entities") List entities);
+
+ /**
+ * 批量新增或按主键更新数据(MyBatis原生foreach方法)
+ *
+ * @param entities List 实例对象列表
+ * @return 影响行数
+ * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参
+ */
+ int insertOrUpdateBatch(@Param("entities") List entities);
+
+ /**
+ * 修改数据
+ *
+ * @param grade 实例对象
+ * @return 影响行数
+ */
+ int update(Grade grade);
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 影响行数
+ */
+ int deleteById(Long id);
+
+}
+
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/PermissionDao.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/PermissionDao.java
new file mode 100644
index 0000000..2078132
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/PermissionDao.java
@@ -0,0 +1,84 @@
+package com.landaiqing.infra.basic.dao;
+
+import com.landaiqing.infra.basic.entity.Permission;
+import org.apache.ibatis.annotations.Param;
+
+import java.awt.print.Pageable;
+import java.util.List;
+
+/**
+ * (Permission)表数据库访问层
+ *
+ * @author makejava
+ * @since 2024-03-04 22:29:35
+ */
+public interface PermissionDao {
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ Permission queryById(Long id);
+
+ /**
+ * 查询指定行数据
+ *
+ * @param permission 查询条件
+ * @return 对象列表
+ */
+ List queryAllByLimit(Permission permission);
+
+ /**
+ * 统计总行数
+ *
+ * @param permission 查询条件
+ * @return 总行数
+ */
+ long count(Permission permission);
+
+ /**
+ * 新增数据
+ *
+ * @param permission 实例对象
+ * @return 影响行数
+ */
+ int insert(Permission permission);
+
+ /**
+ * 批量新增数据(MyBatis原生foreach方法)
+ *
+ * @param entities List 实例对象列表
+ * @return 影响行数
+ */
+ int insertBatch(@Param("entities") List entities);
+
+ /**
+ * 批量新增或按主键更新数据(MyBatis原生foreach方法)
+ *
+ * @param entities List 实例对象列表
+ * @return 影响行数
+ * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参
+ */
+ int insertOrUpdateBatch(@Param("entities") List entities);
+
+ /**
+ * 修改数据
+ *
+ * @param permission 实例对象
+ * @return 影响行数
+ */
+ int update(Permission permission);
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 影响行数
+ */
+ int deleteById(Long id);
+
+ List queryPermission(@Param("list") List permissionList);
+}
+
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/RoleDao.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/RoleDao.java
new file mode 100644
index 0000000..0ef518a
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/RoleDao.java
@@ -0,0 +1,83 @@
+package com.landaiqing.infra.basic.dao;
+
+import com.landaiqing.infra.basic.entity.Role;
+import org.apache.ibatis.annotations.Param;
+
+import java.awt.print.Pageable;
+import java.util.List;
+
+/**
+ * (Role)表数据库访问层
+ *
+ * @author makejava
+ * @since 2024-03-04 22:29:56
+ */
+public interface RoleDao {
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ Role queryById(Long id);
+
+ /**
+ * 查询指定行数据
+ *
+ * @param role 查询条件
+ * @return 对象列表
+ */
+ List queryAllByLimit(Role role);
+
+ /**
+ * 统计总行数
+ *
+ * @param role 查询条件
+ * @return 总行数
+ */
+ long count(Role role);
+
+ /**
+ * 新增数据
+ *
+ * @param role 实例对象
+ * @return 影响行数
+ */
+ int insert(Role role);
+
+ /**
+ * 批量新增数据(MyBatis原生foreach方法)
+ *
+ * @param entities List 实例对象列表
+ * @return 影响行数
+ */
+ int insertBatch(@Param("entities") List entities);
+
+ /**
+ * 批量新增或按主键更新数据(MyBatis原生foreach方法)
+ *
+ * @param entities List 实例对象列表
+ * @return 影响行数
+ * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参
+ */
+ int insertOrUpdateBatch(@Param("entities") List entities);
+
+ /**
+ * 修改数据
+ *
+ * @param role 实例对象
+ * @return 影响行数
+ */
+ int update(Role role);
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 影响行数
+ */
+ int deleteById(Long id);
+
+}
+
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/RolePermissionDao.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/RolePermissionDao.java
new file mode 100644
index 0000000..fe3ac01
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/RolePermissionDao.java
@@ -0,0 +1,84 @@
+package com.landaiqing.infra.basic.dao;
+
+import com.landaiqing.infra.basic.entity.RolePermission;
+import org.apache.ibatis.annotations.Param;
+
+import java.awt.print.Pageable;
+import java.util.List;
+
+/**
+ * (RolePermission)表数据库访问层
+ *
+ * @author makejava
+ * @since 2024-03-04 22:30:14
+ */
+public interface RolePermissionDao {
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ RolePermission queryById(Long id);
+
+ /**
+ * 查询指定行数据
+ *
+ * @param rolePermission 查询条件
+ * @return 对象列表
+ */
+ List queryAllByLimit(RolePermission rolePermission);
+
+ /**
+ * 统计总行数
+ *
+ * @param rolePermission 查询条件
+ * @return 总行数
+ */
+ long count(RolePermission rolePermission);
+
+ /**
+ * 新增数据
+ *
+ * @param rolePermission 实例对象
+ * @return 影响行数
+ */
+ int insert(RolePermission rolePermission);
+
+ /**
+ * 批量新增数据(MyBatis原生foreach方法)
+ *
+ * @param entities List 实例对象列表
+ * @return 影响行数
+ */
+ int insertBatch(@Param("entities") List entities);
+
+ /**
+ * 批量新增或按主键更新数据(MyBatis原生foreach方法)
+ *
+ * @param entities List 实例对象列表
+ * @return 影响行数
+ * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参
+ */
+ int insertOrUpdateBatch(@Param("entities") List entities);
+
+ /**
+ * 修改数据
+ *
+ * @param rolePermission 实例对象
+ * @return 影响行数
+ */
+ int update(RolePermission rolePermission);
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 影响行数
+ */
+ int deleteById(Long id);
+
+ List queryPermissionById(@Param("roleId") Integer roleId);
+}
+
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/StudentDao.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/StudentDao.java
new file mode 100644
index 0000000..7c74cdd
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/StudentDao.java
@@ -0,0 +1,90 @@
+package com.landaiqing.infra.basic.dao;
+
+import com.landaiqing.auth.common.entity.PageResult;
+import com.landaiqing.infra.basic.entity.Student;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * (Student)表数据库访问层
+ *
+ * @author makejava
+ * @since 2024-03-04 22:25:32
+ */
+public interface StudentDao {
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ Student queryById(Long id);
+
+ /**
+ * 查询指定行数据
+ *
+ * @param student 查询条件
+ * @return 对象列表
+ */
+ List queryAllByLimit(Student student);
+
+ /**
+ * 统计总行数
+ *
+ * @param student 查询条件
+ * @return 总行数
+ */
+ long count(Student student);
+
+ /**
+ * 新增数据
+ *
+ * @param student 实例对象
+ * @return 影响行数
+ */
+ int insert(Student student);
+
+ /**
+ * 批量新增数据(MyBatis原生foreach方法)
+ *
+ * @param entities List 实例对象列表
+ * @return 影响行数
+ */
+ int insertBatch(@Param("entities") List entities);
+
+ /**
+ * 批量新增或按主键更新数据(MyBatis原生foreach方法)
+ *
+ * @param entities List 实例对象列表
+ * @return 影响行数
+ * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参
+ */
+ int insertOrUpdateBatch(@Param("entities") List entities);
+
+ /**
+ * 修改数据
+ *
+ * @param student 实例对象
+ * @return 影响行数
+ */
+ int update(Student student);
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 影响行数
+ */
+ int deleteById(Long id);
+
+ List queryPage(@Param("student") Student student,
+ @Param("start") int start,
+ @Param("pageSize") Integer pageSize);
+
+ Integer selectCount();
+
+ Integer login(Student student);
+}
+
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/StudentRoleDao.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/StudentRoleDao.java
new file mode 100644
index 0000000..c77ce02
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/StudentRoleDao.java
@@ -0,0 +1,85 @@
+package com.landaiqing.infra.basic.dao;
+
+import com.landaiqing.infra.basic.entity.Student;
+import com.landaiqing.infra.basic.entity.StudentRole;
+import org.apache.ibatis.annotations.Param;
+
+import java.awt.print.Pageable;
+import java.util.List;
+
+/**
+ * (StudentRole)表数据库访问层
+ *
+ * @author makejava
+ * @since 2024-03-05 12:17:53
+ */
+public interface StudentRoleDao {
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ StudentRole queryById(Integer id);
+
+ /**
+ * 查询指定行数据
+ *
+ * @param studentRole 查询条件
+ * @return 对象列表
+ */
+ List queryAllByLimit(StudentRole studentRole);
+
+ /**
+ * 统计总行数
+ *
+ * @param studentRole 查询条件
+ * @return 总行数
+ */
+ long count(StudentRole studentRole);
+
+ /**
+ * 新增数据
+ *
+ * @param studentRole 实例对象
+ * @return 影响行数
+ */
+ int insert(StudentRole studentRole);
+
+ /**
+ * 批量新增数据(MyBatis原生foreach方法)
+ *
+ * @param entities List 实例对象列表
+ * @return 影响行数
+ */
+ int insertBatch(@Param("entities") List entities);
+
+ /**
+ * 批量新增或按主键更新数据(MyBatis原生foreach方法)
+ *
+ * @param entities List 实例对象列表
+ * @return 影响行数
+ * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参
+ */
+ int insertOrUpdateBatch(@Param("entities") List entities);
+
+ /**
+ * 修改数据
+ *
+ * @param studentRole 实例对象
+ * @return 影响行数
+ */
+ int update(StudentRole studentRole);
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 影响行数
+ */
+ int deleteById(Integer id);
+
+ Integer queryRoleById(Student student);
+}
+
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/UserDao.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/UserDao.java
new file mode 100644
index 0000000..ffe49f1
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/UserDao.java
@@ -0,0 +1,81 @@
+package com.landaiqing.infra.basic.dao;
+
+import com.landaiqing.infra.basic.entity.User;
+import org.apache.ibatis.annotations.Param;
+import java.util.List;
+
+/**
+ * (User)表数据库访问层
+ *
+ * @author makejava
+ * @since 2024-03-05 12:17:20
+ */
+public interface UserDao {
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ User queryById(Integer id);
+
+ /**
+ * 查询指定行数据
+ *
+ * @param user 查询条件
+ * @return 对象列表
+ */
+ List queryAllByLimit(User user);
+
+ /**
+ * 统计总行数
+ *
+ * @param user 查询条件
+ * @return 总行数
+ */
+ long count(User user);
+
+ /**
+ * 新增数据
+ *
+ * @param user 实例对象
+ * @return 影响行数
+ */
+ int insert(User user);
+
+ /**
+ * 批量新增数据(MyBatis原生foreach方法)
+ *
+ * @param entities List 实例对象列表
+ * @return 影响行数
+ */
+ int insertBatch(@Param("entities") List entities);
+
+ /**
+ * 批量新增或按主键更新数据(MyBatis原生foreach方法)
+ *
+ * @param entities List 实例对象列表
+ * @return 影响行数
+ * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参
+ */
+ int insertOrUpdateBatch(@Param("entities") List entities);
+
+ /**
+ * 修改数据
+ *
+ * @param user 实例对象
+ * @return 影响行数
+ */
+ int update(User user);
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 影响行数
+ */
+ int deleteById(Integer id);
+
+}
+
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/UserRoleDao.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/UserRoleDao.java
new file mode 100644
index 0000000..54ffe92
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/dao/UserRoleDao.java
@@ -0,0 +1,83 @@
+package com.landaiqing.infra.basic.dao;
+
+import com.landaiqing.infra.basic.entity.UserRole;
+import org.apache.ibatis.annotations.Param;
+
+import java.awt.print.Pageable;
+import java.util.List;
+
+/**
+ * (UserRole)表数据库访问层
+ *
+ * @author makejava
+ * @since 2024-03-05 12:18:10
+ */
+public interface UserRoleDao {
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ UserRole queryById(Long id);
+
+ /**
+ * 查询指定行数据
+ *
+ * @param userRole 查询条件
+ * @return 对象列表
+ */
+ List queryAllByLimit(UserRole userRole);
+
+ /**
+ * 统计总行数
+ *
+ * @param userRole 查询条件
+ * @return 总行数
+ */
+ long count(UserRole userRole);
+
+ /**
+ * 新增数据
+ *
+ * @param userRole 实例对象
+ * @return 影响行数
+ */
+ int insert(UserRole userRole);
+
+ /**
+ * 批量新增数据(MyBatis原生foreach方法)
+ *
+ * @param entities List 实例对象列表
+ * @return 影响行数
+ */
+ int insertBatch(@Param("entities") List entities);
+
+ /**
+ * 批量新增或按主键更新数据(MyBatis原生foreach方法)
+ *
+ * @param entities List 实例对象列表
+ * @return 影响行数
+ * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常,请自行校验入参
+ */
+ int insertOrUpdateBatch(@Param("entities") List entities);
+
+ /**
+ * 修改数据
+ *
+ * @param userRole 实例对象
+ * @return 影响行数
+ */
+ int update(UserRole userRole);
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 影响行数
+ */
+ int deleteById(Long id);
+
+}
+
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/Clazz.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/Clazz.java
new file mode 100644
index 0000000..d04ebfb
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/Clazz.java
@@ -0,0 +1,50 @@
+package com.landaiqing.infra.basic.entity;
+
+import java.io.Serializable;
+
+/**
+ * (Clazz)实体类
+ *
+ * @author makejava
+ * @since 2024-03-04 22:44:00
+ */
+public class Clazz implements Serializable {
+ private static final long serialVersionUID = -14659318323663338L;
+
+ private Integer id;
+/**
+ * 班级名称
+ */
+ private String className;
+/**
+ * 班级人数
+ */
+ private Integer num;
+
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getClassName() {
+ return className;
+ }
+
+ public void setClassName(String className) {
+ this.className = className;
+ }
+
+ public Integer getNum() {
+ return num;
+ }
+
+ public void setNum(Integer num) {
+ this.num = num;
+ }
+
+}
+
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/Grade.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/Grade.java
new file mode 100644
index 0000000..4cdfb24
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/Grade.java
@@ -0,0 +1,28 @@
+package com.landaiqing.infra.basic.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * (Grade)实体类
+ *
+ * @author makejava
+ * @since 2024-03-04 22:29:20
+ */
+@Data
+public class Grade implements Serializable {
+
+ private Long id;
+ /**
+ * 年级
+ */
+ private String gradeName;
+ /**
+ * 年级人数
+ */
+ private Long num;
+
+
+}
+
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/Permission.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/Permission.java
new file mode 100644
index 0000000..e035bf4
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/Permission.java
@@ -0,0 +1,54 @@
+package com.landaiqing.infra.basic.entity;
+
+import lombok.Data;
+
+import java.util.Date;
+import java.io.Serializable;
+
+/**
+ * (Permission)实体类
+ *
+ * @author makejava
+ * @since 2024-03-04 22:29:35
+ */
+@Data
+public class Permission implements Serializable {
+
+ private Long id;
+
+ private String name;
+
+ private Long parentId;
+
+ private Integer type;
+
+ private String menuUrl;
+
+ private Integer status;
+
+ private Integer show;
+
+ private String icon;
+
+ private String permissionKey;
+ /**
+ * 创建人
+ */
+ private String createdBy;
+ /**
+ * 创建时间
+ */
+ private Date createdTime;
+ /**
+ * 更新人
+ */
+ private String updateBy;
+ /**
+ * 更新时间
+ */
+ private Date updateTime;
+
+ private Integer isDeleted;
+
+}
+
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/Role.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/Role.java
new file mode 100644
index 0000000..e63b456
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/Role.java
@@ -0,0 +1,43 @@
+package com.landaiqing.infra.basic.entity;
+
+import lombok.Data;
+
+import java.util.Date;
+import java.io.Serializable;
+
+/**
+ * (Role)实体类
+ *
+ * @author makejava
+ * @since 2024-03-04 22:29:56
+ */
+@Data
+public class Role implements Serializable {
+
+ private Long id;
+
+ private String roleName;
+
+ private String roleKey;
+ /**
+ * 创建人
+ */
+ private String createdBy;
+ /**
+ * 创建时间
+ */
+ private Date createdTime;
+ /**
+ * 更新人
+ */
+ private String updateBy;
+ /**
+ * 更新时间
+ */
+ private Date updateTime;
+
+ private Integer isDeleted;
+
+
+}
+
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/RolePermission.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/RolePermission.java
new file mode 100644
index 0000000..6311432
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/RolePermission.java
@@ -0,0 +1,43 @@
+package com.landaiqing.infra.basic.entity;
+
+import lombok.Data;
+
+import java.util.Date;
+import java.io.Serializable;
+
+/**
+ * (RolePermission)实体类
+ *
+ * @author makejava
+ * @since 2024-03-04 22:30:14
+ */
+@Data
+public class RolePermission implements Serializable {
+
+ private Long id;
+
+ private Long roleId;
+
+ private Long permissionId;
+ /**
+ * 创建人
+ */
+ private String createdBy;
+ /**
+ * 创建时间
+ */
+ private Date createdTime;
+ /**
+ * 更新人
+ */
+ private String updateBy;
+ /**
+ * 更新时间
+ */
+ private Date updateTime;
+
+ private Integer isDeleted;
+
+
+}
+
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/Student.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/Student.java
new file mode 100644
index 0000000..c62b699
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/Student.java
@@ -0,0 +1,82 @@
+package com.landaiqing.infra.basic.entity;
+
+import lombok.Data;
+
+import java.util.Date;
+import java.io.Serializable;
+
+/**
+ * (Student)实体类
+ *
+ * @author makejava
+ * @since 2024-03-04 22:25:32
+ */
+@Data
+public class Student implements Serializable {
+
+ /**
+ * id
+ */
+ private Long id;
+ /**
+ * 学号
+ */
+ private String sno;
+ /**
+ * 密码
+ */
+ private String password;
+ /**
+ * 姓名
+ */
+ private String username;
+ /**
+ * 班级
+ */
+ private Integer className;
+ /**
+ * 年级
+ */
+ private Integer grade;
+ /**
+ * 年龄
+ */
+ private Integer age;
+ /**
+ * 性别
+ */
+ private Integer sex;
+ /**
+ * 头像链接
+ */
+ private String avatar;
+ /**
+ * 出生日期
+ */
+ private Date dateOfBirth;
+ /**
+ * email
+ */
+ private String email;
+ /**
+ * 电话
+ */
+ private String phoneNumber;
+ /**
+ * 班级id
+ */
+ private Long classId;
+ /**
+ * 年级id
+ */
+ private Long gradeId;
+ /**
+ * 角色id
+ */
+ private Integer roleId;
+
+ private Integer isDeleted;
+
+
+}
+
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/StudentRole.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/StudentRole.java
new file mode 100644
index 0000000..c8126a2
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/StudentRole.java
@@ -0,0 +1,46 @@
+package com.landaiqing.infra.basic.entity;
+
+import java.io.Serializable;
+
+/**
+ * (StudentRole)实体类
+ *
+ * @author makejava
+ * @since 2024-03-05 12:17:53
+ */
+public class StudentRole implements Serializable {
+ private static final long serialVersionUID = -31879713425539695L;
+
+ private Integer id;
+
+ private Long studentId;
+
+ private Long roleId;
+
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public Long getStudentId() {
+ return studentId;
+ }
+
+ public void setStudentId(Long studentId) {
+ this.studentId = studentId;
+ }
+
+ public Long getRoleId() {
+ return roleId;
+ }
+
+ public void setRoleId(Long roleId) {
+ this.roleId = roleId;
+ }
+
+}
+
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/User.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/User.java
new file mode 100644
index 0000000..eee7cf6
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/User.java
@@ -0,0 +1,46 @@
+package com.landaiqing.infra.basic.entity;
+
+import java.io.Serializable;
+
+/**
+ * (User)实体类
+ *
+ * @author makejava
+ * @since 2024-03-05 12:17:20
+ */
+public class User implements Serializable {
+ private static final long serialVersionUID = 722350032981333679L;
+
+ private Integer id;
+
+ private String username;
+
+ private String password;
+
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer id) {
+ this.id = id;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+}
+
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/UserRole.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/UserRole.java
new file mode 100644
index 0000000..7293581
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/entity/UserRole.java
@@ -0,0 +1,46 @@
+package com.landaiqing.infra.basic.entity;
+
+import java.io.Serializable;
+
+/**
+ * (UserRole)实体类
+ *
+ * @author makejava
+ * @since 2024-03-05 12:18:10
+ */
+public class UserRole implements Serializable {
+ private static final long serialVersionUID = -74671402061801196L;
+
+ private Long id;
+
+ private Long userId;
+
+ private Long roleId;
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public Long getUserId() {
+ return userId;
+ }
+
+ public void setUserId(Long userId) {
+ this.userId = userId;
+ }
+
+ public Long getRoleId() {
+ return roleId;
+ }
+
+ public void setRoleId(Long roleId) {
+ this.roleId = roleId;
+ }
+
+}
+
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/ClazzService.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/ClazzService.java
new file mode 100644
index 0000000..4463a5f
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/ClazzService.java
@@ -0,0 +1,48 @@
+package com.landaiqing.infra.basic.service;
+
+import com.landaiqing.infra.basic.entity.Clazz;
+
+
+/**
+ * (Clazz)表服务接口
+ *
+ * @author makejava
+ * @since 2024-03-04 22:44:00
+ */
+public interface ClazzService {
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ Clazz queryById(Integer id);
+
+
+
+ /**
+ * 新增数据
+ *
+ * @param clazz 实例对象
+ * @return 实例对象
+ */
+ Clazz insert(Clazz clazz);
+
+ /**
+ * 修改数据
+ *
+ * @param clazz 实例对象
+ * @return 实例对象
+ */
+ Clazz update(Clazz clazz);
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 是否成功
+ */
+ boolean deleteById(Integer id);
+
+}
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/GradeService.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/GradeService.java
new file mode 100644
index 0000000..9f04009
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/GradeService.java
@@ -0,0 +1,49 @@
+package com.landaiqing.infra.basic.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.landaiqing.infra.basic.entity.Grade;
+
+
+/**
+ * (Grade)表服务接口
+ *
+ * @author makejava
+ * @since 2024-03-04 22:29:20
+ */
+public interface GradeService {
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ Grade queryById(Long id);
+
+
+
+ /**
+ * 新增数据
+ *
+ * @param grade 实例对象
+ * @return 实例对象
+ */
+ Grade insert(Grade grade);
+
+ /**
+ * 修改数据
+ *
+ * @param grade 实例对象
+ * @return 实例对象
+ */
+ Grade update(Grade grade);
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 是否成功
+ */
+ boolean deleteById(Long id);
+
+}
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/PermissionService.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/PermissionService.java
new file mode 100644
index 0000000..a663205
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/PermissionService.java
@@ -0,0 +1,52 @@
+package com.landaiqing.infra.basic.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.landaiqing.infra.basic.entity.Permission;
+
+import java.util.List;
+
+
+/**
+ * (Permission)表服务接口
+ *
+ * @author makejava
+ * @since 2024-03-04 22:29:35
+ */
+public interface PermissionService {
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ Permission queryById(Long id);
+
+
+
+ /**
+ * 新增数据
+ *
+ * @param permission 实例对象
+ * @return 实例对象
+ */
+ Permission insert(Permission permission);
+
+ /**
+ * 修改数据
+ *
+ * @param permission 实例对象
+ * @return 实例对象
+ */
+ Permission update(Permission permission);
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 是否成功
+ */
+ boolean deleteById(Long id);
+
+ List queryPermission(List permissionList);
+}
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/RolePermissionService.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/RolePermissionService.java
new file mode 100644
index 0000000..d952a0b
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/RolePermissionService.java
@@ -0,0 +1,52 @@
+package com.landaiqing.infra.basic.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.landaiqing.infra.basic.entity.RolePermission;
+
+import java.util.List;
+
+
+/**
+ * (RolePermission)表服务接口
+ *
+ * @author makejava
+ * @since 2024-03-04 22:30:14
+ */
+public interface RolePermissionService {
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ RolePermission queryById(Long id);
+
+
+
+ /**
+ * 新增数据
+ *
+ * @param rolePermission 实例对象
+ * @return 实例对象
+ */
+ RolePermission insert(RolePermission rolePermission);
+
+ /**
+ * 修改数据
+ *
+ * @param rolePermission 实例对象
+ * @return 实例对象
+ */
+ RolePermission update(RolePermission rolePermission);
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 是否成功
+ */
+ boolean deleteById(Long id);
+
+ List queryPermissionById(Integer roleId);
+}
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/RoleService.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/RoleService.java
new file mode 100644
index 0000000..931d731
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/RoleService.java
@@ -0,0 +1,48 @@
+package com.landaiqing.infra.basic.service;
+
+import com.landaiqing.infra.basic.entity.Role;
+
+
+/**
+ * (Role)表服务接口
+ *
+ * @author makejava
+ * @since 2024-03-04 22:29:56
+ */
+public interface RoleService {
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ Role queryById(Long id);
+
+
+
+ /**
+ * 新增数据
+ *
+ * @param role 实例对象
+ * @return 实例对象
+ */
+ Role insert(Role role);
+
+ /**
+ * 修改数据
+ *
+ * @param role 实例对象
+ * @return 实例对象
+ */
+ Role update(Role role);
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 是否成功
+ */
+ boolean deleteById(Long id);
+
+}
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/StudentRoleService.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/StudentRoleService.java
new file mode 100644
index 0000000..1ecee41
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/StudentRoleService.java
@@ -0,0 +1,51 @@
+package com.landaiqing.infra.basic.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.landaiqing.infra.basic.entity.Student;
+import com.landaiqing.infra.basic.entity.StudentRole;
+
+
+/**
+ * (StudentRole)表服务接口
+ *
+ * @author makejava
+ * @since 2024-03-05 12:17:53
+ */
+public interface StudentRoleService {
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ StudentRole queryById(Integer id);
+
+
+
+ /**
+ * 新增数据
+ *
+ * @param studentRole 实例对象
+ * @return 实例对象
+ */
+ StudentRole insert(StudentRole studentRole);
+
+ /**
+ * 修改数据
+ *
+ * @param studentRole 实例对象
+ * @return 实例对象
+ */
+ StudentRole update(StudentRole studentRole);
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 是否成功
+ */
+ boolean deleteById(Integer id);
+
+ Integer queryRoleById(Student student);
+}
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/StudentService.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/StudentService.java
new file mode 100644
index 0000000..ef025f4
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/StudentService.java
@@ -0,0 +1,56 @@
+package com.landaiqing.infra.basic.service;
+
+import com.landaiqing.auth.common.entity.PageResult;
+import com.landaiqing.infra.basic.entity.Student;
+
+
+import java.util.List;
+
+/**
+ * (Student)表服务接口
+ *
+ * @author makejava
+ * @since 2024-03-04 22:25:33
+ */
+public interface StudentService {
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ Student queryById(Long id);
+
+
+
+ /**
+ * 新增数据
+ *
+ * @param student 实例对象
+ * @return 实例对象
+ */
+ Student insert(Student student);
+
+ /**
+ * 修改数据
+ *
+ * @param student 实例对象
+ * @return 实例对象
+ */
+ Integer update(Student student);
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 是否成功
+ */
+ boolean deleteById(Long id);
+
+ List queryPage(Student student,int start, Integer pageSize);
+
+ Integer selectCount();
+
+ Integer login(Student student);
+}
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/UserRoleService.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/UserRoleService.java
new file mode 100644
index 0000000..98c49ba
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/UserRoleService.java
@@ -0,0 +1,47 @@
+package com.landaiqing.infra.basic.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.landaiqing.infra.basic.entity.UserRole;
+
+/**
+ * (UserRole)表服务接口
+ *
+ * @author makejava
+ * @since 2024-03-05 12:18:10
+ */
+public interface UserRoleService {
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ UserRole queryById(Long id);
+
+
+ /**
+ * 新增数据
+ *
+ * @param userRole 实例对象
+ * @return 实例对象
+ */
+ UserRole insert(UserRole userRole);
+
+ /**
+ * 修改数据
+ *
+ * @param userRole 实例对象
+ * @return 实例对象
+ */
+ UserRole update(UserRole userRole);
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 是否成功
+ */
+ boolean deleteById(Long id);
+
+}
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/UserService.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/UserService.java
new file mode 100644
index 0000000..52f6840
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/UserService.java
@@ -0,0 +1,47 @@
+package com.landaiqing.infra.basic.service;
+
+import com.landaiqing.infra.basic.entity.User;
+
+
+/**
+ * (User)表服务接口
+ *
+ * @author makejava
+ * @since 2024-03-05 12:17:20
+ */
+public interface UserService {
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ User queryById(Integer id);
+
+
+ /**
+ * 新增数据
+ *
+ * @param user 实例对象
+ * @return 实例对象
+ */
+ User insert(User user);
+
+ /**
+ * 修改数据
+ *
+ * @param user 实例对象
+ * @return 实例对象
+ */
+ User update(User user);
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 是否成功
+ */
+ boolean deleteById(Integer id);
+
+}
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/ClazzServiceImpl.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/ClazzServiceImpl.java
new file mode 100644
index 0000000..be5a5f4
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/ClazzServiceImpl.java
@@ -0,0 +1,69 @@
+package com.landaiqing.infra.basic.service.impl;
+
+import com.landaiqing.infra.basic.entity.Clazz;
+import com.landaiqing.infra.basic.dao.ClazzDao;
+import com.landaiqing.infra.basic.service.ClazzService;
+import org.springframework.stereotype.Service;
+
+
+import javax.annotation.Resource;
+
+/**
+ * (Clazz)表服务实现类
+ *
+ * @author makejava
+ * @since 2024-03-04 22:44:00
+ */
+@Service("clazzService")
+public class ClazzServiceImpl implements ClazzService {
+ @Resource
+ private ClazzDao clazzDao;
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ @Override
+ public Clazz queryById(Integer id) {
+ return this.clazzDao.queryById(id);
+ }
+
+
+
+ /**
+ * 新增数据
+ *
+ * @param clazz 实例对象
+ * @return 实例对象
+ */
+ @Override
+ public Clazz insert(Clazz clazz) {
+ this.clazzDao.insert(clazz);
+ return clazz;
+ }
+
+ /**
+ * 修改数据
+ *
+ * @param clazz 实例对象
+ * @return 实例对象
+ */
+ @Override
+ public Clazz update(Clazz clazz) {
+ this.clazzDao.update(clazz);
+ return this.queryById(clazz.getId());
+ }
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 是否成功
+ */
+ @Override
+ public boolean deleteById(Integer id) {
+ return this.clazzDao.deleteById(id) > 0;
+ }
+}
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/GradeServiceImpl.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/GradeServiceImpl.java
new file mode 100644
index 0000000..1b8ae96
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/GradeServiceImpl.java
@@ -0,0 +1,70 @@
+package com.landaiqing.infra.basic.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.landaiqing.infra.basic.entity.Grade;
+import com.landaiqing.infra.basic.dao.GradeDao;
+import com.landaiqing.infra.basic.service.GradeService;
+import org.springframework.stereotype.Service;
+
+
+import javax.annotation.Resource;
+
+/**
+ * (Grade)表服务实现类
+ *
+ * @author makejava
+ * @since 2024-03-04 22:29:20
+ */
+@Service("gradeService")
+public class GradeServiceImpl implements GradeService {
+ @Resource
+ private GradeDao gradeDao;
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ @Override
+ public Grade queryById(Long id) {
+ return this.gradeDao.queryById(id);
+ }
+
+
+
+ /**
+ * 新增数据
+ *
+ * @param grade 实例对象
+ * @return 实例对象
+ */
+ @Override
+ public Grade insert(Grade grade) {
+ this.gradeDao.insert(grade);
+ return grade;
+ }
+
+ /**
+ * 修改数据
+ *
+ * @param grade 实例对象
+ * @return 实例对象
+ */
+ @Override
+ public Grade update(Grade grade) {
+ this.gradeDao.update(grade);
+ return this.queryById(grade.getId());
+ }
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 是否成功
+ */
+ @Override
+ public boolean deleteById(Long id) {
+ return this.gradeDao.deleteById(id) > 0;
+ }
+}
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/PermissionServiceImpl.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/PermissionServiceImpl.java
new file mode 100644
index 0000000..ebe99f5
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/PermissionServiceImpl.java
@@ -0,0 +1,75 @@
+package com.landaiqing.infra.basic.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.landaiqing.infra.basic.entity.Permission;
+import com.landaiqing.infra.basic.dao.PermissionDao;
+import com.landaiqing.infra.basic.service.PermissionService;
+import org.springframework.stereotype.Service;
+
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * (Permission)表服务实现类
+ *
+ * @author makejava
+ * @since 2024-03-04 22:29:36
+ */
+@Service("permissionService")
+public class PermissionServiceImpl implements PermissionService {
+ @Resource
+ private PermissionDao permissionDao;
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ @Override
+ public Permission queryById(Long id) {
+ return this.permissionDao.queryById(id);
+ }
+
+
+ /**
+ * 新增数据
+ *
+ * @param permission 实例对象
+ * @return 实例对象
+ */
+ @Override
+ public Permission insert(Permission permission) {
+ this.permissionDao.insert(permission);
+ return permission;
+ }
+
+ /**
+ * 修改数据
+ *
+ * @param permission 实例对象
+ * @return 实例对象
+ */
+ @Override
+ public Permission update(Permission permission) {
+ this.permissionDao.update(permission);
+ return this.queryById(permission.getId());
+ }
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 是否成功
+ */
+ @Override
+ public boolean deleteById(Long id) {
+ return this.permissionDao.deleteById(id) > 0;
+ }
+
+ @Override
+ public List queryPermission(List permissionList) {
+ return this.permissionDao.queryPermission(permissionList);
+ }
+}
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/RolePermissionServiceImpl.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/RolePermissionServiceImpl.java
new file mode 100644
index 0000000..2e70683
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/RolePermissionServiceImpl.java
@@ -0,0 +1,76 @@
+package com.landaiqing.infra.basic.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.landaiqing.infra.basic.entity.RolePermission;
+import com.landaiqing.infra.basic.dao.RolePermissionDao;
+import com.landaiqing.infra.basic.service.RolePermissionService;
+import org.springframework.stereotype.Service;
+
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * (RolePermission)表服务实现类
+ *
+ * @author makejava
+ * @since 2024-03-04 22:30:15
+ */
+@Service("rolePermissionService")
+public class RolePermissionServiceImpl implements RolePermissionService {
+ @Resource
+ private RolePermissionDao rolePermissionDao;
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ @Override
+ public RolePermission queryById(Long id) {
+ return this.rolePermissionDao.queryById(id);
+ }
+
+
+
+ /**
+ * 新增数据
+ *
+ * @param rolePermission 实例对象
+ * @return 实例对象
+ */
+ @Override
+ public RolePermission insert(RolePermission rolePermission) {
+ this.rolePermissionDao.insert(rolePermission);
+ return rolePermission;
+ }
+
+ /**
+ * 修改数据
+ *
+ * @param rolePermission 实例对象
+ * @return 实例对象
+ */
+ @Override
+ public RolePermission update(RolePermission rolePermission) {
+ this.rolePermissionDao.update(rolePermission);
+ return this.queryById(rolePermission.getId());
+ }
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 是否成功
+ */
+ @Override
+ public boolean deleteById(Long id) {
+ return this.rolePermissionDao.deleteById(id) > 0;
+ }
+
+ @Override
+ public List queryPermissionById(Integer roleId) {
+ return this.rolePermissionDao.queryPermissionById(roleId);
+ }
+}
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/RoleServiceImpl.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/RoleServiceImpl.java
new file mode 100644
index 0000000..3a7bc69
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/RoleServiceImpl.java
@@ -0,0 +1,70 @@
+package com.landaiqing.infra.basic.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.landaiqing.infra.basic.entity.Role;
+import com.landaiqing.infra.basic.dao.RoleDao;
+import com.landaiqing.infra.basic.service.RoleService;
+import org.springframework.stereotype.Service;
+
+
+import javax.annotation.Resource;
+
+/**
+ * (Role)表服务实现类
+ *
+ * @author makejava
+ * @since 2024-03-04 22:29:56
+ */
+@Service("roleService")
+public class RoleServiceImpl implements RoleService {
+ @Resource
+ private RoleDao roleDao;
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ @Override
+ public Role queryById(Long id) {
+ return this.roleDao.queryById(id);
+ }
+
+
+
+ /**
+ * 新增数据
+ *
+ * @param role 实例对象
+ * @return 实例对象
+ */
+ @Override
+ public Role insert(Role role) {
+ this.roleDao.insert(role);
+ return role;
+ }
+
+ /**
+ * 修改数据
+ *
+ * @param role 实例对象
+ * @return 实例对象
+ */
+ @Override
+ public Role update(Role role) {
+ this.roleDao.update(role);
+ return this.queryById(role.getId());
+ }
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 是否成功
+ */
+ @Override
+ public boolean deleteById(Long id) {
+ return this.roleDao.deleteById(id) > 0;
+ }
+}
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/StudentRoleServiceImpl.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/StudentRoleServiceImpl.java
new file mode 100644
index 0000000..c8ebfc2
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/StudentRoleServiceImpl.java
@@ -0,0 +1,75 @@
+package com.landaiqing.infra.basic.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.landaiqing.infra.basic.entity.Student;
+import com.landaiqing.infra.basic.entity.StudentRole;
+import com.landaiqing.infra.basic.dao.StudentRoleDao;
+import com.landaiqing.infra.basic.service.StudentRoleService;
+import org.springframework.stereotype.Service;
+
+
+import javax.annotation.Resource;
+
+/**
+ * (StudentRole)表服务实现类
+ *
+ * @author makejava
+ * @since 2024-03-05 12:17:53
+ */
+@Service("studentRoleService")
+public class StudentRoleServiceImpl implements StudentRoleService {
+ @Resource
+ private StudentRoleDao studentRoleDao;
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ @Override
+ public StudentRole queryById(Integer id) {
+ return this.studentRoleDao.queryById(id);
+ }
+
+
+ /**
+ * 新增数据
+ *
+ * @param studentRole 实例对象
+ * @return 实例对象
+ */
+ @Override
+ public StudentRole insert(StudentRole studentRole) {
+ this.studentRoleDao.insert(studentRole);
+ return studentRole;
+ }
+
+ /**
+ * 修改数据
+ *
+ * @param studentRole 实例对象
+ * @return 实例对象
+ */
+ @Override
+ public StudentRole update(StudentRole studentRole) {
+ this.studentRoleDao.update(studentRole);
+ return this.queryById(studentRole.getId());
+ }
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 是否成功
+ */
+ @Override
+ public boolean deleteById(Integer id) {
+ return this.studentRoleDao.deleteById(id) > 0;
+ }
+
+ @Override
+ public Integer queryRoleById(Student student) {
+ return this.studentRoleDao.queryRoleById(student);
+ }
+}
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/StudentServiceImpl.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/StudentServiceImpl.java
new file mode 100644
index 0000000..c1344db
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/StudentServiceImpl.java
@@ -0,0 +1,86 @@
+package com.landaiqing.infra.basic.service.impl;
+
+import com.landaiqing.auth.common.entity.PageResult;
+import com.landaiqing.infra.basic.entity.Student;
+import com.landaiqing.infra.basic.dao.StudentDao;
+import com.landaiqing.infra.basic.service.StudentService;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Service;
+
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * (Student)表服务实现类
+ *
+ * @author makejava
+ * @since 2024-03-04 22:25:33
+ */
+@Service("studentService")
+public class StudentServiceImpl implements StudentService {
+ @Resource
+ private StudentDao studentDao;
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ @Override
+ public Student queryById(Long id) {
+ return this.studentDao.queryById(id);
+ }
+
+
+
+ /**
+ * 新增数据
+ *
+ * @param student 实例对象
+ * @return 实例对象
+ */
+ @Override
+ public Student insert(Student student) {
+ this.studentDao.insert(student);
+ return student;
+ }
+
+ /**
+ * 修改数据
+ *
+ * @param student 实例对象
+ * @return 实例对象
+ */
+ @Override
+ public Integer update(Student student) {
+ return this.studentDao.update(student);
+ }
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 是否成功
+ */
+ @Override
+ public boolean deleteById(Long id) {
+ return this.studentDao.deleteById(id) > 0;
+ }
+
+ @Override
+ public List queryPage(Student student,int start,Integer pageSize) {
+ return this.studentDao.queryPage(student,start,pageSize);
+ }
+
+ @Override
+ public Integer selectCount() {
+ return this.studentDao.selectCount();
+ }
+
+ @Override
+ public Integer login(Student student) {
+ return this.studentDao.login(student);
+ }
+}
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/UserRoleServiceImpl.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/UserRoleServiceImpl.java
new file mode 100644
index 0000000..125d31e
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/UserRoleServiceImpl.java
@@ -0,0 +1,70 @@
+package com.landaiqing.infra.basic.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.landaiqing.infra.basic.entity.UserRole;
+import com.landaiqing.infra.basic.dao.UserRoleDao;
+import com.landaiqing.infra.basic.service.UserRoleService;
+import org.springframework.stereotype.Service;
+
+
+import javax.annotation.Resource;
+
+/**
+ * (UserRole)表服务实现类
+ *
+ * @author makejava
+ * @since 2024-03-05 12:18:10
+ */
+@Service("userRoleService")
+public class UserRoleServiceImpl implements UserRoleService {
+ @Resource
+ private UserRoleDao userRoleDao;
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ @Override
+ public UserRole queryById(Long id) {
+ return this.userRoleDao.queryById(id);
+ }
+
+
+
+ /**
+ * 新增数据
+ *
+ * @param userRole 实例对象
+ * @return 实例对象
+ */
+ @Override
+ public UserRole insert(UserRole userRole) {
+ this.userRoleDao.insert(userRole);
+ return userRole;
+ }
+
+ /**
+ * 修改数据
+ *
+ * @param userRole 实例对象
+ * @return 实例对象
+ */
+ @Override
+ public UserRole update(UserRole userRole) {
+ this.userRoleDao.update(userRole);
+ return this.queryById(userRole.getId());
+ }
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 是否成功
+ */
+ @Override
+ public boolean deleteById(Long id) {
+ return this.userRoleDao.deleteById(id) > 0;
+ }
+}
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/UserServiceImpl.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/UserServiceImpl.java
new file mode 100644
index 0000000..88e729e
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/service/impl/UserServiceImpl.java
@@ -0,0 +1,71 @@
+package com.landaiqing.infra.basic.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.landaiqing.infra.basic.entity.User;
+import com.landaiqing.infra.basic.dao.UserDao;
+import com.landaiqing.infra.basic.service.UserService;
+import org.springframework.stereotype.Service;
+
+
+import javax.annotation.Resource;
+
+/**
+ * (User)表服务实现类
+ *
+ * @author makejava
+ * @since 2024-03-05 12:17:20
+ */
+@Service("userService")
+public class UserServiceImpl implements UserService {
+ @Resource
+ private UserDao userDao;
+
+ /**
+ * 通过ID查询单条数据
+ *
+ * @param id 主键
+ * @return 实例对象
+ */
+ @Override
+ public User queryById(Integer id) {
+ return this.userDao.queryById(id);
+ }
+
+
+
+
+ /**
+ * 新增数据
+ *
+ * @param user 实例对象
+ * @return 实例对象
+ */
+ @Override
+ public User insert(User user) {
+ this.userDao.insert(user);
+ return user;
+ }
+
+ /**
+ * 修改数据
+ *
+ * @param user 实例对象
+ * @return 实例对象
+ */
+ @Override
+ public User update(User user) {
+ this.userDao.update(user);
+ return this.queryById(user.getId());
+ }
+
+ /**
+ * 通过主键删除数据
+ *
+ * @param id 主键
+ * @return 是否成功
+ */
+ @Override
+ public boolean deleteById(Integer id) {
+ return this.userDao.deleteById(id) > 0;
+ }
+}
diff --git a/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/utils/DruidEncryptUtil.java b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/utils/DruidEncryptUtil.java
new file mode 100644
index 0000000..d95b0c0
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/java/com/landaiqing/infra/basic/utils/DruidEncryptUtil.java
@@ -0,0 +1,48 @@
+package com.landaiqing.infra.basic.utils;
+
+import com.alibaba.druid.filter.config.ConfigTools;
+
+import java.security.NoSuchAlgorithmException;
+import java.security.NoSuchProviderException;
+
+/**
+ * 数据库加密util
+ *
+ * @author: landaiqing
+ * @date: 2024/2/7
+ */
+public class DruidEncryptUtil {
+
+ private static String publicKey;
+
+ private static String privateKey;
+
+ static {
+ try {
+ String[] keyPair = ConfigTools.genKeyPair(512);
+ privateKey=keyPair[0];
+ System.out.println("privateKey:"+privateKey);
+ publicKey=keyPair[1];
+ System.out.println("publicKey:"+publicKey);
+ } catch (NoSuchAlgorithmException e) {
+ throw new RuntimeException(e);
+ } catch (NoSuchProviderException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ public static String encrypt(String plainText) throws Exception {
+ String encrypt = ConfigTools.encrypt(privateKey, plainText);
+ System.out.println("encrypt:"+encrypt);
+ return encrypt;
+ }
+ public static String decrypt(String encryptText) throws Exception {
+ String decrypt = ConfigTools.decrypt(publicKey, encryptText);
+ System.out.println("decrypt:"+decrypt);
+ return decrypt;
+ }
+
+ public static void main(String[] args) throws Exception {
+ String encrypt = encrypt("1611");
+ System.out.println("encrypt:"+encrypt);
+ }
+}
diff --git a/sms-auth/sms-auth-infra/src/main/resources/mapper/ClazzDao.xml b/sms-auth/sms-auth-infra/src/main/resources/mapper/ClazzDao.xml
new file mode 100644
index 0000000..a015a80
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/resources/mapper/ClazzDao.xml
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ insert into clazz(class_name, num)
+ values (#{className}, #{num})
+
+
+
+ insert into clazz(class_name,num)
+ values
+
+ (#{entity.className},#{entity.num})
+
+
+
+
+ insert into clazz(class_name,num)
+ values
+
+ (#{entity.className},#{entity.num})
+
+ on duplicate key update
+class_name = values(class_name)num = values(num)
+
+
+
+
+ update clazz
+
+
+ class_name = #{className},
+
+
+ num = #{num},
+
+
+ where id = #{id}
+
+
+
+
+ delete from clazz where id = #{id}
+
+
+
+
diff --git a/sms-auth/sms-auth-infra/src/main/resources/mapper/GradeDao.xml b/sms-auth/sms-auth-infra/src/main/resources/mapper/GradeDao.xml
new file mode 100644
index 0000000..38cafc0
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/resources/mapper/GradeDao.xml
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ insert into grade(grade_name,num)
+ values (#{gradeName},#{num})
+
+
+
+ insert into grade(grade_name,num)
+ values
+
+ (#{entity.gradeName},#{entity.num})
+
+
+
+
+ insert into grade(grade_name,num)
+ values
+
+ (#{entity.gradeName},#{entity.num})
+
+ on duplicate key update
+ grade_name = values(grade_name)num = values(num)
+
+
+
+
+ update grade
+
+
+ grade_name = #{gradeName},
+
+
+ num = #{num},
+
+
+ where id = #{id}
+
+
+
+
+ delete
+ from grade
+ where id = #{id}
+
+
+
+
diff --git a/sms-auth/sms-auth-infra/src/main/resources/mapper/PermissionDao.xml b/sms-auth/sms-auth-infra/src/main/resources/mapper/PermissionDao.xml
new file mode 100644
index 0000000..195ec35
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/resources/mapper/PermissionDao.xml
@@ -0,0 +1,222 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ insert into permission(name,parent_id,`type`,menu_url,status,`show`,icon,permission_key,created_by,created_time,update_by,update_time,is_deleted)
+ values (#{name},#{parentId},#{type},#{menuUrl},#{status},#{show},#{icon},#{permissionKey},#{createdBy},#{createdTime},#{updateBy},#{updateTime},#{isDeleted})
+
+
+
+ insert into
+ permission(name,parent_id,`type`,menu_url,status,`show`,icon,permission_key,created_by,created_time,update_by,update_time,is_deleted)
+ values
+
+ (#{entity.name},#{entity.parentId},#{entity.type},#{entity.menuUrl},#{entity.status},#{entity.show},#{entity.icon},#{entity.permissionKey},#{entity.createdBy},#{entity.createdTime},#{entity.updateBy},#{entity.updateTime},#{entity.isDeleted})
+
+
+
+
+ insert into
+ permission(name,parent_id,`type`,menu_url,status,`show`,icon,permission_key,created_by,created_time,update_by,update_time,is_deleted)
+ values
+
+ (#{entity.name},#{entity.parentId},#{entity.type},#{entity.menuUrl},#{entity.status},#{entity.show},#{entity.icon},#{entity.permissionKey},#{entity.createdBy},#{entity.createdTime},#{entity.updateBy},#{entity.updateTime},#{entity.isDeleted})
+
+ on duplicate key update
+ name = values(name)parent_id = values(parent_id)type = values(type)menu_url = values(menu_url)status =
+ values(status)show = values(show)icon = values(icon)permission_key = values(permission_key)created_by =
+ values(created_by)created_time = values(created_time)update_by = values(update_by)update_time =
+ values(update_time)is_deleted = values(is_deleted)
+
+
+
+
+ update permission
+
+
+ name = #{name},
+
+
+ parent_id = #{parentId},
+
+
+ `type` = #{type},
+
+
+ menu_url = #{menuUrl},
+
+
+ status = #{status},
+
+
+ show = #{show},
+
+
+ icon = #{icon},
+
+
+ permission_key = #{permissionKey},
+
+
+ created_by = #{createdBy},
+
+
+ created_time = #{createdTime},
+
+
+ update_by = #{updateBy},
+
+
+ update_time = #{updateTime},
+
+
+ is_deleted = #{isDeleted},
+
+
+ where id = #{id}
+
+
+
+
+ delete
+ from permission
+ where id = #{id}
+
+
+
+
diff --git a/sms-auth/sms-auth-infra/src/main/resources/mapper/RoleDao.xml b/sms-auth/sms-auth-infra/src/main/resources/mapper/RoleDao.xml
new file mode 100644
index 0000000..e75ab92
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/resources/mapper/RoleDao.xml
@@ -0,0 +1,152 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ insert into role(role_name,role_key,created_by,created_time,update_by,update_time,is_deleted)
+ values (#{roleName},#{roleKey},#{createdBy},#{createdTime},#{updateBy},#{updateTime},#{isDeleted})
+
+
+
+ insert into role(role_name,role_key,created_by,created_time,update_by,update_time,is_deleted)
+ values
+
+ (#{entity.roleName},#{entity.roleKey},#{entity.createdBy},#{entity.createdTime},#{entity.updateBy},#{entity.updateTime},#{entity.isDeleted})
+
+
+
+
+ insert into role(role_name,role_key,created_by,created_time,update_by,update_time,is_deleted)
+ values
+
+ (#{entity.roleName},#{entity.roleKey},#{entity.createdBy},#{entity.createdTime},#{entity.updateBy},#{entity.updateTime},#{entity.isDeleted})
+
+ on duplicate key update
+ role_name = values(role_name)role_key = values(role_key)created_by = values(created_by)created_time =
+ values(created_time)update_by = values(update_by)update_time = values(update_time)is_deleted =
+ values(is_deleted)
+
+
+
+
+ update role
+
+
+ role_name = #{roleName},
+
+
+ role_key = #{roleKey},
+
+
+ created_by = #{createdBy},
+
+
+ created_time = #{createdTime},
+
+
+ update_by = #{updateBy},
+
+
+ update_time = #{updateTime},
+
+
+ is_deleted = #{isDeleted},
+
+
+ where id = #{id}
+
+
+
+
+ delete
+ from role
+ where id = #{id}
+
+
+
+
diff --git a/sms-auth/sms-auth-infra/src/main/resources/mapper/RolePermissionDao.xml b/sms-auth/sms-auth-infra/src/main/resources/mapper/RolePermissionDao.xml
new file mode 100644
index 0000000..9a723c0
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/resources/mapper/RolePermissionDao.xml
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ insert into role_permission(role_id,permission_id,created_by,created_time,update_by,update_time,is_deleted)
+ values (#{roleId},#{permissionId},#{createdBy},#{createdTime},#{updateBy},#{updateTime},#{isDeleted})
+
+
+
+ insert into role_permission(role_id,permission_id,created_by,created_time,update_by,update_time,is_deleted)
+ values
+
+ (#{entity.roleId},#{entity.permissionId},#{entity.createdBy},#{entity.createdTime},#{entity.updateBy},#{entity.updateTime},#{entity.isDeleted})
+
+
+
+
+ insert into role_permission(role_id,permission_id,created_by,created_time,update_by,update_time,is_deleted)
+ values
+
+ (#{entity.roleId},#{entity.permissionId},#{entity.createdBy},#{entity.createdTime},#{entity.updateBy},#{entity.updateTime},#{entity.isDeleted})
+
+ on duplicate key update
+ role_id = values(role_id)permission_id = values(permission_id)created_by = values(created_by)created_time =
+ values(created_time)update_by = values(update_by)update_time = values(update_time)is_deleted =
+ values(is_deleted)
+
+
+
+
+ update role_permission
+
+
+ role_id = #{roleId},
+
+
+ permission_id = #{permissionId},
+
+
+ created_by = #{createdBy},
+
+
+ created_time = #{createdTime},
+
+
+ update_by = #{updateBy},
+
+
+ update_time = #{updateTime},
+
+
+ is_deleted = #{isDeleted},
+
+
+ where id = #{id}
+
+
+
+
+ delete
+ from role_permission
+ where id = #{id}
+
+
+
+
diff --git a/sms-auth/sms-auth-infra/src/main/resources/mapper/StudentDao.xml b/sms-auth/sms-auth-infra/src/main/resources/mapper/StudentDao.xml
new file mode 100644
index 0000000..f3331ee
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/resources/mapper/StudentDao.xml
@@ -0,0 +1,242 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ insert into student(sno,password,username,class_name,grade,age,sex,avatar,date_of_birth,email,phone_number,class_id,grade_id,role_id,is_deleted)
+ values (#{sno},#{password},#{username},#{className},#{grade},#{age},#{sex},#{avatar},#{dateOfBirth},#{email},#{phoneNumber},#{classId},#{gradeId},#{roleId},#{isDeleted})
+
+
+
+ insert into student(sno,password,username,class_name,grade,age,sex,avatar,date_of_birth,email,phone_number,class_id,grade_id,role_id,is_deleted)
+ values
+
+ (#{entity.sno},#{entity.password},#{entity.username},#{entity.className},#{entity.grade},#{entity.age},#{entity.sex},#{entity.avatar},#{entity.dateOfBirth},#{entity.email},#{entity.phoneNumber},#{entity.classId},#{entity.gradeId},#{entity.roleId},#{entity.isDeleted})
+
+
+
+
+ insert into student(sno,password,username,class_name,grade,age,sex,avatar,date_of_birth,email,phone_number,class_id,grade_id,role_id,is_deleted)
+ values
+
+ (#{entity.sno},#{entity.password},#{entity.username},#{entity.className},#{entity.grade},#{entity.age},#{entity.sex},#{entity.avatar},#{entity.dateOfBirth},#{entity.email},#{entity.phoneNumber},#{entity.classId},#{entity.gradeId},#{entity.roleId},#{entity.isDeleted})
+
+ on duplicate key update
+sno = values(sno)password = values(password)username = values(username)class_name = values(class_name)grade = values(grade)age = values(age)sex = values(sex)avatar = values(avatar)date_of_birth = values(date_of_birth)email = values(email)phone_number = values(phone_number)class_id = values(class_id)grade_id = values(grade_id)role_id = values(role_id)is_deleted = values(is_deleted)
+
+
+
+
+ update student
+
+
+ sno = #{sno},
+
+
+ `password` = #{password},
+
+
+ username = #{username},
+
+
+ class_name = #{className},
+
+
+ grade = #{grade},
+
+
+ age = #{age},
+
+
+ sex = #{sex},
+
+
+ avatar = #{avatar},
+
+
+ date_of_birth = #{dateOfBirth},
+
+
+ email = #{email},
+
+
+ phone_number = #{phoneNumber},
+
+
+ class_id = #{classId},
+
+
+ grade_id = #{gradeId},
+
+
+ role_id = #{roleId},
+
+
+ is_deleted = #{isDeleted},
+
+
+ where id = #{id}
+
+
+
+
+ delete from student where id = #{id}
+
+
+
+
diff --git a/sms-auth/sms-auth-infra/src/main/resources/mapper/StudentRoleDao.xml b/sms-auth/sms-auth-infra/src/main/resources/mapper/StudentRoleDao.xml
new file mode 100644
index 0000000..27ad552
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/resources/mapper/StudentRoleDao.xml
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ insert into student_role(student_id,role_id)
+ values (#{studentId},#{roleId})
+
+
+
+ insert into student_role(student_id,role_id)
+ values
+
+ (#{entity.studentId},#{entity.roleId})
+
+
+
+
+ insert into student_role(student_id,role_id)
+ values
+
+ (#{entity.studentId},#{entity.roleId})
+
+ on duplicate key update
+ student_id = values(student_id)role_id = values(role_id)
+
+
+
+
+ update student_role
+
+
+ student_id = #{studentId},
+
+
+ role_id = #{roleId},
+
+
+ where id = #{id}
+
+
+
+
+ delete
+ from student_role
+ where id = #{id}
+
+
+
+
diff --git a/sms-auth/sms-auth-infra/src/main/resources/mapper/UserDao.xml b/sms-auth/sms-auth-infra/src/main/resources/mapper/UserDao.xml
new file mode 100644
index 0000000..2cfaab1
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/resources/mapper/UserDao.xml
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ insert into user(username,password)
+ values (#{username},#{password})
+
+
+
+ insert into user(username,password)
+ values
+
+ (#{entity.username},#{entity.password})
+
+
+
+
+ insert into user(username,password)
+ values
+
+ (#{entity.username},#{entity.password})
+
+ on duplicate key update
+username = values(username)password = values(password)
+
+
+
+
+ update user
+
+
+ username = #{username},
+
+
+ password = #{password},
+
+
+ where id = #{id}
+
+
+
+
+ delete from user where id = #{id}
+
+
+
+
diff --git a/sms-auth/sms-auth-infra/src/main/resources/mapper/UserRoleDao.xml b/sms-auth/sms-auth-infra/src/main/resources/mapper/UserRoleDao.xml
new file mode 100644
index 0000000..5916033
--- /dev/null
+++ b/sms-auth/sms-auth-infra/src/main/resources/mapper/UserRoleDao.xml
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ insert into user_role(user_id,role_id)
+ values (#{userId},#{roleId})
+
+
+
+ insert into user_role(user_id,role_id)
+ values
+
+ (#{entity.userId},#{entity.roleId})
+
+
+
+
+ insert into user_role(user_id,role_id)
+ values
+
+ (#{entity.userId},#{entity.roleId})
+
+ on duplicate key update
+ user_id = values(user_id)role_id = values(role_id)
+
+
+
+
+ update user_role
+
+
+ user_id = #{userId},
+
+
+ role_id = #{roleId},
+
+
+ where id = #{id}
+
+
+
+
+ delete
+ from user_role
+ where id = #{id}
+
+
+
+
diff --git a/sms-auth/sms-auth-start/pom.xml b/sms-auth/sms-auth-start/pom.xml
new file mode 100644
index 0000000..36a32bc
--- /dev/null
+++ b/sms-auth/sms-auth-start/pom.xml
@@ -0,0 +1,93 @@
+
+ 4.0.0
+
+ com.landaiqing
+ sms-auth
+ 1.0-SNAPSHOT
+
+
+ sms-auth-starter
+ jar
+
+ qing-yu-club-auth-starter
+ http://maven.apache.org
+
+
+ 8
+ 8
+ 1.8
+ UTF-8
+ UTF-8
+ 2.4.2
+ 2021.1
+ 2020.0.6
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+ 2.4.2
+
+
+ spring-boot-starter-logging
+ org.springframework.boot
+
+
+
+
+ com.landaiqing
+ sms-auth-infra
+ 1.0-SNAPSHOT
+
+
+ com.landaiqing
+ sms-auth-controller
+ 1.0-SNAPSHOT
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring-cloud.version}
+ pom
+ import
+
+
+ org.springframework.boot
+ spring-boot-dependencies
+ ${spring-boot.version}
+ pom
+ import
+
+
+ com.alibaba.cloud
+ spring-cloud-alibaba-dependencies
+ ${spring-cloud-alibaba.version}
+ pom
+ import
+
+
+
+
+ ${project.artifactId}
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.3.0.RELEASE
+
+
+
+ repackage
+
+
+
+
+
+
+
diff --git a/sms-auth/sms-auth-start/src/main/java/com/landaiqing/auth/AuthApplication.java b/sms-auth/sms-auth-start/src/main/java/com/landaiqing/auth/AuthApplication.java
new file mode 100644
index 0000000..851e8f3
--- /dev/null
+++ b/sms-auth/sms-auth-start/src/main/java/com/landaiqing/auth/AuthApplication.java
@@ -0,0 +1,21 @@
+package com.landaiqing.auth;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+
+/**
+ * 服务启动类
+ *
+ * @author: landaiqing
+ * @date: 2024/2/7
+ */
+@SpringBootApplication
+@ComponentScan("com.landaiqing")
+@MapperScan("com.landaiqing.**.dao")
+public class AuthApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(AuthApplication.class);
+ }
+}
diff --git a/sms-auth/sms-auth-start/src/main/resources/application.yml b/sms-auth/sms-auth-start/src/main/resources/application.yml
new file mode 100644
index 0000000..e5f8424
--- /dev/null
+++ b/sms-auth/sms-auth-start/src/main/resources/application.yml
@@ -0,0 +1,82 @@
+server:
+ port: 3001
+
+spring:
+ messages:
+ basename: i18n/messages
+ datasource:
+ username: root
+ password: fJbWjC0gnwYGDiUV1CWZAnQCfoujrWqoN8sTwz+B5PGqgZi8ohRPSOQYVPnKPQ3mTbdYRLY7S2DQMQwLDySX8g==
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ url: jdbc:mysql://localhost:3306/sutdent-management-system?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=true
+ type: com.alibaba.druid.pool.DruidDataSource
+ druid:
+ initial-size: 20
+ min-idle: 20
+ max-active: 100
+ max-wait: 60000
+ connectionProperties: config.decrypt=true;config.decrypt.key=${publicKey};
+ stat-view-servlet:
+ enabled: true
+ url-pattern: /druid/*
+ login-username: admin
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ slow-sql-millis: 2000
+ log-slow-sql: true
+ wall:
+ enabled: true
+ config:
+ enabled: true
+# # redis配置
+# redis:
+# # Redis数据库索引(默认为0)
+# database: 1
+# # Redis服务器地址
+# host: 116.196.80.239
+# # Redis服务器连接端口
+# port: 6379
+# # Redis服务器连接密码(默认为空)
+# password: LDQ20020618xxx
+# # 连接超时时间
+# timeout: 2s
+# lettuce:
+# pool:
+# # 连接池最大连接数
+# max-active: 200
+# # 连接池最大阻塞等待时间(使用负值表示没有限制)
+# max-wait: -1ms
+# # 连接池中的最大空闲连接
+# max-idle: 10
+# # 连接池中的最小空闲连接
+# min-idle: 0
+publicKey: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAItqJKHg8SmHDzR2WyWQMY1vXCAYMqtRJTvHrmME9se4xL6/pR0+bXrPW1R/HHmOqba6WuyxveIYh/9m5brJr5cCAwEAAQ==
+logging:
+ config: classpath:log4j2-spring.xml
+
+#mybatis-plus:
+# configuration:
+# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+
+############## Sa-Token 配置 (文档: https://sa-token.cc) ##############
+#sa-token:
+# # token 名称(同时也是 cookie 名称)
+# token-name: satoken
+# # token 有效期(单位:秒) 默认30天,-1 代表永久有效
+# timeout: 2592000
+# # token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结,默认-1 代表不限制,永不冻结
+# active-timeout: -1
+# # 是否允许同一账号多地同时登录 (为 true 时允许一起登录, 为 false 时新登录挤掉旧登录)
+# is-concurrent: true
+# # 在多人登录同一账号时,是否共用一个 token (为 true 时所有登录共用一个 token, 为 false 时每次登录新建一个 token)
+# is-share: true
+# # token 风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik)
+# token-style: random-32
+# # 是否输出操作日志
+# is-log: true
+# token-prefix: auth
+
+
+
diff --git a/sms-auth/sms-auth-start/src/main/resources/log4j2-spring.xml b/sms-auth/sms-auth-start/src/main/resources/log4j2-spring.xml
new file mode 100644
index 0000000..7edfa1a
--- /dev/null
+++ b/sms-auth/sms-auth-start/src/main/resources/log4j2-spring.xml
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sms-oss/pom.xml b/sms-oss/pom.xml
new file mode 100644
index 0000000..c4c3b5d
--- /dev/null
+++ b/sms-oss/pom.xml
@@ -0,0 +1,111 @@
+
+ 4.0.0
+
+ com.landaiqing
+ sms-oss
+ 1.0-SNAPSHOT
+ jar
+
+ sms-oss
+ http://maven.apache.org
+
+
+ 8
+ 8
+ 1.8
+ UTF-8
+ UTF-8
+ 2.4.2
+ 2021.1
+ 2020.0.6
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ spring-boot-starter-logging
+ org.springframework.boot
+
+
+
+
+ io.minio
+ minio
+ 8.2.0
+
+
+ org.projectlombok
+ lombok
+ 1.18.20
+
+
+ org.springframework.boot
+ spring-boot-starter-log4j2
+
+
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring-cloud.version}
+ pom
+ import
+
+
+ org.springframework.boot
+ spring-boot-dependencies
+ ${spring-boot.version}
+ pom
+ import
+
+
+ com.alibaba.cloud
+ spring-cloud-alibaba-dependencies
+ ${spring-cloud-alibaba.version}
+ pom
+ import
+
+
+
+
+
+ ${project.artifactId}
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ 2.3.0.RELEASE
+
+
+
+ repackage
+
+
+
+
+
+
+
+
+
+ central
+ aliyun maven
+ http://maven.aliyun.com/nexus/content/groups/public/
+ default
+
+ true
+
+
+ true
+
+
+
+
diff --git a/sms-oss/src/main/java/com/landaiqing/oss/OssApplication.java b/sms-oss/src/main/java/com/landaiqing/oss/OssApplication.java
new file mode 100644
index 0000000..b6c6b83
--- /dev/null
+++ b/sms-oss/src/main/java/com/landaiqing/oss/OssApplication.java
@@ -0,0 +1,20 @@
+package com.landaiqing.oss;
+
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.ComponentScan;
+
+/**
+ * oss 服务启动类
+ *
+ * @author: landaiqing
+ * @date: 2024/3/4
+ */
+@SpringBootApplication
+@ComponentScan("com.landaiqing")
+public class OssApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(OssApplication.class);
+ }
+}
diff --git a/sms-oss/src/main/java/com/landaiqing/oss/adapter/MinioStorageAdapter.java b/sms-oss/src/main/java/com/landaiqing/oss/adapter/MinioStorageAdapter.java
new file mode 100644
index 0000000..388c6bd
--- /dev/null
+++ b/sms-oss/src/main/java/com/landaiqing/oss/adapter/MinioStorageAdapter.java
@@ -0,0 +1,85 @@
+package com.landaiqing.oss.adapter;
+
+import com.landaiqing.oss.entity.FileInfo;
+import com.landaiqing.oss.util.MinioUtil;
+import lombok.SneakyThrows;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.io.InputStream;
+import java.util.List;
+
+/**
+ * @Classname MinioStorageServiceImpl
+ * @BelongsProject: qing-yu-club
+ * @BelongsPackage: com.landaiqing.oss.service.impl
+ * @Author: landaiqing
+ * @CreateTime: 2024-02-17 16:35
+ * @Description: TODO
+ * @Version: 1.0
+ */
+public class MinioStorageAdapter implements StorageAdapter {
+ @Resource
+ private MinioUtil minioUtil;
+
+ /**
+ * minioUrl
+ */
+ @Value("${minio.url}")
+ private String url;
+
+ @Override
+ @SneakyThrows
+ public void createBucket(String bucket) {
+ minioUtil.createBucket(bucket);
+ }
+
+ @Override
+ @SneakyThrows
+ public void uploadFile(MultipartFile uploadFile, String bucket, String objectName) {
+ minioUtil.createBucket(bucket);
+ if (objectName != null) {
+ minioUtil.uploadFile(uploadFile.getInputStream(), bucket, objectName + "/" + uploadFile.getName());
+ } else {
+ minioUtil.uploadFile(uploadFile.getInputStream(), bucket, uploadFile.getName());
+ }
+ }
+
+ @Override
+ @SneakyThrows
+ public List getAllBucket() {
+ return minioUtil.getAllBucket();
+ }
+
+ @Override
+ @SneakyThrows
+ public List getAllFile(String bucket) {
+ return minioUtil.getAllFile(bucket);
+ }
+
+ @Override
+ @SneakyThrows
+ public InputStream download(String bucket, String objectName) {
+ return minioUtil.download(bucket, objectName);
+ }
+
+ @Override
+ @SneakyThrows
+ public void deleteBucket(String bucket) {
+ minioUtil.deleteBucket(bucket);
+ }
+
+ @Override
+ @SneakyThrows
+ public void deleteObject(String bucket, String objectName) {
+ minioUtil.deleteObject(bucket, objectName);
+ }
+
+ @Override
+ @SneakyThrows
+ public String getUrl(String bucket, String objectName) {
+ return url + "/" + bucket + "/" + objectName;
+ }
+
+}
diff --git a/sms-oss/src/main/java/com/landaiqing/oss/adapter/StorageAdapter.java b/sms-oss/src/main/java/com/landaiqing/oss/adapter/StorageAdapter.java
new file mode 100644
index 0000000..f70e09e
--- /dev/null
+++ b/sms-oss/src/main/java/com/landaiqing/oss/adapter/StorageAdapter.java
@@ -0,0 +1,83 @@
+package com.landaiqing.oss.adapter;
+
+import com.landaiqing.oss.entity.FileInfo;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.InputStream;
+import java.util.List;
+
+/**
+ * @Classname StorageService
+ * @BelongsProject: qing-yu-club
+ * @BelongsPackage: com.landaiqing.oss.service
+ * @Author: landaiqing
+ * @CreateTime: 2024-02-17 16:32
+ * @Description: 文件存储适配器
+ * @Version: 1.0
+ */
+public interface StorageAdapter {
+ /**
+ * @description: 创建Bucket桶
+ * @param: [bucket]
+ * @return: void
+ * @author landaiqing
+ * @date: 2024/2/17 15:53
+ */
+ void createBucket(String bucket);
+
+ /**
+ * @description: 上传文件
+ * @param: [inputStream, bucket, objectName]
+ * @return: void
+ * @author landaiqing
+ * @date: 2024/2/17 15:58
+ */
+ void uploadFile(MultipartFile uploadFile, String bucket, String objectName);
+
+ /**
+ * @description: 列出所有桶
+ * @param: []
+ * @return: java.util.List
+ * @author landaiqing
+ * @date: 2024/2/17 16:00
+ */
+ List getAllBucket();
+
+ /**
+ * @description: 列出当前桶及文件
+ * @param: [bucket]
+ * @return: java.util.List
+ * @author landaiqing
+ * @date: 2024/2/17 16:06
+ */
+ List getAllFile(String bucket);
+
+ /**
+ * @description: 下载文件
+ * @param: [bucket, objectName]
+ * @return: java.io.InputStream
+ * @author landaiqing
+ * @date: 2024/2/17 16:11
+ */
+ InputStream download(String bucket, String objectName);
+
+ /**
+ * @description: 删除桶
+ * @param: [bucket]
+ * @return: void
+ * @author landaiqing
+ * @date: 2024/2/17 16:14
+ */
+ void deleteBucket(String bucket);
+
+ /**
+ * @description: 删除文件
+ * @param: [bucket, objectName]
+ * @return: void
+ * @author landaiqing
+ * @date: 2024/2/17 16:14
+ */
+ void deleteObject(String bucket, String objectName);
+
+ String getUrl(String bucket, String objectName);
+}
diff --git a/sms-oss/src/main/java/com/landaiqing/oss/config/MinioConfig.java b/sms-oss/src/main/java/com/landaiqing/oss/config/MinioConfig.java
new file mode 100644
index 0000000..d37e03f
--- /dev/null
+++ b/sms-oss/src/main/java/com/landaiqing/oss/config/MinioConfig.java
@@ -0,0 +1,43 @@
+package com.landaiqing.oss.config;
+
+import io.minio.MinioClient;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Classname MinioConfig
+ * @BelongsProject: qing-yu-club
+ * @BelongsPackage: com.landaiqing.oss.config
+ * @Author: landaiqing
+ * @CreateTime: 2024-02-17 15:44
+ * @Description: Minio配置管理
+ * @Version: 1.0
+ */
+@Configuration
+public class MinioConfig {
+ /**
+ * minioUrl
+ */
+ @Value("${minio.url}")
+ private String url;
+ /**
+ * minio账户
+ */
+ @Value("${minio.accessKey}")
+ private String accessKey;
+ /**
+ * minio密码
+ */
+ @Value("${minio.secretKey}")
+ private String secretKey;
+
+ /**
+ * 构造minioClient
+ */
+ @Bean
+ public MinioClient getMinioClient(){
+ return MinioClient.builder().endpoint(url).credentials(accessKey,secretKey ).build();
+ }
+
+}
diff --git a/sms-oss/src/main/java/com/landaiqing/oss/config/StorageConfig.java b/sms-oss/src/main/java/com/landaiqing/oss/config/StorageConfig.java
new file mode 100644
index 0000000..14cb558
--- /dev/null
+++ b/sms-oss/src/main/java/com/landaiqing/oss/config/StorageConfig.java
@@ -0,0 +1,23 @@
+package com.landaiqing.oss.config;
+
+import com.landaiqing.oss.adapter.MinioStorageAdapter;
+import com.landaiqing.oss.adapter.StorageAdapter;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 文件存储config
+ *
+ * @author: ChickenWing
+ * @date: 2023/10/14
+ */
+@Configuration
+public class StorageConfig {
+
+ @Bean
+ public StorageAdapter storageService() {
+ return new MinioStorageAdapter();
+ }
+
+}
diff --git a/sms-oss/src/main/java/com/landaiqing/oss/controller/FileController.java b/sms-oss/src/main/java/com/landaiqing/oss/controller/FileController.java
new file mode 100644
index 0000000..9ea8be1
--- /dev/null
+++ b/sms-oss/src/main/java/com/landaiqing/oss/controller/FileController.java
@@ -0,0 +1,45 @@
+package com.landaiqing.oss.controller;
+
+import com.landaiqing.oss.entity.Result;
+import com.landaiqing.oss.service.FileService;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Classname FileController
+ * @BelongsProject: qing-yu-club
+ * @BelongsPackage: com.landaiqing.oss.controller
+ * @Author: landaiqing
+ * @CreateTime: 2024-02-17 16:18
+ * @Description: TODO
+ * @Version: 1.0
+ */
+@RestController
+public class FileController {
+ @Resource
+ private FileService fileService;
+
+ @RequestMapping("/testGetAllBuckets")
+ public String testGetAllBuckets() throws Exception {
+ List allBucket = fileService.getAllBucket();
+ return allBucket.get(0);
+ }
+
+ @RequestMapping("/getUrl")
+ public String getUrl(String bucketName, String objectName) throws Exception {
+ return fileService.getUrl(bucketName, objectName);
+ }
+
+ /**
+ * 上传文件
+ */
+ @RequestMapping("/upload")
+ public Result upload(MultipartFile uploadFile, String bucket, String objectName) throws Exception {
+ String url = fileService.uploadFile(uploadFile, bucket, objectName);
+ return Result.ok(url);
+ }
+}
diff --git a/sms-oss/src/main/java/com/landaiqing/oss/entity/FileInfo.java b/sms-oss/src/main/java/com/landaiqing/oss/entity/FileInfo.java
new file mode 100644
index 0000000..13d9e3b
--- /dev/null
+++ b/sms-oss/src/main/java/com/landaiqing/oss/entity/FileInfo.java
@@ -0,0 +1,21 @@
+package com.landaiqing.oss.entity;
+
+import lombok.Data;
+
+/**
+ * @Classname FileInfo
+ * @BelongsProject: qing-yu-club
+ * @BelongsPackage: com.landaiqing.oss.entity
+ * @Author: landaiqing
+ * @CreateTime: 2024-02-17 16:04
+ * @Description: 文件类
+ * @Version: 1.0
+ */
+@Data
+public class FileInfo {
+
+
+ private String fileName;
+ private Boolean directoryFlag;
+ private String etag;
+}
diff --git a/sms-oss/src/main/java/com/landaiqing/oss/entity/Result.java b/sms-oss/src/main/java/com/landaiqing/oss/entity/Result.java
new file mode 100644
index 0000000..bbe701e
--- /dev/null
+++ b/sms-oss/src/main/java/com/landaiqing/oss/entity/Result.java
@@ -0,0 +1,50 @@
+package com.landaiqing.oss.entity;
+
+import lombok.Data;
+
+@Data
+public class Result {
+
+ private Boolean success;
+
+ private Integer code;
+
+ private String message;
+
+ private T data;
+
+ public static Result ok(){
+ Result result = new Result();
+ result.setSuccess(true);
+ result.setCode(ResultCodeEnum.SUCCESS.getCode());
+ result.setMessage(ResultCodeEnum.SUCCESS.getDesc());
+ return result;
+ }
+
+ public static Result ok(T data){
+ Result result = new Result();
+ result.setSuccess(true);
+ result.setCode(ResultCodeEnum.SUCCESS.getCode());
+ result.setMessage(ResultCodeEnum.SUCCESS.getDesc());
+ result.setData(data);
+ return result;
+ }
+
+ public static Result fail(){
+ Result result = new Result();
+ result.setSuccess(false);
+ result.setCode(ResultCodeEnum.FAIL.getCode());
+ result.setMessage(ResultCodeEnum.FAIL.getDesc());
+ return result;
+ }
+
+ public static Result fail(T data){
+ Result result = new Result();
+ result.setSuccess(false);
+ result.setCode(ResultCodeEnum.FAIL.getCode());
+ result.setMessage(ResultCodeEnum.FAIL.getDesc());
+ result.setData(data);
+ return result;
+ }
+
+}
diff --git a/sms-oss/src/main/java/com/landaiqing/oss/entity/ResultCodeEnum.java b/sms-oss/src/main/java/com/landaiqing/oss/entity/ResultCodeEnum.java
new file mode 100644
index 0000000..91d14f1
--- /dev/null
+++ b/sms-oss/src/main/java/com/landaiqing/oss/entity/ResultCodeEnum.java
@@ -0,0 +1,29 @@
+package com.landaiqing.oss.entity;
+
+import lombok.Getter;
+
+@Getter
+public enum ResultCodeEnum {
+
+ SUCCESS(200,"成功"),
+ FAIL(500,"失败");
+
+ public int code;
+
+ public String desc;
+
+ ResultCodeEnum(int code,String desc){
+ this.code = code;
+ this.desc = desc;
+ }
+
+ public static ResultCodeEnum getByCode(int codeVal){
+ for(ResultCodeEnum resultCodeEnum : ResultCodeEnum.values()){
+ if(resultCodeEnum.code == codeVal){
+ return resultCodeEnum;
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/sms-oss/src/main/java/com/landaiqing/oss/service/FileService.java b/sms-oss/src/main/java/com/landaiqing/oss/service/FileService.java
new file mode 100644
index 0000000..cee1dd1
--- /dev/null
+++ b/sms-oss/src/main/java/com/landaiqing/oss/service/FileService.java
@@ -0,0 +1,50 @@
+package com.landaiqing.oss.service;
+
+import com.landaiqing.oss.adapter.StorageAdapter;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * @Classname FileService
+ * @BelongsProject: qing-yu-club
+ * @BelongsPackage: com.landaiqing.oss.service
+ * @Author: landaiqing
+ * @CreateTime: 2024-02-17 16:50
+ * @Description: TODO
+ * @Version: 1.0
+ */
+@Service
+public class FileService {
+ private final StorageAdapter storageAdapter;
+
+ public FileService(StorageAdapter storageAdapter) {
+ this.storageAdapter = storageAdapter;
+ }
+
+
+ /**
+ * 列出所有桶
+ */
+ public List getAllBucket() {
+ return storageAdapter.getAllBucket();
+ }
+
+ /**
+ * 获取文件路径
+ */
+ public String getUrl(String bucketName,String objectName) {
+ return storageAdapter.getUrl(bucketName,objectName);
+ }
+
+ /**
+ * 上传文件
+ */
+ public String uploadFile(MultipartFile uploadFile, String bucket, String objectName){
+ storageAdapter.uploadFile(uploadFile,bucket,objectName);
+ objectName = objectName + "/" + uploadFile.getOriginalFilename();
+ return storageAdapter.getUrl(bucket, objectName);
+ }
+}
diff --git a/sms-oss/src/main/java/com/landaiqing/oss/util/MinioUtil.java b/sms-oss/src/main/java/com/landaiqing/oss/util/MinioUtil.java
new file mode 100644
index 0000000..cbd1eb6
--- /dev/null
+++ b/sms-oss/src/main/java/com/landaiqing/oss/util/MinioUtil.java
@@ -0,0 +1,126 @@
+package com.landaiqing.oss.util;
+
+import com.landaiqing.oss.entity.FileInfo;
+import io.minio.*;
+import io.minio.errors.*;
+import io.minio.messages.Bucket;
+import io.minio.messages.Item;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.InvalidKeyException;
+import java.security.NoSuchAlgorithmException;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @Classname MinioUtil
+ * @BelongsProject: qing-yu-club
+ * @BelongsPackage: com.landaiqing.oss.util
+ * @Author: landaiqing
+ * @CreateTime: 2024-02-17 15:50
+ * @Description: minio文件操作工具
+ * @Version: 1.0
+ */
+@Component
+public class MinioUtil {
+ @Resource
+ private MinioClient minioClient;
+
+ /**
+ * @description: 创建Bucket桶
+ * @param: [bucket]
+ * @return: void
+ * @author landaiqing
+ * @date: 2024/2/17 15:53
+ */
+ public void createBucket(String bucket) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
+ boolean exists = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucket).build());
+ if (!exists) {
+ minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucket).build());
+ }
+ }
+
+ /**
+ * @description: 上传文件
+ * @param: [inputStream, bucket, objectName]
+ * @return: void
+ * @author landaiqing
+ * @date: 2024/2/17 15:58
+ */
+ public void uploadFile(InputStream inputStream, String bucket, String objectName) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
+ minioClient.putObject(PutObjectArgs.builder().bucket(bucket).object(objectName)
+ .stream(inputStream, -1, Integer.MAX_VALUE).build());
+ }
+
+ /**
+ * @description: 列出所有桶
+ * @param: []
+ * @return: java.util.List
+ * @author landaiqing
+ * @date: 2024/2/17 16:00
+ */
+ public List getAllBucket() throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
+ List buckets = minioClient.listBuckets();
+ return buckets.stream().map(Bucket::name).collect(Collectors.toList());
+ }
+
+ /**
+ * @description: 列出当前桶及文件
+ * @param: [bucket]
+ * @return: java.util.List
+ * @author landaiqing
+ * @date: 2024/2/17 16:06
+ */
+ public List getAllFile(String bucket) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
+ Iterable> results = minioClient.listObjects(
+ ListObjectsArgs.builder().bucket(bucket).build());
+ List fileInfoList = new LinkedList<>();
+ for (Result- result : results) {
+ FileInfo fileInfo = new FileInfo();
+ Item item = result.get();
+ fileInfo.setFileName(item.objectName());
+ fileInfo.setDirectoryFlag(item.isDir());
+ fileInfo.setEtag(item.etag());
+ fileInfoList.add(fileInfo);
+ }
+ return fileInfoList;
+ }
+
+ /**
+ * @description: 下载文件
+ * @param: [bucket, objectName]
+ * @return: java.io.InputStream
+ * @author landaiqing
+ * @date: 2024/2/17 16:11
+ */
+ public InputStream download(String bucket, String objectName) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
+ return minioClient.getObject(GetObjectArgs.builder().bucket(bucket).object(objectName).build());
+ }
+
+ /**
+ * @description: 删除桶
+ * @param: [bucket]
+ * @return: void
+ * @author landaiqing
+ * @date: 2024/2/17 16:14
+ */
+ public void deleteBucket(String bucket) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
+ minioClient.removeBucket(RemoveBucketArgs.builder().bucket(bucket).build());
+ }
+
+ /**
+ * @description: 删除文件
+ * @param: [bucket, objectName]
+ * @return: void
+ * @author landaiqing
+ * @date: 2024/2/17 16:14
+ */
+ public void deleteObject(String bucket, String objectName) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException {
+ minioClient.removeObject(
+ RemoveObjectArgs.builder().bucket(bucket).object(objectName).build());
+ }
+}
diff --git a/sms-oss/src/main/resources/application.yml b/sms-oss/src/main/resources/application.yml
new file mode 100644
index 0000000..f890f70
--- /dev/null
+++ b/sms-oss/src/main/resources/application.yml
@@ -0,0 +1,6 @@
+server:
+ port: 4000
+minio:
+ url: http://116.196.80.239:9000/
+ accessKey: landaiqing
+ secretKey: LDQ20020618xxx