LoginController.java 6.5 KB

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