浏览代码

1,add auth column for skill

2,add module auth
tags/hc-0802
yk 2 年前
父节点
当前提交
8e677d9412
共有 12 个文件被更改,包括 598 次插入4 次删除
  1. +5
    -4
      xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/digitalmans/domain/po/DmSkillPo.java
  2. +1
    -0
      xueyi-modules/pom.xml
  3. +33
    -0
      xueyi-modules/xueyi-message/src/main/resources/bootstrap-prod.yml
  4. +17
    -0
      xueyi-modules/xueyi-modules-auth/Dockerfile
  5. +100
    -0
      xueyi-modules/xueyi-modules-auth/pom.xml
  6. +15
    -0
      xueyi-modules/xueyi-modules-auth/sonar-project.properties
  7. +34
    -0
      xueyi-modules/xueyi-modules-auth/src/main/java/com/xueyi/modules/auth/XueYiModulesAuthApplication.java
  8. +241
    -0
      xueyi-modules/xueyi-modules-auth/src/main/java/com/xueyi/modules/auth/transfer/controller/ApiController.java
  9. +10
    -0
      xueyi-modules/xueyi-modules-auth/src/main/resources/banner.txt
  10. +33
    -0
      xueyi-modules/xueyi-modules-auth/src/main/resources/bootstrap-prod.yml
  11. +35
    -0
      xueyi-modules/xueyi-modules-auth/src/main/resources/bootstrap.yml
  12. +74
    -0
      xueyi-modules/xueyi-modules-auth/src/main/resources/logback.xml

+ 5
- 4
xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/digitalmans/domain/po/DmSkillPo.java 查看文件

@@ -1,16 +1,15 @@
package com.xueyi.system.api.digitalmans.domain.po;

import com.xueyi.common.core.web.tenant.base.TBaseEntity;
import com.xueyi.common.core.annotation.Excel;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xueyi.common.core.annotation.Excel;
import com.xueyi.common.core.web.tenant.base.TBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;

import static com.xueyi.common.core.constant.basic.EntityConstants.STATUS;
import static com.xueyi.common.core.constant.basic.EntityConstants.SORT;
import static com.xueyi.common.core.constant.basic.EntityConstants.REMARK;
import static com.xueyi.common.core.constant.basic.EntityConstants.SORT;

/**
* 访客 持久化对象
@@ -53,4 +52,6 @@ public class DmSkillPo extends TBaseEntity {

protected Integer firstCall;

protected String auth;

}

+ 1
- 0
xueyi-modules/pom.xml 查看文件

@@ -15,6 +15,7 @@
<module>xueyi-job</module>
<module>xueyi-file</module>
<module>xueyi-message</module>
<module>xueyi-modules-auth</module>
</modules>

<artifactId>xueyi-modules</artifactId>


+ 33
- 0
xueyi-modules/xueyi-message/src/main/resources/bootstrap-prod.yml 查看文件

@@ -0,0 +1,33 @@
# Tomcat
server:
port: 9700

# Spring
spring:
application:
# 应用名称
name: xueyi-message
profiles:
# 环境配置
active:
servlet:
multipart:
max-request-size: 20MB
max-file-size: 100MB
cloud:
nacos:
discovery:
# 服务注册地址
# server-addr: 172.17.0.1:18848
server-addr: 127.0.0.1:18848
config:
# 配置中心地址
# server-addr: 172.17.0.1:18848
server-addr: 127.0.0.1:18848
# 配置文件格式
file-extension: yml
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
- application-secret-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
- application-datasource-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

+ 17
- 0
xueyi-modules/xueyi-modules-auth/Dockerfile 查看文件

@@ -0,0 +1,17 @@
# 基础镜像
FROM openjdk:17-oracle
# author
MAINTAINER xueyi

# 挂载目录
VOLUME /home/xueyi
# 创建目录
RUN mkdir -p /home/xueyi
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 指定路径
WORKDIR /home/xueyi
# 复制jar文件到路径
COPY ./target/xueyi-modules-auth.jar /home/xueyi/xueyi-modules-auth.jar

# 启动系统服务
ENTRYPOINT ["java","-jar","xueyi-modules-auth.jar"]

+ 100
- 0
xueyi-modules/xueyi-modules-auth/pom.xml 查看文件

@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.xueyi</groupId>
<artifactId>xueyi-modules</artifactId>
<version>2.5.0</version>
</parent>

<modelVersion>4.0.0</modelVersion>

<artifactId>xueyi-modules-auth</artifactId>

<description>
xueyi-modules-auth数字人权限管理模块
</description>

<dependencies>

<!-- SpringCloud Alibaba Nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

<!-- SpringCloud Alibaba Nacos Config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

<!-- SpringCloud Alibaba Sentinel -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

<!-- SpringBoot Actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

<!-- XueYi Common Log -->
<dependency>
<groupId>com.xueyi</groupId>
<artifactId>xueyi-common-log</artifactId>
</dependency>

<!-- XueYi Common Web -->
<dependency>
<groupId>com.xueyi</groupId>
<artifactId>xueyi-common-web</artifactId>
</dependency>

<!-- XueYi Common Swagger -->
<dependency>
<groupId>com.xueyi</groupId>
<artifactId>xueyi-common-swagger</artifactId>
</dependency>


<dependency>
<groupId>com.xueyi</groupId>
<artifactId>xueyi-api-system</artifactId>
</dependency>
</dependencies>

<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<groupId>org.apache.maven.plugins</groupId>
<configuration>
<delimiters>@</delimiters>
<useDefaultDelimiters>false</useDefaultDelimiters>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>

+ 15
- 0
xueyi-modules/xueyi-modules-auth/sonar-project.properties 查看文件

@@ -0,0 +1,15 @@
sonar.projectKey=digimeta-MultiSaas-modules-auth

sonar.projectName=digimeta-MultiSaas-modules-auth
sonar.sourceEncoding=UTF-8
sonar.projectVersion=0.8



sonar.sources=.
sonar.exclusions=**/test/**,**/target/**
sonar.java.binaries=.

sonar.java.source=1.8
sonar.java.target=1.8


+ 34
- 0
xueyi-modules/xueyi-modules-auth/src/main/java/com/xueyi/modules/auth/XueYiModulesAuthApplication.java 查看文件

@@ -0,0 +1,34 @@
package com.xueyi.modules.auth;

import org.springframework.context.annotation.Configuration;

import com.xueyi.common.security.annotation.EnableCustomConfig;
import com.xueyi.common.security.annotation.EnableRyFeignClients;
import com.xueyi.common.swagger.annotation.EnableCustomSwagger;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
* 租户模块
*
* @author yinruoxi
*/
@EnableCustomConfig
@EnableCustomSwagger
@EnableRyFeignClients
@SpringBootApplication
public class XueYiModulesAuthApplication {
public static void main(String[] args) {
SpringApplication.run(XueYiModulesAuthApplication.class, args);
System.out.println("(♥◠‿◠)ノ゙ 消息管理模块启动成功 ლ(´ڡ`ლ)゙ \n" +
" _____ __ ____ __ \n" +
" \\ _\\ / / \\ \\ / / \n" +
" .-./ ). / ' \\ _. / ' \n" +
" \\ '_ .') .' _( )_ .' \n" +
" (_ (_) _) ' ___(_ o _)' \n" +
" / \\ \\ | |(_,_)' \n" +
" `-'`-' \\| `-' / \n" +
" / / \\ \\\\ / \n" +
" '--' '----'`-..-' ");
}
}

+ 241
- 0
xueyi-modules/xueyi-modules-auth/src/main/java/com/xueyi/modules/auth/transfer/controller/ApiController.java 查看文件

@@ -0,0 +1,241 @@
package com.xueyi.modules.auth.transfer.controller;


import com.xueyi.common.cache.utils.SourceUtil;
import com.xueyi.common.core.constant.basic.SecurityConstants;
import com.xueyi.common.core.constant.digitalman.InitConstants;
import com.xueyi.common.core.constant.digitalman.MessageConstants;
import com.xueyi.common.core.web.result.AjaxResult;
import com.xueyi.common.core.web.result.R;
import com.xueyi.message.api.transfer.domain.vo.DmActiveVo;
import com.xueyi.message.api.transfer.domain.vo.DmDeviceVo;
import com.xueyi.system.api.authority.feign.RemoteLoginService;
import com.xueyi.system.api.device.domain.vo.DeviceTenantSourceMergeVo;
import com.xueyi.system.api.device.feign.RemoteDeviceTenantMergeService;
import com.xueyi.system.api.digitalmans.domain.dto.DmManDeviceDto;
import com.xueyi.system.api.digitalmans.domain.dto.DmSkillDto;
import com.xueyi.system.api.digitalmans.domain.dto.DmSyncDigitalmanDto;
import com.xueyi.system.api.digitalmans.feign.RemoteDigitalmanService;
import com.xueyi.system.api.digitalmans.feign.RemoteManDeviceService;
import com.xueyi.system.api.digitalmans.feign.RemoteSkillService;
import com.xueyi.system.api.model.Source;
import com.xueyi.system.api.organize.domain.dto.SysEnterpriseDto;
import com.xueyi.system.api.staff.domain.vo.DmStaffFeature;
import com.xueyi.system.api.staff.feign.RemoteStaffService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;

@RestController
@RequestMapping("api")
public class ApiController {

@Autowired
RemoteStaffService remoteStaffService;

@Autowired
RemoteSkillService remoteSkillService;

@Autowired
StringRedisTemplate redisTemplate;

@Autowired
RemoteLoginService remoteLoginService;

@Autowired
RemoteDigitalmanService remoteDigitalmanService;

@Autowired
RemoteDeviceTenantMergeService deviceTenantMergeServicel;

@Autowired
RemoteManDeviceService manDeviceService;


@RequestMapping(value = "/heartbeat", method = {RequestMethod.POST})
@ResponseBody
public AjaxResult heartbeat(@RequestBody DmDeviceVo vo, HttpServletResponse response) {
Long sysTime = System.currentTimeMillis();
System.out.println("heartbeat: device: " + vo.getDevId() + " timestamp: " + sysTime);
Integer dex_res = 0;
// 根据设备id获取租户信息
R<DmManDeviceDto> manDeviceDtoR = manDeviceService.manDeviceInfoInner(vo.getDevId());
if (manDeviceDtoR.isFail()) {
return AjaxResult.warn("设备号获取失败,请检查");
}
// 根据设备id获取租户信息
R<SysEnterpriseDto> enterpriseDto = remoteStaffService.tenantIdInner(vo.getEnterpriseName());
if (enterpriseDto.isFail()) {
return AjaxResult.warn("企业号获取失败,请检查");
}

// 更新心跳
redisTemplate.opsForValue().set("group:dgman:" + vo.getDevId() + ":" + MessageConstants.HEART_BEAT_SYNC,String.valueOf(sysTime));

String timestamp = redisTemplate.opsForValue().get("group:dgman:" + manDeviceDtoR.getData().getTId() + ":" + MessageConstants.STAFF_SYNC);


if (timestamp != null && !timestamp.equalsIgnoreCase(vo.getTimestamp()) && Long.parseLong(timestamp) > Long.parseLong(vo.getTimestamp())) {
dex_res += 0x01;
}
timestamp = redisTemplate.opsForValue().get("group:dgman:" + enterpriseDto.getData().getId() + ":" + MessageConstants.SKILL_SYNC);
if (timestamp != null && !timestamp.equalsIgnoreCase(vo.getTimestamp()) && Long.parseLong(timestamp) > Long.parseLong(vo.getTimestamp())) {
dex_res += 0x10;
}
timestamp = redisTemplate.opsForValue().get("group:dgman:" + enterpriseDto.getData().getId() + ":" + MessageConstants.MODEL_SYNC);
if (timestamp != null && !timestamp.equalsIgnoreCase(vo.getTimestamp()) && Long.parseLong(timestamp) > Long.parseLong(vo.getTimestamp())) {
dex_res += 0x100;
}
// if (!timestamp.equalsIgnoreCase(vo.getTimestamp()) && Long.parseLong(timestamp) > Long.parseLong(vo.getTimestamp())) {
// dex_res += 0x10;
// }
// timestamp = redisTemplate.opsForValue().get("group:dgman:" + enterpriseDto.getData().getId() + ":" + MessageConstants.MODEL_SYNC);
// if (!timestamp.equalsIgnoreCase(vo.getTimestamp()) && Long.parseLong(timestamp) > Long.parseLong(vo.getTimestamp())) {
// dex_res += 0x100;
// }
// Source source = SourceUtil.getSourceCache(enterpriseDto.getData().getStrategyId());
// // 获取人员及访客更新内容
// R<List<DmStaffFeature>> staffFeatureList = remoteStaffService.listInner(vo.getDevId(), vo.getTimestamp(), enterpriseDto.getData().getId(),source.getMaster(), SecurityConstants.INNER);
// if (staffFeatureList.isFail())
// return AjaxResult.warn("新增失败,请检查!");
// if (staffFeatureList.getData() != null && staffFeatureList.getData().size() > 0) {
// //判断有更新,返回提醒
// dex_res += 0x1;
// }

// 获取问题更新内容

return AjaxResult.success(dex_res);
}

@RequestMapping(value = "/update", method = {RequestMethod.POST})
@ResponseBody
public AjaxResult update(@RequestBody DmDeviceVo vo, HttpServletResponse response) {
System.out.println(vo.toString());
String timestamp = vo.getTimestamp();
// 根据设备id获取租户信息
R<DmManDeviceDto> manDeviceDtoR = manDeviceService.manDeviceInfoInner(vo.getDevId());
if (manDeviceDtoR.isFail() || manDeviceDtoR.getData() == null ) {
return AjaxResult.warn("设备号获取失败,请检查");
}
Source source = SourceUtil.getSourceCache(manDeviceDtoR.getData().getStrategyId());
if (vo.getType() !=null) {
switch (vo.getType()) {
// 人员信息
case 0:
timestamp = redisTemplate.opsForValue().get("group:dgman:" + manDeviceDtoR.getData().getTId() + ":" + MessageConstants.STAFF_SYNC );
if (timestamp == null) {
AjaxResult.warn("当前时间戳获取失败");
}
R<List<DmStaffFeature>> staffFeatureList = remoteStaffService.listInner(vo.getDevId(), vo.getTimestamp(), manDeviceDtoR.getData().getTId(),source.getMaster(), SecurityConstants.INNER);
if (staffFeatureList.isFail())
return AjaxResult.warn("新增失败,请检查!");
staffFeatureList.getData().forEach(item->
{
if (item.getFeature() != "" ) {
String ops_str = item.getFeature().substring(1,item.getFeature().indexOf("]"));
item.setDFeatures(Arrays.stream(ops_str.split(",")).map(Double::valueOf).collect(Collectors.toList()));
}
item.setFeature("");
});
return AjaxResult.success(staffFeatureList.getData()).put("timestamp",timestamp);
case 1:
System.out.println("=========租户号:" + manDeviceDtoR.getData().getTId() + ", 数据源: " + source.getMaster() + " 设备号:" + vo.getDevId());
R<List<DmSkillDto>> skillList = remoteSkillService.skilllistInner(vo.getDevId(),vo.getTimestamp(), manDeviceDtoR.getData().getTId(),source.getMaster(), SecurityConstants.INNER);
if (skillList.isFail())
return AjaxResult.warn("新增失败,请检查");
return AjaxResult.success(skillList.getData()).put("timestamp",timestamp);
case 2:
R<DmSyncDigitalmanDto> syncDmDto = remoteDigitalmanService.listInner(manDeviceDtoR.getData().getManCode(),vo.getTimestamp(), manDeviceDtoR.getData().getTId(),source.getMaster(), SecurityConstants.INNER);
if (syncDmDto.isFail())
return AjaxResult.warn("新增失败,请检查");
return AjaxResult.success(syncDmDto.getData()).put("timestamp",timestamp);
}
}
return AjaxResult.success();
}

@RequestMapping(value = "/activate", method = {RequestMethod.POST})
@ResponseBody
public AjaxResult activate(@RequestBody DmActiveVo vo, HttpServletResponse response) {
// 判断参数完整性
if (vo.getSecret() == null || vo.getSecret().equalsIgnoreCase("")) {
return AjaxResult.warn("激活码不能为空");
}

// 根据密钥获取账户信息
R<DeviceTenantSourceMergeVo> deviceTenantSourceMergeVoR = deviceTenantMergeServicel.selectDeviceSNTenantSourceMerge(vo.getSncode(),vo.getSecret());
if (deviceTenantSourceMergeVoR.isFail()) {
return AjaxResult.warn(deviceTenantSourceMergeVoR.getMsg());
}
vo.setActivateTime(new Date());
// 设备是否已绑定其他账号
R<DmManDeviceDto> manDeviceDtoR = manDeviceService.manDeviceInfoInner(vo.getSncode());
// if (manDeviceDtoR.getData() != null) {
// return AjaxResult.warn("设备号已绑定其他账号");
// }
R<Integer> regR = manDeviceService.manDeviceInfoInnerUpdate(vo);
if (regR.getData() == 0) {
return AjaxResult.warn("更新设备信息失败,请查询log");
}
// 调用初始化处理(数字人,数字人设备,形象,技能)
R<Integer> initResult = remoteDigitalmanService.initInner(vo.getSecret(),deviceTenantSourceMergeVoR.getData().getTenantId(),deviceTenantSourceMergeVoR.getData().getSourceSlave(),SecurityConstants.INNER);
// 根据状态返回结果
if (initResult.isFail()) {
return AjaxResult.warn("绑定数字人失败,请联系后台人员");
}
// 更新心跳状态
redisTemplate.opsForValue().set("group:dgman:" + vo.getSncode() + ":" + MessageConstants.HEART_BEAT_SYNC,String.valueOf(System.currentTimeMillis()));
//redisTemplate.opsForHash().(MessageConstants.REDIS_GROUP_DEVICE_HEADER,devId,dto);
//redisTemplate.
return AjaxResult.success();
}

/**
* 获取设备在线状态
*
*
*/
@RequestMapping(value = "/device_online_status/{devId}", method = {RequestMethod.GET})
@ResponseBody
public AjaxResult getDeviceOnlineStatus(@RequestParam(value = "devId") String devId, HttpServletResponse response){
// 获取设备心跳状态
String timestamp = redisTemplate.opsForValue().get("group:dgman:" + devId + ":" + MessageConstants.HEART_BEAT_SYNC);

if (timestamp == null || timestamp == "") {
// 如果设备缓存获取不到,查询数据库是否存在该设备
R<DmManDeviceDto> manDeviceDtR = manDeviceService.manDeviceInfoInner(devId);
if (manDeviceDtR.isFail() || manDeviceDtR.getData() == null) {
// 如果设备查询不到,返回未激活
return AjaxResult.success(InitConstants.DEVICE_ACTIVATE_STATUS_NOT_ACTIVATE);
}
return AjaxResult.success(InitConstants.DEVICE_ACTIVATE_STATUS_OFFLINE);
}
// 设备存在缓存时判断是否超过10min
return AjaxResult.success(System.currentTimeMillis() - Long.parseLong(timestamp) >10 * 60 * 1000 ? InitConstants.DEVICE_ACTIVATE_STATUS_OFFLINE : InitConstants.DEVICE_ACTIVATE_STATUS_ONLINE);
}

@RequestMapping(value = "/get_activate/{snCode}", method = {RequestMethod.GET})
@ResponseBody
public AjaxResult activate(@PathVariable(value = "snCode") String snCode, HttpServletResponse response) {
R<DmManDeviceDto> manDeviceDtR = manDeviceService.manDeviceInfoInner(snCode);
if (manDeviceDtR.getData() == null) {

return AjaxResult.success("false");
}
System.out.println(manDeviceDtR.getData().toString());
return AjaxResult.success("true");
}
}

+ 10
- 0
xueyi-modules/xueyi-modules-auth/src/main/resources/banner.txt 查看文件

@@ -0,0 +1,10 @@
Spring Boot Version: ${spring-boot.version}
Spring Application Name: ${spring.application.name}
_______ _________ _________ _______ _ _______ _ _________
|\ /||\ /|( ____ \|\ /|\__ __/ \__ __/( ____ \( ( /|( ___ )( ( /|\__ __/
( \ / )| ) ( || ( \/( \ / ) ) ( ) ( | ( \/| \ ( || ( ) || \ ( | ) (
\ (_) / | | | || (__ \ (_) / | | _____ | | | (__ | \ | || (___) || \ | | | |
) _ ( | | | || __) \ / | |(_____)| | | __) | (\ \) || ___ || (\ \) | | |
/ ( ) \ | | | || ( ) ( | | | | | ( | | \ || ( ) || | \ | | |
( / \ )| (___) || (____/\ | | ___) (___ | | | (____/\| ) \ || ) ( || ) \ | | |
|/ \|(_______)(_______/ \_/ \_______/ )_( (_______/|/ )_)|/ \||/ )_) )_(

+ 33
- 0
xueyi-modules/xueyi-modules-auth/src/main/resources/bootstrap-prod.yml 查看文件

@@ -0,0 +1,33 @@
# Tomcat
server:
port: 9700

# Spring
spring:
application:
# 应用名称
name: xueyi-message
profiles:
# 环境配置
active:
servlet:
multipart:
max-request-size: 20MB
max-file-size: 100MB
cloud:
nacos:
discovery:
# 服务注册地址
# server-addr: 172.17.0.1:18848
server-addr: 127.0.0.1:18848
config:
# 配置中心地址
# server-addr: 172.17.0.1:18848
server-addr: 127.0.0.1:18848
# 配置文件格式
file-extension: yml
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
- application-secret-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
- application-datasource-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

+ 35
- 0
xueyi-modules/xueyi-modules-auth/src/main/resources/bootstrap.yml 查看文件

@@ -0,0 +1,35 @@
# Tomcat
server:
port: 9970

# Spring
spring:
application:
# 应用名称
name: xueyi-modules-auth
profiles:
# 环境配置
active: @activatedProperties@
servlet:
multipart:
max-request-size: 20MB
max-file-size: 100MB
cloud:
nacos:
discovery:

# 服务注册地址
server-addr: @nacos.host@:@nacos.port@
namespace: @nacos.namespace@

config:
# 配置中心地址
server-addr: @nacos.host@:@nacos.port@
namespace: @nacos.namespace@
# 配置文件格式
file-extension: yml
# 共享配置
shared-configs:
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
- application-secret-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
- application-datasource-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}

+ 74
- 0
xueyi-modules/xueyi-modules-auth/src/main/resources/logback.xml 查看文件

@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- 日志存放路径 -->
<property name="log.path" value="logs/xueyi-message" />
<!-- 日志输出格式 -->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />

<!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>

<!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/info.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>INFO</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>

<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/error.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>ERROR</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>

<!-- 系统模块日志级别控制 -->
<logger name="com.xueyi" level="info" />
<!-- Spring日志级别控制 -->
<logger name="org.springframework" level="warn" />

<root level="info">
<appender-ref ref="console" />
</root>
<!--系统操作日志-->
<root level="info">
<appender-ref ref="file_info" />
<appender-ref ref="file_error" />
</root>
</configuration>

正在加载...
取消
保存