2024-07-15 11:45:38 +08:00
|
|
|
|
package com.jmfy.controller;
|
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
|
import com.jmfy.dao.UserVerfyDao;
|
|
|
|
|
import com.jmfy.sdk.SdkVerfy;
|
|
|
|
|
import com.jmfy.util.Constant;
|
|
|
|
|
import com.jmfy.util.RedisUtil;
|
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
|
|
import org.springframework.web.bind.annotation.RequestMethod;
|
|
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.UUID;
|
|
|
|
|
|
|
|
|
|
@RestController
|
|
|
|
|
public class SDKController {
|
|
|
|
|
|
|
|
|
|
private static final Logger LOGGER = LoggerFactory.getLogger(SDKController.class);
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
|
private UserVerfyDao userVerfyDao;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* sdk统一登录接口
|
|
|
|
|
* 验证用户信息接口
|
|
|
|
|
* @param userId
|
|
|
|
|
* @param channel
|
|
|
|
|
* @param sdksign
|
|
|
|
|
* @param sdktoken
|
|
|
|
|
* @param response
|
|
|
|
|
*/
|
|
|
|
|
@RequestMapping(value = "/sdk/verify", method = {RequestMethod.GET, RequestMethod.POST})
|
|
|
|
|
public void verify(String userId, String channel, String sdksign, String sdktoken, HttpServletResponse response) {
|
|
|
|
|
try {
|
|
|
|
|
Map<String, Object> params = new HashMap<String, Object>();
|
|
|
|
|
params.put("uid", userId);
|
|
|
|
|
params.put("channel", channel);
|
|
|
|
|
params.put("sign", sdksign);
|
|
|
|
|
params.put("token", sdktoken);
|
|
|
|
|
JSONObject returnResult = new JSONObject();
|
|
|
|
|
LOGGER.info("verify参数:userId={},channel={},sdksign={},sdktoken={}",userId,channel,sdksign,sdktoken);
|
|
|
|
|
if (channel == null) {
|
|
|
|
|
returnResult.put("errcode", -2);
|
|
|
|
|
response.setContentType("application/json");
|
|
|
|
|
response.getOutputStream().write(returnResult.toJSONString().getBytes());
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int channelType = 0; //区分渠道
|
|
|
|
|
String uid = "-1";
|
|
|
|
|
switch (channel) {
|
|
|
|
|
case "test":
|
|
|
|
|
uid = SdkVerfy.testVerfy();
|
|
|
|
|
break;
|
|
|
|
|
case "quick":
|
|
|
|
|
uid = SdkVerfy.quickVerfy(userId, sdktoken);
|
|
|
|
|
break;
|
|
|
|
|
case "xiaomi":
|
|
|
|
|
uid = SdkVerfy.xiaomiVerfy(userId, sdktoken);
|
|
|
|
|
break;
|
|
|
|
|
case "weiwei":
|
|
|
|
|
uid = SdkVerfy.weiweiVerfy(userId, sdktoken);
|
|
|
|
|
break;
|
|
|
|
|
case "Android_9377":
|
|
|
|
|
uid = SdkVerfy.weiwei4366Verfy(userId, sdktoken);
|
|
|
|
|
break;
|
|
|
|
|
case "Android_ChiTu": //赤兔
|
|
|
|
|
uid = SdkVerfy.chiTuVerfy(userId,sdksign, sdktoken);
|
|
|
|
|
break;
|
|
|
|
|
case "Android_ilod": //韩国正式
|
|
|
|
|
case "Android_ilod_OneStore": //韩国正式 OneStore渠道
|
|
|
|
|
case "Android_ilod_OneStoreCB": //韩国正式 CB不开支付
|
|
|
|
|
case "iOS_ilod": //韩国正式 iOS渠道
|
|
|
|
|
channelType = 1;
|
|
|
|
|
uid = SdkVerfy.ilodVerfy(userId,sdksign, sdktoken);
|
|
|
|
|
break;
|
|
|
|
|
case "baidu": //百度正式之前
|
|
|
|
|
uid = SdkVerfy.baiduVerfy(userId, sdktoken, sdksign);
|
|
|
|
|
break;
|
|
|
|
|
case "Android_BaiDu": //百度正式 现在
|
|
|
|
|
case "iOS_BaiDu":
|
|
|
|
|
uid = SdkVerfy.baiduVerfy(userId, sdktoken, sdksign);
|
|
|
|
|
break;
|
|
|
|
|
case "iOS_BaiDu_Test": //百度测试 现在
|
|
|
|
|
uid = SdkVerfy.baiduTestVerfy(userId, sdktoken, sdksign);
|
|
|
|
|
break;
|
|
|
|
|
case "6kwOther":
|
|
|
|
|
uid = SdkVerfy.sixkwVerfy(userId, sdktoken, Constant.SIXKW_APPID, Constant.SIXKW_VERIFY_URL, Constant.SIXKW_SECRET);
|
|
|
|
|
break;
|
|
|
|
|
case "6kw":
|
|
|
|
|
uid = SdkVerfy.sixkwVerfy(userId, sdktoken, Constant.SIXKW_MAIN_APPID, Constant.SIXKW_VERIFY_URL, Constant.SIXKW_MAIN_LOGIN_SECRET);
|
|
|
|
|
break;
|
|
|
|
|
case "Android_QuickGame": //国内--时空战场 Android
|
|
|
|
|
case "Android_QuickGame_douyin":
|
2024-07-24 11:56:59 +08:00
|
|
|
|
uid = SdkVerfy.quickGameVerfy(userId, sdksign, sdktoken);
|
|
|
|
|
break;
|
2024-07-15 11:45:38 +08:00
|
|
|
|
case "iOS_QuickGame": //国内--时空战场 IOS
|
|
|
|
|
uid = SdkVerfy.quickGameVerfy_IOS(userId,sdksign, sdktoken);
|
|
|
|
|
break;
|
|
|
|
|
case "Android_99": //国内--九九互动渠道Android_99
|
|
|
|
|
case "Android_99_Child": //国内--九九互动渠道Android_99_Child
|
|
|
|
|
case "Android_99_Child2": //国内--九九互动渠道Android_99_Child2
|
|
|
|
|
case "Android_99_Child3": //国内--九九互动渠道Android_99_Child3
|
|
|
|
|
case "Android_99_Child4": //国内--九九互动渠道Android_99_Child4
|
|
|
|
|
uid = SdkVerfy.jjChannelVerfy(userId,sdksign,sdktoken); //sdksign 客户端 这个值传的是 appid值,因为appid值是变动的,所以需要客户端传
|
|
|
|
|
break;
|
|
|
|
|
case "Android_ChangWei": //长尾渠道 安卓
|
|
|
|
|
case "iOS_ChangWei": //长尾渠道 IOS
|
|
|
|
|
uid = SdkVerfy.changWeiGameVerify(userId,sdksign,sdktoken);
|
|
|
|
|
break;
|
|
|
|
|
case "Android_XiaoQi"://xiao7渠道
|
|
|
|
|
uid = SdkVerfy.xiaoQiVerify(sdktoken, returnResult);
|
|
|
|
|
break;
|
|
|
|
|
case "Android_AiKen"://艾肯渠道安卓
|
|
|
|
|
uid = SdkVerfy.aikenVerify(sdktoken);
|
|
|
|
|
break;
|
|
|
|
|
case "iOS_AiKen"://艾肯渠道ios
|
|
|
|
|
uid = SdkVerfy.aikenVerify(sdktoken);
|
|
|
|
|
break;
|
|
|
|
|
case "Android_AiKen_Child1"://艾肯渠道
|
|
|
|
|
uid = SdkVerfy.aikenVerify(sdktoken);
|
|
|
|
|
break;
|
|
|
|
|
case "Android_Tap"://千千官方
|
|
|
|
|
uid = SdkVerfy.qianqianVerify(userId, sdktoken);
|
|
|
|
|
break;
|
|
|
|
|
case "Android_Tap_Quick"://千千quick
|
|
|
|
|
uid = SdkVerfy.quickVerify(userId, sdktoken);
|
|
|
|
|
break;
|
|
|
|
|
case "Android_Ky_Quick"://0.1折
|
|
|
|
|
uid = SdkVerfy.quickVerify2(userId, sdktoken);
|
|
|
|
|
break;
|
|
|
|
|
case "iOS_Ky_Quick"://0.1折
|
|
|
|
|
uid = SdkVerfy.quickVerify2(userId, sdktoken);
|
|
|
|
|
break;
|
2024-10-15 15:13:05 +08:00
|
|
|
|
case "Android_BT_QiPa"://bt渠道
|
|
|
|
|
uid = SdkVerfy.superVerify(userId, sdktoken);
|
|
|
|
|
break;
|
|
|
|
|
case "iOS_BT_QiPa"://bt渠道
|
|
|
|
|
uid = SdkVerfy.superVerify(userId, sdktoken);
|
|
|
|
|
break;
|
|
|
|
|
case "Android_BT_QiPa2"://bt渠道
|
|
|
|
|
uid = SdkVerfy.superVerify(userId, sdktoken);
|
|
|
|
|
break;
|
|
|
|
|
case "iOS_BT_QiPa2"://bt渠道
|
|
|
|
|
uid = SdkVerfy.superVerify(userId, sdktoken);
|
|
|
|
|
break;
|
2024-12-24 10:08:05 +08:00
|
|
|
|
case "QKZB01"://quick直播1
|
2024-11-15 16:50:45 +08:00
|
|
|
|
uid = SdkVerfy.quickGameVerfy(userId, sdksign, sdktoken);
|
|
|
|
|
break;
|
2024-12-24 10:08:05 +08:00
|
|
|
|
case "QKZB02"://quick直播2
|
|
|
|
|
uid = SdkVerfy.quickGameVerfy2(userId, sdksign, sdktoken);
|
|
|
|
|
break;
|
2025-09-02 17:55:49 +08:00
|
|
|
|
case "F5"://F5渠道
|
2025-03-31 22:24:26 +08:00
|
|
|
|
uid = SdkVerfy.f5Verify(userId, sdktoken);
|
|
|
|
|
break;
|
2025-09-02 17:55:49 +08:00
|
|
|
|
case "F5_GW"://F5渠道
|
|
|
|
|
uid = SdkVerfy.f5GwVerify(userId, sdktoken);
|
|
|
|
|
break;
|
2025-09-12 10:05:40 +08:00
|
|
|
|
case "DNA_AD"://dna安卓渠道
|
|
|
|
|
uid = SdkVerfy.dnaVerify(userId, sdktoken,1);
|
|
|
|
|
break;
|
|
|
|
|
case "DNA_IOS"://dnaios渠道
|
|
|
|
|
uid = SdkVerfy.dnaVerify(userId, sdktoken,2);
|
|
|
|
|
break;
|
2024-07-15 11:45:38 +08:00
|
|
|
|
default:
|
|
|
|
|
uid = "-1";
|
|
|
|
|
}
|
|
|
|
|
if(channelType ==1){ //韩服
|
|
|
|
|
LOGGER.info("verify02参数: channel={}, uid={}", channel,uid);
|
|
|
|
|
if(uid.equals("0") || uid.equals("-1") || uid.equals("-2") || uid.equals("-3") || uid == null){
|
|
|
|
|
String errMessage = "登录验证失败";
|
|
|
|
|
switch (uid){
|
|
|
|
|
case "0":
|
|
|
|
|
errMessage = "请求参数有误"; //body中有数据遗漏时。请求HTTP时请确认projectId、memberId、token是否已全部输入
|
|
|
|
|
break;
|
|
|
|
|
case "-1":
|
|
|
|
|
errMessage = "登录token验证失败"; //Token验证失败。Token被伪造时
|
|
|
|
|
break;
|
|
|
|
|
case "-2":
|
|
|
|
|
errMessage = "MemberId验证失败"; //MemberId验证失败.Token的用户ID信息与body的用户ID不一致时
|
|
|
|
|
break;
|
|
|
|
|
case "-3":
|
|
|
|
|
errMessage = "Token到期"; //Token到期. SDK login api成功的时间与请求相应Authentication check的时间相差60分钟以上时
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
errMessage = "登录验证失败";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
returnResult.put("errcode", -1);
|
|
|
|
|
returnResult.put("errMessage", errMessage);
|
|
|
|
|
response.setContentType("application/json");
|
|
|
|
|
response.getOutputStream().write(returnResult.toJSONString().getBytes());
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}else { //非韩服
|
|
|
|
|
if (uid.equals("-1") ||uid == null ) {
|
|
|
|
|
returnResult.put("errcode", -1);
|
|
|
|
|
response.setContentType("application/json");
|
|
|
|
|
response.getOutputStream().write(returnResult.toJSONString().getBytes());
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
LOGGER.info("verify03参数: channel={},uid={}",channel, uid);
|
|
|
|
|
String name = uid;
|
|
|
|
|
String openId = userVerfyDao.verfyUser(name);
|
|
|
|
|
//登录流程
|
|
|
|
|
returnResult.put("openId", openId);
|
|
|
|
|
returnResult.put("guid", uid);
|
|
|
|
|
String token = UUID.randomUUID().toString();
|
|
|
|
|
returnResult.put("token", token);
|
|
|
|
|
RedisUtil.getInstence().putObject("JL_LOGIN_TOKEN", openId, token, -1);
|
|
|
|
|
LOGGER.info("verify04参数: channel={}, openId={} token={},uid={}", channel, returnResult.get("openId"), returnResult.get("token"),uid);
|
|
|
|
|
response.setContentType("application/json");
|
|
|
|
|
response.getOutputStream().write(returnResult.toJSONString().getBytes());
|
|
|
|
|
return;
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
LOGGER.error("sdk verify error ",e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void main(String[] args) {
|
|
|
|
|
byte[] bytes = UUID.randomUUID().toString().getBytes();
|
|
|
|
|
System.out.println(bytes.length);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|