REQ-3057-card-2: 指定机器人发送消息
This commit is contained in:
parent
6bb8123daa
commit
76eedce01e
@ -22,6 +22,11 @@ import java.util.Set;
|
||||
@AllArgsConstructor
|
||||
public class SendTemplateMessageParam {
|
||||
|
||||
/**
|
||||
* 指定发送机器人
|
||||
*/
|
||||
private String sendRobotAccount;
|
||||
|
||||
/**
|
||||
* 发送人
|
||||
*/
|
||||
|
||||
@ -60,6 +60,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import static cn.axzo.im.config.BizResultCode.ALL_PERSSON_TYPE_NOT_EMPTY;
|
||||
import static cn.axzo.im.config.BizResultCode.SEND_IM_ACCOUNT_MAX;
|
||||
@ -176,13 +177,17 @@ public class MessageController implements MessageApi {
|
||||
log.info("sendTemplateMessageAsync, request={}", request);
|
||||
BizAssertions.assertTrue(request.getSender() != null || StringUtils.isNotBlank(request.getMsgTemplateId()),
|
||||
"消息模板ID和发送人必须选其一");
|
||||
PersonAccountAttribute sender = request.getSender();
|
||||
String sendImAccount;
|
||||
if (sender != null) {
|
||||
if (StringUtils.isNotBlank(request.getSendRobotAccount())) {
|
||||
UserAccountResp robotAccount = findRobotAccount(request.getSendRobotAccount()).orElse(null);
|
||||
BizAssertions.assertNotNull(robotAccount, String.format(
|
||||
"找不到指定的机器人账号: %s", request.getSendRobotAccount()));
|
||||
sendImAccount = request.getSendRobotAccount();
|
||||
} else if (request.getSender() != null) {
|
||||
AccountAbsentQuery accountQuery = new AccountAbsentQuery();
|
||||
accountQuery.setAppType(sender.getAppType().toNimAppType().getCode());
|
||||
accountQuery.setPersonId(sender.getPersonId());
|
||||
accountQuery.setOuId(sender.getOuId());
|
||||
accountQuery.setAppType(request.getSender().getAppType().toNimAppType().getCode());
|
||||
accountQuery.setPersonId(request.getSender().getPersonId());
|
||||
accountQuery.setOuId(request.getSender().getOuId());
|
||||
List<UserAccountResp> accounts = accountService.registerAccountIfAbsent(accountQuery);
|
||||
sendImAccount = accounts.get(0).getImAccount();
|
||||
} else {
|
||||
@ -305,6 +310,16 @@ public class MessageController implements MessageApi {
|
||||
return robotImAccount;
|
||||
}
|
||||
|
||||
private Optional<UserAccountResp> findRobotAccount(String robotId) {
|
||||
AccountQuery accountQuery = new AccountQuery();
|
||||
accountQuery.setAccountId(robotId);
|
||||
accountQuery.setAppType(AppTypeEnum.SYSTEM.getCode());
|
||||
List<UserAccountResp> accounts = accountService.queryAccountInfo(accountQuery);
|
||||
if (CollectionUtils.isEmpty(accounts))
|
||||
return Optional.empty();
|
||||
return Optional.of(accounts.get(0));
|
||||
}
|
||||
|
||||
public MessageTaskResp toMessageTaskResp(MessageTask messageTask) {
|
||||
MessageTaskResp messageTaskResp = MessageTaskResp.builder().build();
|
||||
BeanUtils.copyProperties(messageTask, messageTaskResp);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user