@@ -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; | |||
} |
@@ -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; | |||
@@ -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; | |||
} | |||
} |
@@ -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; | |||
} |
@@ -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; | |||
} | |||
@@ -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(); | |||
} | |||
} |
@@ -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; | |||
@@ -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); | |||
} |
@@ -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}"; | |||
} | |||
} |
@@ -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,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 |
@@ -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)) { | |||
@@ -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; | |||
@@ -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; | |||
@@ -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; | |||
@@ -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; | |||
@@ -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; | |||
@@ -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") | |||
@@ -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; | |||
@@ -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(){ | |||
@@ -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; | |||