LoginController.java 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. package com.caimei.controller.user;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.caimei.entity.CmMallOperationUser;
  5. import com.caimei.entity.CmWxJsonModel;
  6. import com.caimei.service.user.LoginService;
  7. import com.caimei.utils.HttpRequest;
  8. import com.caimei.utils.SessionHelper;
  9. import org.slf4j.Logger;
  10. import org.slf4j.LoggerFactory;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.beans.factory.annotation.Value;
  13. import org.springframework.core.env.Environment;
  14. import org.springframework.stereotype.Controller;
  15. import org.springframework.util.StringUtils;
  16. import org.springframework.web.bind.annotation.RequestMapping;
  17. import org.springframework.web.bind.annotation.RequestParam;
  18. import org.springframework.web.bind.annotation.ResponseBody;
  19. import javax.servlet.http.HttpServletRequest;
  20. import javax.servlet.http.HttpSession;
  21. import java.util.Calendar;
  22. import java.util.Date;
  23. import java.util.HashMap;
  24. import java.util.Map;
  25. /**
  26. * 登录
  27. */
  28. @Controller
  29. @RequestMapping("/login")
  30. public class LoginController {
  31. protected static final Logger logger = LoggerFactory.getLogger(LoginController.class);
  32. @Autowired
  33. private LoginService loginService;
  34. @Value("${miniprogram.ValidTime}")
  35. private Integer ValidTime;
  36. @Autowired
  37. private Environment env;
  38. public CmWxJsonModel login(String code, HttpServletRequest request, Integer organizeID) {
  39. logger.info("Start get SessionKey");
  40. CmWxJsonModel res = CmWxJsonModel.newInstance();
  41. Map<String, Object> map = new HashMap<>();
  42. String referer = request.getHeader("Referer"); //获取当前微信小程序的环境
  43. logger.info("referer-is----:" + referer);
  44. map.put("referer", referer);
  45. String requestUrl = "https://api.weixin.qq.com/sns/jscode2session";
  46. Map<String, String> requestUrlParam = new HashMap<String, String>();
  47. requestUrlParam.put("appid", env.getProperty("miniprogram.AppId" + organizeID));//小程序appId
  48. logger.info("" + env.getProperty("miniprogram.AppId" + organizeID));
  49. requestUrlParam.put("secret", env.getProperty("miniprogram.AppSecret" + organizeID));//小程序appsecret
  50. requestUrlParam.put("js_code", code);//小程序端返回的code
  51. requestUrlParam.put("grant_type", "authorization_code");//默认参数
  52. //发送post请求读取调用微信接口获取openid用户唯一标识
  53. String infos;
  54. try {
  55. infos = HttpRequest.sendPost(requestUrl, requestUrlParam);
  56. } catch (Exception e) {
  57. res.setData(map);
  58. return res.error("服务器内部异常");
  59. }
  60. //解析相应内容(转换成json对象)
  61. JSONObject jsonObject = JSON.parseObject(infos);
  62. String openid = jsonObject.getString("openid");
  63. logger.info("openid----->" + openid);
  64. String session_key = jsonObject.getString("session_key");
  65. String errcode = jsonObject.getString("errcode");
  66. String errmsg = jsonObject.getString("errmsg");
  67. if (!StringUtils.isEmpty(errcode) &&
  68. (errcode.equals("-1") || errcode.equals("40029") || errcode.equals("45011"))) {
  69. res.setMsg(errmsg);
  70. res.setData(map);
  71. map.put("sessionKey", session_key);
  72. res.setCode("-1");
  73. return res;
  74. }
  75. return res.success(openid);
  76. }
  77. /**
  78. * 判断是否是游客
  79. *
  80. * @param code
  81. * @param request
  82. * @return
  83. */
  84. @ResponseBody
  85. @RequestMapping("/doLogin")
  86. public CmWxJsonModel doLogin(@RequestParam(value = "code", required = true) String code,
  87. @RequestParam(value = "userOrganizeID") Integer userOrganizeID,
  88. HttpServletRequest request) {
  89. CmWxJsonModel res = CmWxJsonModel.newInstance();
  90. CmWxJsonModel model = login(code, request, userOrganizeID);
  91. if (model.getCode().equals("-1")) {
  92. return model;
  93. }
  94. String openid = (String) model.getData();
  95. //传入session,返回用户信息,更新sessionId
  96. HttpSession session = SessionHelper.getSession();
  97. String sessionId = session.getId();
  98. session.setAttribute("openid", openid);
  99. session.setAttribute("organizeID", userOrganizeID);
  100. CmMallOperationUser operationUser = loginService.doLogin(openid, userOrganizeID);
  101. if (operationUser == null) {
  102. String mobile = loginService.cellPhone(userOrganizeID);
  103. return res.error("-1", mobile, "游客,请登录");
  104. }
  105. operationUser.setSessionId(sessionId);
  106. return res.success("1", operationUser);
  107. }
  108. /**
  109. * 判断邀请码是否有效
  110. *
  111. * @param invitationCode 邀请码
  112. * @param userOrganizeID 组织id
  113. * @return 0: 请输入邀请码
  114. * -2: 邀请码已失效
  115. * -3: 邀请码已被使用
  116. */
  117. @RequestMapping("/isEnabled")
  118. @ResponseBody
  119. public CmWxJsonModel isEnabled(String invitationCode, Integer userOrganizeID) {
  120. CmWxJsonModel res = CmWxJsonModel.newInstance();
  121. String mobile = loginService.cellPhone(userOrganizeID);
  122. if (invitationCode == null || invitationCode.equals("")) {
  123. return res.error("0", mobile);
  124. }
  125. CmMallOperationUser operationUser = loginService.isEnabled(invitationCode, userOrganizeID);
  126. if (operationUser == null) {
  127. return res.error("-1", "邀请码错误");
  128. }
  129. Date date = new Date();
  130. Calendar calendar = Calendar.getInstance();
  131. calendar.setTime(operationUser.getInvitationCodeTime());
  132. calendar.add(Calendar.DATE, ValidTime);
  133. if (operationUser.getStatus().equals("1") && date.getTime() > calendar.getTime().getTime() && operationUser.getDelFlag().equals("0")) {
  134. return res.error("-2", mobile);
  135. }
  136. if (operationUser.getStatus().equals("2") && operationUser.getDelFlag().equals("0")) {
  137. return res.error("-3", mobile);
  138. }
  139. if (operationUser.getClubStatus().equals("91")) {
  140. return res.error("-1", "您所在的会所已下线");
  141. }
  142. if (!operationUser.getDelFlag().equals("0")) {
  143. return res.error("-1", "您的账号已下线");
  144. }
  145. return res.error("1", "邀请码通过");
  146. }
  147. /**
  148. * 注册并登录
  149. *
  150. * @param code
  151. * @param request
  152. * @return
  153. */
  154. @RequestMapping("/register")
  155. @ResponseBody
  156. public CmWxJsonModel register(@RequestParam(value = "code", required = true) String code,
  157. CmMallOperationUser operationUser, HttpServletRequest request) {
  158. CmWxJsonModel model = login(code, request, operationUser.getUserOrganizeID());
  159. if (model.getCode().equals("-1")) {
  160. return model;
  161. }
  162. String openid = (String) model.getData();
  163. operationUser.setOpenid(openid);
  164. CmWxJsonModel jsonModel = loginService.update(operationUser, request);
  165. return jsonModel;
  166. }
  167. }