完成基本京粉功能推送,订单统计,订单拉取的稳定版初版

This commit is contained in:
Leo
2024-11-11 00:02:27 +08:00
parent 19f1095a7c
commit 9c1c18b71d
38 changed files with 4628 additions and 185 deletions

View File

@@ -0,0 +1,242 @@
package cn.van.business.util;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpRequest;
import cn.van.business.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;
/**
* @author Leo
* @version 1.0
* @create 2023/12/22 0022 上午 09:59
* @description
*/
@Component
public class WXUtil {
private static final Logger logger = LoggerFactory.getLogger(WXUtil.class);
public static final String super_admin_wxid = "wxid_ytpc72mdoskt22";
/**
* url http://127.0.0.1:7777/DaenWxHook/httpapi/
* 获取微信列表 (X0000)
* 微信状态检测(Q0000)
* 发送文本消息(Q0001)
* 修改下载图片 (Q0002)
* 获取个人信息 (Q0003)
* 查询对象信(Q0004)
* 获取好友列表(Q0005)
* 获取群聊列表(Q0006)
* 获取公众号列表(Q0007)
* 获取群成员列表(Q0008)
* 发送聊天记录(Q0009)
* 发送图片 (Q0010)
* 发送本地文件(Q0011)
* 发送分享链接(Q0012)
* 发送小程序(Q0013)
* 发送音乐分享(Q0014)
* 发送XML (Q0015)
* 确认收款 (Q0016)
* 同意好友请求(Q0017)
* 添加好友通过v3(Q0018)
* 添加好友_通过wxid (Q0019)
* 查询陌生人信息(Q0020)
* 邀请进群(Q0021)
* 删除好友(Q0022)
* 修改对象备注(Q0023)
* 修改群聊名称(Q0024)
* 发送名片(Q0025)
*/
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() {
WxReqDate wxReqDate = createWxReqData(WXReqType.GET_WX_LIST);
String responseStr = HttpRequest.post(WX_BASE_URL).body(JSON.toJSONString(wxReqDate)).execute().body();
if (ObjectUtil.isNotEmpty(responseStr)) {
return JSON.parseObject(responseStr);
} else {
return null;
}
}
// 发送文本消息 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 = "超管: 凡 \r\n" + content;
}
//JSONObject wxList = getWxList();
//JSONObject wxBotInfo = (JSONObject) wxList.getJSONArray("result").get(0);
//botWxid = wxBotInfo.getString("wxid");
//
////
//WxReqDate wxReqDate = createWxReqData(WXReqType.SEND_TEXT_MESSAGE);
JSONObject jsonObject = new JSONObject();
jsonObject.put("type", WXReqType.SEND_TEXT_MESSAGE.getType());
//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 data = new JSONObject();
data.put("msg", content);
data.put("wxid", wxid);
jsonObject.put("data", data);
System.out.println(JSON.toJSONString(jsonObject));
//wxReqDate.setData(jsonObject);
while (Util.isNotEmpty(wxid)) {
String responseStr = HttpRequest.post(WX_BASE_URL).body(JSON.toJSONString(jsonObject)).execute().body();
if (ObjectUtil.isNotEmpty(responseStr)) {
JSONObject response = JSON.parseObject(responseStr);
//WxResponse wxResponse = JSON.parseObject(responseStr, WxResponse.class);
//System.out.println(wxResponse);
//if (Objects.equals(String.valueOf(wxResponse.getCode()), "200")) {
// return wxResponse.getData();
//}
//JSONObject jsonObject = HttpUtil.sendPost(url, wxReqDate.getData());
logger.info("消息响应:" + response.toString());
return response;
}
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
return null;
}
//private JSONObject sendWxReq(WxReqDate wxReqDate) {
// if (wxReqDate == null) {
// return null;
// } else {
// logger.info("wxReqDate: {}", wxReqDate);
//
// String responseStr = HttpRequest.post(WX_BASE_URL).body(JSON.toJSONString(wxReqDate)).execute().body();
// if (ObjectUtil.isNotEmpty(responseStr)) {
// JSONObject jsonObject = JSON.parseObject(responseStr);
// //WxResponse wxResponse = JSON.parseObject(responseStr, WxResponse.class);
// //System.out.println(wxResponse);
// //if (Objects.equals(String.valueOf(wxResponse.getCode()), "200")) {
// // return wxResponse.getData();
// //}
// //JSONObject jsonObject = HttpUtil.sendPost(url, wxReqDate.getData());
// return jsonObject;
// }
// }
//
// return null;
// }
//}
/**
* {
* "type": "Q0016",
* "data": {
* "wxid": "wxid_3sx9sjgq99kd22",
* "transferid": "1000050001202207161417697440336"
* }
* }
*/
public JSONObject queRenShouKuan(String wxid, String transferid) {
String botWxid = "";
JSONObject wxList = getWxList();
JSONObject wxBotInfo = (JSONObject) wxList.getJSONArray("result").get(0);
botWxid = wxBotInfo.getString("wxid");
WxReqDate wxReqDate = createWxReqData(WXReqType.CONFIRM_RECEIPT);
HashMap<String, String> body = new HashMap<>();
body.put("wxid", wxid);
body.put("transferid", transferid);
JSONObject jsonObject = new JSONObject(body);
wxReqDate.setData(jsonObject);
String responseStr = HttpRequest.post(WX_BASE_URL + "?wxid=" + botWxid).body(JSON.toJSONString(wxReqDate)).execute().body();
logger.info("确认收款结果responseStr: {}", responseStr);
if (ObjectUtil.isNotEmpty(responseStr)) {
return JSON.parseObject(responseStr);
} else {
return null;
}
}
public WxReqDate createWxReqData(WXReqType wxReqType) {
WxReqDate wxReqDate = new WxReqDate(wxReqType.getType(), null);
return wxReqDate;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
private class WxResponse {
/**
* {
* "code": 200,
* "msg": "操作成功",
* "result": {},
* "wxid": "wxid_3sq4tklb6c3121",
* "port": 7305,
* "pid": 12384,
* "flag": "7777",
* "timestamp": "1657462661814"
* }
*/
private Integer code;
private String msg;
private JSONObject result;
private String wxid;
private Integer port;
private Integer pid;
private String flag;
private String timestamp;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
private class WxReqDate {
//{
// "type": "X0000",
// "data": {}
//}
private String type;
private JSONObject data;
}
}