3 Commits

Author SHA1 Message Date
Xiang
217dc6879d fix:glados签到脚本 2026-01-23 09:58:46 +08:00
Xiang
12728d5c84 fix:glados签到球服 2026-01-23 09:35:38 +08:00
Xiang
8928c076c5 fix:glados域名修复 2026-01-23 09:06:17 +08:00
9 changed files with 146 additions and 24 deletions

View File

@@ -48,9 +48,9 @@
<version>1.0-SNAPSHOT</version> <version>1.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.xiang</groupId> <groupId>com.xiang.starter</groupId>
<artifactId>xmc-http-starter</artifactId> <artifactId>xmc-http-starter</artifactId>
<version>1.0-SNAPSHOT</version> <version>2.0-SNAPSHOT</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.xiang</groupId> <groupId>com.xiang</groupId>

View File

@@ -17,7 +17,6 @@ import org.springframework.scheduling.annotation.EnableScheduling;
"com.xiang.xservice.application.script.glados.repository", "com.xiang.xservice.application.script.glados.repository",
"com.xiang.xservice.application.script.xb.repository", "com.xiang.xservice.application.script.xb.repository",
"com.xiang.xservice.common.mapper", "com.xiang.xservice.common.mapper",
"com.xiang.xservice.application.script.jntyzx.mapper"
}) })
@ConfigurationPropertiesScan(basePackages = { @ConfigurationPropertiesScan(basePackages = {
"com.xiang.xservice.config" "com.xiang.xservice.config"

View File

@@ -8,5 +8,5 @@ public class GladosConstants {
public static final String GLADOS_COOKIE = "SL_G_WPT_TO=en; SL_GWPT_Show_Hide_tmp=1; SL_wptGlobTipTmp=1; koa:sess=eyJ1c2VySWQiOjU1OTg1MywiX2V4cGlyZSI6MTc3MjYwNDkyNjI4OCwiX21heEFnZSI6MjU5MjAwMDAwMDB9; koa:sess.sig=OdaqjpLkIp19lXn0lFuOsHX7vEM"; public static final String GLADOS_COOKIE = "SL_G_WPT_TO=en; SL_GWPT_Show_Hide_tmp=1; SL_wptGlobTipTmp=1; koa:sess=eyJ1c2VySWQiOjU1OTg1MywiX2V4cGlyZSI6MTc3MjYwNDkyNjI4OCwiX21heEFnZSI6MjU5MjAwMDAwMDB9; koa:sess.sig=OdaqjpLkIp19lXn0lFuOsHX7vEM";
public static final String GLADOS_CHECK_IN_BODY = "{\"token\":\"glados.one\"}"; public static final String GLADOS_CHECK_IN_BODY = "{\"token\":\"glados.cloud\"}";
} }

View File

@@ -5,7 +5,7 @@ public class URLConstants {
/** /**
* glados 主域名 * glados 主域名
*/ */
public static final String GLADOS_URL_PREFIX = "https://www.glados.one"; public static final String GLADOS_URL_PREFIX = "https://glados.cloud";
/** /**
* 签到 * 签到

View File

@@ -1,11 +1,9 @@
package com.xiang.xservice.application.script.glados.controller; package com.xiang.xservice.application.script.glados.controller;
import com.xiang.xservice.basic.common.resp.Result;
import com.xiang.xservice.application.script.glados.entity.req.GladosCheckInReq;
import com.xiang.xservice.application.script.glados.service.GLaDOSService; import com.xiang.xservice.application.script.glados.service.GLaDOSService;
import com.xiang.xservice.basic.common.resp.Result;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@@ -21,9 +19,10 @@ public class GLaDOSController {
private final GLaDOSService glaDOSService; private final GLaDOSService glaDOSService;
@PostMapping("/checkIn") @GetMapping("/checkIn")
public Result<String> checkIn(@RequestBody GladosCheckInReq request) { public Result<Void> checkIn() {
return Result.success(glaDOSService.checkIn()); glaDOSService.checkInV2();
return Result.success();
} }
} }

View File

@@ -0,0 +1,20 @@
package com.xiang.xservice.application.script.glados.entity.resp;
import lombok.Data;
/**
* @Author: xiang
* @Date: 2026-01-23 09:21
*/
@Data
public class CheckInResp {
private Long id;
private Long userId;
private Long time;
private String asset;
private String business;
private String change;
private String balance;
private String detail;
}

View File

@@ -22,6 +22,6 @@ public class GladosCheckInJob {
@Scheduled(cron = "0 0 7 1/1 * ?") @Scheduled(cron = "0 0 7 1/1 * ?")
public void checkInJon() { public void checkInJon() {
log.info("[job] Glados Check In Job start, time:{}", LocalDateTime.now()); log.info("[job] Glados Check In Job start, time:{}", LocalDateTime.now());
glaDOSService.checkIn(); glaDOSService.checkInV2();
} }
} }

View File

@@ -10,4 +10,9 @@ public interface GLaDOSService {
* 签到 * 签到
*/ */
String checkIn(); String checkIn();
/**
* 签到
*/
void checkInV2();
} }

View File

@@ -1,10 +1,14 @@
package com.xiang.xservice.application.script.glados.service; package com.xiang.xservice.application.script.glados.service;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.alibaba.fastjson2.TypeReference;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.xiang.xmc.service.http.helper.BaseHttpHelp;
import com.xiang.xmc.service.http.helper.HttpHelperFactory;
import com.xiang.xservice.application.script.glados.common.GladosConstants; import com.xiang.xservice.application.script.glados.common.GladosConstants;
import com.xiang.xservice.application.script.glados.common.URLConstants; import com.xiang.xservice.application.script.glados.common.URLConstants;
import com.xiang.xservice.application.script.glados.entity.GladosRunLog; import com.xiang.xservice.application.script.glados.entity.GladosRunLog;
import com.xiang.xservice.application.script.glados.entity.resp.CheckInResp;
import com.xiang.xservice.application.script.glados.entity.resp.GLaDOSResponse; import com.xiang.xservice.application.script.glados.entity.resp.GLaDOSResponse;
import com.xiang.xservice.application.script.glados.repository.GladosMapper; import com.xiang.xservice.application.script.glados.repository.GladosMapper;
import com.xiang.xservice.application.script.xb.entity.pojo.User; import com.xiang.xservice.application.script.xb.entity.pojo.User;
@@ -33,6 +37,8 @@ public class GLaDOSServiceImpl implements GLaDOSService{
private final DingTalkScriptGladosService dingTalkService; private final DingTalkScriptGladosService dingTalkService;
private final BaseHttpHelp httpHelp = HttpHelperFactory.createSimpleHttp();
/** /**
* 签到 * 签到
*/ */
@@ -63,6 +69,91 @@ public class GLaDOSServiceImpl implements GLaDOSService{
return sb.toString(); return sb.toString();
} }
@Override
public void checkInV2() {
List<User> users = gladosMapper.listAllUser();
if (CollectionUtils.isEmpty(users)) {
return;
}
for (User user : users) {
try {
for (int i = 0; i < 3; i++) {
if (checkInV2(user)) {
break;
}
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
log.error("线程暂停10s失败");
}
}
} catch (Exception e) {
log.error("签到失败,", e);
}
}
}
public boolean checkInV2(User user) {
Map<String, String> header = Maps.newHashMap();
header.put("Cookie", user.getCookie());
String response = null;
try {
response = httpHelp.doPost(URLConstants.GLADOS_CHECK_IN_URL, header, GladosConstants.GLADOS_CHECK_IN_BODY);
} catch (Exception e) {
log.error("http请求异常:{}", user.getEmail());
return false;
}
if (org.apache.commons.lang3.StringUtils.isBlank(response)) {
return false;
}
GLaDOSResponse<CheckInResp> gLaDOSResponse = JSONObject.parseObject(response, new TypeReference<GLaDOSResponse<CheckInResp>>() {
});
if (Objects.isNull(gLaDOSResponse)) {
return false;
}
if (0 == gLaDOSResponse.getCode()) {
// 成功请求
if (Objects.nonNull(gLaDOSResponse.getPoints()) && 0 != gLaDOSResponse.getPoints()) {
// 签到成功
dingTalkService.sendScriptMsg("[时间:" + LocalDateTime.now() + "] 用户: " +
user.getEmail() + "签到成功,获得积分:" + gLaDOSResponse.getPoints());
GladosRunLog build = GladosRunLog.builder().time(LocalDateTime.now()).status(1).code(Integer.valueOf(gLaDOSResponse.getCode().toString())).response(response).user(user.getEmail()).userId(user.getId()).build();
gladosMapper.insertScriptRunLog(build);
return Boolean.TRUE;
}
}
if (gLaDOSResponse.getMessage().contains("Repeats")) {
if (!CollectionUtils.isEmpty(gLaDOSResponse.getList())) {
dingTalkService.sendScriptMsg("用户:" + user.getEmail() + "当前已签到。结果:" + gLaDOSResponse.getList().get(0));
GladosRunLog build = GladosRunLog.builder().time(LocalDateTime.now()).status(1).code(Integer.valueOf(gLaDOSResponse.getCode().toString())).response(response).user(user.getEmail()).userId(user.getId()).build();
gladosMapper.insertScriptRunLog(build);
return true;
}
}
if (-2 == gLaDOSResponse.getCode()) {
log.warn("签到失败,用户:{}, cookie过期:{}", user.getEmail(), gLaDOSResponse.getMessage());
String message = "[时间:" + LocalDateTime.now() + "] 用户: " + user.getEmail() + ",签到消息: " + gLaDOSResponse.getMessage() + "手动请求http://general.xiangtech.xyz:30026/system/glados/checkIn";
try {
dingTalkService.sendScriptMsg(message);
return true;
} catch (Exception e) {
log.error("发送钉钉消息失败", e);
}
}
// 请求异常
dingTalkService.sendScriptMsg("用户:" + user.getEmail() + "请求异常,响应结果:" + gLaDOSResponse.getMessage());
GladosRunLog build = GladosRunLog.builder().time(LocalDateTime.now()).status(0).code(Integer.valueOf(gLaDOSResponse.getCode().toString())).response(response).user(user.getEmail()).userId(user.getId()).build();
gladosMapper.insertScriptRunLog(build);
return false;
}
private boolean checkIn(User user, StringBuffer sb) { private boolean checkIn(User user, StringBuffer sb) {
Map<String, String> header = Maps.newHashMap(); Map<String, String> header = Maps.newHashMap();
@@ -83,7 +174,8 @@ public class GLaDOSServiceImpl implements GLaDOSService{
log.info("http do post success, response:{}", response); log.info("http do post success, response:{}", response);
// 成功签到记录 // 成功签到记录
if (0 == gLaDOSResponse.getCode() && Objects.nonNull(gLaDOSResponse.getPoints())) { if (0 == gLaDOSResponse.getCode()) {
if (Objects.nonNull(gLaDOSResponse.getPoints())) {
log.info("签到成功, 签到积分:{}, 签到消息:{}", gLaDOSResponse.getPoints(), gLaDOSResponse.getMessage()); log.info("签到成功, 签到积分:{}, 签到消息:{}", gLaDOSResponse.getPoints(), gLaDOSResponse.getMessage());
sb.append(user.getEmail()).append("签到成功,获得积分:").append(gLaDOSResponse.getPoints()).append("\n"); sb.append(user.getEmail()).append("签到成功,获得积分:").append(gLaDOSResponse.getPoints()).append("\n");
try { try {
@@ -95,6 +187,13 @@ public class GLaDOSServiceImpl implements GLaDOSService{
GladosRunLog build = GladosRunLog.builder().time(LocalDateTime.now()).status(1).code(Integer.valueOf(gLaDOSResponse.getCode().toString())).response(response).user(user.getEmail()).userId(user.getId()).build(); GladosRunLog build = GladosRunLog.builder().time(LocalDateTime.now()).status(1).code(Integer.valueOf(gLaDOSResponse.getCode().toString())).response(response).user(user.getEmail()).userId(user.getId()).build();
gladosMapper.insertScriptRunLog(build); gladosMapper.insertScriptRunLog(build);
return Boolean.TRUE; return Boolean.TRUE;
} else {
log.info("签到异常, 签到消息:{}", gLaDOSResponse.getMessage());
sb.append(user.getEmail()).append("签到异常,消息:").append(gLaDOSResponse.getMessage());
GladosRunLog build = GladosRunLog.builder().time(LocalDateTime.now()).status(0).code(Integer.valueOf(gLaDOSResponse.getCode().toString())).response(response).user(user.getEmail()).userId(user.getId()).build();
gladosMapper.insertScriptRunLog(build);
return Boolean.FALSE;
}
} }
// 重复签到,表示当日签到成功 // 重复签到,表示当日签到成功