Browse Source

Api auth修改,带deviceId或devId进行权限验证,无需走feign那套请求流程

tags/B.2.5.0_20231216_base
yk 1 year ago
parent
commit
77730fc250
21 changed files with 328 additions and 62 deletions
  1. +0
    -13
      xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/device/domain/vo/DeviceTenantSourceMergeVo.java
  2. +1
    -1
      xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/device/feign/RemoteDeviceTenantMergeService.java
  3. +85
    -0
      xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/utils/DecodeRequestUtils.java
  4. +16
    -0
      xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/web/vo/DeviceTenantSourceMergeVo.java
  5. +17
    -0
      xueyi-common/xueyi-common-security/src/main/java/com/xueyi/common/security/interceptor/HeaderInterceptor.java
  6. +39
    -0
      xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/config/WebApiMvcConfig.java
  7. +1
    -1
      xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/controller/BaseApiController.java
  8. +21
    -0
      xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/entity/domain/mapper/DeviceTenantMergeMapper.java
  9. +14
    -0
      xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/entity/domain/provider/DeviceTenantSqlProvider.java
  10. +71
    -0
      xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/interceptor/ApiRequestInterceptor.java
  11. +3
    -1
      xueyi-common/xueyi-common-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  12. +5
    -4
      xueyi-gateway/src/main/java/com/xueyi/gateway/filter/AuthFilter.java
  13. +1
    -1
      xueyi-modules/xueyi-message/src/main/java/com/xueyi/message/handler/MqttTopicHandle.java
  14. +1
    -1
      xueyi-modules/xueyi-message/src/main/java/com/xueyi/message/transfer/controller/ApiController.java
  15. +1
    -1
      xueyi-modules/xueyi-modules-auth/src/main/java/com/xueyi/modules/auth/controller/SkillAuthApiController.java
  16. +10
    -2
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/device/controller/DmDeviceTenantMergeController.java
  17. +1
    -1
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/controller/DmDigitalmanController.java
  18. +38
    -1
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/meeting/controller/api/DmMeetingApiController.java
  19. +1
    -1
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/pass/controller/api/DmRecognizedRecordsApiController.java
  20. +1
    -33
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmStaffApiController.java
  21. +1
    -1
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmVisitorApiController.java

+ 0
- 13
xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/device/domain/vo/DeviceTenantSourceMergeVo.java View File

@@ -1,13 +0,0 @@
package com.xueyi.system.api.device.domain.vo;


import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
public class DeviceTenantSourceMergeVo {

Long tenantId;
String sourceSlave;
}

+ 1
- 1
xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/device/feign/RemoteDeviceTenantMergeService.java View File

@@ -2,8 +2,8 @@ package com.xueyi.system.api.device.feign;

import com.xueyi.common.core.constant.basic.ServiceConstants;
import com.xueyi.common.core.web.result.R;
import com.xueyi.common.core.web.vo.DeviceTenantSourceMergeVo;
import com.xueyi.system.api.device.domain.po.DmDeviceTenantMergePo;
import com.xueyi.system.api.device.domain.vo.DeviceTenantSourceMergeVo;
import com.xueyi.system.api.organize.feign.factory.RemoteUserFallbackFactory;
import com.xueyi.tenant.api.source.domain.po.TeSourcePo;
import org.springframework.cloud.openfeign.FeignClient;


+ 85
- 0
xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/utils/DecodeRequestUtils.java View File

@@ -0,0 +1,85 @@
package com.xueyi.common.core.utils;

import com.alibaba.fastjson.JSONObject;
import org.springframework.util.DigestUtils;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

public class DecodeRequestUtils {

/**
* 获取Request中的JSON字符串
*
* @param request
* @return
* @throws IOException
*/
public static String getRequestPostStr(HttpServletRequest request) throws IOException {
byte[] buffer = getRequestPostBytes(request);
String charEncoding = request.getCharacterEncoding();
if (charEncoding == null) {
charEncoding = "UTF-8";
}
return new String(buffer, charEncoding);
}

private static byte[] getRequestPostBytes(HttpServletRequest request) throws IOException {
int contentLength = request.getContentLength();
if (contentLength < 0) {
return null;
}
byte[] buffer = new byte[contentLength];
for (int i = 0; i < contentLength; ) {
int readlen = request.getInputStream().read(buffer, i,
contentLength - i);
if (readlen == -1) {
break;
}
i += readlen;
}
return buffer;
}

/**
* JSON对象转为网址传参格式(按key的首字母从小到大排序)
*
* @param jsonObject
* @return
*/
public static String json2pathValue(JSONObject jsonObject) {
Map map = jsonObject.toJavaObject(Map.class);
Set<String> set = map.keySet();
List<String> keyList = new ArrayList<>(set);
List<String> collect = keyList.stream().sorted().collect(Collectors.toList());
StringBuilder stringBuilder = new StringBuilder();
for (String s : collect) {
String value = map.get(s).toString();
stringBuilder.append(s).append("=").append(value).append("&");
}
stringBuilder.deleteCharAt(stringBuilder.lastIndexOf("&"));
return stringBuilder.toString();
}

/**
* 计算sign签名
*
* @param jsonObject
* @param genKey
* @return
*/
public static String calculateSign(JSONObject jsonObject, String genKey) {
String pathvalue = json2pathValue(jsonObject);
System.out.println(pathvalue);
pathvalue = pathvalue + "&gen_key=" + genKey;
System.out.println(pathvalue);
String sign = DigestUtils.md5DigestAsHex(pathvalue.getBytes(StandardCharsets.UTF_8));
return sign;
}
}

+ 16
- 0
xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/web/vo/DeviceTenantSourceMergeVo.java View File

@@ -0,0 +1,16 @@
package com.xueyi.common.core.web.vo;


import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

@Data
@NoArgsConstructor
public class DeviceTenantSourceMergeVo implements Serializable {

Long tenantId;
String sourceSlave;
String devId;
}

+ 17
- 0
xueyi-common/xueyi-common-security/src/main/java/com/xueyi/common/security/interceptor/HeaderInterceptor.java View File

@@ -28,6 +28,10 @@ public class HeaderInterceptor implements AsyncHandlerInterceptor {
return true;
}

// JSONObject jsonObject = JSONObject.parseObject(DecodeRequestUtils.getRequestPostStr(request));



SecurityContextHolder.setEnterpriseId(ServletUtil.getHeader(request, SecurityConstants.BaseSecurity.ENTERPRISE_ID.getCode()));
SecurityContextHolder.setEnterpriseName(ServletUtil.getHeader(request, SecurityConstants.BaseSecurity.ENTERPRISE_NAME.getCode()));
SecurityContextHolder.setIsLessor(ServletUtil.getHeader(request, SecurityConstants.BaseSecurity.IS_LESSOR.getCode()));
@@ -48,6 +52,19 @@ public class HeaderInterceptor implements AsyncHandlerInterceptor {
AuthUtil.verifyLoginUserExpire(token, accountType);
}
}

/*if ((request.getParameterMap().containsKey("deviceId")||request.getParameterMap().containsKey("devId")) || (jsonObject!=null && (jsonObject.containsKey("deviceId")||jsonObject.containsKey("devId")))) {
String devId = request.getParameter("deviceId");
devId = StringUtils.isEmpty(devId) ? request.getParameter("devId") : devId;
if (StringUtils.isEmpty(devId) && jsonObject != null) {
devId = jsonObject.getString("deviceId");
devId = StringUtils.isEmpty(devId) ? jsonObject.getString("devId") : devId;
}
SecurityContextHolder.setEnterpriseId("1676567054677766146");
SecurityContextHolder.setSourceName("slave");
SecurityContextHolder.set(SecurityConstants.FROM_SOURCE, "inner");

}*/
return true;
}



+ 39
- 0
xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/config/WebApiMvcConfig.java View File

@@ -0,0 +1,39 @@
package com.xueyi.common.web.config;

import com.xueyi.common.web.interceptor.ApiRequestInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
* 拦截器配置
*
* @author xueyi
*/
@Configuration
public class WebApiMvcConfig implements WebMvcConfigurer {

/**
* 不需要拦截地址
*/
public static final String[] excludeUrls = {"/login", "/logout", "/refresh"};

@Override
public void addInterceptors(InterceptorRegistry registry) {
System.err.println("WebMvcConfig.addInterceptors======================hshshkbb");

registry.addInterceptor(getApiInterceptor())
.addPathPatterns("/**")
.excludePathPatterns(excludeUrls)
.order(1);
}

/**
* 自定义请求头拦截器
*/
@Bean
public ApiRequestInterceptor getApiInterceptor() {
return new ApiRequestInterceptor();
}
}

+ 1
- 1
xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/controller/BaseApiController.java View File

@@ -2,9 +2,9 @@ package com.xueyi.common.web.controller;

import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.google.common.collect.Lists;
import com.xueyi.common.core.web.vo.DeviceTenantSourceMergeVo;
import com.xueyi.common.web.constant.ResponseCode;
import com.xueyi.common.web.response.MyResponse;
import com.xueyi.system.api.device.domain.vo.DeviceTenantSourceMergeVo;
import com.xueyi.system.api.device.feign.RemoteDeviceTenantMergeService;
import org.springframework.beans.factory.annotation.Autowired;



+ 21
- 0
xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/entity/domain/mapper/DeviceTenantMergeMapper.java View File

@@ -0,0 +1,21 @@
package com.xueyi.common.web.entity.domain.mapper;

import com.xueyi.common.core.web.vo.DeviceTenantSourceMergeVo;
import com.xueyi.common.web.annotation.TenantIgnore;
import com.xueyi.common.web.entity.domain.provider.DeviceTenantSqlProvider;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.SelectProvider;

/**
* 设备租户(企业)关联管理 数据封装层
*
* @author xueyi
*/
@Mapper
public interface DeviceTenantMergeMapper {

@TenantIgnore(tenantLine = true)
@SelectProvider(type= DeviceTenantSqlProvider.class, method="selectDeviceTenant")
DeviceTenantSourceMergeVo selectByDeviceId(@Param("deviceId") String deviceId);
}

+ 14
- 0
xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/entity/domain/provider/DeviceTenantSqlProvider.java View File

@@ -0,0 +1,14 @@
package com.xueyi.common.web.entity.domain.provider;

import org.apache.ibatis.annotations.Param;

/**
* @author yk
* @description
* @date 2023-11-25 11:15
*/
public class DeviceTenantSqlProvider {
public String selectDeviceTenant(@Param("deviceId") String deviceId) {
return "SELECT ddtm.dev_id, ddtm.tenant_id, s.source_slave FROM dm_device_tenant_merge ddtm JOIN te_tenant t ON t.id=ddtm.tenant_id JOIN te_strategy s ON s.id=t.strategy_id AND dev_id= #{deviceId}";
}
}

+ 71
- 0
xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/interceptor/ApiRequestInterceptor.java View File

@@ -0,0 +1,71 @@
package com.xueyi.common.web.interceptor;

import com.alibaba.fastjson.JSONObject;
import com.xueyi.common.core.constant.basic.SecurityConstants;
import com.xueyi.common.core.context.SecurityContextHolder;
import com.xueyi.common.core.utils.DecodeRequestUtils;
import com.xueyi.common.core.web.vo.DeviceTenantSourceMergeVo;
import com.xueyi.common.web.entity.domain.mapper.DeviceTenantMergeMapper;
import com.xueyi.system.api.device.feign.RemoteDeviceTenantMergeService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
* 自定义API拦截器,验证api请求权限
* 会根据传入的deviceId值,验证权限
*
* @author xueyi
*/
public class ApiRequestInterceptor implements HandlerInterceptor {

@Autowired
RemoteDeviceTenantMergeService remoteDeviceTenantMergeService;


@Autowired
private DeviceTenantMergeMapper mergeMapper;

//为以下方法加行级注释
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if (!(handler instanceof HandlerMethod)) {
return true;
}

JSONObject jsonObject = JSONObject.parseObject(DecodeRequestUtils.getRequestPostStr(request));// 解析请求参数

if ((request.getParameterMap().containsKey("deviceId")||request.getParameterMap().containsKey("devId")) || (jsonObject!=null && (jsonObject.containsKey("deviceId")||jsonObject.containsKey("devId")))) {
String devId = request.getParameter("deviceId");
devId = StringUtils.isEmpty(devId) ? request.getParameter("devId") : devId;
if (StringUtils.isEmpty(devId) && jsonObject != null) {
devId = jsonObject.getString("deviceId");
devId = StringUtils.isEmpty(devId) ? jsonObject.getString("devId") : devId;
}

/*DeviceTenantSourceMergeVo vo = null;
if (RedisUtil.existed("saas:source:device:" + devId)) {
vo = (DeviceTenantSourceMergeVo) RedisUtil.getVal("saas:source:device:" + devId);
} else {
vo = remoteDeviceTenantMergeService.selectDeviceTenantSourceMerge(devId);
RedisUtil.setVal("saas:source:device:" + devId, vo);
}*/

DeviceTenantSourceMergeVo vo = mergeMapper.selectByDeviceId(devId);// 查询设备与租户、来源的关联关系
SecurityContextHolder.setEnterpriseId(vo.getTenantId().toString());// 设置企业ID
SecurityContextHolder.setSourceName(vo.getSourceSlave());// 设置数据源名称
SecurityContextHolder.set(SecurityConstants.FROM_SOURCE, SecurityConstants.INNER);// 设置数据来源

}
return true;
}

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
SecurityContextHolder.remove();
}
}

+ 3
- 1
xueyi-common/xueyi-common-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports View File

@@ -3,4 +3,6 @@ com.xueyi.common.web.config.XueYiMyBatisPlusConfig
com.xueyi.common.web.config.XueYiMyRespConfig
com.xueyi.common.web.handler.XueYiMetaObjectHandler
com.xueyi.common.web.handler.TenantLineHandler
com.xueyi.common.web.aspect.AutoInjectAspect
com.xueyi.common.web.aspect.AutoInjectAspect
com.xueyi.common.web.config.WebApiMvcConfig
com.xueyi.common.web.interceptor.ApiRequestInterceptor

+ 5
- 4
xueyi-gateway/src/main/java/com/xueyi/gateway/filter/AuthFilter.java View File

@@ -37,7 +37,8 @@ public class AuthFilter implements GlobalFilter, Ordered {
@Autowired
private RedisService redisService;

private static final String[] whitePrefix = {"/message/api", "/pass/api", "/meeting/api", "/visit/api", "/file/api","/staff/api","/apkversion/api","/man/api","/holiday/api", "/skill/api", "/intent/api","/system/api","/dept/api"};
//TODO. 需要删除,通过nacos配置管理白名单
// private static final String[] whitePrefix = {"/message/api", "/pass/api", "/visit/api", "/file/api","/staff/api","/apkversion/api","/man/api","/device/api","/holiday/api", "/skill/api", "/intent/api","/system/api"};

@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
@@ -49,9 +50,9 @@ public class AuthFilter implements GlobalFilter, Ordered {
if (StrUtil.matches(url, ignoreWhite.getWhites())) {
return chain.filter(exchange);
}
// 跳过不需要验证的路径.
for (String item : whitePrefix)
if (url.contains(item)) return chain.filter(exchange);
// TODO. 需要删除 跳过不需要验证的路径.
/*for (String item : whitePrefix)
if (url.contains(item)) return chain.filter(exchange);*/

String token = getToken(request);
if (StrUtil.isEmpty(token)) {


+ 1
- 1
xueyi-modules/xueyi-message/src/main/java/com/xueyi/message/handler/MqttTopicHandle.java View File

@@ -3,10 +3,10 @@ package com.xueyi.message.handler;
import com.alibaba.fastjson2.JSONObject;
import com.xueyi.common.core.constant.basic.SecurityConstants;
import com.xueyi.common.core.web.result.R;
import com.xueyi.common.core.web.vo.DeviceTenantSourceMergeVo;
import com.xueyi.common.mqtt.annotation.MqttService;
import com.xueyi.common.mqtt.annotation.MqttTopic;
import com.xueyi.message.api.transfer.domain.vo.DmDeployScheduleVo;
import com.xueyi.system.api.device.domain.vo.DeviceTenantSourceMergeVo;
import com.xueyi.system.api.device.feign.RemoteDeviceTenantMergeService;
import com.xueyi.system.api.digitalmans.feign.RemoteDigitalmanMqttService;
import com.xueyi.system.api.version.feign.RemoteReleaseManagerService;


+ 1
- 1
xueyi-modules/xueyi-message/src/main/java/com/xueyi/message/transfer/controller/ApiController.java View File

@@ -9,13 +9,13 @@ 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.common.core.web.vo.DeviceTenantSourceMergeVo;
import com.xueyi.common.redis.utils.RedisUtil;
import com.xueyi.common.web.utils.DateUtils;
import com.xueyi.message.api.transfer.domain.vo.DmActiveVo;
import com.xueyi.message.api.transfer.domain.vo.DmDeviceVo;
import com.xueyi.message.transfer.service.impl.MessageQueueServiceImpl;
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;


+ 1
- 1
xueyi-modules/xueyi-modules-auth/src/main/java/com/xueyi/modules/auth/controller/SkillAuthApiController.java View File

@@ -3,10 +3,10 @@ package com.xueyi.modules.auth.controller;

import com.xueyi.common.core.constant.basic.SecurityConstants;
import com.xueyi.common.core.web.result.AjaxResult;
import com.xueyi.common.core.web.vo.DeviceTenantSourceMergeVo;
import com.xueyi.common.web.controller.BaseApiController;
import com.xueyi.modules.auth.api.domain.vo.IntentionReqDto;
import com.xueyi.modules.auth.api.feign.RemoteSkillAuthService;
import com.xueyi.system.api.device.domain.vo.DeviceTenantSourceMergeVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;


+ 10
- 2
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/device/controller/DmDeviceTenantMergeController.java View File

@@ -6,6 +6,7 @@ import com.xueyi.common.core.web.result.AjaxResult;
import com.xueyi.common.core.web.result.R;
import com.xueyi.common.core.web.validate.V_A;
import com.xueyi.common.core.web.validate.V_E;
import com.xueyi.common.core.web.vo.DeviceTenantSourceMergeVo;
import com.xueyi.common.datasource.annotation.Master;
import com.xueyi.common.log.annotation.Log;
import com.xueyi.common.log.enums.BusinessType;
@@ -14,7 +15,6 @@ import com.xueyi.common.web.annotation.TenantIgnore;
import com.xueyi.common.web.entity.controller.BaseController;
import com.xueyi.system.api.device.domain.dto.DmDeviceTenantMergeDto;
import com.xueyi.system.api.device.domain.po.DmDeviceTenantMergePo;
import com.xueyi.system.api.device.domain.vo.DeviceTenantSourceMergeVo;
import com.xueyi.system.api.digitalmans.domain.dto.DmManDeviceDto;
import com.xueyi.system.api.digitalmans.domain.po.DmManDevicePo;
import com.xueyi.system.api.model.Source;
@@ -29,7 +29,15 @@ import com.xueyi.system.organize.service.ISysEnterpriseService;
import com.xueyi.tenant.api.source.domain.po.TeSourcePo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.DeleteMapping;
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.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.io.Serializable;
import java.util.List;


+ 1
- 1
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/controller/DmDigitalmanController.java View File

@@ -13,6 +13,7 @@ import com.xueyi.common.core.web.result.AjaxResult;
import com.xueyi.common.core.web.result.R;
import com.xueyi.common.core.web.validate.V_A;
import com.xueyi.common.core.web.validate.V_E;
import com.xueyi.common.core.web.vo.DeviceTenantSourceMergeVo;
import com.xueyi.common.log.annotation.Log;
import com.xueyi.common.log.enums.BusinessType;
import com.xueyi.common.security.annotation.InnerAuth;
@@ -21,7 +22,6 @@ import com.xueyi.common.web.entity.controller.BaseController;
import com.xueyi.common.web.utils.DateUtils;
import com.xueyi.file.api.feign.RemoteFileService;
import com.xueyi.message.api.transfer.feign.RemoteTransferService;
import com.xueyi.system.api.device.domain.vo.DeviceTenantSourceMergeVo;
import com.xueyi.system.api.device.feign.RemoteDeviceTenantMergeService;
import com.xueyi.system.api.dict.domain.dto.SysDictDataDto;
import com.xueyi.system.api.digitalmans.domain.dto.DmDigitalmanWorktimeDto;


+ 38
- 1
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/meeting/controller/api/DmMeetingApiController.java View File

@@ -3,15 +3,19 @@ package com.xueyi.system.meeting.controller.api;
import com.alibaba.fastjson2.JSONObject;
import com.xueyi.common.core.constant.basic.SecurityConstants;
import com.xueyi.common.core.web.result.R;
import com.xueyi.common.core.web.vo.DeviceTenantSourceMergeVo;
import com.xueyi.common.sms.service.SmsService;
import com.xueyi.system.api.device.domain.vo.DeviceTenantSourceMergeVo;
import com.xueyi.system.api.digitalmans.domain.po.DmDigitalmanExtPo;
import com.xueyi.system.api.digitalmans.feign.RemoteDigitalmanService;
import com.xueyi.system.api.meeting.domain.dto.DmMeetingOrdersDto;
import com.xueyi.system.api.meeting.domain.dto.DmMeetingRoomsDto;
import com.xueyi.system.api.meeting.domain.po.DmMeetingRoomsPo;
import com.xueyi.system.api.meeting.feign.RemoteMeetingService;
import com.xueyi.system.api.pass.domain.dto.DmRecognizedRecordsDto;
import com.xueyi.system.api.pass.feign.RemoteRecognizedRecordsService;
import com.xueyi.system.digitalmans.service.IDmDigitalmanService;
import com.xueyi.system.meeting.domain.model.DmMeetingRoomsConverter;
import com.xueyi.system.meeting.mapper.DmMeetingRoomsMapper;
import com.xueyi.system.resource.controller.api.BaseApiController;
import com.xueyi.system.utils.common.ImageUtil;
import org.slf4j.Logger;
@@ -72,6 +76,39 @@ public class DmMeetingApiController extends BaseApiController {

}

@Autowired
IDmDigitalmanService dgService;

@Autowired
private DmMeetingRoomsMapper dmMeetingRoomsMapper;

@Autowired
private DmMeetingRoomsConverter dmMeetingRoomsConverter;

@GetMapping(value = "/room-lists2")
public R<List<DmMeetingRoomsDto>> roomList2(@RequestParam(value = "devId") String devId){
DeviceTenantSourceMergeVo vo = super.getDeviceTenantSourceMergeVo(devId);


DmDigitalmanExtPo extPo = dgService.selectExt(devId);

if (extPo != null) {

DmMeetingRoomsPo dm = new DmMeetingRoomsPo();
dm.setDeptId(extPo.getDeptId());
List<DmMeetingRoomsPo> pos = dmMeetingRoomsMapper.selectRoomList(dm);
List<DmMeetingRoomsDto> dtoList = new ArrayList<>();
pos.forEach(item -> {
DmMeetingRoomsDto di = dmMeetingRoomsConverter.mapperDto(item);
dtoList.add(di);
});
return R.ok(dtoList);
} else {
return R.fail("获取失败");
}

}


@ResponseBody
@PostMapping(value = "/person-lists")


+ 1
- 1
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/pass/controller/api/DmRecognizedRecordsApiController.java View File

@@ -16,8 +16,8 @@ import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.xueyi.common.core.constant.basic.SecurityConstants;
import com.xueyi.common.core.web.result.AjaxResult;
import com.xueyi.common.core.web.vo.DeviceTenantSourceMergeVo;
import com.xueyi.common.web.annotation.TenantIgnore;
import com.xueyi.system.api.device.domain.vo.DeviceTenantSourceMergeVo;
import com.xueyi.system.api.pass.domain.dto.DmRecognizedMultiRecordsDto;
import com.xueyi.system.api.pass.domain.dto.DmRecognizedRecordsDto;
import com.xueyi.system.api.pass.domain.po.DmRecognizedRecordsPo;


+ 1
- 33
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmStaffApiController.java View File

@@ -2,16 +2,13 @@ package com.xueyi.system.staff.controller.api;

import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.google.common.collect.Lists;
import com.xueyi.common.cache.utils.SourceUtil;
import com.xueyi.common.core.constant.basic.SecurityConstants;
import com.xueyi.common.core.context.SecurityContextHolder;
import com.xueyi.common.core.web.result.R;
import com.xueyi.common.core.web.vo.DeviceTenantSourceMergeVo;
import com.xueyi.common.redis.utils.RedisUtil;
import com.xueyi.common.web.annotation.TenantIgnore;
import com.xueyi.file.api.feign.RemoteFileService;
import com.xueyi.system.api.device.domain.vo.DeviceTenantSourceMergeVo;
import com.xueyi.system.api.model.Source;
import com.xueyi.system.api.pass.domain.po.DmRecognizedRecordsPo;
import com.xueyi.system.api.staff.domain.dto.DmStaffCommonDto;
@@ -24,19 +21,16 @@ import com.xueyi.tenant.api.tenant.feign.RemoteTenantService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
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.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;

/**
* 员工管理 API业务处理
@@ -119,32 +113,6 @@ public class DmStaffApiController extends BaseApiController {
List<DmRecognizedRecordsPo> lists = recognizedRecordsMapper.selectList(new LambdaQueryWrapper<DmRecognizedRecordsPo>().between(DmRecognizedRecordsPo::getRecognizedTime, LocalDateTime.now().minusDays(30), LocalDateTime.now()));
return R.ok(lists);
}


@Autowired
private DmRecognizedRecordsMapper mapper;

@Autowired
private RemoteFileService fileService;

@GetMapping(value = "inner-del-recognized-records-img")
@ResponseBody
@TenantIgnore(tenantLine = true)
@Async
public R delRecordsImg(@RequestParam("day") Integer day){
List<DmRecognizedRecordsPo> pos = mapper.queryPass(day);
List<String> urls = pos.stream().filter(s-> StringUtils.isNotEmpty(s.getFaceUrl())).map(DmRecognizedRecordsPo::getFaceUrl).collect(Collectors.toList());
//List<String>转为String[]
// String[] urlsArray = (String[])urls.toArray(new String[0]);

//将list以100为单位,分割
List<List<String>> lists = Lists.partition(urls, 50);
for (List<String> list : lists) {
fileService.deleteFiles(list.toArray(new String[0]));
}
// fileService.deleteFiles(urls);
return R.ok();
}
@GetMapping(value = "recognized-records")
@ResponseBody
public R<List<DmRecognizedRecordsPo>> recognizedRecords(){


+ 1
- 1
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmVisitorApiController.java View File

@@ -2,7 +2,7 @@ package com.xueyi.system.staff.controller.api;

import com.alibaba.fastjson2.JSONObject;
import com.xueyi.common.core.constant.basic.SecurityConstants;
import com.xueyi.system.api.device.domain.vo.DeviceTenantSourceMergeVo;
import com.xueyi.common.core.web.vo.DeviceTenantSourceMergeVo;
import com.xueyi.system.api.staff.domain.dto.DmVisitCommonDto;
import com.xueyi.system.api.staff.feign.RemoteVisitorService;
import com.xueyi.system.resource.controller.api.BaseApiController;


Loading…
Cancel
Save