From 77730fc250ae68d7d3d038bce99bc271cd0ee25a Mon Sep 17 00:00:00 2001 From: yk Date: Tue, 28 Nov 2023 13:57:43 +0800 Subject: [PATCH] =?UTF-8?q?Api=20auth=E4=BF=AE=E6=94=B9=EF=BC=8C=E5=B8=A6d?= =?UTF-8?q?eviceId=E6=88=96devId=E8=BF=9B=E8=A1=8C=E6=9D=83=E9=99=90?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=EF=BC=8C=E6=97=A0=E9=9C=80=E8=B5=B0feign?= =?UTF-8?q?=E9=82=A3=E5=A5=97=E8=AF=B7=E6=B1=82=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/vo/DeviceTenantSourceMergeVo.java | 13 --- .../feign/RemoteDeviceTenantMergeService.java | 2 +- .../common/core/utils/DecodeRequestUtils.java | 85 +++++++++++++++++++ .../web/vo/DeviceTenantSourceMergeVo.java | 16 ++++ .../interceptor/HeaderInterceptor.java | 17 ++++ .../common/web/config/WebApiMvcConfig.java | 39 +++++++++ .../web/controller/BaseApiController.java | 2 +- .../mapper/DeviceTenantMergeMapper.java | 21 +++++ .../provider/DeviceTenantSqlProvider.java | 14 +++ .../interceptor/ApiRequestInterceptor.java | 71 ++++++++++++++++ ...ot.autoconfigure.AutoConfiguration.imports | 4 +- .../com/xueyi/gateway/filter/AuthFilter.java | 9 +- .../message/handler/MqttTopicHandle.java | 2 +- .../transfer/controller/ApiController.java | 2 +- .../controller/SkillAuthApiController.java | 2 +- .../DmDeviceTenantMergeController.java | 12 ++- .../controller/DmDigitalmanController.java | 2 +- .../api/DmMeetingApiController.java | 39 ++++++++- .../api/DmRecognizedRecordsApiController.java | 2 +- .../controller/api/DmStaffApiController.java | 34 +------- .../api/DmVisitorApiController.java | 2 +- 21 files changed, 328 insertions(+), 62 deletions(-) delete mode 100644 xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/device/domain/vo/DeviceTenantSourceMergeVo.java create mode 100644 xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/utils/DecodeRequestUtils.java create mode 100644 xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/web/vo/DeviceTenantSourceMergeVo.java create mode 100644 xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/config/WebApiMvcConfig.java create mode 100644 xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/entity/domain/mapper/DeviceTenantMergeMapper.java create mode 100644 xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/entity/domain/provider/DeviceTenantSqlProvider.java create mode 100644 xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/interceptor/ApiRequestInterceptor.java diff --git a/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/device/domain/vo/DeviceTenantSourceMergeVo.java b/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/device/domain/vo/DeviceTenantSourceMergeVo.java deleted file mode 100644 index 6ed68ad1..00000000 --- a/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/device/domain/vo/DeviceTenantSourceMergeVo.java +++ /dev/null @@ -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; -} diff --git a/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/device/feign/RemoteDeviceTenantMergeService.java b/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/device/feign/RemoteDeviceTenantMergeService.java index 2ccc6f9d..baa09a50 100644 --- a/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/device/feign/RemoteDeviceTenantMergeService.java +++ b/xueyi-api/xueyi-api-system/src/main/java/com/xueyi/system/api/device/feign/RemoteDeviceTenantMergeService.java @@ -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; diff --git a/xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/utils/DecodeRequestUtils.java b/xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/utils/DecodeRequestUtils.java new file mode 100644 index 00000000..4b65b4f8 --- /dev/null +++ b/xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/utils/DecodeRequestUtils.java @@ -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 set = map.keySet(); + List keyList = new ArrayList<>(set); + List 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; + } +} \ No newline at end of file diff --git a/xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/web/vo/DeviceTenantSourceMergeVo.java b/xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/web/vo/DeviceTenantSourceMergeVo.java new file mode 100644 index 00000000..004a4bad --- /dev/null +++ b/xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/web/vo/DeviceTenantSourceMergeVo.java @@ -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; +} diff --git a/xueyi-common/xueyi-common-security/src/main/java/com/xueyi/common/security/interceptor/HeaderInterceptor.java b/xueyi-common/xueyi-common-security/src/main/java/com/xueyi/common/security/interceptor/HeaderInterceptor.java index c78530dd..8f4f192d 100644 --- a/xueyi-common/xueyi-common-security/src/main/java/com/xueyi/common/security/interceptor/HeaderInterceptor.java +++ b/xueyi-common/xueyi-common-security/src/main/java/com/xueyi/common/security/interceptor/HeaderInterceptor.java @@ -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; } diff --git a/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/config/WebApiMvcConfig.java b/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/config/WebApiMvcConfig.java new file mode 100644 index 00000000..990e76e4 --- /dev/null +++ b/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/config/WebApiMvcConfig.java @@ -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(); + } +} \ No newline at end of file diff --git a/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/controller/BaseApiController.java b/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/controller/BaseApiController.java index fb195975..004ae889 100644 --- a/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/controller/BaseApiController.java +++ b/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/controller/BaseApiController.java @@ -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; diff --git a/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/entity/domain/mapper/DeviceTenantMergeMapper.java b/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/entity/domain/mapper/DeviceTenantMergeMapper.java new file mode 100644 index 00000000..5cb13c1d --- /dev/null +++ b/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/entity/domain/mapper/DeviceTenantMergeMapper.java @@ -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); +} \ No newline at end of file diff --git a/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/entity/domain/provider/DeviceTenantSqlProvider.java b/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/entity/domain/provider/DeviceTenantSqlProvider.java new file mode 100644 index 00000000..641f4f70 --- /dev/null +++ b/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/entity/domain/provider/DeviceTenantSqlProvider.java @@ -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}"; + } +} diff --git a/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/interceptor/ApiRequestInterceptor.java b/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/interceptor/ApiRequestInterceptor.java new file mode 100644 index 00000000..8a69ae8c --- /dev/null +++ b/xueyi-common/xueyi-common-web/src/main/java/com/xueyi/common/web/interceptor/ApiRequestInterceptor.java @@ -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(); + } +} \ No newline at end of file diff --git a/xueyi-common/xueyi-common-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/xueyi-common/xueyi-common-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index d624d5a1..a8994b56 100644 --- a/xueyi-common/xueyi-common-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/xueyi-common/xueyi-common-web/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -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 \ No newline at end of file +com.xueyi.common.web.aspect.AutoInjectAspect +com.xueyi.common.web.config.WebApiMvcConfig +com.xueyi.common.web.interceptor.ApiRequestInterceptor \ No newline at end of file diff --git a/xueyi-gateway/src/main/java/com/xueyi/gateway/filter/AuthFilter.java b/xueyi-gateway/src/main/java/com/xueyi/gateway/filter/AuthFilter.java index 92caf5f2..4a2ed9e4 100644 --- a/xueyi-gateway/src/main/java/com/xueyi/gateway/filter/AuthFilter.java +++ b/xueyi-gateway/src/main/java/com/xueyi/gateway/filter/AuthFilter.java @@ -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 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)) { diff --git a/xueyi-modules/xueyi-message/src/main/java/com/xueyi/message/handler/MqttTopicHandle.java b/xueyi-modules/xueyi-message/src/main/java/com/xueyi/message/handler/MqttTopicHandle.java index 2db8a67f..34285f49 100644 --- a/xueyi-modules/xueyi-message/src/main/java/com/xueyi/message/handler/MqttTopicHandle.java +++ b/xueyi-modules/xueyi-message/src/main/java/com/xueyi/message/handler/MqttTopicHandle.java @@ -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; diff --git a/xueyi-modules/xueyi-message/src/main/java/com/xueyi/message/transfer/controller/ApiController.java b/xueyi-modules/xueyi-message/src/main/java/com/xueyi/message/transfer/controller/ApiController.java index 2592ed39..2d999c13 100644 --- a/xueyi-modules/xueyi-message/src/main/java/com/xueyi/message/transfer/controller/ApiController.java +++ b/xueyi-modules/xueyi-message/src/main/java/com/xueyi/message/transfer/controller/ApiController.java @@ -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; diff --git a/xueyi-modules/xueyi-modules-auth/src/main/java/com/xueyi/modules/auth/controller/SkillAuthApiController.java b/xueyi-modules/xueyi-modules-auth/src/main/java/com/xueyi/modules/auth/controller/SkillAuthApiController.java index 08b4aebb..7e501d57 100644 --- a/xueyi-modules/xueyi-modules-auth/src/main/java/com/xueyi/modules/auth/controller/SkillAuthApiController.java +++ b/xueyi-modules/xueyi-modules-auth/src/main/java/com/xueyi/modules/auth/controller/SkillAuthApiController.java @@ -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; diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/device/controller/DmDeviceTenantMergeController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/device/controller/DmDeviceTenantMergeController.java index 2301710f..1b1cded9 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/device/controller/DmDeviceTenantMergeController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/device/controller/DmDeviceTenantMergeController.java @@ -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; diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/controller/DmDigitalmanController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/controller/DmDigitalmanController.java index 05971e52..de0a010f 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/controller/DmDigitalmanController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/digitalmans/controller/DmDigitalmanController.java @@ -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; diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/meeting/controller/api/DmMeetingApiController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/meeting/controller/api/DmMeetingApiController.java index 45888e8b..b4777a53 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/meeting/controller/api/DmMeetingApiController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/meeting/controller/api/DmMeetingApiController.java @@ -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> 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 pos = dmMeetingRoomsMapper.selectRoomList(dm); + List 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") diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/pass/controller/api/DmRecognizedRecordsApiController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/pass/controller/api/DmRecognizedRecordsApiController.java index d011cdb0..53c9716d 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/pass/controller/api/DmRecognizedRecordsApiController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/pass/controller/api/DmRecognizedRecordsApiController.java @@ -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; diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmStaffApiController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmStaffApiController.java index 1e541333..3e775d97 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmStaffApiController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmStaffApiController.java @@ -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 lists = recognizedRecordsMapper.selectList(new LambdaQueryWrapper().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 pos = mapper.queryPass(day); - List urls = pos.stream().filter(s-> StringUtils.isNotEmpty(s.getFaceUrl())).map(DmRecognizedRecordsPo::getFaceUrl).collect(Collectors.toList()); - //List转为String[] -// String[] urlsArray = (String[])urls.toArray(new String[0]); - - //将list以100为单位,分割 - List> lists = Lists.partition(urls, 50); - for (List list : lists) { - fileService.deleteFiles(list.toArray(new String[0])); - } -// fileService.deleteFiles(urls); - return R.ok(); - } @GetMapping(value = "recognized-records") @ResponseBody public R> recognizedRecords(){ diff --git a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmVisitorApiController.java b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmVisitorApiController.java index 3ed98e77..166d6718 100644 --- a/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmVisitorApiController.java +++ b/xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/staff/controller/api/DmVisitorApiController.java @@ -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;