修复灵仙

This commit is contained in:
hy001 2026-05-11 22:50:49 +08:00
parent 1ac5e6c62d
commit 3a01a490ab
3 changed files with 59 additions and 9 deletions

View File

@ -102,7 +102,9 @@ public class GameHkysRestController {
return new HkysResponse<HkysUserProfileResponse>() return new HkysResponse<HkysUserProfileResponse>()
.setErrorCode(HyksErrorEnum.PARAM_ERROR.getErrorCode()); .setErrorCode(HyksErrorEnum.PARAM_ERROR.getErrorCode());
} }
String sign = SecurityUtils.md5(Stream.of(cmd.getGameId(), cmd.getUid(), cmd.getToken(), cmd.getRoomId(), gameHkysProperties.getSignKey()).filter(Objects::nonNull).map(String::valueOf).collect(Collectors.joining(""))); String sign = SecurityUtils.md5(Stream.of(cmd.getGameId(), cmd.getUid(), cmd.getToken(), cmd.getRoomId(),
resolveLingxianSignKey(cmd.getToken())).filter(Objects::nonNull).map(String::valueOf)
.collect(Collectors.joining("")));
if (!sign.equals(cmd.getSign())) { if (!sign.equals(cmd.getSign())) {
return new HkysResponse<HkysUserProfileResponse>().setErrorCode(HyksErrorEnum.SIGN_VERIFY_FAIL.getErrorCode()); return new HkysResponse<HkysUserProfileResponse>().setErrorCode(HyksErrorEnum.SIGN_VERIFY_FAIL.getErrorCode());
} }
@ -124,7 +126,7 @@ public class GameHkysRestController {
return new HkysResponse<JSONObject>().setErrorCode(HyksErrorEnum.PARAM_ERROR.getErrorCode()); return new HkysResponse<JSONObject>().setErrorCode(HyksErrorEnum.PARAM_ERROR.getErrorCode());
} }
String sign = SecurityUtils.md5(Stream.of(cmd.getOrderId(), cmd.getGameId(), cmd.getRoundId(), cmd.getUid(), String sign = SecurityUtils.md5(Stream.of(cmd.getOrderId(), cmd.getGameId(), cmd.getRoundId(), cmd.getUid(),
cmd.getCoin(), cmd.getType(), cmd.getToken(), cmd.getWinId(), cmd.getRoomId(), gameHkysProperties.getSignKey()) cmd.getCoin(), cmd.getType(), cmd.getToken(), cmd.getWinId(), cmd.getRoomId(), resolveLingxianSignKey(cmd.getToken()))
.filter(Objects::nonNull).map(String::valueOf).collect(Collectors.joining(""))); .filter(Objects::nonNull).map(String::valueOf).collect(Collectors.joining("")));
if (!sign.equals(cmd.getSign())) { if (!sign.equals(cmd.getSign())) {
return new HkysResponse<JSONObject>().setErrorCode(HyksErrorEnum.SIGN_VERIFY_FAIL.getErrorCode()); return new HkysResponse<JSONObject>().setErrorCode(HyksErrorEnum.SIGN_VERIFY_FAIL.getErrorCode());
@ -150,7 +152,7 @@ public class GameHkysRestController {
//游玩一句游戏结束 每日任务 灵仙 //游玩一句游戏结束 每日任务 灵仙
Long userId = DataTypeUtils.toLong(cmd.getUid()); Long userId = DataTypeUtils.toLong(cmd.getUid());
String sysOrigin = UserCredential.parseToken(cmd.getToken()).getSysOrigin(); String sysOrigin = parseSysOrigin(cmd.getToken());
BigDecimal cost = enumConfigCacheService BigDecimal cost = enumConfigCacheService
.getValueBigDecimal(EnumConfigKey.GAME_BROADCAST_AMOUNT, sysOrigin) ; .getValueBigDecimal(EnumConfigKey.GAME_BROADCAST_AMOUNT, sysOrigin) ;
@ -223,6 +225,28 @@ public class GameHkysRestController {
); );
} }
private String resolveLingxianSignKey(String token) {
String sysOrigin = resolveSysOriginQuietly(token);
String appKey = gameListConfigService.getActiveLingxianAppKey(sysOrigin);
if (StringUtils.isNotBlank(appKey)) {
return appKey;
}
return gameHkysProperties.getSignKey();
}
private String resolveSysOriginQuietly(String token) {
try {
return parseSysOrigin(token);
} catch (Exception e) {
log.warn("resolve lingxian sysOrigin failed");
return "";
}
}
private String parseSysOrigin(String token) {
return UserCredential.parseToken(SecurityUtils.urlDecode(token)).getSysOrigin();
}
private void reportTaskCenterGameEvents(String sysOrigin, private void reportTaskCenterGameEvents(String sysOrigin,
Long userId, Long userId,
String provider, String provider,

View File

@ -47,6 +47,11 @@ public interface GameListConfigService extends BaseService<GameListConfig> {
*/ */
String getActiveLingxianProfile(String sysOrigin); String getActiveLingxianProfile(String sysOrigin);
/**
* 获取灵仙当前启用配置的 appKey.
*/
String getActiveLingxianAppKey(String sysOrigin);
/** /**
* 查询游戏信息 * 查询游戏信息
*/ */

View File

@ -213,6 +213,27 @@ public class GameListConfigServiceImpl extends
} }
} }
@Override
public String getActiveLingxianAppKey(String sysOrigin) {
if (StringUtils.isBlank(sysOrigin)) {
return "";
}
try {
return Optional.ofNullable(jdbcTemplate.queryForObject("""
SELECT app_key
FROM lingxian_provider_config
WHERE sys_origin = ?
AND active = 1
ORDER BY update_time DESC
LIMIT 1
""", String.class, sysOrigin))
.map(String::trim)
.orElse("");
} catch (Exception e) {
return "";
}
}
@Override @Override
public GameListConfig getByGameCode(String gameCode, String sysOrigin) { public GameListConfig getByGameCode(String gameCode, String sysOrigin) {
return query() return query()