wu 1 周之前
當前提交
861ad1251b
共有 66 個文件被更改,包括 2033 次插入0 次删除
  1. 38 0
      .gitignore
  2. 10 0
      .idea/.gitignore
  3. 17 0
      .idea/dataSources.xml
  4. 19 0
      .idea/encodings.xml
  5. 17 0
      .idea/misc.xml
  6. 87 0
      .idea/mybatisx/templates.xml
  7. 91 0
      pom.xml
  8. 7 0
      src/main/webapp/WEB-INF/web.xml
  9. 5 0
      src/main/webapp/index.jsp
  10. 58 0
      zk_common/pom.xml
  11. 46 0
      zk_common/src/main/java/com/zhnetao/AliOssUtil.java
  12. 120 0
      zk_common/src/main/java/com/zhnetao/AppJwtUtil.java
  13. 95 0
      zk_common/src/main/java/com/zhnetao/GreenTextScan.java
  14. 26 0
      zk_common/src/main/java/com/zhnetao/Result.java
  15. 70 0
      zk_common/src/main/java/com/zhnetao/pojo/TbCompanies.java
  16. 75 0
      zk_common/src/main/java/com/zhnetao/pojo/TbDepartments.java
  17. 7 0
      zk_common/src/main/webapp/WEB-INF/web.xml
  18. 5 0
      zk_common/src/main/webapp/index.jsp
  19. 71 0
      zk_companies_service/pom.xml
  20. 10 0
      zk_companies_service/src/main/java/com/zhentao/CompaniesApplication.java
  21. 37 0
      zk_companies_service/src/main/java/com/zhentao/controller/CompaniesController.java
  22. 20 0
      zk_companies_service/src/main/java/com/zhentao/mapper/TbCompaniesMapper.java
  23. 13 0
      zk_companies_service/src/main/java/com/zhentao/service/TbCompaniesService.java
  24. 22 0
      zk_companies_service/src/main/java/com/zhentao/service/impl/TbCompaniesServiceImpl.java
  25. 16 0
      zk_companies_service/src/main/resources/bootstrap.yml
  26. 16 0
      zk_companies_service/src/main/resources/mapper/TbCompaniesMapper.xml
  27. 7 0
      zk_companies_service/src/main/webapp/WEB-INF/web.xml
  28. 5 0
      zk_companies_service/src/main/webapp/index.jsp
  29. 33 0
      zk_companies_service_feign/pom.xml
  30. 17 0
      zk_companies_service_feign/src/main/java/client/CompaniesClient.java
  31. 7 0
      zk_companies_service_feign/src/main/webapp/WEB-INF/web.xml
  32. 5 0
      zk_companies_service_feign/src/main/webapp/index.jsp
  33. 71 0
      zk_departments_service/pom.xml
  34. 34 0
      zk_departments_service/src/main/java/com/zhentao/controller/DepatController.java
  35. 13 0
      zk_departments_service/src/main/java/com/zhentao/departmentsApplication.java
  36. 20 0
      zk_departments_service/src/main/java/com/zhentao/mapper/TbDepartmentsMapper.java
  37. 13 0
      zk_departments_service/src/main/java/com/zhentao/service/TbDepartmentsService.java
  38. 22 0
      zk_departments_service/src/main/java/com/zhentao/service/impl/TbDepartmentsServiceImpl.java
  39. 16 0
      zk_departments_service/src/main/resources/bootstrap.yml
  40. 16 0
      zk_departments_service/src/main/resources/mapper/TbDepartmentsMapper.xml
  41. 7 0
      zk_departments_service/src/main/webapp/WEB-INF/web.xml
  42. 5 0
      zk_departments_service/src/main/webapp/index.jsp
  43. 46 0
      zk_gateway/pom.xml
  44. 12 0
      zk_gateway/src/main/java/zhentao/GatewayApplication.java
  45. 34 0
      zk_gateway/src/main/java/zhentao/filter/MyFilter.java
  46. 16 0
      zk_gateway/src/main/resources/bootstrap.yml
  47. 7 0
      zk_gateway/src/main/webapp/WEB-INF/web.xml
  48. 5 0
      zk_gateway/src/main/webapp/index.jsp
  49. 71 0
      zk_user_service/pom.xml
  50. 12 0
      zk_user_service/src/main/java/com/zhentao/UserApplication.java
  51. 122 0
      zk_user_service/src/main/java/com/zhentao/controller/UserController.java
  52. 20 0
      zk_user_service/src/main/java/com/zhentao/mapper/UserProfilesMapper.java
  53. 20 0
      zk_user_service/src/main/java/com/zhentao/mapper/UsersMapper.java
  54. 57 0
      zk_user_service/src/main/java/com/zhentao/minio/FileStorageServiceImpl.java
  55. 87 0
      zk_user_service/src/main/java/com/zhentao/pojo/UserProfiles.java
  56. 87 0
      zk_user_service/src/main/java/com/zhentao/pojo/Users.java
  57. 13 0
      zk_user_service/src/main/java/com/zhentao/service/UserProfilesService.java
  58. 13 0
      zk_user_service/src/main/java/com/zhentao/service/UsersService.java
  59. 22 0
      zk_user_service/src/main/java/com/zhentao/service/impl/UserProfilesServiceImpl.java
  60. 22 0
      zk_user_service/src/main/java/com/zhentao/service/impl/UsersServiceImpl.java
  61. 16 0
      zk_user_service/src/main/resources/bootstrap.yml
  62. 19 0
      zk_user_service/src/main/resources/mapper/UserProfilesMapper.xml
  63. 19 0
      zk_user_service/src/main/resources/mapper/UsersMapper.xml
  64. 12 0
      zk_user_service/src/main/resources/templates/user.ftl
  65. 7 0
      zk_user_service/src/main/webapp/WEB-INF/web.xml
  66. 5 0
      zk_user_service/src/main/webapp/index.jsp

+ 38 - 0
.gitignore

@@ -0,0 +1,38 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store

+ 10 - 0
.idea/.gitignore

@@ -0,0 +1,10 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
+# 依赖于环境的 Maven 主目录路径
+/mavenHomeManager.xml
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml

+ 17 - 0
.idea/dataSources.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="DataSourceManagerImpl" format="xml" multifile-model="true">
+    <data-source source="LOCAL" name="kkk-666@localhost" uuid="ecdc71f3-f926-46e0-8bf0-8cd89874796b">
+      <driver-ref>mysql_aurora.aws_wrapper</driver-ref>
+      <synchronize>true</synchronize>
+      <jdbc-driver>software.amazon.jdbc.Driver</jdbc-driver>
+      <jdbc-url>jdbc:aws-wrapper:mysql://localhost:3306/kkk-666</jdbc-url>
+      <jdbc-additional-properties>
+        <property name="com.intellij.clouds.kubernetes.db.host.port" />
+        <property name="com.intellij.clouds.kubernetes.db.enabled" value="false" />
+        <property name="com.intellij.clouds.kubernetes.db.container.port" />
+      </jdbc-additional-properties>
+      <working-dir>$ProjectFileDir$</working-dir>
+    </data-source>
+  </component>
+</project>

+ 19 - 0
.idea/encodings.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding">
+    <file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/zk_common/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/zk_common/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/zk_companies_service/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/zk_companies_service/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/zk_companies_service_feign/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/zk_companies_service_feign/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/zk_departments_service/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/zk_departments_service/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/zk_gateway/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/zk_gateway/src/main/resources" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/zk_user_service/src/main/java" charset="UTF-8" />
+    <file url="file://$PROJECT_DIR$/zk_user_service/src/main/resources" charset="UTF-8" />
+  </component>
+</project>

+ 17 - 0
.idea/misc.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CodeInsightWorkspaceSettings">
+    <option name="optimizeImportsOnTheFly" value="true" />
+  </component>
+  <component name="ExternalStorageConfigurationManager" enabled="true" />
+  <component name="MavenProjectsManager">
+    <option name="originalFiles">
+      <list>
+        <option value="$PROJECT_DIR$/pom.xml" />
+      </list>
+    </option>
+  </component>
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+    <output url="file://$PROJECT_DIR$/out" />
+  </component>
+</project>

+ 87 - 0
.idea/mybatisx/templates.xml

@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="TemplatesSettings">
+    <option name="templateConfigs">
+      <TemplateContext>
+        <option name="generateConfig">
+          <GenerateConfig>
+            <option name="annotationType" value="MYBATIS_PLUS3" />
+            <option name="basePackage" value="com.zhentao" />
+            <option name="basePath" value="src/main/java" />
+            <option name="classNameStrategy" value="camel" />
+            <option name="encoding" value="UTF-8" />
+            <option name="extraClassSuffix" value="" />
+            <option name="ignoreFieldPrefix" value="" />
+            <option name="ignoreFieldSuffix" value="" />
+            <option name="ignoreTablePrefix" value="" />
+            <option name="ignoreTableSuffix" value="" />
+            <option name="moduleName" value="zk_user_service" />
+            <option name="modulePath" value="$PROJECT_DIR$/zk_user_service" />
+            <option name="moduleUIInfoList">
+              <list>
+                <ModuleInfoGo>
+                  <option name="basePath" value="${domain.basePath}" />
+                  <option name="configFileName" value="serviceImpl.ftl" />
+                  <option name="configName" value="serviceImpl" />
+                  <option name="encoding" value="${domain.encoding}" />
+                  <option name="fileName" value="${domain.fileName}ServiceImpl" />
+                  <option name="fileNameWithSuffix" value="${domain.fileName}ServiceImpl.java" />
+                  <option name="modulePath" value="$PROJECT_DIR$/zk_user_service" />
+                  <option name="packageName" value="${domain.basePackage}.service.impl" />
+                </ModuleInfoGo>
+                <ModuleInfoGo>
+                  <option name="basePath" value="${domain.basePath}" />
+                  <option name="configFileName" value="mapperInterface.ftl" />
+                  <option name="configName" value="mapperInterface" />
+                  <option name="encoding" value="${domain.encoding}" />
+                  <option name="fileName" value="${domain.fileName}Mapper" />
+                  <option name="fileNameWithSuffix" value="${domain.fileName}Mapper.java" />
+                  <option name="modulePath" value="$PROJECT_DIR$/zk_user_service" />
+                  <option name="packageName" value="${domain.basePackage}.mapper" />
+                </ModuleInfoGo>
+                <ModuleInfoGo>
+                  <option name="basePath" value="${domain.basePath}" />
+                  <option name="configFileName" value="serviceInterface.ftl" />
+                  <option name="configName" value="serviceInterface" />
+                  <option name="encoding" value="${domain.encoding}" />
+                  <option name="fileName" value="${domain.fileName}Service" />
+                  <option name="fileNameWithSuffix" value="${domain.fileName}Service.java" />
+                  <option name="modulePath" value="$PROJECT_DIR$/zk_user_service" />
+                  <option name="packageName" value="${domain.basePackage}.service" />
+                </ModuleInfoGo>
+                <ModuleInfoGo>
+                  <option name="basePath" value="src/main/resources" />
+                  <option name="configFileName" value="mapperXml.ftl" />
+                  <option name="configName" value="mapperXml" />
+                  <option name="encoding" value="${domain.encoding}" />
+                  <option name="fileName" value="${domain.fileName}Mapper" />
+                  <option name="fileNameWithSuffix" value="${domain.fileName}Mapper.xml" />
+                  <option name="modulePath" value="$PROJECT_DIR$/zk_user_service" />
+                  <option name="packageName" value="mapper" />
+                </ModuleInfoGo>
+              </list>
+            </option>
+            <option name="needToStringHashcodeEquals" value="true" />
+            <option name="needsComment" value="true" />
+            <option name="needsModel" value="true" />
+            <option name="relativePackage" value="pojo" />
+            <option name="superClass" value="" />
+            <option name="tableUIInfoList">
+              <list>
+                <TableUIInfo>
+                  <option name="className" value="Users" />
+                  <option name="tableName" value="users" />
+                </TableUIInfo>
+              </list>
+            </option>
+            <option name="templatesName" value="mybatis-plus3" />
+            <option name="useLombokPlugin" value="true" />
+          </GenerateConfig>
+        </option>
+        <option name="moduleName" value="zk_user_service" />
+        <option name="projectPath" value="$PROJECT_DIR$" />
+        <option name="templateName" value="mybatis-plus3" />
+      </TemplateContext>
+    </option>
+  </component>
+</project>

+ 91 - 0
pom.xml

@@ -0,0 +1,91 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>com.zhentao</groupId>
+  <artifactId>kkk-66</artifactId>
+  <packaging>pom</packaging>
+  <modules>
+    <module>zk_common</module>
+    <module>zk_departments_service</module>
+    <module>zk_companies_service</module>
+    <module>zk_companies_service_feign</module>
+    <module>zk_gateway</module>
+    <module>zk_user_service</module>
+  </modules>
+  <version>1.0-SNAPSHOT</version>
+  <name>kkk-66 Maven Webapp</name>
+  <url>http://maven.apache.org</url>
+  <parent>
+    <groupId>org.springframework.boot</groupId>
+    <artifactId>spring-boot-starter-parent</artifactId>
+    <version>2.3.9.RELEASE</version>
+    <relativePath/>
+  </parent>
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+    <java.version>1.8</java.version>
+    <spring-cloud.version>Hoxton.SR10</spring-cloud.version>
+    <mysql.version>5.1.47</mysql.version>
+    <mybatis.version>2.1.4</mybatis.version>
+    <mybatis-plus.version>3.4.3.4</mybatis-plus.version> <!-- 推荐版本 -->
+  </properties>
+  <dependencyManagement>
+    <dependencies>
+      <!-- MyBatis-Plus 管理 -->
+      <dependency>
+        <groupId>com.baomidou</groupId>
+        <artifactId>mybatis-plus-boot-starter</artifactId>
+        <version>${mybatis-plus.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>com.alibaba.cloud</groupId>
+        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
+        <version>2.2.6.RELEASE</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+      <!-- springCloud -->
+      <dependency>
+        <groupId>org.springframework.cloud</groupId>
+        <artifactId>spring-cloud-dependencies</artifactId>
+        <version>${spring-cloud.version}</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
+      <!-- mysql驱动 -->
+      <dependency>
+        <groupId>mysql</groupId>
+        <artifactId>mysql-connector-java</artifactId>
+        <version>${mysql.version}</version>
+      </dependency>
+      <!--mybatis-->
+      <dependency>
+        <groupId>org.mybatis.spring.boot</groupId>
+        <artifactId>mybatis-spring-boot-starter</artifactId>
+        <version>${mybatis.version}</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+  <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.projectlombok</groupId>
+      <artifactId>lombok</artifactId>
+    </dependency>
+    <!-- 引入 MyBatis-Plus(会自动覆盖 MyBatis 的默认依赖,无需额外排除) -->
+    <dependency>
+      <groupId>com.baomidou</groupId>
+      <artifactId>mybatis-plus-boot-starter</artifactId>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <finalName>kkk-66</finalName>
+  </build>
+</project>

+ 7 - 0
src/main/webapp/WEB-INF/web.xml

@@ -0,0 +1,7 @@
+<!DOCTYPE web-app PUBLIC
+ "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+ "http://java.sun.com/dtd/web-app_2_3.dtd" >
+
+<web-app>
+  <display-name>Archetype Created Web Application</display-name>
+</web-app>

+ 5 - 0
src/main/webapp/index.jsp

@@ -0,0 +1,5 @@
+<html>
+<body>
+<h2>Hello World!</h2>
+</body>
+</html>

+ 58 - 0
zk_common/pom.xml

@@ -0,0 +1,58 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.zhentao</groupId>
+        <artifactId>kkk-66</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>zk_common</artifactId>
+    <packaging>war</packaging>
+    <name>zk_common Maven Webapp</name>
+    <url>http://maven.apache.org</url>
+    <dependencies>
+        <dependency>
+            <groupId>io.jsonwebtoken</groupId>
+            <artifactId>jjwt</artifactId>
+            <version>0.9.1</version>
+        </dependency>
+        <dependency>
+            <groupId>com.aliyun.oss</groupId>
+            <artifactId>aliyun-sdk-oss</artifactId>
+            <version>3.17.4</version>
+        </dependency>
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>green20220302</artifactId>
+            <version>3.0.1</version>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.58</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-autoconfigure</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-freemarker</artifactId>
+        </dependency>
+        <!-- 添加minio依赖 -->
+        <dependency>
+            <groupId>io.minio</groupId>
+            <artifactId>minio</artifactId>
+            <version>7.1.0</version>
+        </dependency>
+        <!-- 添加spring boot configuration processor 用于处理配置属性 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-configuration-processor</artifactId>
+            <optional>true</optional>
+        </dependency>
+    </dependencies>
+    <build>
+        <finalName>zk_common</finalName>
+    </build>
+</project>

+ 46 - 0
zk_common/src/main/java/com/zhnetao/AliOssUtil.java

@@ -0,0 +1,46 @@
+package com.zhnetao;
+
+import com.aliyun.oss.ClientException;
+import com.aliyun.oss.OSS;
+import com.aliyun.oss.OSSClientBuilder;
+import com.aliyun.oss.OSSException;
+
+import java.io.InputStream;
+
+public class AliOssUtil {
+    private static final String ENDPOINT = "https://oss-cn-beijing.aliyuncs.com";
+    private static final String ACCESS_KEY_ID = "LTAI5tPUwTUFnLbbcoCJ8QsA";
+    private static final String SECRET_ACCESS_KEY = "7Jgqgli4di79OJ2V47aPmOlJEx07XQ";
+    private static final String BUCKET_NAME = "big-enent-xiaojian";
+
+    //上传文件,返回文件的公网访问地址
+    public static String uploadFile(String objectName, InputStream inputStream){
+        // 创建OSSClient实例。
+        OSS ossClient = new OSSClientBuilder().build(ENDPOINT,ACCESS_KEY_ID,SECRET_ACCESS_KEY);
+        //公文访问地址
+        String url = "";
+        try {
+            // 创建存储空间。
+            ossClient.createBucket(BUCKET_NAME);
+            ossClient.putObject(BUCKET_NAME, objectName, inputStream);
+            url = "https://"+BUCKET_NAME+"."+ENDPOINT.substring(ENDPOINT.lastIndexOf("/")+1)+"/"+objectName;
+        } catch (OSSException oe) {
+            System.out.println("Caught an OSSException, which means your request made it to OSS, "
+                    + "but was rejected with an error response for some reason.");
+            System.out.println("Error Message:" + oe.getErrorMessage());
+            System.out.println("Error Code:" + oe.getErrorCode());
+            System.out.println("Request ID:" + oe.getRequestId());
+            System.out.println("Host ID:" + oe.getHostId());
+        } catch (ClientException ce) {
+            System.out.println("Caught an ClientException, which means the client encountered "
+                    + "a serious internal problem while trying to communicate with OSS, "
+                    + "such as not being able to access the network.");
+            System.out.println("Error Message:" + ce.getMessage());
+        } finally {
+            if (ossClient != null) {
+                ossClient.shutdown();
+            }
+        }
+        return url;
+    }
+}

+ 120 - 0
zk_common/src/main/java/com/zhnetao/AppJwtUtil.java

@@ -0,0 +1,120 @@
+package com.zhnetao;
+
+import io.jsonwebtoken.*;
+
+import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
+import java.util.*;
+
+public class AppJwtUtil {
+
+    // TOKEN的有效期一天(S)
+    private static final int TOKEN_TIME_OUT = 3_600;
+    // 加密KEY
+    private static final String TOKEN_ENCRY_KEY = "MDk4ZjZiY2Q0NjIxZDM3M2NhZGU0ZTgzMjYyN2I0ZjY";
+    // 最小刷新间隔(S)
+    private static final int REFRESH_TIME = 300;
+
+    // 生产ID
+    public static String getToken(Long id){
+        Map<String, Object> claimMaps = new HashMap<>();
+        claimMaps.put("id",id);
+        long currentTime = System.currentTimeMillis();
+        return Jwts.builder()
+                .setId(UUID.randomUUID().toString())
+                .setIssuedAt(new Date(currentTime))  //签发时间
+                .setSubject("system")  //说明
+                .setIssuer("heima") //签发者信息
+                .setAudience("app")  //接收用户
+                .compressWith(CompressionCodecs.GZIP)  //数据压缩方式
+                .signWith(SignatureAlgorithm.HS512, generalKey()) //加密方式
+                .setExpiration(new Date(currentTime + TOKEN_TIME_OUT * 1000))  //过期时间戳
+                .addClaims(claimMaps) //cla信息
+                .compact();
+    }
+
+    /**
+     * 获取token中的claims信息
+     *
+     * @param token
+     * @return
+     */
+    private static Jws<Claims> getJws(String token) {
+            return Jwts.parser()
+                    .setSigningKey(generalKey())
+                    .parseClaimsJws(token);
+    }
+
+    /**
+     * 获取payload body信息
+     *
+     * @param token
+     * @return
+     */
+    public static Claims getClaimsBody(String token) {
+        try {
+            return getJws(token).getBody();
+        }catch (ExpiredJwtException e){
+            return null;
+        }
+    }
+
+    /**
+     * 获取hearder body信息
+     *
+     * @param token
+     * @return
+     */
+    public static JwsHeader getHeaderBody(String token) {
+        return getJws(token).getHeader();
+    }
+
+    /**
+     * 是否过期
+     *
+     * @param claims
+     * @return -1:有效,0:有效,1:过期,2:过期
+     */
+    public static int verifyToken(Claims claims) {
+        if(claims==null){
+            return 1;
+        }
+        try {
+            claims.getExpiration()
+                    .before(new Date());
+            // 需要自动刷新TOKEN
+            if((claims.getExpiration().getTime()-System.currentTimeMillis())>REFRESH_TIME*1000){
+                return -1;
+            }else {
+                return 0;
+            }
+        } catch (ExpiredJwtException ex) {
+            return 1;
+        }catch (Exception e){
+            return 2;
+        }
+    }
+
+    /**
+     * 由字符串生成加密key
+     *
+     * @return
+     */
+    public static SecretKey generalKey() {
+        byte[] encodedKey = Base64.getEncoder().encode(TOKEN_ENCRY_KEY.getBytes());
+        SecretKey key = new SecretKeySpec(encodedKey, 0, encodedKey.length, "AES");
+        return key;
+    }
+
+    public static void main(String[] args) {
+       /* Map map = new HashMap();
+        map.put("id","11");*/
+        System.out.println(AppJwtUtil.getToken(1102L));
+//        Jws<Claims> jws = AppJwtUtil.getJws(AppJwtUtil.getToken(1102L));
+//        Claims claims = jws.getBody();
+        Claims claims = AppJwtUtil.getClaimsBody(AppJwtUtil.getToken(1102L));
+        System.out.println(claims.get("id"));
+
+    }
+
+}

+ 95 - 0
zk_common/src/main/java/com/zhnetao/GreenTextScan.java

@@ -0,0 +1,95 @@
+package com.zhnetao;
+
+import com.aliyun.green20220302.Client;
+import com.aliyun.green20220302.models.TextModerationPlusRequest;
+import com.aliyun.green20220302.models.TextModerationPlusResponse;
+import com.aliyun.green20220302.models.TextModerationPlusResponseBody;
+import com.aliyun.teaopenapi.models.Config;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Getter
+@Setter
+@Component
+//@ConfigurationProperties(prefix = "aliyun")
+public class GreenTextScan {
+
+    private String accessKeyId="LTAI5tJ9TqgyCMrQz7sVM4px";
+    private String accessKeySecret="mP9mIS9cLWAVyV7r8wF8T6GUdiAS8F";
+    private String regionId = "cn-shanghai";
+    private String endpoint = "green-cip.cn-shanghai.aliyuncs.com";
+    private int readTimeout = 6000;
+    private int connectTimeout = 3000;
+
+    /**
+     * 文本内容审核
+     * @param content 待审核文本
+     * @param service 检测类型,如"comment_detection_pro"
+     * @return 审核结果map,包含suggestion、label等信息
+     * @throws Exception 异常信息
+     */
+    public Map<String, String> textModeration(String content, String service) throws Exception {
+        Config config = new Config();
+        config.setAccessKeyId(accessKeyId);
+        config.setAccessKeySecret(accessKeySecret);
+        config.setRegionId(regionId);
+        config.setEndpoint(endpoint);
+        config.setReadTimeout(readTimeout);
+        config.setConnectTimeout(connectTimeout);
+
+        Client client = new Client(config);
+
+        com.alibaba.fastjson.JSONObject serviceParameters = new com.alibaba.fastjson.JSONObject();
+        serviceParameters.put("content", content);
+
+        TextModerationPlusRequest request = new TextModerationPlusRequest();
+        request.setService(service);
+        request.setServiceParameters(serviceParameters.toJSONString());
+
+        Map<String, String> resultMap = new HashMap<>();
+        try {
+            TextModerationPlusResponse response = client.textModerationPlus(request);
+            if (response.getStatusCode() == 200) {
+                TextModerationPlusResponseBody result = response.getBody();
+                if (result.getCode() == 200) {
+                    TextModerationPlusResponseBody.TextModerationPlusResponseBodyData data = result.getData();
+                    // 根据实际返回的data结构提取审核结果
+                    // 这里仅为示例,需根据阿里云API实际返回字段调整
+//                    resultMap.put("suggestion", data.getSuggestion());
+//                    resultMap.put("label", data.getLabel());
+                    if (data.getRiskLevel().equals("high")){
+                        resultMap.put("suggestion", "block");
+                    }else if (data.getRiskLevel().equals("low")||data.getRiskLevel().equals("medium")){
+                        resultMap.put("suggestion", "review");
+                    } else {
+                        resultMap.put("suggestion", "pass");
+                    }
+                    resultMap.put("requestId", result.getRequestId());
+                } else {
+                    resultMap.put("error", "审核失败,错误码:" + result.getCode());
+                }
+            } else {
+                resultMap.put("error", "请求失败,状态码:" + response.getStatusCode());
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new Exception("文本审核发生异常:" + e.getMessage());
+        }
+        return resultMap;
+    }
+
+    /**
+     * 使用默认检测类型的文本审核
+     * @param content 待审核文本
+     * @return 审核结果map
+     * @throws Exception 异常信息
+     */
+    public Map<String, String> textModeration(String content) throws Exception {
+        return textModeration(content, "comment_detection_pro");
+    }
+
+}

+ 26 - 0
zk_common/src/main/java/com/zhnetao/Result.java

@@ -0,0 +1,26 @@
+package com.zhnetao;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class Result<T>{
+    private String code;
+     private String message;
+     private T data;
+        public static <E> Result<E> success(E data){
+            return new Result<>("200","操作成功",data);
+        }
+        public static Result success(){
+            return new Result<>("200","操作成功",null);
+        }
+        public static Result error(String message){
+            return new Result<>("500",message,null);
+        }
+    public static Result error(String code,String message){
+        return new Result<>(code,message,null);
+    }
+}

+ 70 - 0
zk_common/src/main/java/com/zhnetao/pojo/TbCompanies.java

@@ -0,0 +1,70 @@
+package com.zhnetao.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * 
+ * @TableName tb_companies
+ */
+@TableName(value ="tb_companies")
+@Data
+public class TbCompanies {
+    /**
+     * 
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 
+     */
+    private String name;
+
+    /**
+     * 
+     */
+    private Integer num;
+
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        TbCompanies other = (TbCompanies) that;
+        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
+            && (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))
+            && (this.getNum() == null ? other.getNum() == null : this.getNum().equals(other.getNum()));
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
+        result = prime * result + ((getName() == null) ? 0 : getName().hashCode());
+        result = prime * result + ((getNum() == null) ? 0 : getNum().hashCode());
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", name=").append(name);
+        sb.append(", num=").append(num);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 75 - 0
zk_common/src/main/java/com/zhnetao/pojo/TbDepartments.java

@@ -0,0 +1,75 @@
+package com.zhnetao.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * 
+ * @TableName tb_departments
+ */
+@TableName(value ="tb_departments")
+@Data
+public class TbDepartments {
+    /**
+     * 
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 
+     */
+    private String name;
+
+    /**
+     * 
+     */
+    private Integer gradeId;
+
+    @TableField(exist = false)
+
+    private String Cname;
+
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        TbDepartments other = (TbDepartments) that;
+        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
+            && (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))
+            && (this.getGradeId() == null ? other.getGradeId() == null : this.getGradeId().equals(other.getGradeId()));
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
+        result = prime * result + ((getName() == null) ? 0 : getName().hashCode());
+        result = prime * result + ((getGradeId() == null) ? 0 : getGradeId().hashCode());
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", name=").append(name);
+        sb.append(", gradeId=").append(gradeId);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 7 - 0
zk_common/src/main/webapp/WEB-INF/web.xml

@@ -0,0 +1,7 @@
+<!DOCTYPE web-app PUBLIC
+ "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+ "http://java.sun.com/dtd/web-app_2_3.dtd" >
+
+<web-app>
+  <display-name>Archetype Created Web Application</display-name>
+</web-app>

+ 5 - 0
zk_common/src/main/webapp/index.jsp

@@ -0,0 +1,5 @@
+<html>
+<body>
+<h2>Hello World!</h2>
+</body>
+</html>

+ 71 - 0
zk_companies_service/pom.xml

@@ -0,0 +1,71 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.zhentao</groupId>
+        <artifactId>kkk-66</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>zk_companies_service</artifactId>
+    <packaging>jar</packaging>
+    <name>zk_companies_service Maven Webapp</name>
+    <url>http://maven.apache.org</url>
+    <dependencies>
+        <!--alibaba-seata-->
+        <!--        <dependency>-->
+        <!--            <groupId>com.alibaba.cloud</groupId>-->
+        <!--            <artifactId>spring-cloud-starter-alibaba-seata</artifactId>-->
+        <!--        </dependency>-->
+        <!--SpringCloud alibaba sentinel -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>3.8.1</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+        </dependency>
+        <!--httpClient的依赖 -->
+        <dependency>
+            <groupId>io.github.openfeign</groupId>
+            <artifactId>feign-httpclient</artifactId>
+        </dependency>
+        <!--        feign客户端依赖-->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+        <!--mybatis-->
+        <dependency>
+            <groupId>org.mybatis.spring.boot</groupId>
+            <artifactId>mybatis-spring-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.zhentao</groupId>
+            <artifactId>zk_companies_service_feign</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <finalName>zk_companies_service</finalName>
+    </build>
+</project>

+ 10 - 0
zk_companies_service/src/main/java/com/zhentao/CompaniesApplication.java

@@ -0,0 +1,10 @@
+package com.zhentao;
+
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class CompaniesApplication {
+    public static void main(String[] args) {
+        org.springframework.boot.SpringApplication.run(CompaniesApplication.class, args);
+    }
+}

+ 37 - 0
zk_companies_service/src/main/java/com/zhentao/controller/CompaniesController.java

@@ -0,0 +1,37 @@
+package com.zhentao.controller;
+
+import com.zhentao.mapper.TbCompaniesMapper;
+import com.zhnetao.Result;
+import com.zhnetao.pojo.TbCompanies;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class CompaniesController {
+
+    @Autowired
+    private TbCompaniesMapper tbCompaniesMapper;
+
+    @PostMapping("/updateNum/{id}")
+    public Result updateNum(@PathVariable Integer id){
+        TbCompanies tbCompanies =tbCompaniesMapper.selectById(id);
+        if (tbCompanies == null) {
+            return Result.error("未找到ID为" + id + "的公司");
+        }
+        tbCompanies.setNum(tbCompanies.getNum()+1);
+        tbCompaniesMapper.updateById(tbCompanies);
+        return Result.success();
+    }
+
+    @GetMapping("/selectById/{id}")
+    public Result<TbCompanies> selectById(@PathVariable Integer id){
+        TbCompanies tbDepart=tbCompaniesMapper.selectById(id);
+        if (tbDepart == null) {
+            return Result.error("未找到ID为" + id + "的公司");
+        }
+        return Result.success(tbDepart);
+    }
+}

+ 20 - 0
zk_companies_service/src/main/java/com/zhentao/mapper/TbCompaniesMapper.java

@@ -0,0 +1,20 @@
+package com.zhentao.mapper;
+
+import com.zhnetao.pojo.TbCompanies;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @author 24229
+* @description 针对表【tb_companies】的数据库操作Mapper
+* @createDate 2025-11-21 09:43:51
+* @Entity com.zhnetao.pojo.TbCompanies
+*/
+@Mapper
+public interface TbCompaniesMapper extends BaseMapper<TbCompanies> {
+
+}
+
+
+
+

+ 13 - 0
zk_companies_service/src/main/java/com/zhentao/service/TbCompaniesService.java

@@ -0,0 +1,13 @@
+package com.zhentao.service;
+
+import com.zhnetao.pojo.TbCompanies;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+* @author 24229
+* @description 针对表【tb_companies】的数据库操作Service
+* @createDate 2025-11-21 09:43:51
+*/
+public interface TbCompaniesService extends IService<TbCompanies> {
+
+}

+ 22 - 0
zk_companies_service/src/main/java/com/zhentao/service/impl/TbCompaniesServiceImpl.java

@@ -0,0 +1,22 @@
+package com.zhentao.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhnetao.pojo.TbCompanies;
+import com.zhentao.service.TbCompaniesService;
+import com.zhentao.mapper.TbCompaniesMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author 24229
+* @description 针对表【tb_companies】的数据库操作Service实现
+* @createDate 2025-11-21 09:43:51
+*/
+@Service
+public class TbCompaniesServiceImpl extends ServiceImpl<TbCompaniesMapper, TbCompanies>
+    implements TbCompaniesService{
+
+}
+
+
+
+

+ 16 - 0
zk_companies_service/src/main/resources/bootstrap.yml

@@ -0,0 +1,16 @@
+spring:
+  application:
+    name: companies
+  profiles:
+    active: dev
+  cloud:
+    nacos:
+      server-addr: localhost:8848
+      config:
+        file-extension: yaml
+        group: zk_parent
+        enabled: true
+        namespace: eb20ed2a-f570-4687-869f-3cbca27b1680 # dev
+      discovery:
+        namespace: eb20ed2a-f570-4687-869f-3cbca27b1680 #dev
+        group: zk_parent

+ 16 - 0
zk_companies_service/src/main/resources/mapper/TbCompaniesMapper.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zhentao.mapper.TbCompaniesMapper">
+
+    <resultMap id="BaseResultMap" type="com.zhnetao.pojo.TbCompanies">
+            <id property="id" column="id" jdbcType="INTEGER"/>
+            <result property="name" column="name" jdbcType="VARCHAR"/>
+            <result property="num" column="num" jdbcType="INTEGER"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,name,num
+    </sql>
+</mapper>

+ 7 - 0
zk_companies_service/src/main/webapp/WEB-INF/web.xml

@@ -0,0 +1,7 @@
+<!DOCTYPE web-app PUBLIC
+ "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+ "http://java.sun.com/dtd/web-app_2_3.dtd" >
+
+<web-app>
+  <display-name>Archetype Created Web Application</display-name>
+</web-app>

+ 5 - 0
zk_companies_service/src/main/webapp/index.jsp

@@ -0,0 +1,5 @@
+<html>
+<body>
+<h2>Hello World!</h2>
+</body>
+</html>

+ 33 - 0
zk_companies_service_feign/pom.xml

@@ -0,0 +1,33 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.zhentao</groupId>
+        <artifactId>kkk-66</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>zk_companies_service_feign</artifactId>
+    <packaging>war</packaging>
+    <name>zk_companies_service_feign Maven Webapp</name>
+    <url>http://maven.apache.org</url>
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.zhentao</groupId>
+            <artifactId>zk_common</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <finalName>zk_companies_service_feign</finalName>
+    </build>
+</project>

+ 17 - 0
zk_companies_service_feign/src/main/java/client/CompaniesClient.java

@@ -0,0 +1,17 @@
+package client;
+
+import com.zhnetao.pojo.TbCompanies;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import com.zhnetao.Result;
+
+@FeignClient(name = "companies")
+public interface CompaniesClient {
+    @PostMapping("/updateNum/{id}")
+    Result updateNum(@PathVariable("id") Integer id);
+
+    @GetMapping("/selectById/{id}")
+    Result<TbCompanies> selectById(@PathVariable("id") Integer id);
+}

+ 7 - 0
zk_companies_service_feign/src/main/webapp/WEB-INF/web.xml

@@ -0,0 +1,7 @@
+<!DOCTYPE web-app PUBLIC
+ "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+ "http://java.sun.com/dtd/web-app_2_3.dtd" >
+
+<web-app>
+  <display-name>Archetype Created Web Application</display-name>
+</web-app>

+ 5 - 0
zk_companies_service_feign/src/main/webapp/index.jsp

@@ -0,0 +1,5 @@
+<html>
+<body>
+<h2>Hello World!</h2>
+</body>
+</html>

+ 71 - 0
zk_departments_service/pom.xml

@@ -0,0 +1,71 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.zhentao</groupId>
+        <artifactId>kkk-66</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>zk_departments_service</artifactId>
+    <packaging>war</packaging>
+    <name>zk_departments_service Maven Webapp</name>
+    <url>http://maven.apache.org</url>
+    <dependencies>
+        <!--alibaba-seata-->
+        <!--        <dependency>-->
+        <!--            <groupId>com.alibaba.cloud</groupId>-->
+        <!--            <artifactId>spring-cloud-starter-alibaba-seata</artifactId>-->
+        <!--        </dependency>-->
+        <!--SpringCloud alibaba sentinel -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>3.8.1</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+        <!--mybatis-->
+        <dependency>
+            <groupId>org.mybatis.spring.boot</groupId>
+            <artifactId>mybatis-spring-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.zhentao</groupId>
+            <artifactId>zk_companies_service_feign</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <!-- Sentinel Nacos 数据源 -->
+        <dependency>
+            <groupId>com.alibaba.csp</groupId>
+            <artifactId>sentinel-datasource-nacos</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.zhentao</groupId>
+            <artifactId>zk_common</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <finalName>zk_departments_service</finalName>
+    </build>
+</project>

+ 34 - 0
zk_departments_service/src/main/java/com/zhentao/controller/DepatController.java

@@ -0,0 +1,34 @@
+package com.zhentao.controller;
+
+import client.CompaniesClient;
+import com.zhentao.mapper.TbDepartmentsMapper;
+import com.zhnetao.Result;
+import com.zhnetao.pojo.TbCompanies;
+import com.zhnetao.pojo.TbDepartments;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/departments")
+public class DepatController {
+  @Autowired
+    private TbDepartmentsMapper tbDepartmentsMapper;
+
+  @Autowired
+    private CompaniesClient client;
+
+  @PostMapping("/add")
+    public Result addDepart(@RequestBody TbDepartments tbDepartments){
+      tbDepartmentsMapper.insert(tbDepartments);
+      client.updateNum(tbDepartments.getId());
+      return Result.success("添加成功");
+
+  }
+  @GetMapping("/get/{id}")
+  public Result getTeacher(@PathVariable Integer id){
+    TbDepartments tbDepartments = tbDepartmentsMapper.selectById(id);
+    Result<TbCompanies> tbDepartmentsResult = client.selectById(tbDepartments.getGradeId());
+    tbDepartments.setName(tbDepartmentsResult .getData().getName());
+    return Result.success(tbDepartments);
+  }
+}

+ 13 - 0
zk_departments_service/src/main/java/com/zhentao/departmentsApplication.java

@@ -0,0 +1,13 @@
+package com.zhentao;
+
+import client.CompaniesClient;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+
+@SpringBootApplication
+@EnableFeignClients(clients = CompaniesClient.class)
+public class departmentsApplication {
+    public static void main(String[] args) {
+        org.springframework.boot.SpringApplication.run(departmentsApplication.class, args);
+    }
+}

+ 20 - 0
zk_departments_service/src/main/java/com/zhentao/mapper/TbDepartmentsMapper.java

@@ -0,0 +1,20 @@
+package com.zhentao.mapper;
+
+import com.zhnetao.pojo.TbDepartments;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @author 24229
+* @description 针对表【tb_departments】的数据库操作Mapper
+* @createDate 2025-11-21 09:44:14
+* @Entity com.zhnetao.pojo.TbDepartments
+*/
+@Mapper
+public interface TbDepartmentsMapper extends BaseMapper<TbDepartments> {
+
+}
+
+
+
+

+ 13 - 0
zk_departments_service/src/main/java/com/zhentao/service/TbDepartmentsService.java

@@ -0,0 +1,13 @@
+package com.zhentao.service;
+
+import com.zhnetao.pojo.TbDepartments;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+* @author 24229
+* @description 针对表【tb_departments】的数据库操作Service
+* @createDate 2025-11-21 09:44:14
+*/
+public interface TbDepartmentsService extends IService<TbDepartments> {
+
+}

+ 22 - 0
zk_departments_service/src/main/java/com/zhentao/service/impl/TbDepartmentsServiceImpl.java

@@ -0,0 +1,22 @@
+package com.zhentao.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhnetao.pojo.TbDepartments;
+import com.zhentao.service.TbDepartmentsService;
+import com.zhentao.mapper.TbDepartmentsMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author 24229
+* @description 针对表【tb_departments】的数据库操作Service实现
+* @createDate 2025-11-21 09:44:14
+*/
+@Service
+public class TbDepartmentsServiceImpl extends ServiceImpl<TbDepartmentsMapper, TbDepartments>
+    implements TbDepartmentsService{
+
+}
+
+
+
+

+ 16 - 0
zk_departments_service/src/main/resources/bootstrap.yml

@@ -0,0 +1,16 @@
+spring:
+  application:
+    name: departments
+  profiles:
+    active: dev
+  cloud:
+    nacos:
+      server-addr: localhost:8848
+      config:
+        file-extension: yaml
+        group: zk_parent
+        enabled: true
+        namespace: eb20ed2a-f570-4687-869f-3cbca27b1680 # dev
+      discovery:
+        namespace: eb20ed2a-f570-4687-869f-3cbca27b1680 #dev
+        group: zk_parent

+ 16 - 0
zk_departments_service/src/main/resources/mapper/TbDepartmentsMapper.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zhentao.mapper.TbDepartmentsMapper">
+
+    <resultMap id="BaseResultMap" type="com.zhnetao.pojo.TbDepartments">
+            <id property="id" column="id" jdbcType="INTEGER"/>
+            <result property="name" column="name" jdbcType="VARCHAR"/>
+            <result property="gradeId" column="grade_id" jdbcType="INTEGER"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,name,grade_id
+    </sql>
+</mapper>

+ 7 - 0
zk_departments_service/src/main/webapp/WEB-INF/web.xml

@@ -0,0 +1,7 @@
+<!DOCTYPE web-app PUBLIC
+ "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+ "http://java.sun.com/dtd/web-app_2_3.dtd" >
+
+<web-app>
+  <display-name>Archetype Created Web Application</display-name>
+</web-app>

+ 5 - 0
zk_departments_service/src/main/webapp/index.jsp

@@ -0,0 +1,5 @@
+<html>
+<body>
+<h2>Hello World!</h2>
+</body>
+</html>

+ 46 - 0
zk_gateway/pom.xml

@@ -0,0 +1,46 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.zhentao</groupId>
+        <artifactId>kkk-66</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>zk_gateway</artifactId>
+    <packaging>war</packaging>
+    <name>zk_gateway Maven Webapp</name>
+    <url>http://maven.apache.org</url>
+    <dependencies>
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
+        </dependency>
+        <!--        网关-->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-gateway</artifactId>
+        </dependency>
+        <!--        nacos服务发现依赖-->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.zhentao</groupId>
+            <artifactId>zk_common</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <finalName>zk_gateway</finalName>
+    </build>
+</project>

+ 12 - 0
zk_gateway/src/main/java/zhentao/GatewayApplication.java

@@ -0,0 +1,12 @@
+package zhentao;
+
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+
+@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
+public class GatewayApplication {
+    public static void main(String[] args) {
+        org.springframework.boot.SpringApplication.run(GatewayApplication.class, args);
+    }
+
+}

+ 34 - 0
zk_gateway/src/main/java/zhentao/filter/MyFilter.java

@@ -0,0 +1,34 @@
+package zhentao.filter;
+
+import org.springframework.cloud.gateway.filter.GatewayFilterChain;
+import org.springframework.cloud.gateway.filter.GlobalFilter;
+import org.springframework.core.annotation.Order;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.http.server.reactive.ServerHttpResponse;
+import org.springframework.stereotype.Component;
+import org.springframework.web.server.ServerWebExchange;
+import reactor.core.publisher.Mono;
+
+@Component
+@Order(1)
+public class MyFilter implements GlobalFilter {
+    @Override
+    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
+        ServerHttpResponse response = exchange.getResponse();
+        ServerHttpRequest request = exchange.getRequest();
+        if (request.getURI().getPath().contains("/login")||request.getURI().getPath().contains("/register")){
+            return chain.filter(exchange);
+        }
+        String token = request.getHeaders().getFirst("token");
+        if (token==null||token.isEmpty()){
+            response.setStatusCode(HttpStatus.UNAUTHORIZED);
+            return response.setComplete();
+        }
+
+        return chain.filter(exchange);
+  }
+
+
+
+}

+ 16 - 0
zk_gateway/src/main/resources/bootstrap.yml

@@ -0,0 +1,16 @@
+spring:
+  application:
+    name: gateway
+  profiles:
+    active: dev
+  cloud:
+    nacos:
+      server-addr: localhost:8848
+      config:
+        file-extension: yaml
+        group: zk-parent
+        enabled: true
+        namespace: eb20ed2a-f570-4687-869f-3cbca27b1680 # dev
+      discovery:
+        namespace: eb20ed2a-f570-4687-869f-3cbca27b1680 #dev
+        group: zk-parent

+ 7 - 0
zk_gateway/src/main/webapp/WEB-INF/web.xml

@@ -0,0 +1,7 @@
+<!DOCTYPE web-app PUBLIC
+ "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+ "http://java.sun.com/dtd/web-app_2_3.dtd" >
+
+<web-app>
+  <display-name>Archetype Created Web Application</display-name>
+</web-app>

+ 5 - 0
zk_gateway/src/main/webapp/index.jsp

@@ -0,0 +1,5 @@
+<html>
+<body>
+<h2>Hello World!</h2>
+</body>
+</html>

+ 71 - 0
zk_user_service/pom.xml

@@ -0,0 +1,71 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>com.zhentao</groupId>
+        <artifactId>kkk-66</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>zk_user_service</artifactId>
+    <packaging>war</packaging>
+    <name>zk_user_service Maven Webapp</name>
+    <url>http://maven.apache.org</url>
+    <dependencies>
+        <!--alibaba-seata-->
+        <!--        <dependency>-->
+        <!--            <groupId>com.alibaba.cloud</groupId>-->
+        <!--            <artifactId>spring-cloud-starter-alibaba-seata</artifactId>-->
+        <!--        </dependency>-->
+        <!--SpringCloud alibaba sentinel -->
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>3.8.1</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.alibaba.cloud</groupId>
+            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+        </dependency>
+        <!--mybatis-->
+        <dependency>
+            <groupId>org.mybatis.spring.boot</groupId>
+            <artifactId>mybatis-spring-boot-starter</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.zhentao</groupId>
+            <artifactId>zk_companies_service_feign</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <!-- Sentinel Nacos 数据源 -->
+        <dependency>
+            <groupId>com.alibaba.csp</groupId>
+            <artifactId>sentinel-datasource-nacos</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.zhentao</groupId>
+            <artifactId>zk_common</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <finalName>zk_user_service</finalName>
+    </build>
+</project>

+ 12 - 0
zk_user_service/src/main/java/com/zhentao/UserApplication.java

@@ -0,0 +1,12 @@
+package com.zhentao;
+
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+
+public class UserApplication {
+    public static void main(String[] args) {
+        org.springframework.boot.SpringApplication.run(UserApplication.class, args);
+    }
+
+}

+ 122 - 0
zk_user_service/src/main/java/com/zhentao/controller/UserController.java

@@ -0,0 +1,122 @@
+package com.zhentao.controller;
+
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.zhentao.mapper.UserProfilesMapper;
+import com.zhentao.mapper.UsersMapper;
+import com.zhentao.minio.FileStorageServiceImpl;
+import com.zhentao.pojo.UserProfiles;
+import com.zhentao.pojo.Users;
+import com.zhnetao.AliOssUtil;
+import com.zhnetao.AppJwtUtil;
+import com.zhnetao.GreenTextScan;
+import com.zhnetao.Result;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.DigestUtils;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringWriter;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+
+
+@RestController
+@RequestMapping("/user")
+public class UserController {
+    @Autowired
+    private UsersMapper usersMapper;
+    @Autowired
+    private UserProfilesMapper userProfilesMapper;
+
+    @PostMapping("/register")
+    public Result register(@RequestBody Users users){
+        if (users.getUsername()==null || users.getUsername().equals("")|| users.getPassword()==null || users.getPassword().equals("")){
+            return Result.error("用户名或密码不能为空");
+        }
+        Users user = usersMapper.selectOne(new QueryWrapper<Users>().eq("username", users.getUsername()));
+        if (user!=null){
+            return Result.error("用户已存在");
+        }
+        //密码盐加MD5加密
+        String substring = UUID.randomUUID().toString().substring(0, 5);
+        users.setSalt(substring);
+        //通过盐加md5的方式对密码记性加密保护
+        String password = DigestUtils.md5DigestAsHex((users.getPassword()+substring).getBytes());
+        users.setPassword(password);
+        users.setStaticUrl("");
+        usersMapper.insert(users);
+        return Result.success("注册成功");
+    }
+    @PostMapping("/login")
+    public Result login(@RequestBody Users users){
+        if (users.getUsername()==null || users.getUsername().equals("")|| users.getPassword()==null || users.getPassword().equals("")){
+            return Result.error("用户名或密码不能为空");
+        }
+        Users user = usersMapper.selectOne(new QueryWrapper<Users>().eq("username", users.getUsername()));
+        if (user==null){
+            return Result.error("用户不存在");
+        }
+        if (!user.getPassword().equals(DigestUtils.md5DigestAsHex((users.getPassword()+user.getSalt()).getBytes()))){
+            return Result.error("密码错误");
+        }
+        //通过jwt根据用户id生成token
+        String token = AppJwtUtil.getToken(Long.valueOf(user.getId()));
+        return Result.success(token);
+    }
+
+    //上传头像
+    @PostMapping("/upload")
+    public Result upload(MultipartFile file) throws IOException {
+        String s = AliOssUtil.uploadFile(UUID.randomUUID().toString() + ".png", file.getInputStream());
+        return Result.success(s);
+    }
+
+    //添加用户信息
+    @PostMapping("/addUserInfo")
+    public Result addUserInfo(@RequestBody UserProfiles userProfiles) throws Exception {
+        String s = JSON.toJSONString(userProfiles);
+            GreenTextScan greenTextScan = new GreenTextScan();
+            Map<String, String> map = greenTextScan.textModeration(s);
+            if ("block".equals(map.get("suggestion"))|| "review".equals(map.get("suggestion"))){
+                userProfiles.setStatus(0);
+                userProfilesMapper.insert(userProfiles);
+                return Result.error("用户基本信息内容违规");
+            }else {
+                userProfiles.setStatus(1);
+                userProfilesMapper.insert(userProfiles);
+                buildArticleToMinIO(userProfiles.getUserId(),s);
+                return Result.success("用户基本信息内容正常");
+            }
+        }
+
+    @Autowired
+    private Configuration configuration;
+    public void buildArticleToMinIO(Integer userId, String content) throws Exception {
+        StringWriter out = new StringWriter();
+        Template template = configuration.getTemplate("user.ftl");
+        Map<String,Object> contentDataModel = new HashMap<>();
+        contentDataModel.put("content", content);
+        //数据模型
+        template.process(contentDataModel,out);
+        //4.3 把html文件上传到minio中
+        InputStream in = new ByteArrayInputStream(out.toString().getBytes());
+        FileStorageServiceImpl fileStorageService = new FileStorageServiceImpl();
+        String path = fileStorageService.uploadHtmlFile("", userId + ".html", in);
+        //保存路径到user表
+        Users users = usersMapper.selectById(userId);
+        users.setStaticUrl(path);
+        usersMapper.updateById(users);
+    }
+
+}

+ 20 - 0
zk_user_service/src/main/java/com/zhentao/mapper/UserProfilesMapper.java

@@ -0,0 +1,20 @@
+package com.zhentao.mapper;
+
+import com.zhentao.pojo.UserProfiles;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @author 24229
+* @description 针对表【user_profiles(用户信息表)】的数据库操作Mapper
+* @createDate 2025-11-21 09:44:22
+* @Entity com.zhentao.pojo.UserProfiles
+*/
+@Mapper
+public interface UserProfilesMapper extends BaseMapper<UserProfiles> {
+
+}
+
+
+
+

+ 20 - 0
zk_user_service/src/main/java/com/zhentao/mapper/UsersMapper.java

@@ -0,0 +1,20 @@
+package com.zhentao.mapper;
+
+import com.zhentao.pojo.Users;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @author 24229
+* @description 针对表【users(用户表)】的数据库操作Mapper
+* @createDate 2025-11-21 09:44:32
+* @Entity com.zhentao.pojo.Users
+*/
+@Mapper
+public interface UsersMapper extends BaseMapper<Users> {
+
+}
+
+
+
+

+ 57 - 0
zk_user_service/src/main/java/com/zhentao/minio/FileStorageServiceImpl.java

@@ -0,0 +1,57 @@
+package com.zhentao.minio;
+
+import io.minio.MinioClient;
+import io.minio.PutObjectArgs;
+import io.minio.errors.ServerException;
+import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
+
+import java.io.InputStream;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Service
+public class FileStorageServiceImpl {
+
+    private String bucket = "leadnews";
+
+    private String readPath = "http://192.168.1.181:9000";
+
+    private final static String separator = "/";
+
+    public String uploadHtmlFile(String prefix, String filename, InputStream inputStream) throws Exception {
+        String filePath = builderFilePath(prefix, filename);
+        PutObjectArgs putObjectArgs = PutObjectArgs.builder()
+                .object(filePath)
+                .contentType("text/html")
+                .bucket(bucket).stream(inputStream, inputStream.available(), -1)
+                .build();
+        try {
+            MinioClient minioClient = MinioClient.builder()
+                    .endpoint("http://192.168.1.181:9000")
+                    .credentials("minio", "minio123")
+                    .build();
+            minioClient.putObject(putObjectArgs);
+        } catch (ServerException e) {
+            throw new RuntimeException(e);
+        }
+        StringBuilder urlPath = new StringBuilder(readPath);
+        urlPath.append(separator).append(bucket);
+        urlPath.append(separator);
+        urlPath.append(filePath);
+        System.out.println("File uploaded successfully. URL: " + urlPath.toString());
+        return urlPath.toString();
+    }
+
+    private String builderFilePath(String dirPath, String filename) {
+        StringBuilder stringBuilder = new StringBuilder(50);
+        if (!StringUtils.isEmpty(dirPath)) {
+            stringBuilder.append(dirPath).append(separator);
+        }
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
+        String todayStr = sdf.format(new Date());
+        stringBuilder.append(todayStr).append(separator);
+        stringBuilder.append(filename);
+        return stringBuilder.toString();
+    }
+}

+ 87 - 0
zk_user_service/src/main/java/com/zhentao/pojo/UserProfiles.java

@@ -0,0 +1,87 @@
+package com.zhentao.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * 用户信息表
+ * @TableName user_profiles
+ */
+@TableName(value ="user_profiles")
+@Data
+public class UserProfiles {
+    /**
+     * 
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 关联用户ID
+     */
+    private Integer userId;
+
+    /**
+     * 个人描述
+     */
+    private String description;
+
+    /**
+     * 爱好
+     */
+    private String hobbies;
+
+    /**
+     * 状态(0-禁用, 1-正常)
+     */
+    private Integer status;
+
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        UserProfiles other = (UserProfiles) that;
+        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
+            && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId()))
+            && (this.getDescription() == null ? other.getDescription() == null : this.getDescription().equals(other.getDescription()))
+            && (this.getHobbies() == null ? other.getHobbies() == null : this.getHobbies().equals(other.getHobbies()))
+            && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()));
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
+        result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode());
+        result = prime * result + ((getDescription() == null) ? 0 : getDescription().hashCode());
+        result = prime * result + ((getHobbies() == null) ? 0 : getHobbies().hashCode());
+        result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", userId=").append(userId);
+        sb.append(", description=").append(description);
+        sb.append(", hobbies=").append(hobbies);
+        sb.append(", status=").append(status);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 87 - 0
zk_user_service/src/main/java/com/zhentao/pojo/Users.java

@@ -0,0 +1,87 @@
+package com.zhentao.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * 用户表
+ * @TableName users
+ */
+@TableName(value ="users")
+@Data
+public class Users {
+    /**
+     * 
+     */
+    @TableId(type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 用户名
+     */
+    private String username;
+
+    /**
+     * 加密后的密码
+     */
+    private String password;
+
+    /**
+     * 密码盐
+     */
+    private String salt;
+
+    /**
+     * 用户基本信息url
+     */
+    private String staticUrl;
+
+    @Override
+    public boolean equals(Object that) {
+        if (this == that) {
+            return true;
+        }
+        if (that == null) {
+            return false;
+        }
+        if (getClass() != that.getClass()) {
+            return false;
+        }
+        Users other = (Users) that;
+        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
+            && (this.getUsername() == null ? other.getUsername() == null : this.getUsername().equals(other.getUsername()))
+            && (this.getPassword() == null ? other.getPassword() == null : this.getPassword().equals(other.getPassword()))
+            && (this.getSalt() == null ? other.getSalt() == null : this.getSalt().equals(other.getSalt()))
+            && (this.getStaticUrl() == null ? other.getStaticUrl() == null : this.getStaticUrl().equals(other.getStaticUrl()));
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
+        result = prime * result + ((getUsername() == null) ? 0 : getUsername().hashCode());
+        result = prime * result + ((getPassword() == null) ? 0 : getPassword().hashCode());
+        result = prime * result + ((getSalt() == null) ? 0 : getSalt().hashCode());
+        result = prime * result + ((getStaticUrl() == null) ? 0 : getStaticUrl().hashCode());
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", id=").append(id);
+        sb.append(", username=").append(username);
+        sb.append(", password=").append(password);
+        sb.append(", salt=").append(salt);
+        sb.append(", staticUrl=").append(staticUrl);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 13 - 0
zk_user_service/src/main/java/com/zhentao/service/UserProfilesService.java

@@ -0,0 +1,13 @@
+package com.zhentao.service;
+
+import com.zhentao.pojo.UserProfiles;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+* @author 24229
+* @description 针对表【user_profiles(用户信息表)】的数据库操作Service
+* @createDate 2025-11-21 09:44:22
+*/
+public interface UserProfilesService extends IService<UserProfiles> {
+
+}

+ 13 - 0
zk_user_service/src/main/java/com/zhentao/service/UsersService.java

@@ -0,0 +1,13 @@
+package com.zhentao.service;
+
+import com.zhentao.pojo.Users;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+* @author 24229
+* @description 针对表【users(用户表)】的数据库操作Service
+* @createDate 2025-11-21 09:44:32
+*/
+public interface UsersService extends IService<Users> {
+
+}

+ 22 - 0
zk_user_service/src/main/java/com/zhentao/service/impl/UserProfilesServiceImpl.java

@@ -0,0 +1,22 @@
+package com.zhentao.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhentao.pojo.UserProfiles;
+import com.zhentao.service.UserProfilesService;
+import com.zhentao.mapper.UserProfilesMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author 24229
+* @description 针对表【user_profiles(用户信息表)】的数据库操作Service实现
+* @createDate 2025-11-21 09:44:22
+*/
+@Service
+public class UserProfilesServiceImpl extends ServiceImpl<UserProfilesMapper, UserProfiles>
+    implements UserProfilesService{
+
+}
+
+
+
+

+ 22 - 0
zk_user_service/src/main/java/com/zhentao/service/impl/UsersServiceImpl.java

@@ -0,0 +1,22 @@
+package com.zhentao.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zhentao.pojo.Users;
+import com.zhentao.service.UsersService;
+import com.zhentao.mapper.UsersMapper;
+import org.springframework.stereotype.Service;
+
+/**
+* @author 24229
+* @description 针对表【users(用户表)】的数据库操作Service实现
+* @createDate 2025-11-21 09:44:32
+*/
+@Service
+public class UsersServiceImpl extends ServiceImpl<UsersMapper, Users>
+    implements UsersService{
+
+}
+
+
+
+

+ 16 - 0
zk_user_service/src/main/resources/bootstrap.yml

@@ -0,0 +1,16 @@
+spring:
+  application:
+    name: user
+  profiles:
+    active: dev
+  cloud:
+    nacos:
+      server-addr: localhost:8848
+      config:
+        file-extension: yaml
+        group: zk_parent
+        enabled: true
+        namespace: eb20ed2a-f570-4687-869f-3cbca27b1680 # dev
+      discovery:
+        namespace: eb20ed2a-f570-4687-869f-3cbca27b1680 #dev
+        group: zk_parent

+ 19 - 0
zk_user_service/src/main/resources/mapper/UserProfilesMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zhentao.mapper.UserProfilesMapper">
+
+    <resultMap id="BaseResultMap" type="com.zhentao.pojo.UserProfiles">
+            <id property="id" column="id" jdbcType="INTEGER"/>
+            <result property="userId" column="user_id" jdbcType="INTEGER"/>
+            <result property="description" column="description" jdbcType="VARCHAR"/>
+            <result property="hobbies" column="hobbies" jdbcType="VARCHAR"/>
+            <result property="status" column="status" jdbcType="TINYINT"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,user_id,description,
+        hobbies,status
+    </sql>
+</mapper>

+ 19 - 0
zk_user_service/src/main/resources/mapper/UsersMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zhentao.mapper.UsersMapper">
+
+    <resultMap id="BaseResultMap" type="com.zhentao.pojo.Users">
+            <id property="id" column="id" jdbcType="INTEGER"/>
+            <result property="username" column="username" jdbcType="VARCHAR"/>
+            <result property="password" column="password" jdbcType="VARCHAR"/>
+            <result property="salt" column="salt" jdbcType="VARCHAR"/>
+            <result property="staticUrl" column="static_url" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,username,password,
+        salt,static_url
+    </sql>
+</mapper>

+ 12 - 0
zk_user_service/src/main/resources/templates/user.ftl

@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="utf-8">
+    <title>用户信息</title>
+</head>
+<body>
+<div>
+${content}
+</div>
+</body>
+</html>

+ 7 - 0
zk_user_service/src/main/webapp/WEB-INF/web.xml

@@ -0,0 +1,7 @@
+<!DOCTYPE web-app PUBLIC
+ "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+ "http://java.sun.com/dtd/web-app_2_3.dtd" >
+
+<web-app>
+  <display-name>Archetype Created Web Application</display-name>
+</web-app>

+ 5 - 0
zk_user_service/src/main/webapp/index.jsp

@@ -0,0 +1,5 @@
+<html>
+<body>
+<h2>Hello World!</h2>
+</body>
+</html>