From 44a3a059ab5b3c52bf475a5e7fdc30223ddf0a87 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期二, 12 八月 2025 14:19:02 +0800
Subject: [PATCH] 浪潮对接单点登录

---
 src/main/java/com/ruoyi/tide/controller/TideController.java |   94 ++++++++++
 src/main/java/com/ruoyi/tide/pojo/TidePojo.java             |   31 +++
 pom.xml                                                     |    5 
 src/main/java/com/ruoyi/tide/utils/TideUtils.java           |  172 +++++++++++++++++++
 src/main/resources/application-tide.yml                     |  219 ++++++++++++++++++++++++
 src/main/resources/application.yml                          |    2 
 6 files changed, 522 insertions(+), 1 deletions(-)

diff --git a/pom.xml b/pom.xml
index c802315..6a0e071 100644
--- a/pom.xml
+++ b/pom.xml
@@ -46,6 +46,11 @@
     </properties>
 
     <dependencies>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-all</artifactId>
+            <version>5.8.18</version>
+        </dependency>
         <!-- ruoyi-springboot2 / swagger knife4j 閰嶇疆 -->
         <dependency>
             <groupId>com.github.xiaoymin</groupId>
diff --git a/src/main/java/com/ruoyi/tide/controller/TideController.java b/src/main/java/com/ruoyi/tide/controller/TideController.java
new file mode 100644
index 0000000..335b174
--- /dev/null
+++ b/src/main/java/com/ruoyi/tide/controller/TideController.java
@@ -0,0 +1,94 @@
+package com.ruoyi.tide.controller;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.framework.aspectj.lang.annotation.Anonymous;
+import com.ruoyi.framework.security.service.SysLoginService;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.service.ISysUserService;
+import com.ruoyi.tide.pojo.TidePojo;
+import com.ruoyi.tide.utils.TideUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+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 java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+@RequestMapping("/tide")
+@RestController
+@Api(tags = "瀵规帴娴疆绯荤粺")
+@Anonymous
+@Slf4j
+public class TideController {
+
+    @Autowired
+    private SysLoginService loginService;
+
+    @Autowired
+    private ISysUserService userService;
+
+    @ApiOperation(value = "鐧诲綍")
+    @PostMapping("/tideLogin")
+    public AjaxResult login(@RequestBody TidePojo tidePojo) {
+        String token = TideUtils.getToken(tidePojo.getCode());
+        JSONObject userInfo = TideUtils.getUserInfo(token);
+        JSONObject tenant = JSONObject.parseObject(userInfo.get("tenant").toString());
+        AjaxResult ajax = AjaxResult.success();
+        // 鐢熸垚浠ょ墝
+        String generateToken = loginService.login(tenant.get("tenantAccount").toString(), tenant.get("tenantPassword").toString(), null,
+                IdWorker.get32UUID());
+        ajax.put(Constants.TOKEN, generateToken);
+        return ajax;
+    }
+
+    @PostMapping("/applicationOrdering")
+    public JSONObject order (@RequestBody TidePojo tidePojo) {
+        SysUser user = userService.selectUserByUserName(tidePojo.getPltAccountLogin());
+        String randomString = TideUtils.getRandomString(12);
+        //璐﹀彿涓嶅瓨鍦紝鎵ц鏂板鎿嶄綔
+        if(Objects.isNull(user)){
+            user = new SysUser();
+            String password = SecurityUtils.encryptPassword(randomString);
+            user.setPassword(password);
+            user.setUserName(tidePojo.getPltAccountLogin());
+            user.setNickName(tidePojo.getEnterpriseName());
+            user.setStatus("0");
+            user.setDelFlag("0");
+            user.setPostIds(new Long[]{1L});
+            user.setRoleId(1L);
+            userService.insertUser(user);
+        }
+        Map<String, Object> map = new HashMap<>();
+        map.put("account", tidePojo.getPltAccountLogin());
+        map.put("token", randomString);
+        map.put("tenantId", user.getUserId());
+        return TideUtils.getResult(20000, "鎴愬姛", map);
+    }
+
+    @PostMapping("/cancellation")
+    public JSONObject cancellation (@RequestBody TidePojo tidePojo) {
+        log.info("鎵ц浜嗘敞閿�淇℃伅锛�" + tidePojo);
+        if(Objects.nonNull(tidePojo)){
+            SysUser sysUser = userService.selectUserByUserName(tidePojo.getPltAccountLogin());
+            if(Objects.nonNull(sysUser)){
+                userService.deleteUserById(sysUser.getUserId());
+            }
+        }
+        return TideUtils.getResult(20000, "鎴愬姛", null);
+    }
+
+    public static void main(String[] args) {
+        String password = SecurityUtils.encryptPassword("c($Rb_@!n%U7");
+        System.out.println(password);
+    }
+}
diff --git a/src/main/java/com/ruoyi/tide/pojo/TidePojo.java b/src/main/java/com/ruoyi/tide/pojo/TidePojo.java
new file mode 100644
index 0000000..45e5eab
--- /dev/null
+++ b/src/main/java/com/ruoyi/tide/pojo/TidePojo.java
@@ -0,0 +1,31 @@
+package com.ruoyi.tide.pojo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class TidePojo {
+    @ApiModelProperty("浼佷笟鍚嶇О")
+    private String enterpriseName;
+
+    @ApiModelProperty("骞冲彴鐢ㄦ埛")
+    private String pltUserCn;
+
+    @ApiModelProperty("骞冲彴璐﹀彿")
+    private String pltAccountLogin;
+
+    @ApiModelProperty("璁㈣喘鏃堕暱")
+    private Integer purchaseDuration;
+
+    @ApiModelProperty("璁㈠崟鏃堕暱鍗曚綅")
+    private String purchaseUnit;
+
+    @ApiModelProperty("appKey")
+    private String appKey;
+
+    @ApiModelProperty("appSecret")
+    private String appSecret;
+
+    @ApiModelProperty("code")
+    private String code;
+}
diff --git a/src/main/java/com/ruoyi/tide/utils/TideUtils.java b/src/main/java/com/ruoyi/tide/utils/TideUtils.java
new file mode 100644
index 0000000..4cac75a
--- /dev/null
+++ b/src/main/java/com/ruoyi/tide/utils/TideUtils.java
@@ -0,0 +1,172 @@
+package com.ruoyi.tide.utils;
+
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.RandomUtil;
+import cn.hutool.crypto.digest.HMac;
+import cn.hutool.crypto.digest.HmacAlgorithm;
+import cn.hutool.http.HttpRequest;
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+import java.util.HashMap;
+
+@Data
+@Component
+@Slf4j
+public class TideUtils {
+    private final static String appId = "19472937-3039-4bf1-8334-13dc20e076e5";
+
+    private final static String appSecret = "b57bbad60724f810e7bb7e1e7b8791b63eba50e50faef6fa819ade822fac9e4a";
+
+    // 鍐呯綉鍦板潃
+    private final static String ip = "http://58.56.84.138:8083";
+
+    // MD5鍔犲瘑骞惰浆鎹负16杩涘埗
+    public static String md5Encryption(String input) {
+        try {
+            MessageDigest md = MessageDigest.getInstance("MD5");
+            byte[] digest = md.digest(input.getBytes());
+            StringBuilder sb = new StringBuilder();
+            for (byte b : digest) {
+                sb.append(String.format("%02x", b & 0xff));
+            }
+            return sb.toString();
+        } catch (NoSuchAlgorithmException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    // get璇锋眰
+    public static HashMap<String, String> getGetHeader(String parameter) {
+        // 鏃堕棿鎴�
+        String xTime = String.valueOf(DateUtil.current());
+        // 鑾峰彇闅忔満16浣嶅瓧绗︿覆
+        String xRandom = RandomUtil.randomString(16);
+        String xSignSplicingTogether;
+        // 鏈夊弬鏁�
+        if (ObjectUtils.isNotEmpty(parameter)) {
+            // 鍔犲瘑寰楀嚭x-body
+            String xBody = md5Encryption(parameter);
+            // 涓簒-sign鍔犲瘑鍋氭嫾鎺�
+            xSignSplicingTogether = "x-body=" + xBody + "&x-random=" + xRandom + "&x-time=" + xTime;
+        // 鏃犲弬鏁�
+        } else {
+            xSignSplicingTogether = "x-random=" + xRandom + "&x-time=" + xTime;
+        }
+        // 閰嶇疆鍔犲瘑鏂瑰紡涓庡瘑閽�
+        HMac hMac = new HMac(HmacAlgorithm.HmacSHA256, appSecret.getBytes());
+        // 寰楀嚭x-sign
+        String xSign = hMac.digestHex(xSignSplicingTogether);
+        HashMap<String, String> result = new HashMap<>();
+        result.put("x-time", xTime);
+        result.put("x-random", xRandom);
+        result.put("x-sign", xSign);
+        result.put("appKey", appId);
+        return result;
+    }
+
+    // post璇锋眰
+    public static HashMap<String, String> getPostHeader(String parameter) {
+        // 鏃堕棿鎴�
+        String xTime = String.valueOf(DateUtil.current());
+        // 鑾峰彇闅忔満16浣嶅瓧绗︿覆
+        String xRandom = RandomUtil.randomString(16);
+        String xSignSplicingTogether;
+        // 鏈夊弬鏁�
+        if (ObjectUtils.isNotEmpty(parameter)) {
+            // 鍔犲瘑寰楀嚭x-body
+            String xBody = md5Encryption(parameter);
+            // 涓簒-sign鍔犲瘑鍋氭嫾鎺�
+            xSignSplicingTogether = "x-body=" + xBody + "&x-random=" + xRandom + "&x-time=" + xTime;
+            // 鏃犲弬鏁�
+        } else {
+            xSignSplicingTogether = "x-random=" + xRandom + "&x-time=" + xTime;
+        }
+        // x-sign 鍔犲瘑
+        HMac hMac = new HMac(HmacAlgorithm.HmacSHA256, appSecret.getBytes());
+        String xSign = hMac.digestHex(xSignSplicingTogether);
+        HashMap<String, String> result = new HashMap<>();
+        result.put("x-time", xTime);
+        result.put("x-random", xRandom);
+        result.put("x-sign", xSign);
+        result.put("appKey", appId);
+        return result;
+    }
+
+    /**
+     * 浜斿垎閽熶竴娆$殑蹇冭烦
+     */
+//    @Scheduled(cron = "0 0/5 * * * ?")
+    public static void heartbeat(){
+        HashMap<String, String> header = getGetHeader(null);
+        String url = ip + "/cpn/api/extra/v1/application/heartbeat";
+        String body = HttpRequest.get(url).headerMap(header, false).execute().body();
+        System.out.println(body + "=======MES蹇冭烦鎵ц鎴愬姛锛�");
+    }
+
+    // 鑾峰彇token
+    public static String getToken(String code) {
+        String url = ip + "/cpn/extral/applicationCode/appAuthCheck";
+        JSONObject json = new JSONObject();
+        json.put("code", code);
+        json.put("appID", appId);
+        json.put("appSecret", appSecret);
+        HashMap<String, String> header = getPostHeader(json.toString());
+        String body = HttpRequest.post(url)
+                .headerMap(header, false)
+                .body(json.toString())
+                .execute().body();
+        JSONObject jsonObject = JSONObject.parseObject(body);
+        return jsonObject.get("data").toString();
+    }
+
+    // 鑾峰彇鐢ㄦ埛淇℃伅
+    public static JSONObject getUserInfo(String token) {
+        String url = ip + "/cpn/api/extral/applicationCode/getUserInfoByToken";
+        JSONObject json = new JSONObject();
+        json.put("appID", appId);
+        HashMap<String, String> header = getPostHeader(json.toString());
+        header.put("Authorization", token);
+        String body = HttpRequest.post(url)
+                .headerMap(header, false)
+                .body(json.toString())
+                .execute().body();
+        JSONObject jsonObject = JSONObject.parseObject(body);
+        return JSONObject.parseObject(jsonObject.get("data").toString());
+    }
+
+    public static JSONObject getResult(Integer code, String msg, Object data) {
+        JSONObject json = new JSONObject();
+        json.put("code", code);
+        json.put("msg", msg);
+        json.put("data", data);
+        String xRandom = RandomUtil.randomString(16);
+        json.put("traceId", xRandom);
+        return json;
+    }
+
+    public static String getRandomString(int length) {
+        SecureRandom random = new SecureRandom();
+        String uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+        String lowercaseLetters = "abcdefghijklmnopqrstuvwxyz";
+        String numbers = "0123456789";
+        String specialCharacters = "!@$%^&*()_+-=.";
+        String characterSet = uppercaseLetters + lowercaseLetters + numbers + specialCharacters;
+        StringBuilder passwordBuilder = new StringBuilder();
+
+        for (int i = 0; i < length; i++) {
+            int randomIndex = random.nextInt(characterSet.length());
+            char randomChar = characterSet.charAt(randomIndex);
+            passwordBuilder.append(randomChar);
+        }
+
+        return passwordBuilder.toString();
+    }
+}
\ No newline at end of file
diff --git a/src/main/resources/application-tide.yml b/src/main/resources/application-tide.yml
new file mode 100644
index 0000000..cdfff17
--- /dev/null
+++ b/src/main/resources/application-tide.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+  # 鍚嶇О
+  name: RuoYi
+  # 鐗堟湰
+  version: 3.8.9
+  # 鐗堟潈骞翠唤
+  copyrightYear: 2025
+  # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+  profile: /center-lims/mis/file
+
+  # 鑾峰彇ip鍦板潃寮�鍏�
+  addressEnabled: false
+  # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+  captchaType: math
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+  # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+  port: 7003
+  servlet:
+    # 搴旂敤鐨勮闂矾寰�
+    context-path: /
+  tomcat:
+    # tomcat鐨刄RI缂栫爜
+    uri-encoding: UTF-8
+    # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+    accept-count: 1000
+    threads:
+      # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+      max: 800
+      # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+      min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+  level:
+    com.ruoyi: warn
+    org.springframework: warn
+
+minio:
+  endpoint: http://114.132.189.42/
+  port: 7019
+  secure: false
+  accessKey: admin
+  secretKey: 12345678
+  preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+  default-bucket: uploadPath
+# 鐢ㄦ埛閰嶇疆
+user:
+  password:
+    # 瀵嗙爜鏈�澶ч敊璇鏁�
+    maxRetryCount: 5
+    # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+    lockTime: 10
+
+# Spring閰嶇疆
+spring:
+  datasource:
+    type: com.alibaba.druid.pool.DruidDataSource
+    driverClassName: com.mysql.cj.jdbc.Driver
+    druid:
+      # 涓诲簱鏁版嵁婧�
+      master:
+        url: jdbc:mysql://10.136.12.71:3306/mis_ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+        username: root
+        password: zttZTT123!
+      # 浠庡簱鏁版嵁婧�
+      slave:
+        # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+        enabled: false
+        url:
+        username:
+        password:
+      # 鍒濆杩炴帴鏁�
+      initialSize: 5
+      # 鏈�灏忚繛鎺ユ睜鏁伴噺
+      minIdle: 10
+      # 鏈�澶ц繛鎺ユ睜鏁伴噺
+      maxActive: 20
+      # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+      maxWait: 60000
+      # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+      connectTimeout: 30000
+      # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+      socketTimeout: 60000
+      # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+      timeBetweenEvictionRunsMillis: 60000
+      # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+      minEvictableIdleTimeMillis: 300000
+      # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+      maxEvictableIdleTimeMillis: 900000
+      # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+      validationQuery: SELECT 1 FROM DUAL
+      testWhileIdle: true
+      testOnBorrow: false
+      testOnReturn: false
+      webStatFilter:
+        enabled: true
+      statViewServlet:
+        enabled: true
+        # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+        allow:
+        url-pattern: /druid/*
+        # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+        login-username: ruoyi
+        login-password: 123456
+      filter:
+        stat:
+          enabled: true
+          # 鎱QL璁板綍
+          log-slow-sql: true
+          slow-sql-millis: 1000
+          merge-sql: true
+        wall:
+          config:
+            multi-statement-allow: true
+  # 璧勬簮淇℃伅
+  messages:
+    # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+    basename: i18n/messages
+  # 鏂囦欢涓婁紶
+  servlet:
+    multipart:
+      # 鍗曚釜鏂囦欢澶у皬
+      max-file-size: 1GB
+      # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+      max-request-size: 2GB
+  # 鏈嶅姟妯″潡
+  devtools:
+    restart:
+      # 鐑儴缃插紑鍏�
+      enabled: false
+  # redis 閰嶇疆
+  redis:
+    # 鍦板潃
+    host: 127.0.0.1
+#    host: 172.17.0.1
+    # 绔彛锛岄粯璁や负6379
+    port: 6379
+    # 鏁版嵁搴撶储寮�
+    database: 0
+    # 瀵嗙爜
+    password: 123456
+#    password:
+
+    # 杩炴帴瓒呮椂鏃堕棿
+    timeout: 10s
+    lettuce:
+      pool:
+        # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+        min-idle: 0
+        # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+        max-idle: 8
+        # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+        max-active: 8
+        # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+        max-wait: -1ms
+
+# token閰嶇疆
+token:
+  # 浠ょ墝鑷畾涔夋爣璇�
+  header: Authorization
+  # 浠ょ墝瀵嗛挜
+  secret: abcdefghijklmnopqrstuvwxyz
+  # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+  expireTime: 450
+  
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+  # 鎼滅储鎸囧畾鍖呭埆鍚�   鏍规嵁鑷繁鐨勯」鐩潵
+  typeAliasesPackage: com.ruoyi.**.pojo
+  # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+  mapperLocations: classpath*:mapper/**/*Mapper.xml
+  # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+  configLocation: classpath:mybatis/mybatis-config.xml
+  global-config:
+    enable-sql-runner: true
+    db-config:
+      id-type: auto
+  
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+  helperDialect: mysql
+  supportMethodsArguments: true
+  params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+  # 鏄惁寮�鍚痵wagger
+  enabled: false
+  # 璇锋眰鍓嶇紑
+  pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+  # 杩囨护寮�鍏�
+  enabled: true
+  # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+  excludes: /system/notice
+  # 鍖归厤閾炬帴
+  urlPatterns: /system/*,/monitor/*,/tool/*
+  
+# 浠g爜鐢熸垚
+gen:
+  # 浣滆��
+  author: ruoyi
+  # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+  packageName: com.ruoyi.project.system
+  # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+  autoRemovePre: false
+  # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+  tablePrefix: sys_
+  # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+  allowOverwrite: false
+
+file:
+  temp-dir: /center-lims/mis/file/temp/uploads
+  upload-dir: /center-lims/mis/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index a87ef6b..9e740c8 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,4 +1,4 @@
 # Spring閰嶇疆
 spring:
   profiles:
-    active: prod
\ No newline at end of file
+    active: tide
\ No newline at end of file

--
Gitblit v1.9.3