LoginController.java 7.3 KB

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