package com.ljsd.controller; import com.google.gson.Gson; import com.ljsd.pojo.ResMsg; import com.ljsd.redis.RedisKey; import com.ljsd.redis.RedisUtil; import com.ljsd.util.BaseGlobal; import com.ljsd.util.IdCard; import com.ljsd.util.MD5Util; import com.ljsd.util.StringUtils; 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.text.DateFormat; import java.text.SimpleDateFormat; import java.util.*; public class UserLoginController extends HttpServlet { private static Gson gson = new Gson(); private static final String _COLLECTION_NAME = "user_register_info"; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("UTF-8"); response.setContentType("application/json; charset=utf-8"); String name = request.getParameter("userName"); String password = request.getParameter("password"); String sign = request.getParameter("sign"); String returnMsg = "success"; ResMsg resMsg = new ResMsg(); resMsg.setCode(1); try (PrintWriter out = response.getWriter();){ if(StringUtils.checkIsEmpty(name) || StringUtils.checkIsEmpty(password) || StringUtils.checkIsEmpty(sign)){ resMsg.setMsg("参数不能为空"); out.print(gson.toJson(resMsg)); return; } String mySign = MD5Util.encrypByMd5(name + password + MD5Util.salt); if(!mySign.equals(sign)){ resMsg.setMsg("签名错误"); out.print(gson.toJson(resMsg)); return; } DBObject one = BaseGlobal.getInstance().mongoDBPool.findOne(_COLLECTION_NAME, name); if(one ==null){ resMsg.setMsg("该账号不存在"); out.print(gson.toJson(resMsg)); return; } Object passwordInDb = one.get("password"); if(!password.equals(passwordInDb)){ resMsg.setMsg("密码错误,请重试"); out.print(gson.toJson(resMsg)); return; } Map parms = new HashMap<>(); String openId = one.get("openId").toString(); parms.put("openId",one.get("openId").toString()); int token = new Random().nextInt(1024) +10000; parms.put("token",Integer.toString(token)); BaseGlobal.getInstance().redisApp.set(RedisKey.LOGIN_TOKEN,openId,token,-1, false); int code = 0; //开关防沉迷 Properties properties = BaseGlobal.getInstance().properties; if(Boolean.parseBoolean(properties.getProperty("openAdultCheck"))){ int age = 0;//年龄 if(one.get("idstr")==null){ //resMsg.setCode(2);//未进行身份验证 code = 2; }else{ if(IdCard.isAdult((String) one.get("idstr"))){ age = 19; } //resMsg.setCode(0);//正常 code = 0; } resMsg.setMsg(String.valueOf(age)); //登录成功,返回年龄 }else{ resMsg.setMsg(returnMsg); } resMsg.setCode(code);//正常 resMsg.setParms(parms); out.print(gson.toJson(resMsg)); }catch (Exception e){ e.printStackTrace(); } } }