fix(0): [java]-[mvn]-接口调用报错修复
This commit is contained in:
parent
943b7b71c1
commit
97d233bf5d
2
clients/java/wechat-ferry-mvn/CHANGELOG.md
vendored
2
clients/java/wechat-ferry-mvn/CHANGELOG.md
vendored
@ -19,7 +19,7 @@
|
|||||||
| 发送XML消息 | /send/xmlMsg | ? | 待测试 |
|
| 发送XML消息 | /send/xmlMsg | ? | 待测试 |
|
||||||
| 发送图片消息 | /send/imageMsg | √ | 已测试 |
|
| 发送图片消息 | /send/imageMsg | √ | 已测试 |
|
||||||
| 发送表情消息 | /send/emojiMsg | x | 该版本不支持 |
|
| 发送表情消息 | /send/emojiMsg | x | 该版本不支持 |
|
||||||
| 发送文件消息 | /send/fileMsg | ? | 待测试 |
|
| 发送文件消息 | /send/fileMsg | x | 该版本不支持 |
|
||||||
| 拍一拍群友 | /patOnePat | √ | 已测试 |
|
| 拍一拍群友 | /patOnePat | √ | 已测试 |
|
||||||
|
|
||||||
### 已知BUG
|
### 已知BUG
|
||||||
|
@ -48,7 +48,7 @@ public class WeChatConfiguration {
|
|||||||
// client.printContacts(client.getContacts());
|
// client.printContacts(client.getContacts());
|
||||||
|
|
||||||
// 获取数据库
|
// 获取数据库
|
||||||
log.info("dbs: {}", wechatSocketClient.getDbNames());
|
// log.info("dbs: {}", wechatSocketClient.getDbNames());
|
||||||
|
|
||||||
// 获取数据库下的表
|
// 获取数据库下的表
|
||||||
String db = "MicroMsg.db";
|
String db = "MicroMsg.db";
|
||||||
|
@ -40,10 +40,10 @@ public class WxPpWcfSendXmlMsgReq {
|
|||||||
private String resourcePath;
|
private String resourcePath;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* XML类型,如:0x21 为小程序
|
* XML类型,如:21 为小程序
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "XML类型不能为空")
|
@NotNull(message = "XML类型不能为空")
|
||||||
@ApiModelProperty(value = "XML类型")
|
@ApiModelProperty(value = "XML类型")
|
||||||
private Integer xmlType;
|
private String xmlType;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,6 @@ public class WxPpWcfDatabaseFieldResp {
|
|||||||
* 字段值
|
* 字段值
|
||||||
*/
|
*/
|
||||||
@ApiModelProperty(value = "字段值")
|
@ApiModelProperty(value = "字段值")
|
||||||
private String value;
|
private Object value;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
package com.wechat.ferry.enums;
|
package com.wechat.ferry.enums;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import org.springframework.util.ObjectUtils;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
@ -61,7 +64,8 @@ public enum WxContactsMixedEnum {
|
|||||||
/**
|
/**
|
||||||
* map集合 key:code val:枚举
|
* map集合 key:code val:枚举
|
||||||
*/
|
*/
|
||||||
public static final Map<String, WxContactsMixedEnum> codeMap = Arrays.stream(values()).collect(Collectors.toMap(WxContactsMixedEnum::getCode, v -> v));
|
public static final Map<String, WxContactsMixedEnum> codeMap =
|
||||||
|
Arrays.stream(values()).collect(Collectors.toMap(WxContactsMixedEnum::getCode, v -> v));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据code获取枚举
|
* 根据code获取枚举
|
||||||
@ -73,7 +77,14 @@ public enum WxContactsMixedEnum {
|
|||||||
/**
|
/**
|
||||||
* map集合 key:code val:名称
|
* map集合 key:code val:名称
|
||||||
*/
|
*/
|
||||||
public static final Map<String, String> codeNameMap = Arrays.stream(values()).collect(Collectors.toMap(WxContactsMixedEnum::getCode, v -> v.name));
|
public static Map<String, String> toCodeNameMap() {
|
||||||
|
Map<String, String> map = new HashMap<>();
|
||||||
|
for (WxContactsMixedEnum val : WxContactsMixedEnum.values()) {
|
||||||
|
if (!ObjectUtils.isEmpty(val.getCode())) {
|
||||||
|
map.put(val.getCode(), val.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,12 @@
|
|||||||
package com.wechat.ferry.enums;
|
package com.wechat.ferry.enums;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import org.springframework.util.ObjectUtils;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
|
|
||||||
@ -69,7 +72,14 @@ public enum WxContactsOfficialEnum {
|
|||||||
/**
|
/**
|
||||||
* map集合 key:code val:名称
|
* map集合 key:code val:名称
|
||||||
*/
|
*/
|
||||||
public static final Map<String, String> codeNameMap =
|
public static Map<String, String> toCodeNameMap() {
|
||||||
Arrays.stream(values()).collect(Collectors.toMap(WxContactsOfficialEnum::getCode, v -> v.name));
|
Map<String, String> map = new HashMap<>();
|
||||||
|
for (WxContactsOfficialEnum val : WxContactsOfficialEnum.values()) {
|
||||||
|
if (!ObjectUtils.isEmpty(val.getCode())) {
|
||||||
|
map.put(val.getCode(), val.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,6 @@ package com.wechat.ferry.service.impl;
|
|||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -176,10 +175,10 @@ public class WeChatDllServiceImpl implements WeChatDllService {
|
|||||||
// 微信类型
|
// 微信类型
|
||||||
if (!ObjectUtils.isEmpty(rpcContact.getWxid())) {
|
if (!ObjectUtils.isEmpty(rpcContact.getWxid())) {
|
||||||
// 官方杂号集合
|
// 官方杂号集合
|
||||||
Map<String, String> mixedNoMap = WxContactsMixedEnum.codeNameMap;
|
Map<String, String> mixedNoMap = WxContactsMixedEnum.toCodeNameMap();
|
||||||
mixedNoMap.putAll(convertContactsTypeProperties(weChatFerryProperties.getContactsTypeMixed()));
|
mixedNoMap.putAll(convertContactsTypeProperties(weChatFerryProperties.getContactsTypeMixed()));
|
||||||
// 公众号
|
// 公众号
|
||||||
Map<String, String> officialMap = WxContactsOfficialEnum.codeNameMap;
|
Map<String, String> officialMap = WxContactsOfficialEnum.toCodeNameMap();
|
||||||
officialMap.putAll(convertContactsTypeProperties(weChatFerryProperties.getContactsTypeOfficial()));
|
officialMap.putAll(convertContactsTypeProperties(weChatFerryProperties.getContactsTypeOfficial()));
|
||||||
|
|
||||||
// 类型判断,存在优先级的,官方杂号优先级高于微信公众号(如果定义重复了,常规禁止重复,手机端和电脑端分类不同)
|
// 类型判断,存在优先级的,官方杂号优先级高于微信公众号(如果定义重复了,常规禁止重复,手机端和电脑端分类不同)
|
||||||
@ -248,7 +247,7 @@ public class WeChatDllServiceImpl implements WeChatDllService {
|
|||||||
}
|
}
|
||||||
long endTime = System.currentTimeMillis();
|
long endTime = System.currentTimeMillis();
|
||||||
log.info("[查询]-[数据库表列表]-共查到:{}条,耗时:{}ms", list.size(), (endTime - startTime));
|
log.info("[查询]-[数据库表列表]-共查到:{}条,耗时:{}ms", list.size(), (endTime - startTime));
|
||||||
return Collections.emptyList();
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -262,9 +261,15 @@ public class WeChatDllServiceImpl implements WeChatDllService {
|
|||||||
List<WxPpWcfDatabaseFieldResp> fieldVoList = new ArrayList<>();
|
List<WxPpWcfDatabaseFieldResp> fieldVoList = new ArrayList<>();
|
||||||
for (Wcf.DbField dbField : dbRow.getFieldsList()) {
|
for (Wcf.DbField dbField : dbRow.getFieldsList()) {
|
||||||
WxPpWcfDatabaseFieldResp fieldVo = new WxPpWcfDatabaseFieldResp();
|
WxPpWcfDatabaseFieldResp fieldVo = new WxPpWcfDatabaseFieldResp();
|
||||||
|
Object value;
|
||||||
|
if (ObjectUtils.isEmpty(dbField.getType())) {
|
||||||
|
log.warn("未知的SQL类型: {}", dbField.getType());
|
||||||
|
value = dbField.getContent().toByteArray();
|
||||||
|
} else {
|
||||||
|
value = convertSqlVal(dbField.getType(), dbField.getContent());
|
||||||
|
}
|
||||||
fieldVo.setType(String.valueOf(dbField.getType()));
|
fieldVo.setType(String.valueOf(dbField.getType()));
|
||||||
fieldVo.setColumn(dbField.getColumn());
|
fieldVo.setColumn(dbField.getColumn());
|
||||||
String value = (String)converterSqlVal(dbField.getType(), dbField.getContent());
|
|
||||||
fieldVo.setValue(value);
|
fieldVo.setValue(value);
|
||||||
fieldVoList.add(fieldVo);
|
fieldVoList.add(fieldVo);
|
||||||
}
|
}
|
||||||
@ -298,11 +303,11 @@ public class WeChatDllServiceImpl implements WeChatDllService {
|
|||||||
for (Wcf.DbField dbField : dbFieldList) {
|
for (Wcf.DbField dbField : dbFieldList) {
|
||||||
if ("UserName".equals(dbField.getColumn())) {
|
if ("UserName".equals(dbField.getColumn())) {
|
||||||
vo = new WxPpWcfGroupMemberResp();
|
vo = new WxPpWcfGroupMemberResp();
|
||||||
String content = (String)converterSqlVal(dbField.getType(), dbField.getContent());
|
String content = (String)convertSqlVal(dbField.getType(), dbField.getContent());
|
||||||
vo.setWeChatUid(content);
|
vo.setWeChatUid(content);
|
||||||
}
|
}
|
||||||
if ("NickName".equals(dbField.getColumn())) {
|
if ("NickName".equals(dbField.getColumn())) {
|
||||||
String content = (String)converterSqlVal(dbField.getType(), dbField.getContent());
|
String content = (String)convertSqlVal(dbField.getType(), dbField.getContent());
|
||||||
vo.setGroupNickName(content);
|
vo.setGroupNickName(content);
|
||||||
dbMap.put(vo.getWeChatUid(), vo.getGroupNickName());
|
dbMap.put(vo.getWeChatUid(), vo.getGroupNickName());
|
||||||
}
|
}
|
||||||
@ -398,8 +403,13 @@ public class WeChatDllServiceImpl implements WeChatDllService {
|
|||||||
public WxPpWcfSendXmlMsgResp sendXmlMsg(WxPpWcfSendXmlMsgReq request) {
|
public WxPpWcfSendXmlMsgResp sendXmlMsg(WxPpWcfSendXmlMsgReq request) {
|
||||||
long startTime = System.currentTimeMillis();
|
long startTime = System.currentTimeMillis();
|
||||||
log.info("[发送消息]-[XML消息]-入参打印:{}", request);
|
log.info("[发送消息]-[XML消息]-入参打印:{}", request);
|
||||||
|
int xmlType = 0x21;
|
||||||
|
if ("21".equals(request.getXmlType())) {
|
||||||
|
// 小程序
|
||||||
|
xmlType = 0x21;
|
||||||
|
}
|
||||||
Wcf.XmlMsg xmlMsg = Wcf.XmlMsg.newBuilder().setContent(request.getXmlContent()).setReceiver(request.getRecipient())
|
Wcf.XmlMsg xmlMsg = Wcf.XmlMsg.newBuilder().setContent(request.getXmlContent()).setReceiver(request.getRecipient())
|
||||||
.setPath(request.getResourcePath()).setType(request.getXmlType()).build();
|
.setPath(request.getResourcePath()).setType(xmlType).build();
|
||||||
Wcf.Request req = Wcf.Request.newBuilder().setFuncValue(Wcf.Functions.FUNC_SEND_XML_VALUE).setXml(xmlMsg).build();
|
Wcf.Request req = Wcf.Request.newBuilder().setFuncValue(Wcf.Functions.FUNC_SEND_XML_VALUE).setXml(xmlMsg).build();
|
||||||
log.debug("sendXml: {}", wechatSocketClient.bytesToHex(req.toByteArray()));
|
log.debug("sendXml: {}", wechatSocketClient.bytesToHex(req.toByteArray()));
|
||||||
Wcf.Response rsp = wechatSocketClient.sendCmd(req);
|
Wcf.Response rsp = wechatSocketClient.sendCmd(req);
|
||||||
@ -510,7 +520,7 @@ public class WeChatDllServiceImpl implements WeChatDllService {
|
|||||||
* @author chandler
|
* @author chandler
|
||||||
* @date 2024-10-05 12:54
|
* @date 2024-10-05 12:54
|
||||||
*/
|
*/
|
||||||
public Object converterSqlVal(int type, ByteString content) {
|
public Object convertSqlVal(int type, ByteString content) {
|
||||||
// 根据每一列的类型转换
|
// 根据每一列的类型转换
|
||||||
Function<byte[], Object> converter = getSqlType(type);
|
Function<byte[], Object> converter = getSqlType(type);
|
||||||
if (converter != null) {
|
if (converter != null) {
|
||||||
|
Loading…
Reference in New Issue
Block a user