feat:即时通消息通知
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
package com.sdm.common.feign.impl.system;
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.sdm.common.common.SdmResponse;
|
||||
import com.sdm.common.entity.req.system.SendMsgReq;
|
||||
import com.sdm.common.feign.inter.system.ISysExternalFeignClient;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
|
||||
@Slf4j
|
||||
@Component
|
||||
public class SysExtetnalFeignClientImpl implements ISysExternalFeignClient {
|
||||
|
||||
@Autowired
|
||||
private ISysExternalFeignClient sysExternalFeignClient;
|
||||
|
||||
@Override
|
||||
public SdmResponse syncMessage(SendMsgReq req) {
|
||||
SdmResponse response=null ;
|
||||
try {
|
||||
response = sysExternalFeignClient.syncMessage(req);
|
||||
if(response==null || !response.isSuccess()){
|
||||
log.error("syncMessage failed response:{}", JSONObject.toJSONString(Optional.ofNullable(response)));
|
||||
return SdmResponse.failed("同步即时通消息通知失败");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("syncMessage error response:{}", JSONObject.toJSONString(Optional.ofNullable(response)));
|
||||
return SdmResponse.failed("同步即时通消息通知异常");
|
||||
}
|
||||
return response;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package com.sdm.common.feign.inter.system;
|
||||
|
||||
import com.sdm.common.common.SdmResponse;
|
||||
import com.sdm.common.entity.req.system.SendMsgReq;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
|
||||
@FeignClient(name = "system",contextId = "systemExternalClient")
|
||||
public interface ISysExternalFeignClient {
|
||||
|
||||
@PostMapping("/external/syncMessage")
|
||||
SdmResponse syncMessage(@RequestBody SendMsgReq req);
|
||||
}
|
||||
@@ -70,9 +70,12 @@ public class ExperimentResultReq extends BaseReq {
|
||||
private String uploadTaskId;
|
||||
|
||||
// -------------------------------------------------------编辑使用---------------------------------------------------
|
||||
@Schema(description = "删除的附件")
|
||||
private List<Long> deleteFileIds;
|
||||
|
||||
@Schema(description = "新增的附件")
|
||||
private List<ExperimentResultReq> addFileInfoList = new ArrayList<>();
|
||||
|
||||
@Schema(description = "新增的截图")
|
||||
private ExperimentResultReq addImageInfo;
|
||||
}
|
||||
|
||||
@@ -1607,6 +1607,7 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
|
||||
String fileIds = oldFileIds.stream().map(String::valueOf).collect(Collectors.joining(","));
|
||||
experimentResult.setFileId(fileIds);
|
||||
simulationExpResultService.updateById(experimentResult);
|
||||
// 删除文件
|
||||
if (CollectionUtils.isNotEmpty(deleteFileIds)) {
|
||||
for (Long deleteFileId : deleteFileIds) {
|
||||
DelFileReq delFileReq = new DelFileReq();
|
||||
|
||||
@@ -827,6 +827,7 @@ public class TaskServiceImpl implements ITaskService {
|
||||
performanceNodePo.setProjectName(eachTaskVo.getProjectName());
|
||||
performanceNodePo.setPhaseName(eachTaskVo.getPhaseName());
|
||||
performanceNodePo.setDisciplineName(eachTaskVo.getDisciplineName());
|
||||
performanceNodePo.setTaskName(eachTaskVo.getTaskName());
|
||||
performanceNodePo.setPMemberList(eachTaskVo.getPMembers());
|
||||
}
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
|
||||
@@ -583,6 +583,7 @@
|
||||
<if test="name != null and name != ''">
|
||||
and nodeName like CONCAT('%',#{name},'%')
|
||||
</if>
|
||||
order by createTime desc
|
||||
</select>
|
||||
|
||||
<select id="queryPerformanceNodeExtrasByNodeIdList" resultType="com.sdm.project.model.po.PerformanceNodeExtraPo">
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.sdm.system.controller;
|
||||
|
||||
|
||||
import com.sdm.common.common.SdmResponse;
|
||||
import com.sdm.common.entity.req.system.SendMsgReq;
|
||||
import com.sdm.common.feign.inter.system.ISysExternalFeignClient;
|
||||
import com.sdm.system.service.ISimulationExternalService;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
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.RestController;
|
||||
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/external")
|
||||
@Tag(name = "外部第三方接口模块")
|
||||
public class SimulationExternalController implements ISysExternalFeignClient {
|
||||
|
||||
@Autowired
|
||||
private ISimulationExternalService externalService;
|
||||
|
||||
@PostMapping("/syncMessage")
|
||||
public SdmResponse syncMessage(@RequestBody SendMsgReq req) {
|
||||
return externalService.syncMsgToFreelink(req);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -27,7 +27,7 @@ import java.util.List;
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/systemLog")
|
||||
@Tag(name = "系统评审")
|
||||
@Tag(name = "日志模块")
|
||||
public class SystemLogController implements ISysLogFeignClient {
|
||||
|
||||
@Autowired
|
||||
|
||||
@@ -3,9 +3,13 @@ package com.sdm.system.model.thirdparty;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
@Schema(description = "即时通消息通知参数")
|
||||
public class FreeLinkParamDto {
|
||||
public class FreeLinkParamDto implements Serializable {
|
||||
private static final long serialVersionUID = 8272571598104873762L;
|
||||
|
||||
@Schema(description = "接收人工号")
|
||||
private String id;
|
||||
@@ -20,7 +24,7 @@ public class FreeLinkParamDto {
|
||||
private String msg;
|
||||
|
||||
@Schema(description = "消息类型 默认text")
|
||||
private String type;
|
||||
private String type = "text";
|
||||
|
||||
@Schema(description = "业务系统APPID")
|
||||
private String freelinkAppId = "d7eb3ef7c8e8c93e7c6e978fee848646";
|
||||
|
||||
17
system/src/main/java/com/sdm/system/model/thirdparty/FreeLinkResp.java
vendored
Normal file
17
system/src/main/java/com/sdm/system/model/thirdparty/FreeLinkResp.java
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
package com.sdm.system.model.thirdparty;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
public class FreeLinkResp implements Serializable {
|
||||
private static final long serialVersionUID = -5931003868521599036L;
|
||||
|
||||
private Integer code;
|
||||
private String msg;
|
||||
private String status;
|
||||
private String data;
|
||||
private String fileSize;
|
||||
|
||||
}
|
||||
@@ -10,6 +10,6 @@ import org.springframework.web.bind.annotation.RequestBody;
|
||||
*/
|
||||
public interface ISimulationExternalService {
|
||||
|
||||
SdmResponse syncMsgToFreelink(FreeLinkParamDto req);
|
||||
SdmResponse syncMsgToFreelink(SendMsgReq req);
|
||||
|
||||
}
|
||||
|
||||
@@ -3,11 +3,15 @@ package com.sdm.system.service.impl;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.sdm.common.common.SdmResponse;
|
||||
import com.sdm.common.common.ThreadLocalContext;
|
||||
import com.sdm.common.entity.req.system.SendMsgReq;
|
||||
import com.sdm.common.entity.req.system.UserQueryReq;
|
||||
import com.sdm.common.entity.resp.system.CIDUserResp;
|
||||
import com.sdm.common.feign.impl.system.SysUserFeignClientImpl;
|
||||
import com.sdm.common.utils.HttpClientUtil;
|
||||
import com.sdm.system.model.thirdparty.FreeLinkParamDto;
|
||||
import com.sdm.system.model.thirdparty.FreeLinkResp;
|
||||
import com.sdm.system.service.ISimulationExternalService;
|
||||
import com.sdm.system.service.ISimulationMessageService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
@@ -24,15 +28,32 @@ public class SimulationExternalServiceImpl implements ISimulationExternalService
|
||||
@Autowired
|
||||
private HttpClientUtil httpClientUtil;
|
||||
|
||||
@Autowired
|
||||
private SysUserFeignClientImpl sysUserFeignClient;
|
||||
|
||||
@Override
|
||||
public SdmResponse syncMsgToFreelink(FreeLinkParamDto req) {
|
||||
public SdmResponse syncMsgToFreelink(SendMsgReq req) {
|
||||
// 同步即时通
|
||||
FreeLinkParamDto paramDto = new FreeLinkParamDto();
|
||||
// 根据userId查询工号
|
||||
UserQueryReq userReq = new UserQueryReq();
|
||||
userReq.setUserId(Long.valueOf(req.getUserId()));
|
||||
userReq.setTenantId(ThreadLocalContext.getTenantId());
|
||||
SdmResponse<CIDUserResp> sdmResponse = sysUserFeignClient.queryUserDetail(userReq);
|
||||
if (sdmResponse.getData() != null) {
|
||||
paramDto.setId(sdmResponse.getData().getUsername());
|
||||
}
|
||||
paramDto.setId("05687");
|
||||
paramDto.setMsg(req.getContent());
|
||||
|
||||
String url = freeLinkUrl;
|
||||
try {
|
||||
log.info("[syncMsgToFreelink] url:{}, param:{}", url, JSONUtil.toJsonStr(req));
|
||||
String resultString = httpClientUtil.doPostJson(url, JSON.toJSONString(req));
|
||||
SdmResponse response = JSON.parseObject(resultString, SdmResponse.class);
|
||||
if (response.isSuccess()) {
|
||||
return response;
|
||||
log.info("[syncMsgToFreelink] url:{}, param:{}", url, JSONUtil.toJsonStr(paramDto));
|
||||
String resultString = httpClientUtil.doPostJson(url, JSON.toJSONString(paramDto));
|
||||
log.info("[syncMsgToFreelink] url:{}, result:{}", url, resultString);
|
||||
FreeLinkResp response = JSON.parseObject(resultString, FreeLinkResp.class);
|
||||
if (0 == response.getCode()) {
|
||||
return SdmResponse.success(response);
|
||||
}
|
||||
return SdmResponse.failed("同步即时通消息通知失败:");
|
||||
} catch (Exception e) {
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.alibaba.fastjson2.JSON;
|
||||
import com.sdm.common.common.SdmResponse;
|
||||
import com.sdm.common.entity.req.system.SendMsgReq;
|
||||
import com.sdm.common.utils.HttpClientUtil;
|
||||
import com.sdm.system.service.ISimulationExternalService;
|
||||
import com.sdm.system.service.ISimulationMessageService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -25,6 +26,9 @@ public class SimulationMessageServiceImpl implements ISimulationMessageService {
|
||||
@Autowired
|
||||
private HttpClientUtil httpClientUtil;
|
||||
|
||||
@Autowired
|
||||
private ISimulationExternalService externalService;
|
||||
|
||||
@Override
|
||||
public SdmResponse sendMessage(SendMsgReq req) {
|
||||
String url = cidUrl + sendMessagePath;
|
||||
@@ -33,6 +37,11 @@ public class SimulationMessageServiceImpl implements ISimulationMessageService {
|
||||
String resultString = httpClientUtil.doPostJson(url, JSON.toJSONString(req));
|
||||
SdmResponse response = JSON.parseObject(resultString, SdmResponse.class);
|
||||
if (response.isSuccess()) {
|
||||
// 同步即时通
|
||||
SdmResponse sdmResponse = externalService.syncMsgToFreelink(req);
|
||||
if (!sdmResponse.isSuccess()) {
|
||||
return sdmResponse;
|
||||
}
|
||||
return response;
|
||||
}
|
||||
return SdmResponse.failed("发送消息通知失败:");
|
||||
|
||||
@@ -173,6 +173,11 @@ cid:
|
||||
log:
|
||||
saveLog: /spdm-log/saveLog
|
||||
|
||||
thirdparty:
|
||||
api:
|
||||
# 即时通消息通知
|
||||
freeLinkUrl: http://freelink.haihui.com/wechat/InformApi/FreelinkAndDingdingInform
|
||||
|
||||
security:
|
||||
whitelist:
|
||||
paths:
|
||||
|
||||
@@ -173,6 +173,11 @@ cid:
|
||||
log:
|
||||
saveLog: /spdm-log/saveLog
|
||||
|
||||
thirdparty:
|
||||
api:
|
||||
# 即时通消息通知
|
||||
freeLinkUrl: http://freelink.haihui.com/wechat/InformApi/FreelinkAndDingdingInform
|
||||
|
||||
security:
|
||||
whitelist:
|
||||
paths:
|
||||
|
||||
@@ -173,6 +173,11 @@ cid:
|
||||
log:
|
||||
saveLog: /spdm-log/saveLog
|
||||
|
||||
thirdparty:
|
||||
api:
|
||||
# 即时通消息通知
|
||||
freeLinkUrl: http://freelink.haihui.com/wechat/InformApi/FreelinkAndDingdingInform
|
||||
|
||||
security:
|
||||
whitelist:
|
||||
paths:
|
||||
|
||||
Reference in New Issue
Block a user