增加后台管理,支持docker部署

This commit is contained in:
ageer
2024-05-17 02:00:31 +08:00
parent ef7434ed04
commit 7fe89a931b
59 changed files with 3911 additions and 1501 deletions

View File

@@ -1,6 +1,5 @@
package com.xmzs.common.wechat;
import com.xmzs.common.wechat.controller.LoginController;
import com.xmzs.common.wechat.core.MsgCenter;
import com.xmzs.common.wechat.face.IMsgHandlerFace;
import org.slf4j.Logger;
@@ -12,13 +11,9 @@ public class Wechat {
private static final Logger LOG = LoggerFactory.getLogger(Wechat.class);
private IMsgHandlerFace msgHandler;
public Wechat(IMsgHandlerFace msgHandler, String qrPath) {
public Wechat(IMsgHandlerFace msgHandler) {
System.setProperty("jsse.enableSNIExtension", "false"); // 防止SSL错误
this.msgHandler = msgHandler;
// 登陆
LoginController login = new LoginController();
login.login(qrPath);
}
public void start() {

View File

@@ -1,7 +1,9 @@
package com.xmzs.common.wechat.controller;
import com.xmzs.common.core.exception.base.BaseException;
import com.xmzs.common.wechat.utils.SleepUtils;
import com.xmzs.common.wechat.utils.enums.URLEnum;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -17,74 +19,71 @@ import com.xmzs.common.wechat.utils.tools.CommonTools;
* 登陆控制器
*
* @author https://github.com/yaphone
* @date 创建时间2017年5月13日 下午12:56:07
* @version 1.0
*
* @date 创建时间2017年5月13日 下午12:56:07
*/
public class LoginController {
private static Logger LOG = LoggerFactory.getLogger(LoginController.class);
private ILoginService loginService = new LoginServiceImpl();
private static Core core = Core.getInstance();
private static Logger LOG = LoggerFactory.getLogger(LoginController.class);
private ILoginService loginService = new LoginServiceImpl();
private static Core core = Core.getInstance();
public void login(String qrPath) {
if (core.isAlive()) { // 已登陆
LOG.info("itchat4j已登陆");
return;
}
while (true) {
for (int count = 0; count < 10; count++) {
LOG.info("获取UUID");
while (loginService.getUuid() == null) {
LOG.info("1. 获取微信UUID");
while (loginService.getUuid() == null) {
LOG.warn("1.1. 获取微信UUID失败两秒后重新获取");
SleepUtils.sleep(2000);
}
}
LOG.info("2. 获取登陆二维码图片");
if (loginService.getQR(qrPath)) {
break;
} else if (count == 10) {
LOG.error("2.2. 获取登陆二维码图片失败,系统退出");
System.exit(0);
}
}
LOG.info("3. 请扫描二维码图片,并在手机上确认");
if (!core.isAlive()) {
loginService.login();
core.setAlive(true);
LOG.info(("登陆成功"));
break;
}
LOG.info("4. 登陆超时,请重新扫描二维码图片");
}
LOG.info("5. 登陆成功,微信初始化");
if (!loginService.webWxInit()) {
LOG.info("6. 微信初始化异常");
System.exit(0);
}
/**
* 获取二维码地址
* 风险:已登录账号不可调用该接口,会移除当前core信息
* @return
*/
public String login_1() {
if (core.isAlive()) {
LOG.warn("微信已登陆");
throw new BaseException("微信已登陆");
}
LOG.info("1.获取微信UUID");
while (loginService.getUuid() == null) {
LOG.warn("1.1. 获取微信UUID失败一秒后重新获取");
SleepUtils.sleep(1000);
}
LOG.info("2. 获取登陆二维码图片");
return URLEnum.QRCODE_URL.getUrl() + core.getUuid();
}
LOG.info("6. 开启微信状态通知");
loginService.wxStatusNotify();
LOG.info("7. 清除。。。。");
CommonTools.clearScreen();
LOG.info(String.format("欢迎回来, %s", core.getNickName()));
public void login_2() {
LOG.info("3. 请扫描二维码图片,并在手机上确认");
if (!core.isAlive()) {
loginService.login();
core.setAlive(true);
LOG.info(("登陆成功"));
}
LOG.info("4. 登陆超时,请重新扫描二维码图片");
LOG.info("8. 开始接收消息");
loginService.startReceiving();
LOG.info("9. 获取联系人信息");
loginService.webWxGetContact();
LOG.info("5. 登陆成功,微信初始化");
if (!loginService.webWxInit()) {
LOG.info("6. 微信初始化异常");
System.exit(0);
}
LOG.info("10. 获取群好友及群好友列表");
loginService.WebWxBatchGetContact();
LOG.info("6. 开启微信状态通知");
loginService.wxStatusNotify();
LOG.info("11. 缓存本次登陆好友相关消息");
WechatTools.setUserInfo(); // 登陆成功后缓存本次登陆好友相关消息NickName, UserName
LOG.info("7. 清除。。。。");
CommonTools.clearScreen();
LOG.info(String.format("欢迎回来, %s", core.getNickName()));
LOG.info("12.开启微信状态检测线程");
new Thread(new CheckLoginStatusThread()).start();
}
LOG.info("8. 开始接收消息");
loginService.startReceiving();
LOG.info("9. 获取联系人信息");
loginService.webWxGetContact();
LOG.info("10. 获取群好友及群好友列表");
loginService.WebWxBatchGetContact();
LOG.info("11. 缓存本次登陆好友相关消息");
WechatTools.setUserInfo(); // 登陆成功后缓存本次登陆好友相关消息NickName, UserName
LOG.info("12.开启微信状态检测线程");
new Thread(new CheckLoginStatusThread()).start();
}
}