1 加入转账自动收款。
2 群里只处理艾特自己的消息。 3 加入指令 : 余额
This commit is contained in:
16
pom.xml
16
pom.xml
@@ -64,7 +64,23 @@
|
||||
</dependency>
|
||||
<!-- 自己加的 -->
|
||||
|
||||
<dependency>
|
||||
<groupId>org.java-websocket</groupId>
|
||||
<artifactId>Java-WebSocket</artifactId>
|
||||
<version>1.5.1</version>
|
||||
</dependency>
|
||||
<!-- 京东JDK-->
|
||||
<dependency>
|
||||
<groupId>org.codehaus.jackson</groupId>
|
||||
<artifactId>jackson-mapper-asl</artifactId>
|
||||
<version>1.9.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.codehaus.jackson</groupId>
|
||||
<artifactId>jackson-core-asl</artifactId>
|
||||
<version>1.9.2</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
|
||||
BIN
src/lib/open-api-sdk-2.0-2024-10-21.jar
Normal file
BIN
src/lib/open-api-sdk-2.0-2024-10-21.jar
Normal file
Binary file not shown.
@@ -58,7 +58,7 @@ public class WXListener {
|
||||
* }
|
||||
**/
|
||||
@RequestMapping("/message")
|
||||
public String message(@RequestBody String requestBody) {
|
||||
public String message(@RequestBody String requestBody) throws Exception {
|
||||
WxMessage message = JSONObject.parseObject(requestBody, WxMessage.class);
|
||||
wxMessageConsumer.consume(message);
|
||||
return "OK";
|
||||
@@ -70,5 +70,15 @@ public class WXListener {
|
||||
System.out.println(requestBody);
|
||||
return "OK";
|
||||
}
|
||||
@RequestMapping("/receive_msg")
|
||||
public String receiveMsg(@RequestBody String requestBody) throws Exception {
|
||||
|
||||
System.out.println("测试接口收到数据:");
|
||||
System.out.println(requestBody);
|
||||
WxMessage message = JSONObject.parseObject(requestBody, WxMessage.class);
|
||||
wxMessageConsumer.consume(message);
|
||||
|
||||
return "OK";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
package cn.van333.mt2ql.wxMessage.binance;
|
||||
|
||||
import cn.van333.mt2ql.wxMessage.utils.SpringContextUtil;
|
||||
import cn.van333.mt2ql.wxMessage.utils.WXUtil;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import org.java_websocket.client.WebSocketClient;
|
||||
import org.java_websocket.handshake.ServerHandshake;
|
||||
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Leo
|
||||
* @version 1.0
|
||||
* @create 2024/03/11 0011 下午 03:52
|
||||
* @description:
|
||||
*/
|
||||
public class WSClient extends WebSocketClient {
|
||||
private List<JSONObject> dataList = new ArrayList<>();
|
||||
|
||||
public WSClient(String url) throws URISyntaxException {
|
||||
super(new URI(url));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onOpen(ServerHandshake handshakedata) {
|
||||
System.out.println("连接建立");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMessage(String message) {
|
||||
/** 数据结构 {"e":"avgPrice","E":1710146170238,"s":"APTUSDT","i":"5m","w":"13.26427038","T":1710146170230}
|
||||
拿出所有的数据 */
|
||||
JSONObject data = JSONObject.parseObject(message);
|
||||
dataList.add(data);
|
||||
if (dataList.size() == 5) {
|
||||
StringBuilder text = new StringBuilder();
|
||||
for (JSONObject jsonObject : dataList) {
|
||||
String type = jsonObject.getString("s");
|
||||
String price = jsonObject.getString("w");
|
||||
Long start = jsonObject.getLong("T");
|
||||
Long end = jsonObject.getLong("E");
|
||||
text.append(type).append(" ").append(price).append(" ").append(start).append(" ").append(end).append("\n");
|
||||
}
|
||||
WXUtil wxUtil = SpringContextUtil.getBean(WXUtil.class);
|
||||
wxUtil.sendTextMessage("wxid_kr145nk7l0an31", text.toString(), 2, "wxid_kr145nk7l0an31"); // 假设send方法接受List作为参数,如果不是,你需要修改这行代码
|
||||
dataList.clear();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClose(int code, String reason, boolean remote) {
|
||||
System.out.println("连接关闭");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Exception ex) {
|
||||
System.out.println("发生错误: " + ex.getMessage());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package cn.van333.mt2ql.wxMessage.config;
|
||||
|
||||
import cn.van333.mt2ql.wxMessage.binance.WSClient;
|
||||
import org.java_websocket.client.WebSocketClient;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.net.URISyntaxException;
|
||||
|
||||
/**
|
||||
* @author Leo
|
||||
* @version 1.0
|
||||
* @create 2024/03/11 0011 下午 03:57
|
||||
* @description:
|
||||
*/
|
||||
//@Configuration
|
||||
public class WebSocketConfig {
|
||||
private WebSocketClient client;
|
||||
|
||||
@PostConstruct
|
||||
public void init() throws URISyntaxException{
|
||||
//client = new WSClient("wss://data-stream.binance.vision/ws/aptusdt@avgPrice");
|
||||
}
|
||||
|
||||
@Bean
|
||||
public WebSocketClient webSocketClient() {
|
||||
return client;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package cn.van333.mt2ql.wxMessage.config;
|
||||
|
||||
import org.java_websocket.client.WebSocketClient;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
|
||||
/**
|
||||
* @author Leo
|
||||
* @version 1.0
|
||||
* @create 2024/03/11 0011 下午 04:34
|
||||
* @description:
|
||||
*/
|
||||
//@Component
|
||||
public class WebSocketInitializer {
|
||||
|
||||
private final WebSocketClient webSocketClient;
|
||||
|
||||
public WebSocketInitializer(WebSocketClient webSocketClient) {
|
||||
this.webSocketClient = webSocketClient;
|
||||
}
|
||||
|
||||
@PostConstruct
|
||||
public void startWebSocketClient() {
|
||||
webSocketClient.connect();
|
||||
}
|
||||
}
|
||||
@@ -16,23 +16,38 @@ import java.util.Map;
|
||||
|
||||
public enum EventType implements IEnum {
|
||||
/**
|
||||
* 账号变动事件 (10014)
|
||||
* 收到群聊消息 (10008)
|
||||
* 收到私聊消息 (10009)
|
||||
* 自己发出消息 (10010)
|
||||
* 转账事件 (10006)
|
||||
* 撤回事件 (10013)
|
||||
* 好友请求 (10011)
|
||||
* 支付事件 (10007)
|
||||
1 文本消息
|
||||
3 图片消息
|
||||
34 语音消息
|
||||
37 好友确认消息
|
||||
40 好友推荐消息
|
||||
42 共享名片
|
||||
43 视频消息
|
||||
44 主动撤回
|
||||
47 动画表情
|
||||
48 位置消息
|
||||
49 APP分享链接/文件
|
||||
50 VOIP消息
|
||||
51 微信初始化消息
|
||||
52 VOIP结束消息
|
||||
53 VOIP邀请
|
||||
62 小视频
|
||||
*/
|
||||
ACCOUNT_CHANGE(10014, "账号变动事件"),
|
||||
SELF_MESSAGE(10010, "自己发出消息"),
|
||||
TRANSFER_EVENT(10006, "转账事件"),
|
||||
PAY_EVENT(10007, "支付事件"),
|
||||
GROUP_MESSAGE(10008, "收到群聊消息"),
|
||||
PRIVATE_MESSAGE(10009, "收到私聊消息"),
|
||||
REVOKE_EVENT(10013, "撤回事件"),
|
||||
FRIEND_REQUEST(10011, "好友请求");
|
||||
TEXT(1, "文本消息"),
|
||||
IMAGE(3, "图片消息"),
|
||||
VOICE(34, "语音消息"),
|
||||
FRIEND_CONFIRM(37, "好友确认消息"),
|
||||
FRIEND_RECOMMEND(40, "好友推荐消息"),
|
||||
SHARE_CARD(42, "共享名片"),
|
||||
VIDEO(43, "视频消息"),
|
||||
REVOKE(44, "主动撤回"),
|
||||
ANIMATION(47, "动画表情"),
|
||||
LOCATION(48, "位置消息"),
|
||||
APP_SHARE_LINK(49, "APP分享链接/文件"),
|
||||
VOIP(50, "微信初始化消息"),
|
||||
VOIP_END(52, "VOIP结束消息"),
|
||||
VOIP_INVITE(53, "VOIP邀请"),
|
||||
SMALL_VIDEO(62, "小视频");
|
||||
private final int key;
|
||||
|
||||
private final String name;
|
||||
@@ -63,7 +78,7 @@ public enum EventType implements IEnum {
|
||||
return "";
|
||||
}
|
||||
|
||||
public static Map<String, String> getKeyVlue() {
|
||||
public static Map<String, String> getKeyValue() {
|
||||
Map<String, String> map = new HashMap<>();
|
||||
EventType[] items = EventType.values();
|
||||
for (EventType item : items) {
|
||||
|
||||
@@ -13,13 +13,21 @@ import java.util.Map;
|
||||
*/
|
||||
public enum MsgTypeEnum implements IEnum {
|
||||
/**
|
||||
msgType 消息类型:1|文本 3|图片 34|语音 42|名片 43|视频 47|动态表情 48|地理位置 49|分享链接或附件 2001|红包 2002|小程序 2003|群邀请 10000|系统消息
|
||||
* */
|
||||
msgType :
|
||||
1|文本 3|图片 34|语音
|
||||
42|名片 43|视频 47|动态表情
|
||||
48|地理位置 49|分享链接或附件 2001|红包
|
||||
2002|小程序 2003|群邀请 10000|系统消息 * */
|
||||
TEXT(1, "文本"),
|
||||
IMAGE(3, "图片"),
|
||||
VOICE(34, "语音"),
|
||||
ANIMATION(47, "动态表情"),
|
||||
//名片 42
|
||||
CARD(42, "名片"),
|
||||
|
||||
|
||||
VIDEO(43, "视频"),
|
||||
SHARE(49, "分享"),
|
||||
SHARE(49, "分享链接或附件"),
|
||||
LOCATION(48, "位置"),
|
||||
REDPACKET(2001, "红包"),
|
||||
MINIPROGRAM(2002, "小程序"),
|
||||
|
||||
@@ -67,18 +67,18 @@ public enum WXReqType {
|
||||
DELETE_FRIEND("Q0022", "删除好友"),
|
||||
MODIFY_OBJECT_REMARK("Q0023", "修改对象备注"),
|
||||
MODIFY_GROUP_NAME("Q0024", "修改群聊名称");
|
||||
private final String key;
|
||||
private final String url;
|
||||
|
||||
private final String name;
|
||||
|
||||
WXReqType(String key, String name) {
|
||||
this.key = key;
|
||||
WXReqType(String url, String name) {
|
||||
this.url = url;
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public static WXReqType get(String key) {
|
||||
for (WXReqType e : WXReqType.values()) {
|
||||
if (Objects.equals(e.getKey(), key)) {
|
||||
if (Objects.equals(e.getUrl(), key)) {
|
||||
return e;
|
||||
}
|
||||
}
|
||||
@@ -89,7 +89,7 @@ public enum WXReqType {
|
||||
//if (Object.isNotEmpty(key)) {
|
||||
WXReqType[] items = WXReqType.values();
|
||||
for (WXReqType item : items) {
|
||||
if (Objects.equals(item.getKey(), key)) {
|
||||
if (Objects.equals(item.getUrl(), key)) {
|
||||
return item.getName();
|
||||
}
|
||||
}
|
||||
@@ -101,7 +101,7 @@ public enum WXReqType {
|
||||
Map<String, String> map = new HashMap<>();
|
||||
WXReqType[] items = WXReqType.values();
|
||||
for (WXReqType item : items) {
|
||||
map.put(item.getKey() + "", item.getName());
|
||||
map.put(item.getUrl() + "", item.getName());
|
||||
}
|
||||
return map;
|
||||
}
|
||||
@@ -112,15 +112,15 @@ public enum WXReqType {
|
||||
for (WXReqType item : items) {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("label", item.getName());
|
||||
map.put("value", item.getKey());
|
||||
map.put("value", item.getUrl());
|
||||
result.add(map);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@JsonValue
|
||||
public String getKey() {
|
||||
return key;
|
||||
public String getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
|
||||
@@ -17,16 +17,32 @@ public class WxMessage {
|
||||
// "wxid": "wxid_3sq4tklb6c3121", //收到这条事件的微信
|
||||
// "data": {} //事件的主要内容,不同事件,具体对象参数也不尽相同
|
||||
//}
|
||||
private Integer event;
|
||||
private String wxid;
|
||||
private JSONObject data;
|
||||
|
||||
public WxMessage() {
|
||||
}
|
||||
/**
|
||||
* {
|
||||
* "ServerPort":"30001",
|
||||
* "selfwxid":"wxid_kr145nk7l0an31",
|
||||
* "time":"1714465284",
|
||||
* "type":"1",
|
||||
* "msgsvrid":"4355263386657895005",
|
||||
* "msg":"【京东】https://3.cn/1Y-DPkR9「可口可乐(Coca-Cola)雪碧 Sprite零卡无糖零卡汽水饮料330ml*24瓶整箱装」\n点击链接直接打开",
|
||||
* "sougrce":"<msgsource>\n <sec_msg_node>\n <alnode>\n <fr>1</fr>\n </alnode>\n </sec_msg_node>\n <pua>1</pua>\n <signature>V1_NQ5b5w2k|v1_NQ5b5w2k</signature>\n <tmp_node>\n <publisher-id />\n </tmp_node>\n</msgsource>\n",
|
||||
* "file_path":"C:\\Users\\雷神\\Documents\\WeChat Files\\",
|
||||
* "fromtype":"1",
|
||||
* "fromid":"wxid_ytpc72mdoskt22",
|
||||
* "toid":"wxid_kr145nk7l0an31"
|
||||
* }*/
|
||||
private String serverPort;
|
||||
private String selfwxid;
|
||||
private String time;
|
||||
private String type;
|
||||
private String msgsvrid;
|
||||
private String msg;
|
||||
private String sougrce;
|
||||
private String filePath;
|
||||
private String fromtype;
|
||||
private String fromid;
|
||||
private String toid;
|
||||
private String fromgid;
|
||||
|
||||
public WxMessage(Integer event, String wxid, JSONObject data) {
|
||||
this.event = event;
|
||||
this.wxid = wxid;
|
||||
this.data = data;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,10 +47,15 @@ public class WxUser implements Serializable {
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 1 正常 2 拉黑
|
||||
* 0 正常 1 拉黑
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 0 是 1 不是
|
||||
*/
|
||||
private Integer isnew;
|
||||
|
||||
@TableField(exist = false)
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@@ -72,7 +77,8 @@ public class WxUser implements Serializable {
|
||||
&& (this.getCountChongzhi() == null ? other.getCountChongzhi() == null : this.getCountChongzhi().equals(other.getCountChongzhi()))
|
||||
&& (this.getCountXiaofei() == null ? other.getCountXiaofei() == null : this.getCountXiaofei().equals(other.getCountXiaofei()))
|
||||
&& (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))
|
||||
&& (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()));
|
||||
&& (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))
|
||||
&& (this.getIsnew() == null ? other.getIsnew() == null : this.getIsnew().equals(other.getIsnew()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -86,6 +92,7 @@ public class WxUser implements Serializable {
|
||||
result = prime * result + ((getCountXiaofei() == null) ? 0 : getCountXiaofei().hashCode());
|
||||
result = prime * result + ((getName() == null) ? 0 : getName().hashCode());
|
||||
result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());
|
||||
result = prime * result + ((getIsnew() == null) ? 0 : getIsnew().hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -102,6 +109,7 @@ public class WxUser implements Serializable {
|
||||
sb.append(", countXiaofei=").append(countXiaofei);
|
||||
sb.append(", name=").append(name);
|
||||
sb.append(", status=").append(status);
|
||||
sb.append(", isnew=").append(isnew);
|
||||
sb.append(", serialVersionUID=").append(serialVersionUID);
|
||||
sb.append("]");
|
||||
return sb.toString();
|
||||
|
||||
@@ -5,10 +5,17 @@ import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static cn.hutool.core.thread.ThreadUtil.sleep;
|
||||
@@ -19,6 +26,7 @@ import static cn.hutool.core.thread.ThreadUtil.sleep;
|
||||
* @create 2023/12/22 0022 上午 09:59
|
||||
* @description:
|
||||
*/
|
||||
@Component
|
||||
public class QLUtil {
|
||||
/**
|
||||
* 1. 在系统设置 -> 应用设置 -> 添加应用,权限目前支持5个模块,可以选择多个模块。选择一个模块之后,可读写此模块的所有接口。
|
||||
@@ -27,7 +35,7 @@ public class QLUtil {
|
||||
* 接口返回的token'
|
||||
* 4. openapi的接口与系统正常接口的区别就是青龙里的是/api/envs,openapi是/open/envs,即就是青龙接口中的api换成open
|
||||
*/
|
||||
public static final String QL_BASE_URL = "http://134.175.126.60:45700";
|
||||
public static String QL_BASE_URL = "http://134.175.126.60:45700";
|
||||
public static final String GET_TOKEN = QL_BASE_URL + "/open/auth/token";
|
||||
|
||||
// /open/envs
|
||||
@@ -42,35 +50,42 @@ public class QLUtil {
|
||||
public static final String QL_TOKEN_KEY = "QL_TOKEN_KEY";
|
||||
|
||||
private static final RedisCache redisCache = SpringUtil.getBean(RedisCache.class);
|
||||
private static final Logger logger = LoggerFactory.getLogger(QLUtil.class);
|
||||
|
||||
private Environment env;
|
||||
|
||||
public QLUtil(Environment env) {
|
||||
this.env = env;
|
||||
QL_BASE_URL = env.getProperty("config.QL_BASE_URL");
|
||||
}
|
||||
|
||||
public String getToken() {
|
||||
|
||||
String token = redisCache.getCacheObject(QL_TOKEN_KEY);
|
||||
String token = null;
|
||||
token = redisCache.getCacheObject(QL_TOKEN_KEY);
|
||||
if (StrUtil.isNotEmpty(token)) {
|
||||
return token;
|
||||
|
||||
} else {
|
||||
//HashMap<String, String> map = new HashMap<>();
|
||||
//map.put("client_id", CLIENT_ID);
|
||||
//map.put("client_secret", CLIENT_SECRET);
|
||||
//String jsonStr = JSON.toJSONString(map);
|
||||
for (int i = 0; i < 3; i++) {
|
||||
while (Util.isNotEmpty(token)) {
|
||||
//* 2. 使用生成的 client_id 和 client_secret 请求获取token接口 http://localhost:5700/open/auth/token?client_id=xxxxxx&client_secret=xxxxxxxx
|
||||
String responseStr = HttpRequest.get(GET_TOKEN + "?client_id=" + CLIENT_ID + "&client_secret=" + CLIENT_SECRET).execute().body();
|
||||
if (ObjectUtil.isNotEmpty(responseStr)) {
|
||||
//{"code":200,"data":{"token":"950e3060-d714-4f6a-9839-c098a116f0a8","token_type":"Bearer","expiration":1705743778}}
|
||||
JSONObject jsonObject = JSON.parseObject(responseStr);
|
||||
|
||||
System.out.println(jsonObject.getString("code"));
|
||||
if (Objects.equals(String.valueOf(jsonObject.getString("code")), "200")) {
|
||||
JSONObject response = jsonObject.getJSONObject("data");
|
||||
redisCache.setCacheObject(QL_TOKEN_KEY, (String) response.get("token"), (int) response.get("expiration"), TimeUnit.SECONDS);
|
||||
return (String) response.get("token");
|
||||
token = (String) response.get("token");
|
||||
}
|
||||
}
|
||||
sleep(500);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
return token;
|
||||
}
|
||||
|
||||
|
||||
@@ -81,21 +96,30 @@ public class QLUtil {
|
||||
* @throws
|
||||
* @description 获取所有环境变量
|
||||
*/
|
||||
public JSONObject getEnv() {
|
||||
public JSONArray getEnv(String searchKey) {
|
||||
String token = getToken();
|
||||
if (StrUtil.isNotEmpty(token)) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
String responseStr = HttpRequest.get(GET_ENV + "?searchValue=&t=1630032278171").header("Authorization", "Bearer " + token).execute().body();
|
||||
JSONArray result = new JSONArray();
|
||||
int maxRetryCount = 3;
|
||||
int retryCount = 0;
|
||||
String getUrl = GET_ENV + "?searchValue=&t=1630032278171";
|
||||
if (Util.isNotEmpty(searchKey)) {
|
||||
getUrl = GET_ENV + "?searchValue=" + searchKey + "&t=1630032278171";
|
||||
}
|
||||
while (result.size() == 0 && retryCount < maxRetryCount) {
|
||||
|
||||
String responseStr = HttpRequest.get(getUrl).header("Authorization", "Bearer " + token).execute().body();
|
||||
if (ObjectUtil.isNotEmpty(responseStr)) {
|
||||
QLResponse qlResponse = JSON.parseObject(responseStr, QLResponse.class);
|
||||
if (Objects.equals(String.valueOf(qlResponse.getCode()), "200")) {
|
||||
return qlResponse.getData();
|
||||
JSONObject qlResponse = JSONObject.parseObject(responseStr);
|
||||
if (qlResponse.getString("code").equals("200")) {
|
||||
|
||||
result = (JSONArray) qlResponse.get("data");
|
||||
//result = null;
|
||||
}
|
||||
}
|
||||
sleep(500);
|
||||
retryCount++;
|
||||
sleep(1000);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -104,13 +128,13 @@ public class QLUtil {
|
||||
* @throws
|
||||
* @description 检查是否存在环境变量,存在返回值,不存在返回null
|
||||
*/
|
||||
public String getEnvValue(String name) {
|
||||
JSONObject jsonObject = getEnv();
|
||||
if (ObjectUtil.isNotEmpty(jsonObject)) {
|
||||
return jsonObject.getJSONObject(name).getString("value");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
//public String getEnvValue(String name) {
|
||||
// JSONObject jsonObject = getEnv();
|
||||
// if (ObjectUtil.isNotEmpty(jsonObject)) {
|
||||
// return jsonObject.getJSONObject(name).getString("value");
|
||||
// }
|
||||
// return null;
|
||||
//}
|
||||
|
||||
// post /envs
|
||||
// {
|
||||
@@ -125,54 +149,92 @@ public class QLUtil {
|
||||
* @param value
|
||||
* @return
|
||||
* @throws
|
||||
* @description 添加环境变量
|
||||
* @description 添加环境变量 name 环境变量名,value 环境变量值,remarks 环境变量备注
|
||||
* 如果存在一样的value 会返回 400
|
||||
* 如果添加成功,就返回 TRUE ,否则返回 FALSE
|
||||
*/
|
||||
public JSONObject addEnv(String value, String name, String remarks) {
|
||||
public Boolean addEnv(String value, String name, String remarks) {
|
||||
String token = getToken();
|
||||
if (StrUtil.isNotEmpty(token)) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
String responseStr = HttpRequest.post(GET_ENV).header("Authorization", "Bearer " + token).body(JSON.toJSONString(new QLEnv(value, name, remarks))).execute().body();
|
||||
if (ObjectUtil.isNotEmpty(responseStr)) {
|
||||
QLResponse qlResponse = JSON.parseObject(responseStr, QLResponse.class);
|
||||
if (Objects.equals(String.valueOf(qlResponse.getCode()), "200")) {
|
||||
return qlResponse.getData();
|
||||
JSONObject result = new JSONObject();
|
||||
List<QLEnv> bodyArr = Collections.singletonList(new QLEnv(value, name, remarks));
|
||||
logger.info("addEnv 请求body {}", JSON.toJSONString(bodyArr));
|
||||
|
||||
// 设置最大重试次数
|
||||
int maxRetryCount = 3;
|
||||
int retryCount = 0;
|
||||
|
||||
while (Util.isEmpty(result) && retryCount < maxRetryCount) {
|
||||
String responseStr = HttpRequest.post(GET_ENV)
|
||||
.header("Authorization", "Bearer " + token)
|
||||
.body(JSON.toJSONString(bodyArr))
|
||||
.execute()
|
||||
.body();
|
||||
logger.info("responseStr 响应 {}", responseStr);
|
||||
|
||||
if (Util.isNotEmpty(responseStr)) {
|
||||
JSONObject qlResponse = JSONObject.parseObject(responseStr);
|
||||
String code = qlResponse.getString("code");
|
||||
|
||||
if ("200".equals(code)) {
|
||||
logger.info("200 响应 {}", qlResponse);
|
||||
result = (JSONObject) qlResponse.get("data");
|
||||
return true;
|
||||
} else if ("400".equals(code)) {
|
||||
logger.info("400 响应 {}", qlResponse);
|
||||
result = (JSONObject) qlResponse.get("message");
|
||||
break;
|
||||
}
|
||||
}
|
||||
sleep(500);
|
||||
|
||||
retryCount++;
|
||||
sleep(1000);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
// http://134.175.126.60:45700/api/crons?searchValue=&page=1&size=20&filters={}&queryString={%22filters%22:null,%22sorts%22:null,%22filterRelation%22:%22and%22}&t=1703148561868
|
||||
|
||||
/**
|
||||
* @param queryString
|
||||
* @param searchKey
|
||||
* @return
|
||||
* @throws
|
||||
* @description 获取定时任务列表
|
||||
*/
|
||||
public JSONObject getCron(String queryString) {
|
||||
if (StrUtil.isNotEmpty(queryString)) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
String responseStr = HttpRequest.get(GET_CRON + "?" + queryString).execute().body();
|
||||
public List<Cron> getCron(String searchKey) {
|
||||
String token = getToken();
|
||||
List<Cron> cronList = new ArrayList<>();
|
||||
int maxRetryCount = 3;
|
||||
int retryCount = 0;
|
||||
|
||||
String getUrl = GET_CRON + "?searchValue=&t=1630032278171";
|
||||
if (Util.isNotEmpty(searchKey)) {
|
||||
getUrl = GET_CRON + "?searchValue=" + searchKey + "&t=1630032278171";
|
||||
}
|
||||
while (cronList.size() == 0 && retryCount < maxRetryCount) {
|
||||
String responseStr = HttpRequest.get(getUrl).header("Authorization", "Bearer " + token).execute().body();
|
||||
if (ObjectUtil.isNotEmpty(responseStr)) {
|
||||
QLResponse qlResponse = JSON.parseObject(responseStr, QLResponse.class);
|
||||
if (Objects.equals(String.valueOf(qlResponse.getCode()), "200")) {
|
||||
return qlResponse.getData();
|
||||
}
|
||||
}
|
||||
sleep(500);
|
||||
}
|
||||
JSONObject qlResponse = JSONObject.parseObject(responseStr);
|
||||
String code = qlResponse.getString("code");
|
||||
//{"code":200,"data":{"data":[],"total":0}}
|
||||
if ("200".equals(code)) {
|
||||
logger.info("200 响应 {}", qlResponse);
|
||||
JSONObject dataObj = qlResponse.getJSONObject("data");
|
||||
if (dataObj.getInteger("total") == 0) {
|
||||
|
||||
|
||||
} else {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
String responseStr = HttpRequest.get(GET_CRON).execute().body();
|
||||
if (ObjectUtil.isNotEmpty(responseStr)) {
|
||||
QLResponse qlResponse = JSON.parseObject(responseStr, QLResponse.class);
|
||||
if (Objects.equals(String.valueOf(qlResponse.getCode()), "200")) {
|
||||
return qlResponse.getData();
|
||||
|
||||
ArrayList data = JSONObject.parseObject(dataObj.getString("data"), ArrayList.class);
|
||||
System.out.println(data.size());
|
||||
|
||||
}
|
||||
} else if ("400".equals(code)) {
|
||||
logger.info("400 响应 {}", qlResponse);
|
||||
|
||||
//result = (JSONArray) qlResponse.get("message");
|
||||
}
|
||||
retryCount++;
|
||||
sleep(500);
|
||||
}
|
||||
}
|
||||
@@ -184,22 +246,22 @@ public class QLUtil {
|
||||
* http://134.175.126.60:45700/api/crons/run?t=1703148561868
|
||||
* 请求方法:
|
||||
* PUT*/
|
||||
public JSONObject runCron(String cronId) {
|
||||
String token = getToken();
|
||||
if (StrUtil.isNotEmpty(token)) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
String responseStr = HttpRequest.put(GET_CRON + "?cronId=" + cronId).header("Authorization", "Bearer " + token).execute().body();
|
||||
if (ObjectUtil.isNotEmpty(responseStr)) {
|
||||
QLResponse qlResponse = JSON.parseObject(responseStr, QLResponse.class);
|
||||
if (Objects.equals(String.valueOf(qlResponse.getCode()), "200")) {
|
||||
return qlResponse.getData();
|
||||
}
|
||||
}
|
||||
sleep(500);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
//public JSONObject runCron(String cronId) {
|
||||
// String token = getToken();
|
||||
// if (StrUtil.isNotEmpty(token)) {
|
||||
// for (int i = 0; i < 3; i++) {
|
||||
// String responseStr = HttpRequest.put(GET_CRON + "?cronId=" + cronId).header("Authorization", "Bearer " + token).execute().body();
|
||||
// if (ObjectUtil.isNotEmpty(responseStr)) {
|
||||
// QLResponse qlResponse = JSON.parseObject(responseStr, QLResponse.class);
|
||||
// if (Objects.equals(String.valueOf(qlResponse.getCode()), "200")) {
|
||||
// return qlResponse.getData();
|
||||
// }
|
||||
// }
|
||||
// sleep(500);
|
||||
// }
|
||||
// }
|
||||
// return null;
|
||||
//}
|
||||
|
||||
/**
|
||||
* }
|
||||
@@ -232,7 +294,8 @@ public class QLUtil {
|
||||
* } finally {
|
||||
* return _0x26ac1b;
|
||||
* }
|
||||
* }*/
|
||||
* }
|
||||
*/
|
||||
|
||||
// 通过token 获取用户信息
|
||||
// url https://i.meituan.com/wrapapi/getLoginedUserInfo
|
||||
@@ -253,61 +316,39 @@ public class QLUtil {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
// new QLEnv(value, name, remarks)
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
private static class QLEnv {
|
||||
private String value;
|
||||
private String name;
|
||||
private String remarks;
|
||||
|
||||
public QLEnv(String value, String name, String remarks) {
|
||||
this.value = value;
|
||||
this.name = name;
|
||||
this.remarks = remarks;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
private class Cron {
|
||||
private long id;
|
||||
private String name;
|
||||
private String command;
|
||||
private String schedule;
|
||||
private String timestamp;
|
||||
private boolean saved;
|
||||
private long status;
|
||||
private long isSystem;
|
||||
private long pid;
|
||||
private long isDisabled;
|
||||
private long isPinned;
|
||||
private String logPath;
|
||||
private List<Object> labels;
|
||||
private long lastRunningTime;
|
||||
private long lastExecutionTime;
|
||||
private long subID;
|
||||
private String createdAt;
|
||||
private String updatedAt;
|
||||
}
|
||||
|
||||
public void setValue(String value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getRemarks() {
|
||||
return remarks;
|
||||
}
|
||||
|
||||
public void setRemarks(String remarks) {
|
||||
this.remarks = remarks;
|
||||
}
|
||||
}
|
||||
|
||||
private static class QLResponse {
|
||||
private String code;
|
||||
private JSONObject data;
|
||||
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode(String code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public JSONObject getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData(JSONObject data) {
|
||||
this.data = data;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
package cn.van333.mt2ql.wxMessage.utils;
|
||||
|
||||
/**
|
||||
* @author Leo
|
||||
* @version 1.0
|
||||
* @create 2024/03/11 0011 下午 04:50
|
||||
* @description:
|
||||
*/
|
||||
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.ApplicationContextAware;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
public class SpringContextUtil implements ApplicationContextAware {
|
||||
|
||||
private static ApplicationContext applicationContext;
|
||||
|
||||
public static <T> T getBean(Class<T> clazz) {
|
||||
return applicationContext.getBean(clazz);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setApplicationContext(ApplicationContext applicationContext) {
|
||||
SpringContextUtil.applicationContext = applicationContext;
|
||||
}
|
||||
}
|
||||
@@ -7,19 +7,10 @@ package cn.van333.mt2ql.wxMessage.utils;
|
||||
* @description: 旗云的 Util 用习惯了 用一下
|
||||
*/
|
||||
|
||||
import org.apache.ibatis.jdbc.SQL;
|
||||
import org.apache.tomcat.util.codec.binary.Base64;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.util.HtmlUtils;
|
||||
|
||||
import javax.activation.FileDataSource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.*;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
@@ -1023,12 +1014,6 @@ Util {
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
List<String> s = new ArrayList<String>();
|
||||
s.add("a");
|
||||
s.add("b");
|
||||
s.add("");
|
||||
s.add("d");
|
||||
System.out.println(joinIgnoreEmpty(s, ","));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -6,8 +6,14 @@ import cn.hutool.http.HttpRequest;
|
||||
import cn.van333.mt2ql.wxMessage.enums.WXReqType;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
@@ -17,7 +23,11 @@ import java.util.HashMap;
|
||||
* @create 2023/12/22 0022 上午 09:59
|
||||
* @description:
|
||||
*/
|
||||
@Component
|
||||
public class WXUtil {
|
||||
private static final RedisCache redisCache = SpringUtil.getBean(RedisCache.class);
|
||||
private static final Logger logger = LoggerFactory.getLogger(WXUtil.class);
|
||||
private static final String super_admin_wxid = "wxid_ytpc72mdoskt22";
|
||||
/**
|
||||
* url http://127.0.0.1:7777/DaenWxHook/httpapi/
|
||||
* 获取微信列表 (X0000)
|
||||
@@ -48,12 +58,15 @@ public class WXUtil {
|
||||
* 修改群聊名称(Q0024)
|
||||
* 发送名片(Q0025)
|
||||
*/
|
||||
public static final String WX_BASE_URL = "http://134.175.126.60:47777/DaenWxHook/httpapi/";
|
||||
private static final RedisCache redisCache = SpringUtil.getBean(RedisCache.class);
|
||||
private static final Logger logger = LoggerFactory.getLogger(WXUtil.class);
|
||||
|
||||
private static final String super_admin_wxid = "wxid_ytpc72mdoskt22";
|
||||
public static String WX_BASE_URL;
|
||||
private Environment env;
|
||||
|
||||
@Autowired
|
||||
public WXUtil(Environment env) {
|
||||
this.env = env;
|
||||
WX_BASE_URL = env.getProperty("config.WX_BASE_URL");
|
||||
System.out.println("WX_BASE_URL:" + WX_BASE_URL);
|
||||
}
|
||||
|
||||
// 获取微信列表
|
||||
public JSONObject getWxList() {
|
||||
@@ -69,31 +82,39 @@ public class WXUtil {
|
||||
|
||||
// 发送文本消息 msgType 1:私聊 2:群发
|
||||
public JSONObject sendTextMessage(String wxid, String content, Integer msgType, String fromwxid) {
|
||||
// 全部打印
|
||||
logger.info("发送文本消息 msgType: " + msgType + " wxid: " + wxid + " fromwxid: " + fromwxid + " content: " + content);
|
||||
// 如果是自己的微信,所有信息都加上少爷
|
||||
if (wxid.equals(super_admin_wxid) || fromwxid.equals(super_admin_wxid)) {
|
||||
content = " 少爷好!\n " + content;
|
||||
}
|
||||
String botWxid = "";
|
||||
JSONObject wxList = getWxList();
|
||||
JSONObject wxBotInfo = (JSONObject) wxList.getJSONArray("result").get(0);
|
||||
botWxid = wxBotInfo.getString("wxid");
|
||||
|
||||
//JSONObject wxList = getWxList();
|
||||
//JSONObject wxBotInfo = (JSONObject) wxList.getJSONArray("result").get(0);
|
||||
//botWxid = wxBotInfo.getString("wxid");
|
||||
//
|
||||
WxReqDate wxReqDate = createWxReqData(WXReqType.SEND_TEXT_MESSAGE);
|
||||
////
|
||||
//WxReqDate wxReqDate = createWxReqData(WXReqType.SEND_TEXT_MESSAGE);
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
if ((msgType.equals(1))) {
|
||||
jsonObject.put("wxid", wxid);
|
||||
content = content;
|
||||
}
|
||||
//[@,wxid=对象wxid,nick=对象昵称,isAuto=true]
|
||||
if ((msgType.equals(2))) {
|
||||
jsonObject.put("wxid", fromwxid);
|
||||
content = "[@,wxid=" + wxid + ",nick=6,isAuto=true] " + content;
|
||||
}
|
||||
//if ((msgType.equals(1))) {
|
||||
// jsonObject.put("wxid", wxid);
|
||||
// content = content;
|
||||
//}
|
||||
////[@,wxid=对象wxid,nick=对象昵称,isAuto=true]
|
||||
//if ((msgType.equals(2))) {
|
||||
// jsonObject.put("wxid", fromwxid);
|
||||
// content = "[@,wxid=" + wxid + ",nick=6,isAuto=true] " + content;
|
||||
//}
|
||||
/*
|
||||
* {
|
||||
"wxid": "filehelper",
|
||||
"msg": "666大佬~"
|
||||
}*/
|
||||
jsonObject.put("msg", content);
|
||||
wxReqDate.setData(jsonObject);
|
||||
while (Util.isNotEmpty(botWxid)) {
|
||||
String responseStr = HttpRequest.post(WX_BASE_URL + "?wxid=" + botWxid).body(JSON.toJSONString(wxReqDate)).execute().body();
|
||||
jsonObject.put("wxid", wxid);
|
||||
System.out.println(JSON.toJSONString(jsonObject));
|
||||
//wxReqDate.setData(jsonObject);
|
||||
while (Util.isNotEmpty(wxid)) {
|
||||
String responseStr = HttpRequest.post(WX_BASE_URL + "/SendTextMsg").body(JSON.toJSONString(jsonObject)).execute().body();
|
||||
if (ObjectUtil.isNotEmpty(responseStr)) {
|
||||
JSONObject response = JSON.parseObject(responseStr);
|
||||
//WxResponse wxResponse = JSON.parseObject(responseStr, WxResponse.class);
|
||||
@@ -102,6 +123,7 @@ public class WXUtil {
|
||||
// return wxResponse.getData();
|
||||
//}
|
||||
//JSONObject jsonObject = HttpUtil.sendPost(url, wxReqDate.getData());
|
||||
logger.info("消息响应:" + response.toString());
|
||||
return response;
|
||||
}
|
||||
try {
|
||||
@@ -168,11 +190,14 @@ public class WXUtil {
|
||||
|
||||
public WxReqDate createWxReqData(WXReqType wxReqType) {
|
||||
|
||||
WxReqDate wxReqDate = new WxReqDate(wxReqType.getKey(), null);
|
||||
WxReqDate wxReqDate = new WxReqDate(wxReqType.getUrl(), null);
|
||||
|
||||
return wxReqDate;
|
||||
}
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
private class WxResponse {
|
||||
/**
|
||||
* {
|
||||
@@ -194,86 +219,11 @@ public class WXUtil {
|
||||
private Integer pid;
|
||||
private String flag;
|
||||
private String timestamp;
|
||||
|
||||
public WxResponse(Integer code, String msg, JSONObject result, String wxid, Integer port, Integer pid, String flag, String timestamp) {
|
||||
this.code = code;
|
||||
this.msg = msg;
|
||||
this.result = result;
|
||||
this.wxid = wxid;
|
||||
this.port = port;
|
||||
this.pid = pid;
|
||||
this.flag = flag;
|
||||
this.timestamp = timestamp;
|
||||
}
|
||||
|
||||
public WxResponse() {
|
||||
}
|
||||
|
||||
public Integer getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode(Integer code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public String getMsg() {
|
||||
return msg;
|
||||
}
|
||||
|
||||
public void setMsg(String msg) {
|
||||
this.msg = msg;
|
||||
}
|
||||
|
||||
public JSONObject getResult() {
|
||||
return result;
|
||||
}
|
||||
|
||||
public void setResult(JSONObject result) {
|
||||
this.result = result;
|
||||
}
|
||||
|
||||
public String getWxid() {
|
||||
return wxid;
|
||||
}
|
||||
|
||||
public void setWxid(String wxid) {
|
||||
this.wxid = wxid;
|
||||
}
|
||||
|
||||
public Integer getPort() {
|
||||
return port;
|
||||
}
|
||||
|
||||
public void setPort(Integer port) {
|
||||
this.port = port;
|
||||
}
|
||||
|
||||
public Integer getPid() {
|
||||
return pid;
|
||||
}
|
||||
|
||||
public void setPid(Integer pid) {
|
||||
this.pid = pid;
|
||||
}
|
||||
|
||||
public String getFlag() {
|
||||
return flag;
|
||||
}
|
||||
|
||||
public void setFlag(String flag) {
|
||||
this.flag = flag;
|
||||
}
|
||||
|
||||
public String getTimestamp() {
|
||||
return timestamp;
|
||||
}
|
||||
|
||||
public void setTimestamp(String timestamp) {
|
||||
this.timestamp = timestamp;
|
||||
}
|
||||
}
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
private class WxReqDate {
|
||||
//{
|
||||
// "type": "X0000",
|
||||
@@ -282,29 +232,6 @@ public class WXUtil {
|
||||
private String type;
|
||||
private JSONObject data;
|
||||
|
||||
public WxReqDate(String type, JSONObject data) {
|
||||
this.type = type;
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
public WxReqDate() {
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public Object getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData(JSONObject data) {
|
||||
this.data = data;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,15 +1,21 @@
|
||||
package cn.van333.mt2ql.wxMessage.utils;
|
||||
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import cn.van333.mt2ql.wxMessage.enums.EventType;
|
||||
import cn.van333.mt2ql.wxMessage.model.Setting;
|
||||
import cn.van333.mt2ql.wxMessage.model.WxMessage;
|
||||
import cn.van333.mt2ql.wxMessage.model.WxMessageDataForChat;
|
||||
import cn.van333.mt2ql.wxMessage.model.WxMessageDataForTransfer;
|
||||
import cn.van333.mt2ql.wxMessage.model.WxUser;
|
||||
import cn.van333.mt2ql.wxMessage.service.SettingService;
|
||||
import cn.van333.mt2ql.wxMessage.service.WxMessageDataForChatService;
|
||||
import cn.van333.mt2ql.wxMessage.service.WxUserService;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.jd.open.api.sdk.DefaultJdClient;
|
||||
import com.jd.open.api.sdk.JdClient;
|
||||
import com.jd.open.api.sdk.domain.kplunion.promotioncommon.PromotionService.request.get.PromotionCodeReq;
|
||||
import com.jd.open.api.sdk.request.kplunion.UnionOpenPromotionCommonGetRequest;
|
||||
import com.jd.open.api.sdk.response.kplunion.UnionOpenPromotionCommonGetResponse;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -17,9 +23,10 @@ import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
|
||||
/**
|
||||
* @author Leo
|
||||
@@ -30,7 +37,17 @@ import java.util.Iterator;
|
||||
@Component
|
||||
public class WxMessageConsumer {
|
||||
|
||||
public static final String meituanCookie = "meituanCookie";
|
||||
private static final String meituanCookie = "meituanCookie";
|
||||
/**
|
||||
* key开头的为 setting 的 key
|
||||
*/
|
||||
private static final String key_caiDan_user = "用户菜单";
|
||||
private static final String key_caiDan_admin = "管理员菜单";
|
||||
/**
|
||||
* order 开头的是接受的指令
|
||||
*/
|
||||
private static final String order_caiDan = "菜单";
|
||||
private static final String order_admin = "管理员";
|
||||
/**/
|
||||
private static final Logger logger = LoggerFactory.getLogger(WxMessageConsumer.class);
|
||||
private static final RedisCache redisCache = SpringUtil.getBean(RedisCache.class);
|
||||
@@ -39,19 +56,30 @@ public class WxMessageConsumer {
|
||||
* 每次扣费
|
||||
*/
|
||||
private static final BigDecimal priceOfMT20 = new BigDecimal("0.2");
|
||||
private static final String fromGR = "1";
|
||||
private static final String SERVER_URL = "https://api.jd.com/routerjson";
|
||||
private static final String accessToken = "";
|
||||
private static final String appKey = "98e21c89ae5610240ec3f5f575f86a59";
|
||||
private static final String appSecret = "3dcb6b23a1104639ac433fd07adb6dfb";
|
||||
private final WXUtil wxUtil;
|
||||
private final QLUtil qlUtil;
|
||||
private final WxMessageDataForChatService wxMessageDataForChatService;
|
||||
private final WxUserService wxUserService;
|
||||
private final SettingService settingService;
|
||||
|
||||
@Autowired
|
||||
public WxMessageConsumer(@Lazy WxMessageDataForChatService wxMessageDataForChatService, @Lazy WxUserService wxUserService) {
|
||||
public WxMessageConsumer(WXUtil wxUtil, QLUtil qlUtil, @Lazy WxMessageDataForChatService wxMessageDataForChatService, @Lazy WxUserService wxUserService, @Lazy SettingService settingService) {
|
||||
this.wxUtil = wxUtil;
|
||||
this.qlUtil = qlUtil;
|
||||
this.wxMessageDataForChatService = wxMessageDataForChatService;
|
||||
this.wxUserService = wxUserService;
|
||||
this.settingService = settingService;
|
||||
}
|
||||
|
||||
//@Async("threadPoolTaskExecutor")
|
||||
public void consume(WxMessage wxMessage) {
|
||||
logger.info("接收到消息 : {}", wxMessage);
|
||||
if (wxMessage.getEvent() == null) {
|
||||
public void consume(WxMessage wxMessage) throws Exception {
|
||||
//logger.info("接收到消息 : {}", wxMessage);
|
||||
if (wxMessage.getType() == null) {
|
||||
return;
|
||||
}
|
||||
/**
|
||||
@@ -61,89 +89,140 @@ public class WxMessageConsumer {
|
||||
* 转账需要对接会员系统
|
||||
*
|
||||
* */
|
||||
Integer event = wxMessage.getEvent();
|
||||
if (event.equals(EventType.PRIVATE_MESSAGE.getKey())) {
|
||||
Integer event = Integer.valueOf(wxMessage.getType());
|
||||
String fromType = wxMessage.getFromtype();
|
||||
if (fromType.equals(fromGR)) {
|
||||
handlePrivateMessage(wxMessage);
|
||||
} else {
|
||||
//handleGroupMessage(wxMessage);
|
||||
}
|
||||
if (event.equals(EventType.GROUP_MESSAGE.getKey())) {
|
||||
handleGroupMessage(wxMessage);
|
||||
}
|
||||
if (event.equals(EventType.TRANSFER_EVENT.getKey())) {
|
||||
handleTransferEvent(wxMessage);
|
||||
}
|
||||
//if (event.equals(EventType.TRANSFER_EVENT.getKey())) {
|
||||
// handleTransferEvent(wxMessage);
|
||||
//}
|
||||
|
||||
}
|
||||
|
||||
private Boolean heiMingDan(String wxid) {
|
||||
Boolean flag = false;
|
||||
// 0 正常 1 黑名单
|
||||
//
|
||||
boolean flag = false;
|
||||
WxUser wxUser = wxUserService.getOne(Wrappers.query(new WxUser()).eq("wxid", wxid));
|
||||
if (Util.isNotEmpty(wxUser)) {
|
||||
if (wxUser.getStatus().equals(2)) {
|
||||
if (wxUser.getStatus().equals(1)) {
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
private String JD_Transfer(String url) throws Exception {
|
||||
JdClient client = new DefaultJdClient(SERVER_URL, accessToken, appKey, appSecret);
|
||||
UnionOpenPromotionCommonGetRequest request = new UnionOpenPromotionCommonGetRequest();
|
||||
request.setVersion("1.0");
|
||||
request.setSignmethod("md5");
|
||||
|
||||
PromotionCodeReq promotionCodeReq = new PromotionCodeReq();
|
||||
promotionCodeReq.setMaterialId(url);
|
||||
promotionCodeReq.setSiteId("4101253066");
|
||||
promotionCodeReq.setSceneId(2);
|
||||
promotionCodeReq.setCommand(1);
|
||||
|
||||
|
||||
request.setPromotionCodeReq(promotionCodeReq);
|
||||
UnionOpenPromotionCommonGetResponse response = client.execute(request);
|
||||
|
||||
|
||||
System.out.println(request.getAppJsonParams());
|
||||
System.out.println(request.getPromotionCodeReq());
|
||||
|
||||
System.out.println("--------");
|
||||
System.out.println(response.getGetResult().getCode());
|
||||
System.out.println(response.getGetResult().getMessage());
|
||||
System.out.println(response.getGetResult().getData().getClickURL());
|
||||
System.out.println(response.getGetResult().getData().getJCommand());
|
||||
return response.getGetResult().getData().getClickURL();
|
||||
}
|
||||
|
||||
private Boolean isNew(String wxid) {
|
||||
// 0 是 1 不是
|
||||
boolean flag = false;
|
||||
WxUser wxUser = wxUserService.getOne(Wrappers.query(new WxUser()).eq("wxid", wxid));
|
||||
if (Util.isNotEmpty(wxUser)) {
|
||||
if (wxUser.getIsnew().equals(0)) {
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
private Boolean isNew(Integer isNew) {
|
||||
// 0 是 1 不是
|
||||
boolean flag = false;
|
||||
if (isNew.equals(0)) {
|
||||
flag = true;
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param wxMessage
|
||||
* @return
|
||||
* @throws
|
||||
* @description
|
||||
*/
|
||||
private void handleTransferEvent(WxMessage wxMessage) {
|
||||
Integer msgType = 1;
|
||||
|
||||
/**
|
||||
* {
|
||||
* "fromWxid": "wxid_ytpc72mdoskt22", 对方wxid
|
||||
* "msgSource": 1, 1|收到转账 2|对方接收转账 3|发出转账 4|自己接收转账 5|对方退还 6|自己退还
|
||||
* "transType": 1, 1|即时到账 2|延时到账
|
||||
* "money": "2.00", 金额,单位元
|
||||
* "memo": "", 转账备注
|
||||
* "transferid": "1000050001202312250424037787039", 转账ID
|
||||
* "invalidtime": "1703577220" 10位时间戳
|
||||
* }*/
|
||||
JSONObject data = wxMessage.getData().getJSONObject("data");
|
||||
if (data == null) {
|
||||
return;
|
||||
}
|
||||
WxMessageDataForTransfer wxMessageDataForTransfer = data.to(WxMessageDataForTransfer.class);
|
||||
|
||||
String result = null;
|
||||
String wxid = wxMessageDataForTransfer.getFromwxid();
|
||||
|
||||
WXUtil wxUtil = new WXUtil();
|
||||
|
||||
if (heiMingDan(wxid)) {
|
||||
result = "您已被拉黑,请联系客服!";
|
||||
} else {
|
||||
if (wxMessageDataForTransfer.getTranstype().equals(2)) {
|
||||
result = "请勿使用延时到账功能。累计三次将永久拉黑!";
|
||||
} else {
|
||||
|
||||
JSONObject shouKuanResult = wxUtil.queRenShouKuan(wxid, wxMessageDataForTransfer.getTransferid());
|
||||
if (shouKuanResult == null) {
|
||||
result = "查询转账失败,请稍后再试。";
|
||||
}
|
||||
if (shouKuanResult != null && shouKuanResult.getInteger("code") == 200) {
|
||||
BigDecimal money = wxMessageDataForTransfer.getMoney();
|
||||
if (money.compareTo(BigDecimal.ZERO) > 0) {
|
||||
WxUser wxUser = wxUserService.getOne(Wrappers.query(new WxUser()).eq("wxid", wxid));
|
||||
wxUser.setMoneyLeiji(wxUser.getMoneyLeiji().add(money));
|
||||
wxUser.setMoneyShengyu(wxUser.getMoneyShengyu().add(money));
|
||||
wxUser.setCountChongzhi(wxUser.getCountChongzhi().add(BigDecimal.ONE));
|
||||
wxUserService.updateById(wxUser);
|
||||
result = "收到转账" + money + "元,已成功存入账户。感谢您的使用。";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
wxUtil.sendTextMessage(wxid, result, msgType, null);
|
||||
|
||||
}
|
||||
//private void handleTransferEvent(WxMessage wxMessage) {
|
||||
// Integer msgType = 1;
|
||||
//
|
||||
// /**
|
||||
// * {
|
||||
// * "fromWxid": "wxid_ytpc72mdoskt22", 对方wxid
|
||||
// * "msgSource": 1, 1|收到转账 2|对方接收转账 3|发出转账 4|自己接收转账 5|对方退还 6|自己退还
|
||||
// * "transType": 1, 1|即时到账 2|延时到账
|
||||
// * "money": "2.00", 金额,单位元
|
||||
// * "memo": "", 转账备注
|
||||
// * "transferid": "1000050001202312250424037787039", 转账ID
|
||||
// * "invalidtime": "1703577220" 10位时间戳
|
||||
// * }*/
|
||||
// JSONObject data = wxMessage.getData().getJSONObject("data");
|
||||
// if (data == null) {
|
||||
// return;
|
||||
// }
|
||||
// WxMessageDataForTransfer wxMessageDataForTransfer = data.to(WxMessageDataForTransfer.class);
|
||||
//
|
||||
// String result = null;
|
||||
// String wxid = wxMessageDataForTransfer.getFromwxid();
|
||||
//
|
||||
//
|
||||
//
|
||||
// if (heiMingDan(wxid)) {
|
||||
// result = "您已被拉黑,请联系客服!";
|
||||
// } else {
|
||||
// if (wxMessageDataForTransfer.getTranstype().equals(2)) {
|
||||
// result = "请勿使用延时到账功能。累计三次将永久拉黑!";
|
||||
// } else {
|
||||
//
|
||||
// JSONObject shouKuanResult = wxUtil.queRenShouKuan(wxid, wxMessageDataForTransfer.getTransferid());
|
||||
// if (shouKuanResult == null) {
|
||||
// result = "查询转账失败,请稍后再试。";
|
||||
// }
|
||||
// if (shouKuanResult != null && shouKuanResult.getInteger("code") == 200) {
|
||||
// BigDecimal money = wxMessageDataForTransfer.getMoney();
|
||||
// if (money.compareTo(BigDecimal.ZERO) > 0) {
|
||||
// WxUser wxUser = wxUserService.getOne(Wrappers.query(new WxUser()).eq("wxid", wxid));
|
||||
// wxUser.setMoneyLeiji(wxUser.getMoneyLeiji().add(money));
|
||||
// wxUser.setMoneyShengyu(wxUser.getMoneyShengyu().add(money));
|
||||
// wxUser.setCountChongzhi(wxUser.getCountChongzhi().add(BigDecimal.ONE));
|
||||
// wxUserService.updateById(wxUser);
|
||||
// result = "收到转账" + money + "元,已成功存入账户。感谢您的使用。";
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// wxUtil.sendTextMessage(wxid, result, msgType, null);
|
||||
//
|
||||
//}
|
||||
|
||||
|
||||
/**
|
||||
@@ -151,22 +230,22 @@ public class WxMessageConsumer {
|
||||
*
|
||||
* @param wxMessage
|
||||
*/
|
||||
private void handlePrivateMessage(WxMessage wxMessage) {
|
||||
private void handlePrivateMessage(WxMessage wxMessage) throws Exception {
|
||||
Integer msgType = 1;
|
||||
/**
|
||||
* 接收到消息 : WxMessage(event=10009, wxid=wxid_kr145nk7l0an31, data={"type":"D0003","des":"收到消息","data":{"timeStamp":"1703128368100","fromType":1,"msgT两次ype":1,"msgSource":0,"fromWxid":"wxid_ytpc72mdoskt22","finalFromWxid":"","atWxidList":[],"silence":0,"membercount":0,"signature":"v1_vXrWK/iB","msg":"嗨鲁个迷紫123","msgBase64":"5Zeo6bKB5Liq6L+357SrMTIz"},"timestamp":"1703128368112","wxid":"wxid_kr145nk7l0an31","port":16888,"pid":10468,"flag":"7777"})
|
||||
* 需要get 两次 data 字段*/
|
||||
JSONObject data = wxMessage.getData().getJSONObject("data");
|
||||
if (data == null) {
|
||||
return;
|
||||
}
|
||||
//JSONObject data = wxMessage.getData().getJSONObject("data");
|
||||
//if (data == null) {
|
||||
// return;
|
||||
//}
|
||||
|
||||
/**{"type":"D0003","des":"收到消息","data":{"timeStamp":"1702957325031","fromType":1,"msgType":1,"msgSource":0,"fromWxid":"wxid_ytpc72mdoskt22","finalFromWxid":"","atWxidList":[],"silence":0,"membercount":0,"signature":"v1_OJXJYpvM","msg":"在不","msgBase64":"5Zyo5LiN"},"timestamp":"1702957325041","wxid":"wxid_kr145nk7l0an31","port":16888,"pid":10468,"flag":"7777"}
|
||||
* */
|
||||
WxMessageDataForChat wxMessageDataForChat = data.to(WxMessageDataForChat.class);
|
||||
//WxMessageDataForChat wxMessageDataForChat = data.to(WxMessageDataForChat.class);
|
||||
|
||||
// 做业务处理
|
||||
logger.info("处理消息: {}", wxMessageDataForChat.toString());
|
||||
logger.info("处理消息: {}", JSON.toJSONString(wxMessage));
|
||||
|
||||
/**
|
||||
* timeStamp 收到这条消息的13位现行时间戳
|
||||
@@ -182,59 +261,131 @@ public class WxMessageConsumer {
|
||||
* msg 消息内容
|
||||
* msgBase64 消息内容的Base64
|
||||
* */
|
||||
if (Util.isAnyEmpty(wxMessageDataForChat.getMsg(), wxMessageDataForChat.getFromwxid(), wxMessageDataForChat.getFromtype())) {
|
||||
if (Util.isAnyEmpty(wxMessage.getMsg(), wxMessage.getFromid())) {
|
||||
logger.info("消息内容为空,不处理");
|
||||
return;
|
||||
}
|
||||
|
||||
String msg = wxMessageDataForChat.getMsg();
|
||||
String msg = wxMessage.getMsg();
|
||||
//美团 20-7 + https://i.meituan.com/mttouch/page/account?userId=3822095266&token=AgHdIkm2tAGHc9SQSiG7M8xCx1LbTue9D2HPOAun2eYl3ou7BeEw1uGrGZH-DxmEiUgsbA1v9SM4DQAAAAC6HAAAz0rTXmkB_CIHin08hCu68mFv5k6nUc2q6_CfZqEdBcngRK_xD8Sx5fE4rfdq-yAJ, msgbase64=576O5ZuiIDIwLTcgKyBodHRwczovL2kubWVpdHVhbi5jb20vbXR0b3VjaC9wYWdlL2FjY291bnQ/dXNlcklkPTM4MjIwOTUyNjYmdG9rZW49QWdIZElrbTJ0QUdIYzlTUVNpRzdNOHhDeDFMYlR1ZTlEMkhQT0F1bjJlWWwzb3U3QmVFdzF1R3JHWkgtRHhtRWlVZ3NiQTF2OVNNNERRQUFBQUM2SEFBQXowclRYbWtCX0NJSGluMDhoQ3U2OG1GdjVrNm5VYzJxNl9DZlpxRWRCY25nUktfeEQ4U3g1ZkU0cmZkcS15QUo=
|
||||
if (msg.startsWith("美团 20-7 ")) {
|
||||
logger.info("处理美团的消息");
|
||||
msg = msg.substring(msg.indexOf("https://i.meituan.com/mttouch/page/account"));
|
||||
String[] all = msg.split("\\?");
|
||||
|
||||
if (all.length == 2) {
|
||||
String wxid = null;
|
||||
if (wxMessageDataForChat.getFromtype() == 1) {
|
||||
wxid = wxMessageDataForChat.getFromwxid();
|
||||
} else if (wxMessageDataForChat.getFromtype() == 2) {
|
||||
wxid = wxMessageDataForChat.getFinalfromwxid();
|
||||
}
|
||||
String httpData = all[1];
|
||||
String[] httpDataArr = httpData.split("&");
|
||||
if (httpDataArr.length == 2) {
|
||||
String result = mt20(wxid, httpDataArr[0].split("=")[1], httpDataArr[1].split("=")[1]);
|
||||
WXUtil wxUtil = new WXUtil();
|
||||
wxUtil.sendTextMessage(wxid, result, msgType, null);
|
||||
if (msg.startsWith("【京东】")) {
|
||||
String wxid;
|
||||
if (wxMessage.getFromtype().equals(fromGR)) {
|
||||
wxid = wxMessage.getFromid();
|
||||
} else {
|
||||
WXUtil wxUtil = new WXUtil();
|
||||
wxUtil.sendTextMessage(wxid, "请检查提交的数据格式是否正确。", msgType, null);
|
||||
wxid = wxMessage.getFromgid();
|
||||
}
|
||||
}
|
||||
} else if ("余额".equals(msg)) {
|
||||
String wxid = null;
|
||||
if (wxMessageDataForChat.getFromtype() == 1) {
|
||||
wxid = wxMessageDataForChat.getFromwxid();
|
||||
} else if (wxMessageDataForChat.getFromtype() == 2) {
|
||||
wxid = wxMessageDataForChat.getFinalfromwxid();
|
||||
}
|
||||
WxUser wxUser = wxUserService.getOne(Wrappers.query(new WxUser()).eq("wxid", wxid));
|
||||
String result = "";
|
||||
if (Util.isNotEmpty(wxUser)) {
|
||||
result = "您的余额为:" + wxUser.getMoneyLeiji() + "元\r";
|
||||
result = result + " 您的消费次数为:" + wxUser.getCountXiaofei() + "次\r";
|
||||
result = result + " 您的充值次数为:" + wxUser.getCountChongzhi() + "次\r";
|
||||
result = result + " 您的累计充值为:" + wxUser.getMoneyLeiji() + "元";
|
||||
|
||||
// 使用正则表达式匹配URL
|
||||
String urlPattern = "https?://[\\w-\\.]+(\\.[a-z]{2,})?(/[\\w-./?%&=]*)?";
|
||||
Pattern pattern = Pattern.compile(urlPattern);
|
||||
Matcher matcher = pattern.matcher(msg);
|
||||
|
||||
// 检查是否存在URL,如果存在则打印出来
|
||||
String finallyUrl = null;
|
||||
if (matcher.find()) {
|
||||
finallyUrl = matcher.group();
|
||||
System.out.println("Extracted URL: " + finallyUrl);
|
||||
} else {
|
||||
result = "暂未查询到充值记录。\r";
|
||||
System.out.println("No URL found in the given text.");
|
||||
}
|
||||
if (Util.isNotEmpty(finallyUrl)) {
|
||||
String transferResultUrl = JD_Transfer(finallyUrl);
|
||||
wxUtil.sendTextMessage(wxid, transferResultUrl, msgType, null);
|
||||
}
|
||||
|
||||
WXUtil wxUtil = new WXUtil();
|
||||
wxUtil.sendTextMessage(wxid, result, msgType, null);
|
||||
}
|
||||
wxMessageDataForChatService.save(wxMessageDataForChat);
|
||||
|
||||
//else if (msg.startsWith("美团 ")) {
|
||||
// logger.info("处理美团的消息");
|
||||
// msg = msg.substring(msg.indexOf("https://i.meituan.com/mttouch/page/account"));
|
||||
// String[] all = msg.split("\\?");
|
||||
//
|
||||
// if (all.length == 2) {
|
||||
// String wxid = null;
|
||||
// if (wxMessage.getFromtype().equals(fromGR)) {
|
||||
// wxid = wxMessage.getFromid();
|
||||
// } else {
|
||||
// wxid = wxMessage.getFromgid();
|
||||
// }
|
||||
// String httpData = all[1];
|
||||
// String[] httpDataArr = httpData.split("&");
|
||||
// if (httpDataArr.length == 2) {
|
||||
// // 调用美团
|
||||
// //String result = mt20(wxid, httpDataArr[0].split("=")[1], httpDataArr[1].split("=")[1]);
|
||||
//
|
||||
// //wxUtil.sendTextMessage(wxid, result, msgType, null);
|
||||
// } else {
|
||||
//
|
||||
// wxUtil.sendTextMessage(wxid, "请检查提交的数据格式是否正确。", msgType, null);
|
||||
// }
|
||||
// }
|
||||
//} else if ("余额".equals(msg)) {
|
||||
// String wxid = null;
|
||||
// if (wxMessageDataForChat.getFromtype() == 1) {
|
||||
// wxid = wxMessageDataForChat.getFromwxid();
|
||||
// } else if (wxMessageDataForChat.getFromtype() == 2) {
|
||||
// wxid = wxMessageDataForChat.getFinalfromwxid();
|
||||
// }
|
||||
// WxUser wxUser = wxUserService.getOne(Wrappers.query(new WxUser()).eq("wxid", wxid));
|
||||
// String result = "";
|
||||
// if (Util.isNotEmpty(wxUser)) {
|
||||
// result = "您的余额为:" + wxUser.getMoneyLeiji() + "元\r";
|
||||
// result = result + " 您的消费次数为:" + wxUser.getCountXiaofei() + "次\r";
|
||||
// result = result + " 您的充值次数为:" + wxUser.getCountChongzhi() + "次\r";
|
||||
// result = result + " 您的累计充值为:" + wxUser.getMoneyLeiji() + "元";
|
||||
// } else {
|
||||
// result = "暂未查询到充值记录。\r";
|
||||
// }
|
||||
//
|
||||
//
|
||||
// wxUtil.sendTextMessage(wxid, result, msgType, null);
|
||||
//} else if ("体验".equals(msg)) {
|
||||
// String wxid = null;
|
||||
// if (wxMessageDataForChat.getFromtype() == 1) {
|
||||
// wxid = wxMessageDataForChat.getFromwxid();
|
||||
// } else if (wxMessageDataForChat.getFromtype() == 2) {
|
||||
// wxid = wxMessageDataForChat.getFinalfromwxid();
|
||||
// }
|
||||
// String result = "";
|
||||
// if (heiMingDan(wxid)) {
|
||||
// result = "黑名单!";
|
||||
// } else {
|
||||
// WxUser wxUser = wxUserService.getOne(Wrappers.query(new WxUser()).eq("wxid", wxid));
|
||||
// if (isNew(wxUser.getIsnew())) {
|
||||
// wxUser.setMoneyLeiji(wxUser.getMoneyLeiji().add(new BigDecimal(1)));
|
||||
// wxUser.setMoneyShengyu(wxUser.getMoneyShengyu().add(new BigDecimal(1)));
|
||||
// wxUser.setCountChongzhi(wxUser.getCountChongzhi().add(BigDecimal.ONE));
|
||||
// wxUser.setIsnew(1);
|
||||
// wxUserService.updateById(wxUser);
|
||||
// result = "体验成功,您已成功充值" + 1.00 + "元,已成功存入账户。感谢您的使用。";
|
||||
// } else {
|
||||
// result = "您已体验过,请勿重复体验。";
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
// wxUtil.sendTextMessage(wxid, result, msgType, null);
|
||||
//
|
||||
//}// 用户返回用户菜单
|
||||
//else if (order_caiDan.equals(msg)) {
|
||||
// String wxid = null;
|
||||
// if (wxMessageDataForChat.getFromtype() == 1) {
|
||||
// wxid = wxMessageDataForChat.getFromwxid();
|
||||
// } else if (wxMessageDataForChat.getFromtype() == 2) {
|
||||
// wxid = wxMessageDataForChat.getFinalfromwxid();
|
||||
// }
|
||||
// String result = "";
|
||||
// String puTong = getSetting(key_caiDan_user);
|
||||
// String chaoJi = getSetting(key_caiDan_admin);
|
||||
// if (isSuperAdminUser(wxid)) {
|
||||
// result = "用户菜单:" + puTong + " 管理员菜单:" + chaoJi;
|
||||
// } else {
|
||||
// result = "用户菜单:" + puTong;
|
||||
// }
|
||||
//
|
||||
// wxUtil.sendTextMessage(wxid, result, msgType, wxMessageDataForChat.getFromwxid());
|
||||
//}
|
||||
// wxMessageDataForChatService.save(wxMessageDataForChat);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -243,119 +394,250 @@ public class WxMessageConsumer {
|
||||
* @throws
|
||||
* @description 处理群聊消息
|
||||
*/
|
||||
private void handleGroupMessage(WxMessage wxMessage) {
|
||||
Integer msgType = 2;
|
||||
/**
|
||||
* 接收到消息 : WxMessage(event=10009, wxid=wxid_kr145nk7l0an31, data={"type":"D0003","des":"收到消息","data":{"timeStamp":"1703128368100","fromType":1,"msgT两次ype":1,"msgSource":0,"fromWxid":"wxid_ytpc72mdoskt22","finalFromWxid":"","atWxidList":[],"silence":0,"membercount":0,"signature":"v1_vXrWK/iB","msg":"嗨鲁个迷紫123","msgBase64":"5Zeo6bKB5Liq6L+357SrMTIz"},"timestamp":"1703128368112","wxid":"wxid_kr145nk7l0an31","port":16888,"pid":10468,"flag":"7777"})
|
||||
* 需要get 两次 data 字段*/
|
||||
JSONObject data = wxMessage.getData().getJSONObject("data");
|
||||
if (data == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/**{"type":"D0003","des":"收到消息","data":{"timeStamp":"1702957325031","fromType":1,"msgType":1,"msgSource":0,"fromWxid":"wxid_ytpc72mdoskt22","finalFromWxid":"","atWxidList":[],"silence":0,"membercount":0,"signature":"v1_OJXJYpvM","msg":"在不","msgBase64":"5Zyo5LiN"},"timestamp":"1702957325041","wxid":"wxid_kr145nk7l0an31","port":16888,"pid":10468,"flag":"7777"}
|
||||
* */
|
||||
WxMessageDataForChat wxMessageDataForChat = data.to(WxMessageDataForChat.class);
|
||||
|
||||
// 做业务处理
|
||||
logger.info("处理消息: {}", wxMessageDataForChat.toString());
|
||||
|
||||
/**
|
||||
* timeStamp 收到这条消息的13位现行时间戳
|
||||
* fromType 来源类型:1|私聊 2|群聊 3|公众号
|
||||
* msgType 消息类型:1|文本 3|图片 34|语音 42|名片 43|视频 47|动态表情 48|地理位置 49|分享链接或附件 2001|红包 2002|小程序 2003|群邀请 10000|系统消息
|
||||
* msgSource 消息来源:0|别人发送 1|自己手机发送
|
||||
* fromWxid fromType=1时为好友wxid,fromType=2时为群wxid,fromType=3时公众号wxid
|
||||
* finalFromWxid 仅fromType=2时有效,为群内发言人wxid
|
||||
* atWxidList 仅fromType=2,且msgSource=0时有效,为消息中艾特人wxid列表
|
||||
* silence 仅fromType=2时有效,0
|
||||
* membercount 仅fromType=2时有效,群成员数量
|
||||
* signature 消息签名
|
||||
* msg 消息内容
|
||||
* msgBase64 消息内容的Base64
|
||||
* */
|
||||
if (Util.isAnyEmpty(wxMessageDataForChat.getMsg(), wxMessageDataForChat.getFromwxid(), wxMessageDataForChat.getFromtype())) {
|
||||
logger.info("消息内容为空,不处理");
|
||||
return;
|
||||
}
|
||||
String atwxidlist = wxMessageDataForChat.getAtwxidlist();
|
||||
if (Util.isNotEmpty((atwxidlist))) {
|
||||
JSONObject wxList = new WXUtil().getWxList();
|
||||
JSONObject wxBotInfo = (JSONObject) wxList.getJSONArray("result").get(0);
|
||||
String botWxid = wxBotInfo.getString("wxid");
|
||||
|
||||
if (atwxidlist.contains(botWxid)) {
|
||||
String[] split = wxMessageDataForChat.getMsg().split(" ");
|
||||
String msg;
|
||||
if (split.length == 2){
|
||||
msg = split[1];
|
||||
// private void handleGroupMessage (WxMessage wxMessage){
|
||||
// Integer msgType = 2;
|
||||
// /**
|
||||
// * 接收到消息 : WxMessage(event=10009, wxid=wxid_kr145nk7l0an31, data={"type":"D0003","des":"收到消息","data":{"timeStamp":"1703128368100","fromType":1,"msgT两次ype":1,"msgSource":0,"fromWxid":"wxid_ytpc72mdoskt22","finalFromWxid":"","atWxidList":[],"silence":0,"membercount":0,"signature":"v1_vXrWK/iB","msg":"嗨鲁个迷紫123","msgBase64":"5Zeo6bKB5Liq6L+357SrMTIz"},"timestamp":"1703128368112","wxid":"wxid_kr145nk7l0an31","port":16888,"pid":10468,"flag":"7777"})
|
||||
// * 需要get 两次 data 字段*/
|
||||
// JSONObject data = wxMessage.getData().getJSONObject("data");
|
||||
// if (data == null) {
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
//
|
||||
// /**{"type":"D0003","des":"收到消息","data":{"timeStamp":"1702957325031","fromType":1,"msgType":1,"msgSource":0,"fromWxid":"wxid_ytpc72mdoskt22","finalFromWxid":"","atWxidList":[],"silence":0,"membercount":0,"signature":"v1_OJXJYpvM","msg":"在不","msgBase64":"5Zyo5LiN"},"timestamp":"1702957325041","wxid":"wxid_kr145nk7l0an31","port":16888,"pid":10468,"flag":"7777"}
|
||||
// * */
|
||||
// WxMessageDataForChat wxMessageDataForChat = data.to(WxMessageDataForChat.class);
|
||||
//
|
||||
// // 做业务处理
|
||||
// logger.info("处理消息: {}", wxMessageDataForChat.toString());
|
||||
//
|
||||
// /**
|
||||
// * timeStamp 收到这条消息的13位现行时间戳
|
||||
// * fromType 来源类型:1|私聊 2|群聊 3|公众号
|
||||
// * msgType 消息类型:1|文本 3|图片 34|语音 42|名片 43|视频 47|动态表情 48|地理位置 49|分享链接或附件 2001|红包 2002|小程序 2003|群邀请 10000|系统消息
|
||||
// * msgSource 消息来源:0|别人发送 1|自己手机发送
|
||||
// * fromWxid fromType=1时为好友wxid,fromType=2时为群wxid,fromType=3时公众号wxid
|
||||
// * finalFromWxid 仅fromType=2时有效,为群内发言人wxid
|
||||
// * atWxidList 仅fromType=2,且msgSource=0时有效,为消息中艾特人wxid列表
|
||||
// * silence 仅fromType=2时有效,0
|
||||
// * membercount 仅fromType=2时有效,群成员数量
|
||||
// * signature 消息签名
|
||||
// * msg 消息内容
|
||||
// * msgBase64 消息内容的Base64
|
||||
// * */
|
||||
// if (Util.isAnyEmpty(wxMessageDataForChat.getMsg(), wxMessageDataForChat.getFromwxid(), wxMessageDataForChat.getFromtype())) {
|
||||
// logger.info("消息内容为空,不处理");
|
||||
// return;
|
||||
// }
|
||||
// String atwxidlist = wxMessageDataForChat.getAtwxidlist();
|
||||
// if (Util.isNotEmpty((atwxidlist))) {
|
||||
// JSONObject wxList = wxUtil.getWxList();
|
||||
// JSONObject wxBotInfo = (JSONObject) wxList.getJSONArray("result").get(0);
|
||||
// String botWxid = wxBotInfo.getString("wxid");
|
||||
//
|
||||
// if (atwxidlist.contains(botWxid)) {
|
||||
// String[] split = wxMessageDataForChat.getMsg().split(" ");
|
||||
// String msg;
|
||||
// if (split.length == 2) {
|
||||
// msg = split[1];
|
||||
// } else {
|
||||
// String[] newArray = new String[split.length - 1];
|
||||
// System.arraycopy(split, 1, newArray, 0, newArray.length);
|
||||
// StringBuilder stringBuilder = new StringBuilder();
|
||||
// Iterator<String> iterator = Arrays.stream(newArray).iterator();
|
||||
// while (iterator.hasNext()) {
|
||||
// String s = iterator.next();
|
||||
// stringBuilder.append(s).append(" ");
|
||||
// }
|
||||
// msg = stringBuilder.toString();
|
||||
// }
|
||||
//
|
||||
////美团 20-7 + https://i.meituan.com/mttouch/page/account?userId=3822095266&token=AgHdIkm2tAGHc9SQSiG7M8xCx1LbTue9D2HPOAun2eYl3ou7BeEw1uGrGZH-DxmEiUgsbA1v9SM4DQAAAAC6HAAAz0rTXmkB_CIHin08hCu68mFv5k6nUc2q6_CfZqEdBcngRK_xD8Sx5fE4rfdq-yAJ, msgbase64=576O5ZuiIDIwLTcgKyBodHRwczovL2kubWVpdHVhbi5jb20vbXR0b3VjaC9wYWdlL2FjY291bnQ/dXNlcklkPTM4MjIwOTUyNjYmdG9rZW49QWdIZElrbTJ0QUdIYzlTUVNpRzdNOHhDeDFMYlR1ZTlEMkhQT0F1bjJlWWwzb3U3QmVFdzF1R3JHWkgtRHhtRWlVZ3NiQTF2OVNNNERRQUFBQUM2SEFBQXowclRYbWtCX0NJSGluMDhoQ3U2OG1GdjVrNm5VYzJxNl9DZlpxRWRCY25nUktfeEQ4U3g1ZkU0cmZkcS15QUo=
|
||||
// if (msg.startsWith("美团 20-7 ")) {
|
||||
// logger.info("处理美团的消息");
|
||||
// msg = msg.substring(msg.indexOf("https://i.meituan.com/mttouch/page/account"));
|
||||
// String[] all = msg.split("\\?");
|
||||
//
|
||||
// if (all.length == 2) {
|
||||
// String wxid = null;
|
||||
// if (wxMessageDataForChat.getFromtype() == 1) {
|
||||
// wxid = wxMessageDataForChat.getFromwxid();
|
||||
// } else if (wxMessageDataForChat.getFromtype() == 2) {
|
||||
// wxid = wxMessageDataForChat.getFinalfromwxid();
|
||||
// }
|
||||
// String httpData = all[1];
|
||||
// String[] httpDataArr = httpData.split("&");
|
||||
// if (httpDataArr.length == 2) {
|
||||
// String result = mt20(wxMessageDataForChat.getFinalfromwxid(), httpDataArr[0].split("=")[1], httpDataArr[1].split("=")[1]);
|
||||
//
|
||||
// wxUtil.sendTextMessage(wxMessageDataForChat.getFinalfromwxid(), result, msgType, wxMessageDataForChat.getFromwxid());
|
||||
// } else {
|
||||
//
|
||||
// wxUtil.sendTextMessage(wxMessageDataForChat.getFinalfromwxid(), "请检查提交的数据格式是否正确。", msgType, wxMessageDataForChat.getFromwxid());
|
||||
// }
|
||||
//
|
||||
// }
|
||||
// } else if ("[转账待你接收,可在手机上查看]".equals(msg)) {
|
||||
//
|
||||
// wxUtil.sendTextMessage(wxMessageDataForChat.getFinalfromwxid(), "暂不支持群内转账功能,请私聊进行转账充值。", msgType, wxMessageDataForChat.getFromwxid());
|
||||
// } else if ("余额".equals(msg)) {
|
||||
// String wxid = null;
|
||||
// if (wxMessageDataForChat.getFromtype() == 1) {
|
||||
// wxid = wxMessageDataForChat.getFromwxid();
|
||||
// } else if (wxMessageDataForChat.getFromtype() == 2) {
|
||||
// wxid = wxMessageDataForChat.getFinalfromwxid();
|
||||
// }
|
||||
// WxUser wxUser = wxUserService.getOne(Wrappers.query(new WxUser()).eq("wxid", wxid));
|
||||
// String result = "";
|
||||
// if (Util.isNotEmpty(wxUser)) {
|
||||
// result = "您的余额为:" + wxUser.getMoneyLeiji() + "元\r";
|
||||
// result = result + " 您的消费次数为:" + wxUser.getCountXiaofei() + "次\r";
|
||||
// result = result + " 您的充值次数为:" + wxUser.getCountChongzhi() + "次\r";
|
||||
// result = result + " 您的累计充值为:" + wxUser.getMoneyLeiji() + "元";
|
||||
// } else {
|
||||
// result = "暂未查询到充值记录。\r";
|
||||
// }
|
||||
//
|
||||
//
|
||||
// wxUtil.sendTextMessage(wxid, result, msgType, wxMessageDataForChat.getFromwxid());
|
||||
// } else if ("体验".equals(msg)) {
|
||||
// String wxid = null;
|
||||
// if (wxMessageDataForChat.getFromtype() == 1) {
|
||||
// wxid = wxMessageDataForChat.getFromwxid();
|
||||
// } else if (wxMessageDataForChat.getFromtype() == 2) {
|
||||
// wxid = wxMessageDataForChat.getFinalfromwxid();
|
||||
// }
|
||||
// String result = "";
|
||||
// if (heiMingDan(wxid)) {
|
||||
// result = "黑名单!";
|
||||
// } else {
|
||||
// WxUser wxUser = wxUserService.getOne(Wrappers.query(new WxUser()).eq("wxid", wxid));
|
||||
// if (isNew(wxUser.getIsnew())) {
|
||||
// wxUser.setMoneyLeiji(wxUser.getMoneyLeiji().add(new BigDecimal(1)));
|
||||
// wxUser.setMoneyShengyu(wxUser.getMoneyShengyu().add(new BigDecimal(1)));
|
||||
// wxUser.setCountChongzhi(wxUser.getCountChongzhi().add(BigDecimal.ONE));
|
||||
// wxUser.setIsnew(1);
|
||||
// wxUserService.updateById(wxUser);
|
||||
// result = "体验成功,您已成功充值" + 1.00 + "元,已成功存入账户。感谢您的使用。";
|
||||
// } else {
|
||||
// result = "您已体验过,请勿重复体验。";
|
||||
// }
|
||||
//
|
||||
// }
|
||||
//
|
||||
// wxUtil.sendTextMessage(wxid, result, msgType, wxMessageDataForChat.getFromwxid());
|
||||
//
|
||||
// } else if (msg.startsWith("S")) {
|
||||
// logger.info("处理超级管理员的消息");
|
||||
// String wxid = null;
|
||||
// if (wxMessageDataForChat.getFromtype() == 1) {
|
||||
// wxid = wxMessageDataForChat.getFromwxid();
|
||||
// } else if (wxMessageDataForChat.getFromtype() == 2) {
|
||||
// wxid = wxMessageDataForChat.getFinalfromwxid();
|
||||
// }
|
||||
// if (!isSuperAdminUser(wxid)) {
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// String result = "";
|
||||
// if (heiMingDan(wxid)) {
|
||||
// result = "黑名单!";
|
||||
// } else {
|
||||
// String[] split1 = msg.split("\\+");
|
||||
// String superAdminOrder = split1[1];
|
||||
// if ("设置普通菜单".equals(superAdminOrder)) {
|
||||
// if (split1.length == 3) {
|
||||
// String value = split1[2];
|
||||
// Setting setting = settingService.getOne(new QueryWrapper<Setting>().eq("setting_key", key_caiDan_admin));
|
||||
// setting.setSettingValue(value);
|
||||
// settingService.saveOrUpdate(setting);
|
||||
// result = "设置成功!";
|
||||
// } else {
|
||||
// result = "设置失败!";
|
||||
// }
|
||||
// } else if ("设置超级菜单".equals(superAdminOrder)) {
|
||||
// if (split1.length == 3) {
|
||||
// String value = split1[2];
|
||||
// Setting setting = settingService.getOne(new QueryWrapper<Setting>().eq("setting_key", key_caiDan_admin));
|
||||
// setting.setSettingValue(value);
|
||||
// settingService.saveOrUpdate(setting);
|
||||
// result = "设置成功!";
|
||||
// } else {
|
||||
// result = "设置失败!";
|
||||
// }
|
||||
// } else if ("查询管理员".equals(superAdminOrder)) {
|
||||
// result = getSetting(order_admin);
|
||||
// } else if ("添加管理员".equals(superAdminOrder)) {
|
||||
// if (split1.length == 3) {
|
||||
// String value = split1[2];
|
||||
// Setting setting = settingService.getOne(new QueryWrapper<Setting>().eq("setting_key", order_admin));
|
||||
// setting.setSettingValue(value.concat(",").concat(setting.getSettingValue()));
|
||||
// settingService.saveOrUpdate(setting);
|
||||
// result = "设置成功!";
|
||||
// } else {
|
||||
// result = "设置失败!";
|
||||
// }
|
||||
// } else if ("删除管理员".equals(superAdminOrder)) {
|
||||
// if (split1.length == 3) {
|
||||
// String value = split1[2];
|
||||
// Setting setting = settingService.getOne(new QueryWrapper<Setting>().eq("setting_key", order_admin));
|
||||
// setting.setSettingValue(setting.getSettingValue().replace(value, ""));
|
||||
// settingService.saveOrUpdate(setting);
|
||||
// result = "设置成功!";
|
||||
// } else {
|
||||
// result = "设置失败!";
|
||||
// }
|
||||
// }
|
||||
// //
|
||||
// //if ()
|
||||
//
|
||||
// wxUtil.sendTextMessage(wxid, result, msgType, wxMessageDataForChat.getFromwxid());
|
||||
// }
|
||||
// }
|
||||
// // 管理员返回两种菜单
|
||||
// else if (order_caiDan.equals(msg)) {
|
||||
// String wxid = null;
|
||||
// if (wxMessageDataForChat.getFromtype() == 1) {
|
||||
// wxid = wxMessageDataForChat.getFromwxid();
|
||||
// } else if (wxMessageDataForChat.getFromtype() == 2) {
|
||||
// wxid = wxMessageDataForChat.getFinalfromwxid();
|
||||
// }
|
||||
// String result = "";
|
||||
// String puTong = getSetting(key_caiDan_user);
|
||||
// String chaoJi = getSetting(key_caiDan_admin);
|
||||
// if (isSuperAdminUser(wxid)) {
|
||||
// result = "用户菜单:" + puTong + " 管理员菜单:" + chaoJi;
|
||||
// } else {
|
||||
// result = "用户菜单:" + puTong;
|
||||
// }
|
||||
//
|
||||
// wxUtil.sendTextMessage(wxid, result, msgType, wxMessageDataForChat.getFromwxid());
|
||||
// }
|
||||
// }
|
||||
// wxMessageDataForChatService.save(wxMessageDataForChat);
|
||||
//
|
||||
// }
|
||||
//
|
||||
// }
|
||||
private String getSetting(String key) {
|
||||
if (Util.isNotEmpty(key)) {
|
||||
Setting value = settingService.getOne(new QueryWrapper<Setting>().eq("setting_key", key));
|
||||
return value.getSettingValue();
|
||||
} else {
|
||||
String[] newArray = new String[split.length - 1];
|
||||
System.arraycopy(split, 1, newArray, 0, newArray.length);
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
Iterator<String> iterator = Arrays.stream(newArray).iterator();
|
||||
while (iterator.hasNext()) {
|
||||
String s = iterator.next();
|
||||
stringBuilder.append(s).append(" ");
|
||||
}
|
||||
msg = stringBuilder.toString();
|
||||
}
|
||||
|
||||
//美团 20-7 + https://i.meituan.com/mttouch/page/account?userId=3822095266&token=AgHdIkm2tAGHc9SQSiG7M8xCx1LbTue9D2HPOAun2eYl3ou7BeEw1uGrGZH-DxmEiUgsbA1v9SM4DQAAAAC6HAAAz0rTXmkB_CIHin08hCu68mFv5k6nUc2q6_CfZqEdBcngRK_xD8Sx5fE4rfdq-yAJ, msgbase64=576O5ZuiIDIwLTcgKyBodHRwczovL2kubWVpdHVhbi5jb20vbXR0b3VjaC9wYWdlL2FjY291bnQ/dXNlcklkPTM4MjIwOTUyNjYmdG9rZW49QWdIZElrbTJ0QUdIYzlTUVNpRzdNOHhDeDFMYlR1ZTlEMkhQT0F1bjJlWWwzb3U3QmVFdzF1R3JHWkgtRHhtRWlVZ3NiQTF2OVNNNERRQUFBQUM2SEFBQXowclRYbWtCX0NJSGluMDhoQ3U2OG1GdjVrNm5VYzJxNl9DZlpxRWRCY25nUktfeEQ4U3g1ZkU0cmZkcS15QUo=
|
||||
if (msg.startsWith("美团 20-7 ")) {
|
||||
logger.info("处理美团的消息");
|
||||
msg = msg.substring(msg.indexOf("https://i.meituan.com/mttouch/page/account"));
|
||||
String[] all = msg.split("\\?");
|
||||
|
||||
if (all.length == 2) {
|
||||
String wxid = null;
|
||||
if (wxMessageDataForChat.getFromtype() == 1) {
|
||||
wxid = wxMessageDataForChat.getFromwxid();
|
||||
} else if (wxMessageDataForChat.getFromtype() == 2) {
|
||||
wxid = wxMessageDataForChat.getFinalfromwxid();
|
||||
}
|
||||
String httpData = all[1];
|
||||
String[] httpDataArr = httpData.split("&");
|
||||
if (httpDataArr.length == 2) {
|
||||
String result = mt20(wxMessageDataForChat.getFinalfromwxid(), httpDataArr[0].split("=")[1], httpDataArr[1].split("=")[1]);
|
||||
WXUtil wxUtil = new WXUtil();
|
||||
wxUtil.sendTextMessage(wxMessageDataForChat.getFinalfromwxid(), result, msgType, wxMessageDataForChat.getFromwxid());
|
||||
} else {
|
||||
WXUtil wxUtil = new WXUtil();
|
||||
wxUtil.sendTextMessage(wxMessageDataForChat.getFinalfromwxid(), "请检查提交的数据格式是否正确。", msgType, wxMessageDataForChat.getFromwxid());
|
||||
}
|
||||
|
||||
}
|
||||
} else if ("[转账待你接收,可在手机上查看]".equals(msg)) {
|
||||
WXUtil wxUtil = new WXUtil();
|
||||
wxUtil.sendTextMessage(wxMessageDataForChat.getFinalfromwxid(), "暂不支持群内转账功能,请私聊进行转账充值。", msgType, wxMessageDataForChat.getFromwxid());
|
||||
} else if ("余额".equals(msg)) {
|
||||
String wxid = null;
|
||||
if (wxMessageDataForChat.getFromtype() == 1) {
|
||||
wxid = wxMessageDataForChat.getFromwxid();
|
||||
} else if (wxMessageDataForChat.getFromtype() == 2) {
|
||||
wxid = wxMessageDataForChat.getFinalfromwxid();
|
||||
}
|
||||
WxUser wxUser = wxUserService.getOne(Wrappers.query(new WxUser()).eq("wxid", wxid));
|
||||
String result = "";
|
||||
if (Util.isNotEmpty(wxUser)) {
|
||||
result = "您的余额为:" + wxUser.getMoneyLeiji() + "元\r";
|
||||
result = result + " 您的消费次数为:" + wxUser.getCountXiaofei() + "次\r";
|
||||
result = result + " 您的充值次数为:" + wxUser.getCountChongzhi() + "次\r";
|
||||
result = result + " 您的累计充值为:" + wxUser.getMoneyLeiji() + "元";
|
||||
} else {
|
||||
result = "暂未查询到充值记录。\r";
|
||||
}
|
||||
|
||||
WXUtil wxUtil = new WXUtil();
|
||||
wxUtil.sendTextMessage(wxid, result, msgType, wxMessageDataForChat.getFromwxid());
|
||||
}
|
||||
wxMessageDataForChatService.save(wxMessageDataForChat);
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isSuperAdminUser(String wxid) {
|
||||
boolean flag = false;
|
||||
Setting setting = settingService.getOne(new QueryWrapper<Setting>().eq("setting_key", "管理员"));
|
||||
if (Util.isNotEmpty(setting)) {
|
||||
if (setting.getSettingValue().contains(wxid)) {
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -429,7 +711,7 @@ public class WxMessageConsumer {
|
||||
}
|
||||
|
||||
/**
|
||||
* @param remark
|
||||
* @param wxid
|
||||
* @param time 调用次数,后期可以改成包月还是一次 ,目前都是 1
|
||||
* @param token
|
||||
* @return
|
||||
@@ -459,17 +741,33 @@ public class WxMessageConsumer {
|
||||
* 6.拿到青龙的结果
|
||||
* */
|
||||
//new QLUtil().getEnv(remark)
|
||||
QLUtil qlUtil = new QLUtil();
|
||||
WXUtil wxUtil = new WXUtil();
|
||||
|
||||
|
||||
HashMap<String, String> loginedUserInfo = qlUtil.getLoginedUserInfo(token);
|
||||
if (Util.isNotEmpty(loginedUserInfo)) {
|
||||
String mobile = loginedUserInfo.get("mobile");
|
||||
String nickName = loginedUserInfo.get("nickName");
|
||||
String remark = nickName + "+" + mobile;
|
||||
return remark;
|
||||
//qlUtil.addEnv(token, meituanCookie, remark);
|
||||
String remark = wxid + "+" + mobile + "+" + nickName;
|
||||
JSONArray env = qlUtil.getEnv(token);
|
||||
logger.info("1 查询环境变量 env = " + env);
|
||||
// 第一次用 token 查询
|
||||
if (env.size() == 0) {
|
||||
env = qlUtil.getEnv(wxid + "+" + mobile);
|
||||
}
|
||||
// 第二次用 wxid + mobile 查询,如果不存在就直接创建
|
||||
if (env.size() == 0) {
|
||||
Boolean addEnv = qlUtil.addEnv(token, meituanCookie, remark);
|
||||
logger.info("2 使用token查询不存在环境变量,向青龙添加变量 addEnv = " + addEnv);
|
||||
} else {
|
||||
// 如果存在则说明 需要更新token
|
||||
logger.info("3 环境变量已存在{}", env);
|
||||
}
|
||||
// 这时候已经有了环境变量,可以执行crons
|
||||
qlUtil.getCron("美团");
|
||||
//logger.info("查询crons cron = " + cron);
|
||||
|
||||
|
||||
return "runQL 调用成功";
|
||||
|
||||
} else {
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
server:
|
||||
port: 5700
|
||||
port: 6666
|
||||
spring:
|
||||
application:
|
||||
name: MT2QL
|
||||
@@ -23,3 +23,6 @@ spring:
|
||||
max-idle: 5
|
||||
min-idle: 0
|
||||
password: jhkdjhkjdhsIUTYURTU_HQw7tC # 文件上传
|
||||
config:
|
||||
WX_BASE_URL: http://134.175.126.60:30001
|
||||
QL_BASE_URL: http://134.175.126.60:35700
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
server:
|
||||
port: 18080
|
||||
port: 6666
|
||||
spring:
|
||||
application:
|
||||
name: MT2QL
|
||||
@@ -20,3 +20,6 @@ spring:
|
||||
max-idle: 5
|
||||
min-idle: 0
|
||||
password: jhkdjhkjdhsIUTYURTU_HQw7tC
|
||||
config:
|
||||
WX_BASE_URL: http://127.0.0.1:30001/DaenWxHook/httpapi/
|
||||
QL_BASE_URL: http://127.0.0.1:5700
|
||||
|
||||
@@ -3,3 +3,5 @@ spring:
|
||||
name: MT2QL
|
||||
profiles:
|
||||
active: dev
|
||||
main:
|
||||
allow-circular-references=true:
|
||||
|
||||
Reference in New Issue
Block a user