重构评论
This commit is contained in:
@@ -31,186 +31,26 @@ import static cn.van.business.util.WXUtil.*;
|
||||
*/
|
||||
@Component
|
||||
public class WxMessageConsumer {
|
||||
|
||||
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 BigDecimal priceOfMT20 = new BigDecimal("0.2");
|
||||
private static final Integer fromGR = 10008;
|
||||
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 WxMessageDataForChatRepository wxMessageDataForChatRepository;
|
||||
private final WxUserRepository wxUserRepository;
|
||||
private final SettingRepository settingRepository;
|
||||
private final JDUtil jdUtils;
|
||||
|
||||
@Autowired
|
||||
public WxMessageConsumer(WXUtil wxUtil, QLUtil qlUtil,
|
||||
@Lazy WxMessageDataForChatRepository wxMessageDataForChatService,
|
||||
@Lazy WxUserRepository wxUserRepository,
|
||||
@Lazy SettingRepository settingRepository,
|
||||
@Lazy JDUtil jdUtils) {
|
||||
this.wxUtil = wxUtil;
|
||||
this.qlUtil = qlUtil;
|
||||
this.wxMessageDataForChatRepository = wxMessageDataForChatService;
|
||||
this.wxUserRepository = wxUserRepository;
|
||||
this.settingRepository = settingRepository;
|
||||
public WxMessageConsumer(@Lazy JDUtil jdUtils) {
|
||||
this.jdUtils = jdUtils;
|
||||
}
|
||||
|
||||
/**
|
||||
* 从京东商品 URL 中提取产品 ID
|
||||
*
|
||||
* @param url 需要解析的 URL
|
||||
* @return 提取出的产品 ID
|
||||
*/
|
||||
public static String extractProductId(String url) {
|
||||
// 使用正则表达式匹配 pattern 包含 /product/ 后跟一系列数字,结束于 .html
|
||||
Pattern pattern = Pattern.compile("/product/(\\d+)\\.html");
|
||||
Matcher matcher = pattern.matcher(url);
|
||||
|
||||
if (matcher.find()) {
|
||||
return matcher.group(1); // 返回第一个捕获组(产品 ID)
|
||||
}
|
||||
return null; // 如果没有找到匹配项,返回 null
|
||||
}
|
||||
|
||||
//private Boolean heiMingDan(String wxid) {
|
||||
// // 0 正常 1 黑名单
|
||||
// //
|
||||
// boolean flag = false;
|
||||
// WxUser wxUser = wxUserRepository.getOne(Wrappers.query(new WxUser()).eq("wxid", wxid));
|
||||
// if (Util.isNotEmpty(wxUser)) {
|
||||
// if (wxUser.getStatus().equals(1)) {
|
||||
// flag = true;
|
||||
// }
|
||||
// }
|
||||
// return flag;
|
||||
//}
|
||||
|
||||
|
||||
//private Boolean isNew(String wxid) {
|
||||
// // 0 是 1 不是
|
||||
// boolean flag = false;
|
||||
// WxUser wxUser = wxUserRepository.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();
|
||||
//
|
||||
//
|
||||
//
|
||||
// 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);
|
||||
//
|
||||
//}
|
||||
@Async("threadPoolTaskExecutor")
|
||||
public void consume(WxMessage wxMessage) throws Exception {
|
||||
//logger.info("接收到消息 : {}", wxMessage);
|
||||
if (wxMessage.getEvent() == null) {
|
||||
return;
|
||||
}
|
||||
/**
|
||||
* 需要处理 私聊 和 转账消息
|
||||
* 其他消息暂时不处理
|
||||
* 私聊需要解析是否美团领券
|
||||
* 转账需要对接会员系统
|
||||
*
|
||||
* */
|
||||
//WxMessage.DataSection data = wxMessage.getData();
|
||||
|
||||
if (FromType.PRIVATE.getKey().equals(wxMessage.getEvent())) {
|
||||
handlePrivateMessage(wxMessage);
|
||||
} else if (FromType.GROUP.getKey().equals(wxMessage.getEvent())) {
|
||||
handleGroupMessage(wxMessage);
|
||||
}
|
||||
//if (event.equals(EventType.TRANSFER_EVENT.getKey())) {
|
||||
// handleTransferEvent(wxMessage);
|
||||
//}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -229,37 +69,23 @@ public class WxMessageConsumer {
|
||||
} else {
|
||||
logger.info("消息内容:{}", innerData.getMsg());
|
||||
}
|
||||
|
||||
String fromWxid = innerData.getFromWxid();
|
||||
WXUtil.SuperAdmin superAdmin = getSuperAdmins(fromWxid).get(0);
|
||||
if (Util.isEmpty(superAdmin)) {
|
||||
logger.info("不是超管消息,不处理");
|
||||
return;
|
||||
}
|
||||
|
||||
String msg = innerData.getMsg();
|
||||
if (msg.startsWith("京")) {
|
||||
logger.info("消息以京开头,处理京东指令消息");
|
||||
jdUtils.sendOrderToWxByOrderJD(msg.replace("京", ""), fromWxid);
|
||||
return;
|
||||
} else {
|
||||
logger.info("消息不以京开头");
|
||||
}
|
||||
if (msg.startsWith("拼")) {
|
||||
logger.info("消息以拼开头,处理拼多多指令消息");
|
||||
jdUtils.sendOrderToWxByOrderPDD(msg.replace("拼", ""), fromWxid);
|
||||
return;
|
||||
}
|
||||
if (msg.startsWith("单")) {
|
||||
logger.info("消息以单开头,处理单指令消息");
|
||||
jdUtils.sendOrderToWxByOrderD(msg.replace("单", ""), fromWxid);
|
||||
return;
|
||||
}
|
||||
//if (msg.startsWith("评")){
|
||||
// logger.info("消息以评开头,处理评价指令消息");
|
||||
// jdUtils.sendOrderToWxByOrderP(msg.replace("评", ""), fromWxid);
|
||||
// return;
|
||||
//}
|
||||
logger.info("未命中前置指令,开始命中 Default 流程");
|
||||
jdUtils.sendOrderToWxByOrderDefault(msg, fromWxid);
|
||||
}
|
||||
@@ -281,542 +107,33 @@ public class WxMessageConsumer {
|
||||
|
||||
if (chatRoom_xb.containsKey(fromWxid)) {
|
||||
logger.info("线报群消息");
|
||||
jdUtils.xb(msg,fromWxid);
|
||||
jdUtils.xb(msg, fromWxid);
|
||||
return;
|
||||
}
|
||||
// 超级管理员内部群
|
||||
if (chatRoom_admin_inner.contains(fromWxid)) {
|
||||
if (msg.startsWith("单")) {
|
||||
logger.info("消息以单开头,处理单指令消息");
|
||||
jdUtils.sendOrderToWxByOrderD(msg.replace("单", ""), fromWxid);
|
||||
return;
|
||||
}
|
||||
logger.info("未命中前置指令,开始命中 Default 流程");
|
||||
jdUtils.sendOrderToWxByOrderDefault(msg, fromWxid);
|
||||
}
|
||||
// 可以对外的群聊
|
||||
if (!chatRoom_admin.contains(fromWxid)) {
|
||||
logger.info("不是白名单群聊,不处理");
|
||||
return;
|
||||
}
|
||||
if (msg.startsWith("评")){
|
||||
if (("47484514467@chatroom".equals(fromWxid))){
|
||||
logger.info("消息以评开头,处理评价指令消息");
|
||||
jdUtils.sendOrderToWxByOrderP(msg.replace("评", ""), fromWxid);
|
||||
return;
|
||||
}
|
||||
if (msg.startsWith("拼")) {
|
||||
logger.info("消息以拼开头,处理拼多多指令消息");
|
||||
jdUtils.sendOrderToWxByOrderPDD(msg.replace("拼", ""), fromWxid);
|
||||
return;
|
||||
}
|
||||
if (msg.startsWith("单")) {
|
||||
logger.info("消息以单开头,处理单指令消息");
|
||||
jdUtils.sendOrderToWxByOrderD(msg.replace("单", ""), fromWxid);
|
||||
return;
|
||||
}
|
||||
logger.info("未命中前置指令,开始命中 Default 流程");
|
||||
jdUtils.sendOrderToWxByOrderDefault(msg, fromWxid);
|
||||
/**
|
||||
* {
|
||||
* "event": 10008,
|
||||
* "wxid": "wxid_nq6r0w9v12612",
|
||||
* "data": {
|
||||
* "type": "recvMsg",
|
||||
* "des": "收到消息",
|
||||
* "data": {
|
||||
* "timeStamp": "1716619844146",
|
||||
* "fromType": 2,
|
||||
* "msgType": 1,
|
||||
* "msgSource": 0,
|
||||
* "fromWxid": "34457730396@chatroom",
|
||||
* "finalFromWxid": "wxid_3sq4tklb6c3121",
|
||||
* "atWxidList": ["wxid_nq6r0w9v12612", "wxid_s4icha2bm2zg12"],
|
||||
* "silence": 0,
|
||||
* "membercount": 3,
|
||||
* "signature": "V1_1YiTEwOY|v1_1YiTEwOY",
|
||||
* "msg": "@忆白\\u2005@小鹿\\uD83D\\uDE00\\uD83D\\uDE00摸\\u2005你好\\uD83E\\uDD23世界",
|
||||
* "msgId": "7053704521966022857",
|
||||
* "sendId": ""
|
||||
* },
|
||||
* "timestamp": "1716619844147",
|
||||
* "wxid": "wxid_nq6r0w9v12612",
|
||||
* "port": 8888,
|
||||
* "pid": 3944,
|
||||
* "flag": "7888"
|
||||
* }
|
||||
* }*/
|
||||
}
|
||||
//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);
|
||||
|
||||
|
||||
/**
|
||||
* @param wxMessage
|
||||
* @return
|
||||
* @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 = 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 = settingRepository.getOne(new QueryWrapper<Setting>().eq("setting_key", key));
|
||||
// return value.getSettingValue();
|
||||
// } else {
|
||||
// return null;
|
||||
// }
|
||||
// }
|
||||
|
||||
//private boolean isSuperAdminUser(String wxid) {
|
||||
// boolean flag = false;
|
||||
// Setting setting = settingRepository.getOne(new QueryWrapper<Setting>().eq("setting_key", "管理员"));
|
||||
// if (Util.isNotEmpty(setting)) {
|
||||
// if (setting.getSettingValue().contains(wxid)) {
|
||||
// flag = true;
|
||||
// }
|
||||
// }
|
||||
// return flag;
|
||||
//}
|
||||
|
||||
/**
|
||||
* @param userId
|
||||
* @param token
|
||||
* @return
|
||||
* @throws
|
||||
* @description
|
||||
*/
|
||||
//private String mt20(String wxid, String userId, String token) {
|
||||
// /**
|
||||
// * 1 查询用户余额
|
||||
// * 2 调用青龙的添加环境变量
|
||||
// * 3 执行美团领券
|
||||
// * 4 删除环境变量
|
||||
// * 5 改写返回的消息内容返回给用户
|
||||
// * */
|
||||
// logger.info("查询用户余额");
|
||||
// HashMap<String, Object> checkYuE = checkYuE(wxid);
|
||||
// Boolean isRun = (Boolean) checkYuE.get("isRun");
|
||||
// String info = (String) checkYuE.get("info");
|
||||
// BigDecimal yuE = (BigDecimal) checkYuE.get("yuE");
|
||||
// //isRun = true;
|
||||
//
|
||||
// // 余额可以支持一次扣费
|
||||
// if (isRun) {
|
||||
// // 调用青龙 成功
|
||||
// return runQL(token, wxid, 1);
|
||||
//
|
||||
// } else {
|
||||
// // 调用青龙 失败
|
||||
// logger.info("余额不支持一次扣费");
|
||||
// return info;
|
||||
// }
|
||||
//
|
||||
//}
|
||||
|
||||
/**
|
||||
* @param wxid
|
||||
* @return
|
||||
* @throws
|
||||
* @description 根据 wxid 查询余额
|
||||
*/
|
||||
//private HashMap<String, Object> checkYuE(String wxid) {
|
||||
//
|
||||
// HashMap<String, Object> result = new HashMap<>();
|
||||
// BigDecimal yuE = BigDecimal.ZERO;
|
||||
// String info = "";
|
||||
// Boolean isRun = false;
|
||||
// WxUser wxUser = wxUserRepository.getOne(Wrappers.query(new WxUser()).eq("wxid", wxid));
|
||||
// if (Util.isEmpty(wxUser)) {
|
||||
// info = "未进行过充值,请先充值后使用。";
|
||||
// } else {
|
||||
// // 如果余额小于等于零
|
||||
// if (wxUser.getMoneyShengyu().compareTo(BigDecimal.ZERO) <= 0) {
|
||||
// info = "账户余额不足,请先充值后使用。";
|
||||
// }
|
||||
//
|
||||
// if (wxUser.getMoneyShengyu().compareTo(priceOfMT20) < 0) {
|
||||
// info = "剩余余额不足以支持本次扣费,请先充值后使用。";
|
||||
// } else {
|
||||
// isRun = true;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// // 返回结果
|
||||
// result.put("yuE", yuE);
|
||||
// result.put("info", info);
|
||||
// result.put("isRun", isRun);
|
||||
// return result;
|
||||
//}
|
||||
|
||||
/**
|
||||
* @param wxid
|
||||
* @param time 调用次数,后期可以改成包月还是一次 ,目前都是 1
|
||||
* @param token
|
||||
* @return
|
||||
* @throws
|
||||
* @description
|
||||
*/
|
||||
private String runQL(String token, String wxid, Integer time) {
|
||||
|
||||
/**
|
||||
* 1. 在系统设置 -> 应用设置 -> 添加应用,权限目前支持5个模块,可以选择多个模块。选择一个模块之后,可读写此模块的所有接口。
|
||||
* 2. 使用生成的 client_id 和 client_secret 请求获取token接口 http://localhost:5700/open/auth/token?client_id=xxxxxx&client_secret=xxxxxxxx
|
||||
* 3. 上面接口返回的token有效期为30天,可用于请求青龙的接口 curl 'http://localhost:5700/open/envs?searchValue=&t=1630032278171' -H 'Authorization: Bearer
|
||||
* 接口返回的token'
|
||||
* 4. openapi的接口与系统正常接口的区别就是青龙里的是/api/envs,openapi是/open/envs,即就是青龙接口中的api换成open
|
||||
* */
|
||||
|
||||
//String responseStr = HttpRequest.post(QL_BASE_URL + getToken())
|
||||
// .body(JSON.toJSONString(jsonMap))//头信息,多个头信息多次调用此方法即可
|
||||
// .execute().body();
|
||||
|
||||
/*
|
||||
* 1.查询有没有这个环境变量
|
||||
* 2.没有就创建
|
||||
* 3.有就修改 环境变量名 需要 wxid + 手机号
|
||||
* 4.执行crons
|
||||
* 5.如果是一次性的,time = 1 ,就删除环境变量(考虑改成禁用)
|
||||
* 6.拿到青龙的结果
|
||||
* */
|
||||
//new QLUtil().getEnv(remark)
|
||||
|
||||
|
||||
HashMap<String, String> loginedUserInfo = qlUtil.getLoginedUserInfo(token);
|
||||
if (Util.isNotEmpty(loginedUserInfo)) {
|
||||
String mobile = loginedUserInfo.get("mobile");
|
||||
String nickName = loginedUserInfo.get("nickName");
|
||||
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);
|
||||
if (msg.startsWith("评")) {
|
||||
if (("47484514467@chatroom".equals(fromWxid))) {
|
||||
logger.info("消息以评开头,处理评价指令消息");
|
||||
jdUtils.sendOrderToWxByOrderP(msg.replace("评", ""), fromWxid);
|
||||
return;
|
||||
}
|
||||
// 第二次用 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 {
|
||||
|
||||
return "获取用户信息失败";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user