From 9ee48d941c46093e6b8393779c786a60a33ff352 Mon Sep 17 00:00:00 2001 From: "ran.shang" Date: Sat, 10 Jan 2026 18:54:42 +0800 Subject: [PATCH] fix --- .../senmesh/sdk/dify/service/DifyClient.java | 9 +++ .../impl/UrlFilterConfigAttribueProvider.java | 4 +- .../sfile/controller/UserFileController.java | 16 +++++ .../com/senmesh/sfile/dto/UserFileDTO.java | 6 ++ .../senmesh/sfile/dto/UserFileQueryDTO.java | 5 ++ .../senmesh/sfile/mapper/UserFileMapper.xml | 9 ++- .../service/impl/FileRiskServiceImpl.java | 64 +++++++++++-------- .../usercenter/org/dto/OrgCreateDTO.java | 14 ++-- .../org/service/impl/OrgServiceImpl.java | 2 +- .../user/dao/UserExtensionMapper.java | 2 +- .../usercenter/user/util/UserUtils.java | 9 +-- src/main/resources/META-INF/spring.factories | 1 + src/main/resources/application.properties | 8 +-- 13 files changed, 102 insertions(+), 47 deletions(-) diff --git a/src/main/java/com/senmesh/sdk/dify/service/DifyClient.java b/src/main/java/com/senmesh/sdk/dify/service/DifyClient.java index d40fea9..602f7e6 100644 --- a/src/main/java/com/senmesh/sdk/dify/service/DifyClient.java +++ b/src/main/java/com/senmesh/sdk/dify/service/DifyClient.java @@ -102,6 +102,15 @@ public class DifyClient { public String getFilename() { return request.getFileName(); } + + /* @Override + public String getDescription() { + try { + return HttpURLConnection.guessContentTypeFromStream(request.getInputStream()); + } catch (IOException e) { + return null; + } + }*/ }; body.add("file", fileResource); diff --git a/src/main/java/com/senmesh/security/access/provider/impl/UrlFilterConfigAttribueProvider.java b/src/main/java/com/senmesh/security/access/provider/impl/UrlFilterConfigAttribueProvider.java index e273968..96b35aa 100644 --- a/src/main/java/com/senmesh/security/access/provider/impl/UrlFilterConfigAttribueProvider.java +++ b/src/main/java/com/senmesh/security/access/provider/impl/UrlFilterConfigAttribueProvider.java @@ -1,6 +1,7 @@ package com.senmesh.security.access.provider.impl; import java.util.Collection; +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -45,7 +46,7 @@ public class UrlFilterConfigAttribueProvider implements FilterConfigAttributePro AlitaResult> result = iPermissionSecurityService.listUrl(permissionQueryDTO); Assert.isTrue(result.getSuccess(), "资源权限获取失败"); - return result.getData().stream().filter(p -> StringUtils.isNotBlank(p.getLink()) + Map> map = result.getData().stream().filter(p -> StringUtils.isNotBlank(p.getLink()) && UrlTypeEnum.INTERFACE.getType().toString().equals(p.getResourceType())) .collect(Collectors.toMap(UrlPermissionDTO::getLink, v -> { Collection values = new HashSet(); @@ -55,6 +56,7 @@ public class UrlFilterConfigAttribueProvider implements FilterConfigAttributePro v1.addAll(v2); return v1; })); + return map; } } diff --git a/src/main/java/com/senmesh/sfile/controller/UserFileController.java b/src/main/java/com/senmesh/sfile/controller/UserFileController.java index fdda457..0de9bf2 100644 --- a/src/main/java/com/senmesh/sfile/controller/UserFileController.java +++ b/src/main/java/com/senmesh/sfile/controller/UserFileController.java @@ -64,6 +64,13 @@ public class UserFileController { return AlitaResult.success(true); } + @PutMapping("/modify_status") + @ApiOperation("修改状态") + public AlitaResult modifyStatus(@Validated @RequestBody UserFileModifyStatusDTO modifyStatusDTO) { + userFileService.modifyStatus(modifyStatusDTO); + return AlitaResult.success(true); + } + @GetMapping("/find") @ApiOperation("查询") public AlitaResult find(UserFileQueryDTO queryDTO) { @@ -86,11 +93,20 @@ public class UserFileController { return AlitaResult.success(queryDTO.getPageResult()); } + @GetMapping("/page_super") + @ApiOperation("分页查询(超级管理员)") + public AlitaResult> pageSuper(UserFileQueryDTO queryDTO) { + userFileService.page(queryDTO); + return AlitaResult.success(queryDTO.getPageResult()); + } + @GetMapping("/statistics/category") @ApiOperation("按文件种类统计") public AlitaResult> statisticsByCategory(UserFileQueryDTO queryDTO) { queryDTO.setUserId(UserContextHolder.getExistLoginUserId()); return AlitaResult.success(userFileService.statisticsByCategory(queryDTO)); } + + } diff --git a/src/main/java/com/senmesh/sfile/dto/UserFileDTO.java b/src/main/java/com/senmesh/sfile/dto/UserFileDTO.java index 1df02dd..12da04a 100644 --- a/src/main/java/com/senmesh/sfile/dto/UserFileDTO.java +++ b/src/main/java/com/senmesh/sfile/dto/UserFileDTO.java @@ -63,5 +63,11 @@ public class UserFileDTO extends BaseDTO { @ApiModelProperty("文件种类") private String fileCategory; + + @ApiModelProperty("最高风险等级:1重度/2中度/3轻度") + private String maxRiskLevel; + + @ApiModelProperty("风险详情JSON") + private String riskJson; } diff --git a/src/main/java/com/senmesh/sfile/dto/UserFileQueryDTO.java b/src/main/java/com/senmesh/sfile/dto/UserFileQueryDTO.java index 080ca0b..a3d8f86 100644 --- a/src/main/java/com/senmesh/sfile/dto/UserFileQueryDTO.java +++ b/src/main/java/com/senmesh/sfile/dto/UserFileQueryDTO.java @@ -10,6 +10,8 @@ import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.experimental.SuperBuilder; +import java.util.Set; + /** * 用户文件查询DTO */ @@ -50,6 +52,9 @@ public class UserFileQueryDTO extends PageQueryDTO { @ApiModelProperty("文件状态:1正常2失效11解析中12待审核13传输中") private String fileStatus; + @ApiModelProperty("文件状态(多值查询)") + private Set fileStatusIn; + @ApiModelProperty("路径(模糊查询,用于查询某个文件夹下的所有子文件)") private String pathLike; diff --git a/src/main/java/com/senmesh/sfile/mapper/UserFileMapper.xml b/src/main/java/com/senmesh/sfile/mapper/UserFileMapper.xml index f0fcf49..0da9147 100644 --- a/src/main/java/com/senmesh/sfile/mapper/UserFileMapper.xml +++ b/src/main/java/com/senmesh/sfile/mapper/UserFileMapper.xml @@ -4,7 +4,7 @@ @@ -33,6 +33,7 @@ FROM x_user_file t LEFT JOIN xs_file_record fr ON t.file_code = fr.file_code AND fr.deleted = FALSE LEFT JOIN x_file_category fc ON fr.file_suffix = fc.file_suffix AND fc.deleted = FALSE + LEFT JOIN x_file_risk fk ON t.file_code = fk.file_code AND fk.deleted = FALSE WHERE t.deleted = FALSE AND t.id = #{param.id} @@ -62,6 +63,12 @@ AND t.file_status = #{param.fileStatus} + + AND t.file_status IN + + #{item} + + AND t.path like #{pathLike} diff --git a/src/main/java/com/senmesh/sfile/service/impl/FileRiskServiceImpl.java b/src/main/java/com/senmesh/sfile/service/impl/FileRiskServiceImpl.java index 57bd1fc..5421dd7 100644 --- a/src/main/java/com/senmesh/sfile/service/impl/FileRiskServiceImpl.java +++ b/src/main/java/com/senmesh/sfile/service/impl/FileRiskServiceImpl.java @@ -2,10 +2,14 @@ package com.senmesh.sfile.service.impl; import com.senmesh.common.AlitaResult; import com.senmesh.common.constant.CommonConstants; +import com.senmesh.common.exception.BusinessException; import com.senmesh.common.util.JsonUtils; import com.senmesh.common.util.ListUtil; import com.senmesh.common.util.UserContextHolder; +import com.senmesh.component.file.entity.FileRecord; +import com.senmesh.component.file.service.FileRecordService; import com.senmesh.component.file.service.FileService; +import com.senmesh.component.file.util.FileStorageUtils; import com.senmesh.config.dto.ConfigDTO; import com.senmesh.config.dto.ConfigOperatorDTO; import com.senmesh.config.entity.Config; @@ -26,6 +30,7 @@ import com.senmesh.sfile.dto.FileRiskQueryDTO; import com.senmesh.sfile.entity.FileRisk; import com.senmesh.sfile.service.FileRiskService; import com.senmesh.usercenter.constants.OrgConstants; +import java.io.IOException; import java.util.HashMap; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -73,6 +78,9 @@ public class FileRiskServiceImpl implements FileRiskService { @Autowired private FileService fileService; + @Autowired + private FileRecordService fileRecordService; + /** * 获取文件风险锁DTO * @@ -143,7 +151,7 @@ public class FileRiskServiceImpl implements FileRiskService { // 1.1 记录不存在,创建新记录 log.info("文件风险不存在,创建新记录,fileCode: {}", fileCode); FileRiskCreateDTO createDTO = FileRiskCreateDTO.builder() -// .fileCode("aa.png") + .fileCode(fileCode) .build(); fileRiskDTO = this.create(createDTO); } @@ -168,7 +176,7 @@ public class FileRiskServiceImpl implements FileRiskService { inputs.put("srwj", Collections.singletonList( DifyChatRequest.DifyFileInfo.builder() - .type("image") + .type("document") .uploadFileId(uploadResponse.getId()) .build() )); @@ -235,33 +243,38 @@ public class FileRiskServiceImpl implements FileRiskService { */ private DifyFileUploadResponse uploadFileToDify(FileRiskDTO fileRiskDTO, String fileCode, String apiKey) { // 1. 获取文件流 - InputStream fileStream = fileService.getFile(fileCode); - Assert.notNull(fileStream, "获取文件流失败,fileCode: " + fileCode); + FileRecord fileRecord = fileRecordService.find(FileRecord.builder().fileCode(fileCode).build()); + try(InputStream fileStream = FileStorageUtils.get().download(fileRecord.getFilePath())){ + Assert.notNull(fileStream, "获取文件流失败,fileCode: " + fileCode); - // 2. 上传文件到 Dify - DifyFileUploadRequest uploadRequest = DifyFileUploadRequest.builder() - .inputStream(fileStream) - .fileName(fileCode) - .user(DIFY_USER_ID) - .build(); + // 2. 上传文件到 Dify + DifyFileUploadRequest uploadRequest = DifyFileUploadRequest.builder() + .inputStream(fileStream) + .fileName(fileRecord.getFileName()) + .user(DIFY_USER_ID) + .build(); - AlitaResult uploadResult = DifyClient.uploadFile(apiKey, uploadRequest); - Assert.isTrue(uploadResult.getSuccess() , - "上传文件到 Dify 失败,fileCode: " + fileCode + ", error: " + uploadResult.getMsg()); + AlitaResult uploadResult = DifyClient.uploadFile(apiKey, uploadRequest); + Assert.isTrue(uploadResult.getSuccess() , + "上传文件到 Dify 失败,fileCode: " + fileCode + ", error: " + uploadResult.getMsg()); - DifyFileUploadResponse uploadResponse = uploadResult.getData(); - String difyFileJson = JsonUtils.toJsonString(uploadResponse); - // 3. 更新 difyFileJson 字段 - FileRisk updateFileRisk = FileRisk.builder() - .id(fileRiskDTO.getId()) - .difyFileJson(difyFileJson) - .build(); - fileRiskMapper.updateEntitySelective(updateFileRisk); + DifyFileUploadResponse uploadResponse = uploadResult.getData(); + String difyFileJson = JsonUtils.toJsonString(uploadResponse); + // 3. 更新 difyFileJson 字段 + FileRisk updateFileRisk = FileRisk.builder() + .id(fileRiskDTO.getId()) + .difyFileJson(difyFileJson) + .build(); + fileRiskMapper.updateEntitySelective(updateFileRisk); - // 更新 DTO - fileRiskDTO.setDifyFileJson(difyFileJson); + // 更新 DTO + fileRiskDTO.setDifyFileJson(difyFileJson); + + return uploadResponse; + } catch (Exception e) { + throw new BusinessException(e); + } - return uploadResponse; } /** @@ -272,7 +285,8 @@ public class FileRiskServiceImpl implements FileRiskService { */ private String parseMaxRiskLevel(DifyChatResponse chatResponse) { Map resultMap = JsonUtils.toMap(chatResponse.getAnswer()); - return String.valueOf(resultMap.get("max_risk_level")); + Object level = resultMap.get("max_risk_level"); + return level == null ? null : String.valueOf(resultMap.get("max_risk_level")); } } diff --git a/src/main/java/com/senmesh/usercenter/org/dto/OrgCreateDTO.java b/src/main/java/com/senmesh/usercenter/org/dto/OrgCreateDTO.java index 5b67296..48c644b 100644 --- a/src/main/java/com/senmesh/usercenter/org/dto/OrgCreateDTO.java +++ b/src/main/java/com/senmesh/usercenter/org/dto/OrgCreateDTO.java @@ -12,6 +12,7 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Builder; +import lombok.Builder.Default; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -28,8 +29,9 @@ public class OrgCreateDTO extends BaseOperateDTO{ private static final long serialVersionUID = 7745034806528023290L; @ApiModelProperty("机构类型") - @NotEmpty(message = "机构类型不能为空") - private String type; +// @NotEmpty(message = "机构类型不能为空") + @Default + private String type = "2"; @ApiModelProperty("机构名称") @NotBlank(message = "机构名称不能为空") private String orgName; @@ -37,12 +39,12 @@ public class OrgCreateDTO extends BaseOperateDTO{ @Expression(type = ValidProviderEnum.PHONE, message = "管理员手机号格式不正确") private String phone; - @NotBlank(message = "管理员姓名不能为空") +// @NotBlank(message = "管理员姓名不能为空") @ApiModelProperty("管理员姓名") private String realName; @ApiModelProperty("唯一社会信用代码") - @Expression(type = ValidProviderEnum.CREDIT_CODE, message = "统一社会信用代码格式错误") +// @Expression(type = ValidProviderEnum.CREDIT_CODE, message = "统一社会信用代码格式错误") private String creditCode; @ApiModelProperty("企业所在地") // @NotBlank(message = "企业所在地不能为空") @@ -64,7 +66,7 @@ public class OrgCreateDTO extends BaseOperateDTO{ /** * 注册地址 */ - @NotBlank(message = "企业注册地址不能为空") +// @NotBlank(message = "企业注册地址不能为空") private String registeredAddress; /** @@ -85,7 +87,7 @@ public class OrgCreateDTO extends BaseOperateDTO{ /** * 企业所在地 地点全称 */ - @NotBlank(message = "企业经营地址不能为空") +// @NotBlank(message = "企业经营地址不能为空") private String addressName; /** diff --git a/src/main/java/com/senmesh/usercenter/org/service/impl/OrgServiceImpl.java b/src/main/java/com/senmesh/usercenter/org/service/impl/OrgServiceImpl.java index 605256c..2b314aa 100644 --- a/src/main/java/com/senmesh/usercenter/org/service/impl/OrgServiceImpl.java +++ b/src/main/java/com/senmesh/usercenter/org/service/impl/OrgServiceImpl.java @@ -95,7 +95,7 @@ public class OrgServiceImpl implements OrgService { Integer orgType = Integer.valueOf(orgCreateDTO.getType()); // 分配权限包 - permissionOrganizationService.saveOrgByType(orgId, orgType); +// permissionOrganizationService.saveOrgByType(orgId, orgType); // orgrelation上下级 orgRelationService.create(OrgRelationCreateDTO.builder().orgId(orgId).orgType(orgType) .platformCode(EnvironmentUtils.getSystemCode()).parentId(orgCreateDTO.getParentId()).build()); diff --git a/src/main/java/com/senmesh/usercenter/user/dao/UserExtensionMapper.java b/src/main/java/com/senmesh/usercenter/user/dao/UserExtensionMapper.java index 3280ccc..fc0baa9 100644 --- a/src/main/java/com/senmesh/usercenter/user/dao/UserExtensionMapper.java +++ b/src/main/java/com/senmesh/usercenter/user/dao/UserExtensionMapper.java @@ -13,7 +13,7 @@ import org.apache.ibatis.annotations.Select; */ public interface UserExtensionMapper extends MyMapper { - @Select("select * from uc_user_extension where deleted = 0 and user_id = #{userId}") + @Select("select * from uc_user_extension where deleted = false and user_id = #{userId}") UserExtensionDTO getByUserId(@Param("userId") Long userId); } diff --git a/src/main/java/com/senmesh/usercenter/user/util/UserUtils.java b/src/main/java/com/senmesh/usercenter/user/util/UserUtils.java index a292452..11d668f 100644 --- a/src/main/java/com/senmesh/usercenter/user/util/UserUtils.java +++ b/src/main/java/com/senmesh/usercenter/user/util/UserUtils.java @@ -51,13 +51,8 @@ public class UserUtils { public static void setInitUserNameAndPasswordToCreateUser(User user, Boolean administrator) { //创建用户的时候就给手机号绑定状态改为已绑定 user.setPhoneBinding(true); - if (Boolean.TRUE.equals(administrator)) { - user.setUsername("lgsc"+user.getPhone()); - user.setPassword(PasswordUtils.encode("lgsc123567")); - }else { - user.setUsername("ou"+user.getPhone()); - user.setPassword(PasswordUtils.encode("ou123567")); - } + user.setUsername("ou"+user.getPhone()); + user.setPassword(PasswordUtils.encode("ou123567")); } public static String dealNickname(String nickname, String phone) { diff --git a/src/main/resources/META-INF/spring.factories b/src/main/resources/META-INF/spring.factories index 2f9c1c7..4d5667e 100644 --- a/src/main/resources/META-INF/spring.factories +++ b/src/main/resources/META-INF/spring.factories @@ -1,4 +1,5 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.senmesh.common.CommonConfiguration,\ +com.senmesh.codegenerator.config.CodeConfiguration,\ com.senmesh.frame.redis.config.RedisCacheConfig,\ com.senmesh.frame.redis.redisson.RedissonConfig \ No newline at end of file diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index e72e281..fa650c3 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -58,10 +58,8 @@ file.transfer.unpack-risk-check=false #发号器 #机器id:根据ip自己定义 -code.snowflake.workid.192.168.71.5=23 -code.snowflake.workid.192.168.1.47=24 -code.snowflake.workid.121.37.2.171=1 -code.snowflake.workid.139.159.237.199=2 +code.snowflake.workid.192.168.71.4=1 + ##redis配置 @@ -116,7 +114,7 @@ sms.phoneSms= #dify配置 -dify.enable=false +dify.enable=true dify.host=http://114.242.42.23:8501 # 规则生成 API Key dify.risk.rule.api-key=app-agFkKV5EsAEZfCC6wGSDraak