credential = credentialMapper.selectByAppId(appId.trim())
.filter(item -> Boolean.TRUE.equals(item.getEnabled()));
if (credential.isEmpty()) {
log.debug("[API-PORTAL] 未找到 appId={} 的有效凭证", appId);
@@ -147,13 +125,6 @@ public class ApiClientCredentialServiceImpl implements ApiClientCredentialServic
return credential;
}
- private void invalidateCache(String appId) {
- if (!StringUtils.hasText(appId)) {
- return;
- }
- credentialCache.invalidate(appId.trim());
- }
-
private void normalizeAnonymousSettings(ApiClientCredentialSaveReqVO reqVO) {
if (Boolean.TRUE.equals(reqVO.getAllowAnonymous())) {
if (reqVO.getAnonymousUserId() == null) {
diff --git a/zt-module-infra/pom.xml b/zt-module-infra/pom.xml
index 9449137e..843c64bc 100644
--- a/zt-module-infra/pom.xml
+++ b/zt-module-infra/pom.xml
@@ -11,6 +11,7 @@
zt-module-infra-api
zt-module-infra-server
+ zt-module-infra-server-app
zt-module-infra
pom
diff --git a/zt-module-infra/zt-module-infra-api/src/main/java/com/zt/plat/module/infra/api/file/dto/FileRespDTO.java b/zt-module-infra/zt-module-infra-api/src/main/java/com/zt/plat/module/infra/api/file/dto/FileRespDTO.java
index 01093d15..58af4c9a 100644
--- a/zt-module-infra/zt-module-infra-api/src/main/java/com/zt/plat/module/infra/api/file/dto/FileRespDTO.java
+++ b/zt-module-infra/zt-module-infra-api/src/main/java/com/zt/plat/module/infra/api/file/dto/FileRespDTO.java
@@ -34,4 +34,7 @@ public class FileRespDTO {
@Schema(description = "文件内容", requiredMode = Schema.RequiredMode.REQUIRED)
private byte[] content;
+ @Schema(description = "文件下载次数")
+ private Integer downloadCount;
+
}
\ No newline at end of file
diff --git a/zt-module-infra/zt-module-infra-server/Dockerfile b/zt-module-infra/zt-module-infra-server-app/Dockerfile
similarity index 81%
rename from zt-module-infra/zt-module-infra-server/Dockerfile
rename to zt-module-infra/zt-module-infra-server-app/Dockerfile
index 49d73456..cdcdd75f 100644
--- a/zt-module-infra/zt-module-infra-server/Dockerfile
+++ b/zt-module-infra/zt-module-infra-server-app/Dockerfile
@@ -3,10 +3,10 @@
FROM 172.16.46.66:10043/base-service/eclipse-temurin:21-jre
## 创建目录,并使用它作为工作目录
-RUN mkdir -p /zt-module-infra-server
-WORKDIR /zt-module-infra-server
+RUN mkdir -p /zt-module-infra-server-app
+WORKDIR /zt-module-infra-server-app
## 将后端项目的 Jar 文件,复制到镜像中
-COPY ./target/zt-module-infra-server.jar app.jar
+COPY ./target/zt-module-infra-server-app.jar app.jar
## 设置 TZ 时区
## 设置 JAVA_OPTS 环境变量,可通过 docker run -e "JAVA_OPTS=" 进行覆盖
diff --git a/zt-module-infra/zt-module-infra-server-app/pom.xml b/zt-module-infra/zt-module-infra-server-app/pom.xml
new file mode 100644
index 00000000..eddab4ec
--- /dev/null
+++ b/zt-module-infra/zt-module-infra-server-app/pom.xml
@@ -0,0 +1,48 @@
+
+
+ 4.0.0
+
+ zt-module-infra
+ com.zt.plat
+ ${revision}
+
+ zt-module-infra-server-app
+ jar
+ ${project.artifactId}
+
+ infra 模块启动器。
+
+
+
+
+
+
+ com.zt.plat
+ zt-module-infra-server
+ ${revision}
+
+
+
+
+
+
+ ${project.artifactId}
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ ${spring.boot.version}
+
+
+
+ repackage
+
+
+
+
+
+
+
diff --git a/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/InfraServerApplication.java b/zt-module-infra/zt-module-infra-server-app/src/main/java/com/zt/plat/module/infra/InfraServerApplication.java
similarity index 100%
rename from zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/InfraServerApplication.java
rename to zt-module-infra/zt-module-infra-server-app/src/main/java/com/zt/plat/module/infra/InfraServerApplication.java
diff --git a/zt-module-infra/zt-module-infra-server/src/main/resources/application-dev.yaml b/zt-module-infra/zt-module-infra-server-app/src/main/resources/application-dev.yaml
similarity index 100%
rename from zt-module-infra/zt-module-infra-server/src/main/resources/application-dev.yaml
rename to zt-module-infra/zt-module-infra-server-app/src/main/resources/application-dev.yaml
diff --git a/zt-module-infra/zt-module-infra-server/src/main/resources/application-local.yaml b/zt-module-infra/zt-module-infra-server-app/src/main/resources/application-local.yaml
similarity index 100%
rename from zt-module-infra/zt-module-infra-server/src/main/resources/application-local.yaml
rename to zt-module-infra/zt-module-infra-server-app/src/main/resources/application-local.yaml
diff --git a/zt-module-infra/zt-module-infra-server/src/main/resources/application.yaml b/zt-module-infra/zt-module-infra-server-app/src/main/resources/application.yaml
similarity index 100%
rename from zt-module-infra/zt-module-infra-server/src/main/resources/application.yaml
rename to zt-module-infra/zt-module-infra-server-app/src/main/resources/application.yaml
diff --git a/zt-module-report/zt-module-report-server/src/main/resources/logback-spring.xml b/zt-module-infra/zt-module-infra-server-app/src/main/resources/logback-spring.xml
similarity index 100%
rename from zt-module-report/zt-module-report-server/src/main/resources/logback-spring.xml
rename to zt-module-infra/zt-module-infra-server-app/src/main/resources/logback-spring.xml
diff --git a/zt-module-infra/zt-module-infra-server/pom.xml b/zt-module-infra/zt-module-infra-server/pom.xml
index 14aea4ae..74a12724 100644
--- a/zt-module-infra/zt-module-infra-server/pom.xml
+++ b/zt-module-infra/zt-module-infra-server/pom.xml
@@ -149,24 +149,5 @@
-
-
- ${project.artifactId}
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
- ${spring.boot.version}
-
-
-
- repackage
-
-
-
-
-
-
diff --git a/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/controller/admin/file/FileController.java b/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/controller/admin/file/FileController.java
index 101a2654..d4b971a9 100644
--- a/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/controller/admin/file/FileController.java
+++ b/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/controller/admin/file/FileController.java
@@ -133,6 +133,10 @@ public class FileController {
response.setStatus(HttpStatus.NOT_FOUND.value());
return;
}
+
+ // 统计下载次数
+ fileService.incDownloadCount(configId,path);
+
writeAttachment(response, path, content);
}
diff --git a/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/controller/admin/file/vo/file/FileRespVO.java b/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/controller/admin/file/vo/file/FileRespVO.java
index 161cf629..6d4d12f4 100644
--- a/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/controller/admin/file/vo/file/FileRespVO.java
+++ b/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/controller/admin/file/vo/file/FileRespVO.java
@@ -99,4 +99,7 @@ public class FileRespVO {
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
private LocalDateTime createTime;
+ @Schema(description = "下载次数")
+ private Integer downloadCount;
+
}
diff --git a/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/dal/dataobject/file/FileDO.java b/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/dal/dataobject/file/FileDO.java
index 131ea253..c82c0e3c 100644
--- a/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/dal/dataobject/file/FileDO.java
+++ b/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/dal/dataobject/file/FileDO.java
@@ -65,6 +65,11 @@ public class FileDO extends BaseDO {
*/
private String aesIv;
+ /**
+ * 文件下载次数统计
+ */
+ private Integer downloadCount;
+
/**
* 是否加密
*
diff --git a/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/dal/mysql/file/FileMapper.java b/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/dal/mysql/file/FileMapper.java
index df330c49..9857cdc2 100644
--- a/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/dal/mysql/file/FileMapper.java
+++ b/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/dal/mysql/file/FileMapper.java
@@ -6,6 +6,8 @@ import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.zt.plat.module.infra.controller.admin.file.vo.file.FilePageReqVO;
import com.zt.plat.module.infra.dal.dataobject.file.FileDO;
import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Update;
/**
* 文件操作 Mapper
@@ -32,4 +34,7 @@ public interface FileMapper extends BaseMapperX {
return selectFirstOne(FileDO::getHash, hash);
}
+
+ @Update("UPDATE INFRA_FILE SET DOWNLOAD_COUNT = DOWNLOAD_COUNT + 1 WHERE CONFIG_ID = #{configId} AND PATH = #{path}")
+ int incDownloadCount(@Param("configId") Long configId, @Param("path") String path);
}
diff --git a/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/service/file/FileService.java b/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/service/file/FileService.java
index 96e6b3d4..6624810c 100644
--- a/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/service/file/FileService.java
+++ b/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/service/file/FileService.java
@@ -112,4 +112,11 @@ public interface FileService {
FileDO getActiveFileById(Long fileId);
boolean verifyCode(Long fileId, Long userId, String code) throws Exception;
+
+ /**
+ * 更新文件下载次数
+ * @param configId
+ * @param path
+ */
+ void incDownloadCount(Long configId, String path);
}
diff --git a/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/service/file/FileServiceImpl.java b/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/service/file/FileServiceImpl.java
index 2c62ec69..14f42c77 100644
--- a/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/service/file/FileServiceImpl.java
+++ b/zt-module-infra/zt-module-infra-server/src/main/java/com/zt/plat/module/infra/service/file/FileServiceImpl.java
@@ -334,4 +334,9 @@ public class FileServiceImpl implements FileService {
}
}
+ @Override
+ public void incDownloadCount(Long configId, String path) {
+ fileMapper.incDownloadCount(configId, path);
+ }
+
}
diff --git a/zt-module-report/pom.xml b/zt-module-report/pom.xml
index ed8f8079..5068a3d5 100644
--- a/zt-module-report/pom.xml
+++ b/zt-module-report/pom.xml
@@ -11,6 +11,7 @@
zt-module-report-api
zt-module-report-server
+ zt-module-report-server-app
zt-module-report
pom
diff --git a/zt-module-report/zt-module-report-server/Dockerfile b/zt-module-report/zt-module-report-server-app/Dockerfile
similarity index 81%
rename from zt-module-report/zt-module-report-server/Dockerfile
rename to zt-module-report/zt-module-report-server-app/Dockerfile
index 0a9a86cf..32367c0b 100644
--- a/zt-module-report/zt-module-report-server/Dockerfile
+++ b/zt-module-report/zt-module-report-server-app/Dockerfile
@@ -3,10 +3,10 @@
FROM 172.16.46.66:10043/base-service/eclipse-temurin:21-jre
## 创建目录,并使用它作为工作目录
-RUN mkdir -p /zt-module-report-server
-WORKDIR /zt-module-report-server
+RUN mkdir -p /zt-module-report-server-app
+WORKDIR /zt-module-report-server-app
## 将后端项目的 Jar 文件,复制到镜像中
-COPY ./target/zt-module-report-server.jar app.jar
+COPY ./target/zt-module-report-server-app.jar app.jar
## 设置 TZ 时区
## 设置 JAVA_OPTS 环境变量,可通过 docker run -e "JAVA_OPTS=" 进行覆盖
diff --git a/zt-module-report/zt-module-report-server-app/pom.xml b/zt-module-report/zt-module-report-server-app/pom.xml
new file mode 100644
index 00000000..504549b2
--- /dev/null
+++ b/zt-module-report/zt-module-report-server-app/pom.xml
@@ -0,0 +1,48 @@
+
+
+ 4.0.0
+
+ zt-module-report
+ com.zt.plat
+ ${revision}
+
+ zt-module-report-server-app
+ jar
+ ${project.artifactId}
+
+ report 模块启动器。
+
+
+
+
+
+
+ com.zt.plat
+ zt-module-report-server
+ ${revision}
+
+
+
+
+
+
+ ${project.artifactId}
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ ${spring.boot.version}
+
+
+
+ repackage
+
+
+
+
+
+
+
diff --git a/zt-module-report/zt-module-report-server/src/main/java/com/zt/plat/module/report/ReportServerApplication.java b/zt-module-report/zt-module-report-server-app/src/main/java/com/zt/plat/module/report/ReportServerApplication.java
similarity index 100%
rename from zt-module-report/zt-module-report-server/src/main/java/com/zt/plat/module/report/ReportServerApplication.java
rename to zt-module-report/zt-module-report-server-app/src/main/java/com/zt/plat/module/report/ReportServerApplication.java
diff --git a/zt-module-report/zt-module-report-server/src/main/resources/application-dev.yaml b/zt-module-report/zt-module-report-server-app/src/main/resources/application-dev.yaml
similarity index 100%
rename from zt-module-report/zt-module-report-server/src/main/resources/application-dev.yaml
rename to zt-module-report/zt-module-report-server-app/src/main/resources/application-dev.yaml
diff --git a/zt-module-report/zt-module-report-server/src/main/resources/application-local.yaml b/zt-module-report/zt-module-report-server-app/src/main/resources/application-local.yaml
similarity index 100%
rename from zt-module-report/zt-module-report-server/src/main/resources/application-local.yaml
rename to zt-module-report/zt-module-report-server-app/src/main/resources/application-local.yaml
diff --git a/zt-module-report/zt-module-report-server/src/main/resources/application.yaml b/zt-module-report/zt-module-report-server-app/src/main/resources/application.yaml
similarity index 100%
rename from zt-module-report/zt-module-report-server/src/main/resources/application.yaml
rename to zt-module-report/zt-module-report-server-app/src/main/resources/application.yaml
diff --git a/zt-module-system/zt-module-system-server/src/main/resources/logback-spring.xml b/zt-module-report/zt-module-report-server-app/src/main/resources/logback-spring.xml
similarity index 100%
rename from zt-module-system/zt-module-system-server/src/main/resources/logback-spring.xml
rename to zt-module-report/zt-module-report-server-app/src/main/resources/logback-spring.xml
diff --git a/zt-module-report/zt-module-report-server/pom.xml b/zt-module-report/zt-module-report-server/pom.xml
index 0b259188..981e64fc 100644
--- a/zt-module-report/zt-module-report-server/pom.xml
+++ b/zt-module-report/zt-module-report-server/pom.xml
@@ -111,23 +111,4 @@
-
-
- ${project.artifactId}
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
- ${spring.boot.version}
-
-
-
- repackage
-
-
-
-
-
-
diff --git a/zt-module-system/pom.xml b/zt-module-system/pom.xml
index 6e186e9c..246b7be0 100644
--- a/zt-module-system/pom.xml
+++ b/zt-module-system/pom.xml
@@ -11,6 +11,7 @@
zt-module-system-api
zt-module-system-server
+ zt-module-system-server-app
zt-module-system
pom
diff --git a/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/api/dept/dto/DeptMsgRespDTO.java b/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/api/dept/dto/DeptMsgRespDTO.java
new file mode 100644
index 00000000..784ce6d5
--- /dev/null
+++ b/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/api/dept/dto/DeptMsgRespDTO.java
@@ -0,0 +1,58 @@
+package com.zt.plat.module.system.api.dept.dto;
+
+import com.zt.plat.framework.common.enums.CommonStatusEnum;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 公司部门推送消息 Response DTO
+ *
+ * @author ZT
+ */
+@Schema(description = "RPC 服务 - 部门推送消息 Response DTO")
+@Data
+public class DeptMsgRespDTO {
+
+
+ /**
+ * 主键编号
+ */
+ private Long id;
+
+ /**
+ * 本系统部门 ID
+ */
+ private Long deptId;
+
+ /**
+ * 外部系统标识
+ */
+ private String systemCode;
+
+ /**
+ * 外部系统组织编码
+ */
+ private String externalDeptCode;
+
+ /**
+ * 外部系统组织名称
+ */
+ private String externalDeptName;
+
+ /**
+ * 映射状态
+ * 枚举 {@link CommonStatusEnum}
+ */
+ private Integer status;
+
+ /**
+ * 备注
+ */
+ private String remark;
+
+ /**
+ * 是否发送消息
+ */
+ private Integer isSendMsg;
+
+}
diff --git a/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/api/esp/EspApi.java b/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/api/esp/EspApi.java
index 54e560a9..b52dbe78 100644
--- a/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/api/esp/EspApi.java
+++ b/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/api/esp/EspApi.java
@@ -2,23 +2,27 @@ package com.zt.plat.module.system.api.esp;
import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.module.system.api.dept.dto.*;
-import com.zt.plat.module.system.api.esp.dto.EspDto;
import com.zt.plat.module.system.enums.ApiConstants;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
-
import java.util.List;
@FeignClient(name = ApiConstants.NAME)
-@Tag(name = "RPC 服务 - 部门")
+@Tag(name = "RPC 服务 - 部门推送消息")
public interface EspApi {
- String PREFIX = ApiConstants.PREFIX + "/dept";
+ String PREFIX = ApiConstants.PREFIX + "/dept-esp";
+
+
+ @PostMapping(PREFIX + "/create")
+ @Operation(summary = "新增部门")
+ CommonResult createDept(@RequestBody DeptSaveReqDTO createReqVO);
+
@PostMapping(PREFIX + "/pushMsg")
- @Operation(summary = "推送消息")
- CommonResult> pushMsg(@RequestBody DeptSaveReqDTO syncReqDTO);
+ @Operation(summary = "查询部门消息")
+ CommonResult> selectDepMsg(@RequestBody DeptSaveReqDTO syncReqDTO);
}
diff --git a/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/api/msg/MsgSendApi.java b/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/api/msg/MsgSendApi.java
new file mode 100644
index 00000000..d701e989
--- /dev/null
+++ b/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/api/msg/MsgSendApi.java
@@ -0,0 +1,72 @@
+package com.zt.plat.module.system.api.msg;
+
+import com.zt.plat.framework.common.pojo.CommonResult;
+import com.zt.plat.module.system.api.sms.dto.log.SmsLogRespDTO;
+import com.zt.plat.module.system.api.sms.dto.send.SmsSendSingleToUserReqDTO;
+import com.zt.plat.module.system.enums.ApiConstants;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.validation.Valid;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+
+@FeignClient(name = ApiConstants.NAME)
+@Tag(name = "RPC 服务 - 消息发送")
+public interface MsgSendApi {
+
+ String PREFIX = ApiConstants.PREFIX + "/msg/send";
+
+ @PostMapping(PREFIX + "/sendTextMsg")
+ @Operation(summary = "发送企业微信文本消息", description = "在 mobile 为空时,使用 userId 加载对应 Admin 的手机号")
+ CommonResult sendTextMsg(@Valid @RequestBody SmsSendSingleToUserReqDTO reqDTO);
+
+ @PostMapping(PREFIX + "/sendImageMsg")
+ @Operation(summary = "发送企业微信图片消息", description = "在 mobile 为空时,使用 userId 加载对应 Member 的手机号")
+ CommonResult sendImageMsg(@Valid @RequestBody SmsSendSingleToUserReqDTO reqDTO);
+
+ @GetMapping(PREFIX + "/sendVoiceMsg")
+ @Operation(summary = "发送企业微信语音消息")
+ CommonResult getSmsLog(@RequestParam("id") Long id);
+
+ @PostMapping(PREFIX + "/sendVideoMsg")
+ @Operation(summary = "发送企业微信视频消息", description = "在 mobile 为空时,使用 userId 加载对应 Admin 的手机号")
+ CommonResult sendVideoMsg(@Valid @RequestBody SmsSendSingleToUserReqDTO reqDTO);
+
+ @PostMapping(PREFIX + "/sendFileMsg")
+ @Operation(summary = "发送企业微信文件消息", description = "在 mobile 为空时,使用 userId 加载对应 Member 的手机号")
+ CommonResult sendFileMsg(@Valid @RequestBody SmsSendSingleToUserReqDTO reqDTO);
+
+ @GetMapping(PREFIX + "/sendTextCardMsg")
+ @Operation(summary = "发送企业微信文本卡片消息")
+ CommonResult sendTextCardMsg(@RequestParam("id") Long id);
+
+ @PostMapping(PREFIX + "/sendTextCardMsgPich01")
+ @Operation(summary = "发送企业微信文本卡片消息 -物资存货智能管理 预警信息", description = "在 mobile 为空时,使用 userId 加载对应 Admin 的手机号")
+ CommonResult sendTextCardMsgPich01(@Valid @RequestBody SmsSendSingleToUserReqDTO reqDTO);
+
+ @PostMapping(PREFIX + "/sendNewsMsg")
+ @Operation(summary = "发送企业微信图文消息", description = "在 mobile 为空时,使用 userId 加载对应 Member 的手机号")
+ CommonResult sendNewsMsg(@Valid @RequestBody SmsSendSingleToUserReqDTO reqDTO);
+
+ @GetMapping(PREFIX + "/sendMpNewsMsg")
+ @Operation(summary = "发送企业微信图文消息(mpnews)")
+ CommonResult sendMpNewsMsg(@RequestParam("id") Long id);
+
+ @PostMapping(PREFIX + "/sendMarkdownMsg")
+ @Operation(summary = "发送企业微信小程序通知消息", description = "在 mobile 为空时,使用 userId 加载对应 Admin 的手机号")
+ CommonResult sendMarkdownMsg(@Valid @RequestBody SmsSendSingleToUserReqDTO reqDTO);
+
+ @PostMapping(PREFIX + "/sendMiniProgramNoticeMsg")
+ @Operation(summary = "发送企业微信图片消息", description = "在 mobile 为空时,使用 userId 加载对应 Member 的手机号")
+ CommonResult sendMiniProgramNoticeMsg(@Valid @RequestBody SmsSendSingleToUserReqDTO reqDTO);
+
+ @GetMapping(PREFIX + "/sendInteractiveTaskCardMsg")
+ @Operation(summary = "发送企业微信任务卡片消息")
+ CommonResult sendInteractiveTaskCardMsg(@RequestParam("id") Long id);
+
+
+}
diff --git a/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/api/sms/dto/code/User.java b/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/api/sms/dto/code/User.java
new file mode 100644
index 00000000..dfc3eea0
--- /dev/null
+++ b/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/api/sms/dto/code/User.java
@@ -0,0 +1,44 @@
+package com.zt.plat.module.system.api.sms.dto.code;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+
+@Data
+@Accessors(chain = true)
+public class User implements Serializable {
+ /**
+ * 返回码
+ */
+ private Integer errcode;
+ /**
+ * 对返回码的文本描述内容
+ */
+ private String errmsg;
+
+ /**
+ * 成员UserID
+ */
+ private String UserId;
+
+ /**
+ * 手机设备号(由中铝集团在安装时随机生成,删除重装会改变,升级不受影响)
+ */
+ private String DeviceId;
+
+ /**
+ * 成员身份信息,2:超级管理员, 4:分级管理员,5:普通成员
+ */
+ private Integer usertype;
+
+
+ /**
+ * 判断受否授权成功
+ *
+ * @return true-授权成功、false-授权失败
+ */
+ public boolean isAuthorized() {
+ return this.getErrcode() == 0;
+ }
+}
diff --git a/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/api/sms/dto/send/SmsSendSingleToUserReqDTO.java b/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/api/sms/dto/send/SmsSendSingleToUserReqDTO.java
index e2e6f221..5471bab3 100644
--- a/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/api/sms/dto/send/SmsSendSingleToUserReqDTO.java
+++ b/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/api/sms/dto/send/SmsSendSingleToUserReqDTO.java
@@ -4,7 +4,6 @@ import com.zt.plat.framework.common.validation.Mobile;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
-
import java.util.Map;
@Schema(description = "RPC 服务 - 短信发送给 Admin 或者 Member 用户 Request DTO")
diff --git a/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/api/user/dto/AdminUserRespDTO.java b/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/api/user/dto/AdminUserRespDTO.java
index 60fada58..57bec45e 100644
--- a/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/api/user/dto/AdminUserRespDTO.java
+++ b/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/api/user/dto/AdminUserRespDTO.java
@@ -4,6 +4,7 @@ import com.fhs.core.trans.vo.VO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
+import java.time.LocalDateTime;
import java.util.List;
import java.util.Set;
@@ -20,6 +21,12 @@ public class AdminUserRespDTO implements VO {
@Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "小王")
private String nickname;
+ @Schema(description = "工号", example = "A00123")
+ private String workcode;
+
+ @Schema(description = "备注", example = "我是一个用户")
+ private String remark;
+
@Schema(description = "租户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
private Long tenantId;
diff --git a/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/enums/ApiConstants.java b/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/enums/ApiConstants.java
index 71f2cfac..6d12eb2b 100644
--- a/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/enums/ApiConstants.java
+++ b/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/enums/ApiConstants.java
@@ -11,7 +11,6 @@ public class ApiConstants {
/**
* 服务名
- *
* 注意,需要保证和 spring.application.name 保持一致
*/
public static final String NAME = "system-server";
diff --git a/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/enums/ErrorCodeConstants.java b/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/enums/ErrorCodeConstants.java
index fd2aee37..41f4e40e 100644
--- a/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/enums/ErrorCodeConstants.java
+++ b/zt-module-system/zt-module-system-api/src/main/java/com/zt/plat/module/system/enums/ErrorCodeConstants.java
@@ -108,6 +108,9 @@ public interface ErrorCodeConstants {
ErrorCode SMS_CHANNEL_DISABLE = new ErrorCode(1_002_011_001, "短信渠道不处于开启状态,不允许选择");
ErrorCode SMS_CHANNEL_HAS_CHILDREN = new ErrorCode(1_002_011_002, "无法删除,该短信渠道还有短信模板");
ErrorCode SMS_CHANNEL_BALANCE_UNSUPPORTED = new ErrorCode(1_002_011_003, "该短信渠道不支持余额查询");
+ ErrorCode MSG_CHANNEL_NOT_EXISTS = new ErrorCode(1_002_011_004, "消息渠道不存在");
+
+
// ========== 短信模板 1-002-012-000 ==========
ErrorCode SMS_TEMPLATE_NOT_EXISTS = new ErrorCode(1_002_012_000, "短信模板不存在");
@@ -122,6 +125,7 @@ public interface ErrorCodeConstants {
ErrorCode SMS_SEND_MOBILE_TEMPLATE_PARAM_MISS = new ErrorCode(1_002_013_001, "模板参数({})缺失");
ErrorCode SMS_SEND_TEMPLATE_NOT_EXISTS = new ErrorCode(1_002_013_002, "短信模板不存在");
ErrorCode SMS_CALLBACK_SIGN_INVALID = new ErrorCode(1_002_013_100, "短信回调签名校验失败");
+ ErrorCode MSG_CALLBACK_SIGN_INVALID = new ErrorCode(1_002_013_101, "消息回调签名校验失败");
// ========== 短信验证码 1-002-014-000 ==========
ErrorCode SMS_CODE_NOT_FOUND = new ErrorCode(1_002_014_000, "验证码不存在");
@@ -206,6 +210,8 @@ public interface ErrorCodeConstants {
// ========== 用户与部门关系 1-002-029-000 ==========
ErrorCode USER_DEPT_NOT_EXISTS = new ErrorCode(1_002_029_000, "用户与部门关系不存在");
+ ErrorCode USER_DEPT_SAVE_EXISTS = new ErrorCode(1_002_029_001, "插入用户部门失败");
+
// ========== 系统序列号分段明细 1-002-030-000 ==========
ErrorCode SEQUENCE_DETAIL_NOT_EXISTS = new ErrorCode(1_002_030_000, "系统序列号分段明细不存在");
diff --git a/zt-module-system/zt-module-system-server/Dockerfile b/zt-module-system/zt-module-system-server-app/Dockerfile
similarity index 81%
rename from zt-module-system/zt-module-system-server/Dockerfile
rename to zt-module-system/zt-module-system-server-app/Dockerfile
index 6e8a12d8..fed0ffb7 100644
--- a/zt-module-system/zt-module-system-server/Dockerfile
+++ b/zt-module-system/zt-module-system-server-app/Dockerfile
@@ -3,10 +3,10 @@
FROM 172.16.46.66:10043/base-service/eclipse-temurin:21-jre
## 创建目录,并使用它作为工作目录
-RUN mkdir -p /zt-module-system-server
-WORKDIR /zt-module-system-server
+RUN mkdir -p /zt-module-system-server-app
+WORKDIR /zt-module-system-server-app
## 将后端项目的 Jar 文件,复制到镜像中
-COPY ./target/zt-module-system-server.jar app.jar
+COPY ./target/zt-module-system-server-app.jar app.jar
## 设置 TZ 时区
## 设置 JAVA_OPTS 环境变量,可通过 docker run -e "JAVA_OPTS=" 进行覆盖
diff --git a/zt-module-system/zt-module-system-server-app/pom.xml b/zt-module-system/zt-module-system-server-app/pom.xml
new file mode 100644
index 00000000..247a6418
--- /dev/null
+++ b/zt-module-system/zt-module-system-server-app/pom.xml
@@ -0,0 +1,48 @@
+
+
+ 4.0.0
+
+ zt-module-system
+ com.zt.plat
+ ${revision}
+
+ zt-module-system-server-app
+ jar
+ ${project.artifactId}
+
+ system 模块启动器。
+
+
+
+
+
+
+ com.zt.plat
+ zt-module-system-server
+ ${revision}
+
+
+
+
+
+
+ ${project.artifactId}
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ ${spring.boot.version}
+
+
+
+ repackage
+
+
+
+
+
+
+
diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/SystemServerApplication.java b/zt-module-system/zt-module-system-server-app/src/main/java/com/zt/plat/module/system/SystemServerApplication.java
similarity index 100%
rename from zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/SystemServerApplication.java
rename to zt-module-system/zt-module-system-server-app/src/main/java/com/zt/plat/module/system/SystemServerApplication.java
diff --git a/zt-module-system/zt-module-system-server/src/main/resources/application-dev.yaml b/zt-module-system/zt-module-system-server-app/src/main/resources/application-dev.yaml
similarity index 100%
rename from zt-module-system/zt-module-system-server/src/main/resources/application-dev.yaml
rename to zt-module-system/zt-module-system-server-app/src/main/resources/application-dev.yaml
diff --git a/zt-module-system/zt-module-system-server/src/main/resources/application-local.yaml b/zt-module-system/zt-module-system-server-app/src/main/resources/application-local.yaml
similarity index 100%
rename from zt-module-system/zt-module-system-server/src/main/resources/application-local.yaml
rename to zt-module-system/zt-module-system-server-app/src/main/resources/application-local.yaml
diff --git a/zt-module-system/zt-module-system-server/src/main/resources/application.yaml b/zt-module-system/zt-module-system-server-app/src/main/resources/application.yaml
similarity index 100%
rename from zt-module-system/zt-module-system-server/src/main/resources/application.yaml
rename to zt-module-system/zt-module-system-server-app/src/main/resources/application.yaml
diff --git a/zt-module-infra/zt-module-infra-server/src/main/resources/logback-spring.xml b/zt-module-system/zt-module-system-server-app/src/main/resources/logback-spring.xml
similarity index 97%
rename from zt-module-infra/zt-module-infra-server/src/main/resources/logback-spring.xml
rename to zt-module-system/zt-module-system-server-app/src/main/resources/logback-spring.xml
index 3acd4d89..d68b13bb 100644
--- a/zt-module-infra/zt-module-infra-server/src/main/resources/logback-spring.xml
+++ b/zt-module-system/zt-module-system-server-app/src/main/resources/logback-spring.xml
@@ -103,4 +103,8 @@
+
+
+
+
diff --git a/zt-module-system/zt-module-system-server/pom.xml b/zt-module-system/zt-module-system-server/pom.xml
index b20de884..264fc7f0 100644
--- a/zt-module-system/zt-module-system-server/pom.xml
+++ b/zt-module-system/zt-module-system-server/pom.xml
@@ -200,26 +200,14 @@
hutool-all
+
+ org.apache.commons
+ commons-text
+ 1.13.1
+ compile
+
+
-
-
- ${project.artifactId}
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
- ${spring.boot.version}
-
-
-
- repackage
-
-
-
-
-
-
diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/api/databus/DatabusDeptProviderApiImpl.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/api/databus/DatabusDeptProviderApiImpl.java
index 909845dc..326d1d3d 100644
--- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/api/databus/DatabusDeptProviderApiImpl.java
+++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/api/databus/DatabusDeptProviderApiImpl.java
@@ -41,7 +41,7 @@ public class DatabusDeptProviderApiImpl implements DatabusDeptProviderApi {
public CommonResult> getPageByCursor(CursorPageReqDTO reqDTO) {
// 构建游标查询条件
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
-
+ queryWrapper.eq(DeptDO::getDeptSource, 3);
// 游标条件:create_time > cursorTime OR (create_time = cursorTime AND id > cursorId)
if (!reqDTO.isFirstPage()) {
queryWrapper.and(w -> w
@@ -105,6 +105,7 @@ public class DatabusDeptProviderApiImpl implements DatabusDeptProviderApi {
Long total = null;
if (reqDTO.isFirstPage()) {
LambdaQueryWrapper countWrapper = new LambdaQueryWrapper<>();
+ countWrapper.eq(DeptDO::getDeptSource, 3);
if (reqDTO.getTenantId() != null) {
countWrapper.eq(DeptDO::getTenantId, reqDTO.getTenantId());
}
@@ -175,6 +176,8 @@ public class DatabusDeptProviderApiImpl implements DatabusDeptProviderApi {
@Override
public CommonResult count(Long tenantId) {
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
+ // ⚠️ 只统计 userSource = 3 的用户
+ queryWrapper.eq(DeptDO::getDeptSource, 3);
if (tenantId != null) {
queryWrapper.eq(DeptDO::getTenantId, tenantId);
}
diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/api/databus/DatabusUserProviderApiImpl.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/api/databus/DatabusUserProviderApiImpl.java
index f6b9050a..3157ad2c 100644
--- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/api/databus/DatabusUserProviderApiImpl.java
+++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/api/databus/DatabusUserProviderApiImpl.java
@@ -54,8 +54,8 @@ public class DatabusUserProviderApiImpl implements DatabusUserProviderApi {
// 构建游标查询条件
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
- // ⚠️ 只同步 userSource = 2 的用户
- queryWrapper.eq(AdminUserDO::getUserSource, 2);
+ // ⚠️ 只同步 userSource = 3 的用户
+ queryWrapper.eq(AdminUserDO::getUserSource, 3);
// 游标条件:create_time > cursorTime OR (create_time = cursorTime AND id > cursorId)
if (!reqDTO.isFirstPage()) {
@@ -103,8 +103,8 @@ public class DatabusUserProviderApiImpl implements DatabusUserProviderApi {
Long total = null;
if (reqDTO.isFirstPage()) {
LambdaQueryWrapper countWrapper = new LambdaQueryWrapper<>();
- // ⚠️ 只统计 userSource = 2 的用户
- countWrapper.eq(AdminUserDO::getUserSource, 2);
+ // ⚠️ 只统计 userSource = 3 的用户
+ countWrapper.eq(AdminUserDO::getUserSource, 3);
if (reqDTO.getTenantId() != null) {
countWrapper.eq(AdminUserDO::getTenantId, reqDTO.getTenantId());
}
@@ -148,8 +148,8 @@ public class DatabusUserProviderApiImpl implements DatabusUserProviderApi {
@Override
public CommonResult count(Long tenantId) {
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
- // ⚠️ 只统计 userSource = 2 的用户
- queryWrapper.eq(AdminUserDO::getUserSource, 2);
+ // ⚠️ 只统计 userSource = 3 的用户
+ queryWrapper.eq(AdminUserDO::getUserSource, 3);
if (tenantId != null) {
queryWrapper.eq(AdminUserDO::getTenantId, tenantId);
}
diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/api/esp/EspApiImpl.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/api/esp/EspApiImpl.java
index 97c8a031..c787504d 100644
--- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/api/esp/EspApiImpl.java
+++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/api/esp/EspApiImpl.java
@@ -2,15 +2,17 @@ package com.zt.plat.module.system.api.esp;
import com.zt.plat.framework.common.exception.enums.GlobalErrorCodeConstants;
import com.zt.plat.framework.common.pojo.CommonResult;
-import com.zt.plat.framework.common.util.object.ObjectUtils;
+import com.zt.plat.framework.common.util.object.BeanUtils;
+import com.zt.plat.module.system.api.dept.dto.DeptMsgRespDTO;
import com.zt.plat.module.system.api.dept.dto.DeptSaveReqDTO;
-import com.zt.plat.module.system.api.esp.dto.EspDto;
+import com.zt.plat.module.system.controller.admin.dept.vo.dept.DeptSaveReqVO;
import com.zt.plat.module.system.service.dept.IEspService;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Objects;
+import static com.zt.plat.framework.common.pojo.CommonResult.success;
@RestController
@Validated
@@ -18,16 +20,26 @@ public class EspApiImpl implements EspApi {
@Resource
- private IEspService deptService;
+ private IEspService espService;
+
+
@Override
- public CommonResult> pushMsg(DeptSaveReqDTO syncReqDTO)
+ public CommonResult createDept(DeptSaveReqDTO createReqVO) {
+ DeptSaveReqVO reqVO = BeanUtils.toBean(createReqVO, DeptSaveReqVO.class);
+ Long deptId = espService.createDept(reqVO);
+ return success(deptId);
+ }
+
+
+ @Override
+ public CommonResult> selectDepMsg(DeptSaveReqDTO syncReqDTO)
{
if(Objects.isNull(syncReqDTO) || null == syncReqDTO.getId())
{
return CommonResult.error(GlobalErrorCodeConstants.BAD_REQUEST.getCode(),
"ID不能为空");
}
- return CommonResult.success(deptService.pushMsg(syncReqDTO));
+ return espService.selectDepMsg(syncReqDTO);
}
}
diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/api/msg/MsgSendApiImpl.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/api/msg/MsgSendApiImpl.java
new file mode 100644
index 00000000..5ab314c8
--- /dev/null
+++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/api/msg/MsgSendApiImpl.java
@@ -0,0 +1,84 @@
+package com.zt.plat.module.system.api.msg;
+
+import com.zt.plat.framework.common.pojo.CommonResult;
+import com.zt.plat.framework.common.util.object.BeanUtils;
+import com.zt.plat.module.system.api.sms.dto.log.SmsLogRespDTO;
+import com.zt.plat.module.system.api.sms.dto.send.SmsSendSingleToUserReqDTO;
+import com.zt.plat.module.system.service.sms.SmsLogService;
+import com.zt.plat.module.system.service.sms.SmsSendService;
+import jakarta.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RestController;
+import static com.zt.plat.framework.common.pojo.CommonResult.success;
+
+@RestController
+@Validated
+public class MsgSendApiImpl implements MsgSendApi {
+
+ @Resource
+ private SmsSendService smsSendService;
+ @Resource
+ private SmsLogService smsLogService;
+
+
+ @Override
+ public CommonResult sendTextMsg(SmsSendSingleToUserReqDTO reqDTO) {
+ return null;
+ }
+
+ @Override
+ public CommonResult sendImageMsg(SmsSendSingleToUserReqDTO reqDTO) {
+ return null;
+ }
+
+ @Override
+ public CommonResult getSmsLog(Long id) {
+ return success(BeanUtils.toBean(smsLogService.getSmsLog(id), SmsLogRespDTO.class));
+ }
+
+ @Override
+ public CommonResult sendVideoMsg(SmsSendSingleToUserReqDTO reqDTO) {
+ return null;
+ }
+
+ @Override
+ public CommonResult sendFileMsg(SmsSendSingleToUserReqDTO reqDTO) {
+ return null;
+ }
+
+ @Override
+ public CommonResult sendTextCardMsg(Long id) {
+ return null;
+ }
+
+ @Override
+ public CommonResult sendTextCardMsgPich01(SmsSendSingleToUserReqDTO reqDTO) {
+ return null;
+ }
+
+ @Override
+ public CommonResult sendNewsMsg(SmsSendSingleToUserReqDTO reqDTO) {
+ return null;
+ }
+
+ @Override
+ public CommonResult sendMpNewsMsg(Long id) {
+ return null;
+ }
+
+ @Override
+ public CommonResult sendMarkdownMsg(SmsSendSingleToUserReqDTO reqDTO) {
+ return null;
+ }
+
+ @Override
+ public CommonResult sendMiniProgramNoticeMsg(SmsSendSingleToUserReqDTO reqDTO) {
+ return null;
+ }
+
+ @Override
+ public CommonResult sendInteractiveTaskCardMsg(Long id) {
+ return null;
+ }
+
+}
diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/auth/AuthController.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/auth/AuthController.java
index ca3fb848..08430f4d 100644
--- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/auth/AuthController.java
+++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/auth/AuthController.java
@@ -12,6 +12,7 @@ import com.zt.plat.module.system.controller.admin.auth.vo.*;
import com.zt.plat.module.system.convert.auth.AuthConvert;
import com.zt.plat.module.system.dal.dataobject.permission.MenuDO;
import com.zt.plat.module.system.dal.dataobject.permission.RoleDO;
+import com.zt.plat.module.system.dal.dataobject.permission.RoleMenuDO;
import com.zt.plat.module.system.dal.dataobject.user.AdminUserDO;
import com.zt.plat.module.system.enums.logger.LoginLogTypeEnum;
import com.zt.plat.module.system.service.auth.AdminAuthService;
@@ -33,7 +34,9 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Collections;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import static com.zt.plat.framework.common.pojo.CommonResult.success;
@@ -126,7 +129,18 @@ public class AuthController {
// 1.3 获得菜单列表
Set menuIds = permissionService.getRoleMenuListByRoleId(convertSet(roles, RoleDO::getId));
List menuList = menuService.getMenuList(menuIds);
+ Set roleMenuList = permissionService.getByRoleIdAndMenuIds(roleIds, menuIds);
+ Map roleMenuMap = new HashMap<>(roleMenuList.size());
+ for (RoleMenuDO roleMenu : roleMenuList) {
+ roleMenuMap.put(roleMenu.getMenuId(), roleMenu);
+ }
menuList = menuService.filterDisableMenus(menuList);
+ for (MenuDO menu : menuList) {
+ RoleMenuDO roleMenu = roleMenuMap.get(menu.getId());
+ if (roleMenu != null && roleMenu.getShowMenu() != null && !roleMenu.getShowMenu()) {
+ menu.setVisible(false);
+ }
+ }
// 2. 拼接结果返回
return success(AuthConvert.INSTANCE.convert(user, roles, menuList));
diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/dept/DeptController.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/dept/DeptController.java
index 93876898..54ba9b37 100644
--- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/dept/DeptController.java
+++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/dept/DeptController.java
@@ -123,7 +123,7 @@ public class DeptController {
@GetMapping("/top-level-list")
@Operation(summary = "获取当前用户可访问的顶级部门列表", description = "用于懒加载,返回当前用户所属部门的最顶层祖先部门,如果用户没有关联任何部门则返回空列表")
- @PreAuthorize("@ss.hasPermission('system:dept:query')")
+// @PreAuthorize("@ss.hasPermission('system:dept:query')")
public CommonResult> getTopLevelDeptList() {
List list = deptService.getTopLevelDeptList();
return success(BeanUtils.toBean(list, DeptRespVO.class));
diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/permission/PermissionController.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/permission/PermissionController.java
index f34ec982..d84bc342 100644
--- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/permission/PermissionController.java
+++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/permission/PermissionController.java
@@ -6,11 +6,13 @@ import com.zt.plat.framework.common.enums.CommonStatusEnum;
import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.framework.common.util.collection.CollectionUtils;
import com.zt.plat.module.system.controller.admin.permission.vo.permission.PermissionAssignRoleDataScopeReqVO;
+import com.zt.plat.module.system.controller.admin.permission.vo.permission.PermissionAssignRoleMenuItemReqVO;
import com.zt.plat.module.system.controller.admin.permission.vo.permission.PermissionAssignRoleMenuReqVO;
import com.zt.plat.module.system.controller.admin.permission.vo.permission.PermissionAssignUserRoleReqVO;
import com.zt.plat.module.system.controller.admin.permission.vo.permission.PermissionUserSupervisionRespVO;
import com.zt.plat.module.system.dal.dataobject.permission.MenuDO;
import com.zt.plat.module.system.dal.dataobject.permission.RoleDO;
+import com.zt.plat.module.system.dal.dataobject.permission.RoleMenuDO;
import com.zt.plat.module.system.dal.dataobject.user.AdminUserDO;
import com.zt.plat.module.system.enums.permission.MenuTypeEnum;
import com.zt.plat.module.system.service.permission.MenuService;
@@ -57,8 +59,16 @@ public class PermissionController {
@Parameter(name = "roleId", description = "角色编号", required = true)
@GetMapping("/list-role-menus")
@PreAuthorize("@ss.hasPermission('system:permission:assign-role-menu')")
- public CommonResult> getRoleMenuList(Long roleId) {
- return success(permissionService.getRoleMenuListByRoleId(roleId));
+ public CommonResult> getRoleMenuList(Long roleId) {
+ Set menuIds = permissionService.getRoleMenuListByRoleId(roleId);
+ Set menuList = permissionService.getByRoleIdAndMenuIds(Collections.singleton(roleId), menuIds);
+ Set result = menuList.stream().map(menu -> {
+ PermissionAssignRoleMenuItemReqVO reqVO = new PermissionAssignRoleMenuItemReqVO();
+ reqVO.setId(menu.getMenuId());
+ reqVO.setShowMenu(menu.getShowMenu());
+ return reqVO;
+ }).collect(Collectors.toSet());
+ return success(result);
}
@PostMapping("/assign-role-menu")
@@ -66,10 +76,13 @@ public class PermissionController {
@PreAuthorize("@ss.hasPermission('system:permission:assign-role-menu')")
public CommonResult assignRoleMenu(@Validated @RequestBody PermissionAssignRoleMenuReqVO reqVO) {
// 开启多租户的情况下,需要过滤掉未开通的菜单
- tenantService.handleTenantMenu(menuIds -> reqVO.getMenuIds().removeIf(menuId -> !CollUtil.contains(menuIds, menuId)));
+ tenantService.handleTenantMenu(menuIds -> reqVO.getMenus().removeIf(menu -> !CollUtil.contains(menuIds, menu.getId())));
// 执行菜单的分配
- permissionService.assignRoleMenu(reqVO.getRoleId(), reqVO.getMenuIds());
+ permissionService.assignRoleMenu(reqVO.getRoleId(), reqVO.getMenus().stream().map(PermissionAssignRoleMenuItemReqVO::getId).collect(Collectors.toSet()));
+
+ // 更新菜单的显示状态
+ permissionService.updateMenuDisplay(reqVO.getRoleId(), reqVO.getMenus());
return success(true);
}
diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/permission/vo/permission/PermissionAssignRoleMenuItemReqVO.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/permission/vo/permission/PermissionAssignRoleMenuItemReqVO.java
new file mode 100644
index 00000000..0d038266
--- /dev/null
+++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/permission/vo/permission/PermissionAssignRoleMenuItemReqVO.java
@@ -0,0 +1,22 @@
+package com.zt.plat.module.system.controller.admin.permission.vo.permission;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+
+@Schema(description = "管理后台 - 赋予角色菜单--菜单列表 Request VO")
+@Data
+public class PermissionAssignRoleMenuItemReqVO {
+
+ @Schema(description = "菜单ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
+ @NotNull(message = "菜单ID不能为空")
+ private Long id;
+
+ @Schema(description = "是否显示菜单,默认显示(true)")
+ private Boolean showMenu = true;
+
+ @Schema(description = "是否显示菜单按钮是否点击过(避免大量更新数据,只更新点击过的)")
+ private Boolean showMenuChanged = false;
+
+}
diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/permission/vo/permission/PermissionAssignRoleMenuReqVO.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/permission/vo/permission/PermissionAssignRoleMenuReqVO.java
index 6e8f740c..bf9e2421 100644
--- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/permission/vo/permission/PermissionAssignRoleMenuReqVO.java
+++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/permission/vo/permission/PermissionAssignRoleMenuReqVO.java
@@ -15,7 +15,7 @@ public class PermissionAssignRoleMenuReqVO {
@NotNull(message = "角色编号不能为空")
private Long roleId;
- @Schema(description = "菜单编号列表", example = "1,3,5")
- private Set menuIds = Collections.emptySet(); // 兜底
+ @Schema(description = "菜单编列表")
+ private Set menus = Collections.emptySet(); // 兜底
}
diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/sms/MsgCallBackController.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/sms/MsgCallBackController.java
new file mode 100644
index 00000000..6f1d0afb
--- /dev/null
+++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/sms/MsgCallBackController.java
@@ -0,0 +1,18 @@
+package com.zt.plat.module.system.controller.admin.sms;
+
+import com.zt.plat.module.system.service.sms.SmsSendService;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.Resource;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Tag(name = "管理后台 - 消息回调")
+@RestController
+@RequestMapping("/system/sms/callback")
+public class MsgCallBackController {
+
+
+ @Resource
+ private SmsSendService smsSendService;
+
+}
diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/sms/SmsCallbackController.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/sms/SmsCallbackController.java
index f41e8712..99888ad6 100644
--- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/sms/SmsCallbackController.java
+++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/sms/SmsCallbackController.java
@@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
import static com.zt.plat.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - 短信回调")
@@ -73,4 +74,13 @@ public class SmsCallbackController {
return success(true);
}
+ @PostMapping("/zle")
+ @PermitAll
+ @TenantIgnore
+ @Operation(summary = "中铝e办短信的回调")
+ public CommonResult receiveZleSmsStatus(@RequestBody String requestBody) throws Throwable {
+ smsSendService.receiveSmsStatus(SmsChannelEnum.ZLE.getCode(), requestBody);
+ return success(true);
+ }
+
}
\ No newline at end of file
diff --git a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/sms/SmsTemplateController.java b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/sms/SmsTemplateController.java
index a14d8776..e80ce844 100644
--- a/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/sms/SmsTemplateController.java
+++ b/zt-module-system/zt-module-system-server/src/main/java/com/zt/plat/module/system/controller/admin/sms/SmsTemplateController.java
@@ -6,11 +6,10 @@ import com.zt.plat.framework.common.pojo.PageParam;
import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.common.util.object.BeanUtils;
import com.zt.plat.framework.excel.core.util.ExcelUtils;
-import com.zt.plat.module.system.controller.admin.sms.vo.template.SmsTemplatePageReqVO;
-import com.zt.plat.module.system.controller.admin.sms.vo.template.SmsTemplateRespVO;
-import com.zt.plat.module.system.controller.admin.sms.vo.template.SmsTemplateSaveReqVO;
-import com.zt.plat.module.system.controller.admin.sms.vo.template.SmsTemplateSendReqVO;
+import com.zt.plat.module.system.controller.admin.sms.vo.msg.TextMessage;
+import com.zt.plat.module.system.controller.admin.sms.vo.template.*;
import com.zt.plat.module.system.dal.dataobject.sms.SmsTemplateDO;
+import com.zt.plat.module.system.service.msg.ISendMsgService;
import com.zt.plat.module.system.service.sms.SmsSendService;
import com.zt.plat.module.system.service.sms.SmsTemplateService;
import io.swagger.v3.oas.annotations.Operation;
@@ -19,13 +18,13 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
-
import java.io.IOException;
import java.util.List;
-
import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static com.zt.plat.framework.common.exception.enums.GlobalErrorCodeConstants.BAD_REQUEST;
import static com.zt.plat.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - 短信模板")
@@ -37,6 +36,8 @@ public class SmsTemplateController {
private SmsTemplateService smsTemplateService;
@Resource
private SmsSendService smsSendService;
+ @Resource
+ private ISendMsgService sendMsgService;
@PostMapping("/create")
@Operation(summary = "创建短信模板")
@@ -100,4 +101,18 @@ public class SmsTemplateController {
sendReqVO.getTemplateCode(), sendReqVO.getTemplateParams()));
}
+ @PostMapping("/send-msg")
+ @Operation(summary = "发送消息")
+ @PreAuthorize("@ss.hasPermission('system:sms-template:send-msg')")
+ public CommonResult