LoginController.java 6.7 KB

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