package com.ljsd.controller; import com.alibaba.fastjson.JSONObject; import com.ljsd.pojo.SuJieAccount; import com.ljsd.redis.RedisKey; import com.ljsd.util.BaseGlobal; import com.ljsd.util.EncryptUtils; import com.ljsd.util.HttpUtils; import com.ljsd.util.KTSDKConstans; import com.mongodb.BasicDBObject; import com.mongodb.DBObject; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; public class GetUserController extends HttpServlet { private final static String _COLLECTION_NAME = "user_info"; public GetUserController() { super(); } public void destroy() { super.destroy(); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String openId = request.getParameter("openId"); if (openId == null || openId.isEmpty()) { response.sendError(400, "openId is empety"); return; } String serverId = request.getParameter("serverId"); if (serverId == null || serverId.isEmpty()) { response.sendError(400, "serverId is empety"); return; } String token = request.getParameter("token"); if (token == null || serverId.isEmpty()) { response.sendError(400, "token is empety"); return; } String platform = request.getParameter("platform"); //平台类型 if (platform == null || platform.isEmpty()) { response.sendError(400, "platform is empety"); return; } if(!"3".equals(platform)){ SuJieAccount suJieAccount = loginVerfify(platform, openId, token); if(suJieAccount == null){ response.sendError(400, "verify fail"); return; } } DBObject dbObject = new BasicDBObject(); dbObject.put("openId", openId); dbObject.put("serverId", serverId); dbObject.put("platform", platform); try { int uid = 0; List userInfos = BaseGlobal.getInstance().mongoDBPool.find(_COLLECTION_NAME, dbObject); DBObject res = new BasicDBObject(); if (userInfos.size() == 0) { uid = BaseGlobal.getInstance().mongoDBPool.inc("uid") + 10000000; dbObject.put("uid", uid); dbObject.put("_id", uid); userInfos.add(dbObject); BaseGlobal.getInstance().mongoDBPool.save(_COLLECTION_NAME, dbObject); } Random random = new Random(); int utoken = Math.abs(random.nextInt()); uid = (int) userInfos.get(0).get("uid"); res.put("uid", uid); res.put("token", utoken); BaseGlobal.getInstance().redisApp.set(RedisKey.TOKEN, String.valueOf(uid), token, -1, false); PrintWriter out = response.getWriter(); out.print(res); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); } public static SuJieAccount loginVerfify(String platForm,String openId,String token){ try{ String loginUrl = ""; if("1".equals(platForm)){ loginUrl = KTSDKConstans.androidVerify; }else if("2".equals(platForm)){ loginUrl = KTSDKConstans.iosVerify; } Map params = new HashMap(); params.put("userID", openId); params.put("token", token); StringBuilder sb = new StringBuilder(); sb.append("userID=").append(openId) .append("token=").append(token) .append(KTSDKConstans.appid); String sign = EncryptUtils.createMD5String(sb.toString()); params.put("sign", sign); String loginResult = HttpUtils.doPost(loginUrl,params); if(loginResult == null || loginResult.isEmpty()){ return null; } return parseLoginResult(loginResult); }catch(Exception e){ return null; } } private static SuJieAccount parseLoginResult(String orderResult){ try { SuJieAccount suJieAccount = (SuJieAccount)JSONObject.parse(orderResult); int state = suJieAccount.getState(); if(state != 0){ return null; } return suJieAccount; } catch (Exception e) { e.printStackTrace(); } return null; } }