123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- package com.caimei.controller.user;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONObject;
- import com.caimei.entity.CmOperationUser;
- import com.caimei.entity.WxJsonModel;
- import com.caimei.service.user.LoginService;
- import com.caimei.utils.HttpRequest;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.stereotype.Controller;
- import org.springframework.util.StringUtils;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.ResponseBody;
- import javax.servlet.http.HttpServletRequest;
- import java.util.Calendar;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.Map;
- /**
- * 登录
- */
- @Controller
- @RequestMapping("/login")
- public class LoginController {
- protected static final Logger logger = LoggerFactory.getLogger(LoginController.class);
- @Autowired
- private LoginService loginService;
- private static String AppId;
- private static String AppSecret;
- @Value("${miniprogram.AppId}")
- public void setAppId(String appId) {
- AppId = appId;
- }
- @Value("${miniprogram.AppSecret}")
- public void setAppSecret(String appSecret) {
- AppSecret = appSecret;
- }
- public static WxJsonModel login(String code, HttpServletRequest request) {
- logger.info("Start get SessionKey");
- WxJsonModel res = WxJsonModel.newInstance();
- Map<String, Object> map = new HashMap<>();
- String referer = request.getHeader("Referer"); //获取当前微信小程序的环境
- logger.info("referer-is----:" + referer);
- map.put("referer", referer);
- String requestUrl = "https://api.weixin.qq.com/sns/jscode2session";
- Map<String, String> requestUrlParam = new HashMap<String, String>();
- requestUrlParam.put("appid", AppId);//小程序appId
- requestUrlParam.put("secret", AppSecret);//小程序appsecret
- requestUrlParam.put("js_code", code);//小程序端返回的code
- requestUrlParam.put("grant_type", "authorization_code");//默认参数
- //发送post请求读取调用微信接口获取openid用户唯一标识
- String infos;
- try {
- infos = HttpRequest.sendPost(requestUrl, requestUrlParam);
- } catch (Exception e) {
- res.setData(map);
- return res.error("服务器内部异常");
- }
- //解析相应内容(转换成json对象)
- JSONObject jsonObject = JSON.parseObject(infos);
- String openid = jsonObject.getString("openid");
- logger.info("openid----->" + openid);
- String session_key = jsonObject.getString("session_key");
- String errcode = jsonObject.getString("errcode");
- String errmsg = jsonObject.getString("errmsg");
- if (!StringUtils.isEmpty(errcode) &&
- (errcode.equals("-1") || errcode.equals("40029") || errcode.equals("45011"))) {
- res.setMsg(errmsg);
- res.setData(map);
- map.put("sessionKey", session_key);
- res.setCode("-1");
- return res;
- }
- return res.success(openid);
- }
- /**
- * 判断是否是游客
- *
- * @param code
- * @param request
- * @return
- */
- @ResponseBody
- @RequestMapping("/doLogin")
- public WxJsonModel doLogin(@RequestParam(value = "code", required = true) String code,
- @RequestParam(value = "userOrganizeID") Integer userOrganizeID,
- HttpServletRequest request) {
- WxJsonModel res = WxJsonModel.newInstance();
- WxJsonModel model = login(code, request);
- if (model.getCode().equals("-1")) {
- return model;
- }
- String openid = (String) model.getData();
- CmOperationUser operationUser = loginService.doLogin(openid, userOrganizeID);
- if (operationUser == null) {
- String mobile = loginService.cellPhone(userOrganizeID);
- return res.error("-1", mobile, "游客,请登录");
- }
- return res.success("1", operationUser);
- }
- /**
- * 判断邀请码是否有效
- *
- * @param invitationCode 邀请码
- * @param userOrganizeID 组织id
- * @return 0: 请输入邀请码
- * -2: 邀请码已失效
- * -3: 邀请码已被使用
- */
- @RequestMapping("/isEnabled")
- @ResponseBody
- public WxJsonModel isEnabled(String invitationCode, Integer userOrganizeID) {
- WxJsonModel res = WxJsonModel.newInstance();
- String mobile = loginService.cellPhone(userOrganizeID);
- if (invitationCode == null || invitationCode.equals("")) {
- return res.error("0", mobile);
- }
- CmOperationUser operationUser = loginService.isEnabled(invitationCode, userOrganizeID);
- if (operationUser == null) {
- return res.error("-1", "邀请码错误");
- }
- Date date = new Date();
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(operationUser.getInvitationCodeTime());
- calendar.add(Calendar.DATE, 2);
- if (operationUser.getStatus().equals("1") && date.getTime() > calendar.getTime().getTime() && operationUser.getDelFlag().equals("0")) {
- return res.error("-2", mobile);
- }
- if (operationUser.getStatus().equals("2") && operationUser.getDelFlag().equals("0")) {
- return res.error("-3", mobile);
- }
- if (operationUser.getClubStatus().equals("91")) {
- return res.error("-1", "您所在的会所已下线");
- }
- if (!operationUser.getDelFlag().equals("0")) {
- return res.error("-1", "您的账号已下线");
- }
- return res.error("1", "邀请码通过");
- }
- /**
- * 注册并登录
- *
- * @param code
- * @param request
- * @return
- */
- @RequestMapping("/register")
- @ResponseBody
- public WxJsonModel register(@RequestParam(value = "code", required = true) String code,
- CmOperationUser operationUser, HttpServletRequest request) {
- WxJsonModel model = login(code, request);
- if (model.getCode().equals("-1")) {
- return model;
- }
- String openid = (String) model.getData();
- operationUser.setOpenid(openid);
- WxJsonModel jsonModel = loginService.update(operationUser);
- return jsonModel;
- }
- }
|