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 params = new HashMap(); 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": uid = SdkVerfy.quickGameVerfy(userId, sdksign, sdktoken); break; 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; 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; case "QKZB01"://quick直播1 uid = SdkVerfy.quickGameVerfy(userId, sdksign, sdktoken); break; case "QKZB02"://quick直播2 uid = SdkVerfy.quickGameVerfy2(userId, sdksign, sdktoken); break; case "F5"://F5渠道 uid = SdkVerfy.f5Verify(userId, sdktoken); break; case "F5_GW"://F5渠道 uid = SdkVerfy.f5GwVerify(userId, sdktoken); break; case "DNA_AD"://dna安卓渠道 uid = SdkVerfy.dnaVerify(userId, sdktoken,1); break; case "DNA_IOS"://dnaios渠道 uid = SdkVerfy.dnaVerify(userId, sdktoken,2); break; 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); } }